dhtmlx-scheduler 6.0.4 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/bower.json +1 -1
- package/codebase/dhtmlxscheduler.css +1 -10
- package/codebase/dhtmlxscheduler.d.ts +192 -9
- package/codebase/dhtmlxscheduler.es.d.ts +2310 -0
- package/codebase/dhtmlxscheduler.es.js +8104 -0
- package/codebase/dhtmlxscheduler.es.js.map +1 -0
- package/codebase/dhtmlxscheduler.js +76 -36
- package/codebase/dhtmlxscheduler.js.map +1 -1
- package/codebase/sources/dhtmlxscheduler.css +3172 -2607
- package/codebase/sources/dhtmlxscheduler.es.js +16322 -0
- package/codebase/sources/dhtmlxscheduler.es.js.map +1 -0
- package/codebase/sources/dhtmlxscheduler.js +14670 -23427
- package/codebase/sources/dhtmlxscheduler.js.map +1 -0
- package/codebase/sources/less/package.json +2 -8
- package/codebase/sources/less/scripts.js +4 -3
- package/codebase/sources/less/src/agenda.less +70 -0
- package/codebase/sources/less/src/agenda_legacy.less +68 -0
- package/codebase/sources/less/src/base.less +415 -0
- package/codebase/sources/less/src/buttons.less +203 -0
- package/codebase/sources/less/src/columns_event.less +216 -0
- package/codebase/sources/less/src/columns_view.less +115 -0
- package/codebase/sources/less/src/datepicker.less +279 -0
- package/codebase/sources/less/src/grid_view.less +68 -0
- package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff +0 -0
- package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff2 +0 -0
- package/codebase/sources/less/src/icons.less +228 -0
- package/codebase/sources/less/src/imgs/alert.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/down.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/left.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/right.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/up.svg +3 -0
- package/codebase/sources/less/src/imgs/calendar.svg +3 -0
- package/codebase/sources/less/src/imgs/cancel.svg +3 -0
- package/codebase/sources/less/src/imgs/check.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/down.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/left.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/right.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/up.svg +3 -0
- package/codebase/sources/less/src/imgs/clock.svg +3 -0
- package/codebase/sources/less/src/imgs/close.svg +3 -0
- package/codebase/sources/less/src/imgs/delete.svg +3 -0
- package/codebase/sources/less/src/imgs/details.svg +3 -0
- package/codebase/sources/less/src/imgs/dots/h.svg +3 -0
- package/codebase/sources/less/src/imgs/dots/v.svg +3 -0
- package/codebase/sources/less/src/imgs/drag.svg +3 -0
- package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-horizontal.svg → src/imgs/drag_horizontal.svg} +1 -1
- package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-vertical.svg → src/imgs/drag_vertical.svg} +0 -3
- package/codebase/sources/less/src/imgs/edit.svg +4 -0
- package/codebase/sources/less/src/imgs/form.svg +3 -0
- package/codebase/sources/less/src/imgs/iclose.svg +3 -0
- package/codebase/sources/less/src/imgs/loading.svg +3 -0
- package/codebase/sources/less/src/imgs/menu/down.svg +3 -0
- package/codebase/sources/less/src/imgs/menu/right.svg +3 -0
- package/codebase/sources/less/src/imgs/menu.svg +1 -0
- package/codebase/sources/less/src/imgs/ok.svg +10 -0
- package/codebase/sources/less/src/imgs/plus.svg +3 -0
- package/codebase/sources/less/src/imgs/save.svg +3 -0
- package/codebase/sources/less/src/imgs/sort/asc.svg +3 -0
- package/codebase/sources/less/src/imgs/sort/desc.svg +3 -0
- package/codebase/sources/less/src/index.less +22 -0
- package/codebase/sources/less/src/layout.less +0 -0
- package/codebase/sources/less/src/lightbox.less +480 -0
- package/codebase/sources/less/src/misc.less +46 -0
- package/codebase/sources/less/src/modals.less +138 -0
- package/codebase/sources/less/src/month_event.less +85 -0
- package/codebase/sources/less/src/month_view.less +112 -0
- package/codebase/sources/less/src/quick_info.less +145 -0
- package/codebase/sources/less/src/themes/contrast_black.less +51 -0
- package/codebase/sources/less/src/themes/contrast_white.less +51 -0
- package/codebase/sources/less/src/themes/dark.less +34 -0
- package/codebase/sources/less/src/themes/flat.less +108 -0
- package/codebase/sources/less/src/themes/index.less +6 -0
- package/codebase/sources/less/src/themes/material.less +138 -0
- package/codebase/sources/less/src/themes/variables.less +263 -0
- package/codebase/sources/less/src/timeline.less +269 -0
- package/codebase/sources/less/src/tooltip.less +21 -0
- package/codebase/sources/less/src/week_agenda_view.less +80 -0
- package/codebase/sources/less/src/year_view.less +83 -0
- package/codebase/sources/less/theme.less +2 -0
- package/package.json +3 -3
- package/whatsnew.md +28 -0
- package/codebase/dhtmlxscheduler_contrast_black.css +0 -10
- package/codebase/dhtmlxscheduler_contrast_white.css +0 -10
- package/codebase/dhtmlxscheduler_flat.css +0 -10
- package/codebase/dhtmlxscheduler_material.css +0 -10
- package/codebase/dhtmlxscheduler_material_nofont.css +0 -10
- package/codebase/dhtmlxscheduler_terrace.css +0 -10
- package/codebase/sources/less/dhtmlxscheduler.less +0 -9
- package/codebase/sources/less/dhtmlxscheduler_contrast_black.less +0 -3
- package/codebase/sources/less/dhtmlxscheduler_contrast_white.less +0 -3
- package/codebase/sources/less/dhtmlxscheduler_flat.less +0 -2
- package/codebase/sources/less/dhtmlxscheduler_material.less +0 -5
- package/codebase/sources/less/dhtmlxscheduler_material_nofont.less +0 -3
- package/codebase/sources/less/dhtmlxscheduler_terrace.less +0 -2
- package/codebase/sources/less/skins/basic/clear.less +0 -106
- package/codebase/sources/less/skins/basic/ext.less +0 -1135
- package/codebase/sources/less/skins/basic/imgs/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/buttons.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/calendar.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/clock_big.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/clock_small.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/controls.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/databg.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/databg_now.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/export_ical.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/export_pdf.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/icon.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/images.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/loading.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/resize_dots.png +0 -0
- package/codebase/sources/less/skins/basic/index.less +0 -7
- package/codebase/sources/less/skins/basic/layout.less +0 -638
- package/codebase/sources/less/skins/basic/lightbox.less +0 -423
- package/codebase/sources/less/skins/basic/lightbox_responsive.less +0 -322
- package/codebase/sources/less/skins/basic/message_default.less +0 -242
- package/codebase/sources/less/skins/basic/note.less +0 -272
- package/codebase/sources/less/skins/basic/recurring.less +0 -168
- package/codebase/sources/less/skins/basic/skin.less +0 -735
- package/codebase/sources/less/skins/basic/suite.less +0 -8
- package/codebase/sources/less/skins/contrast_black/add_styles.less +0 -519
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_left.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_right.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/calendar.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_big.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_small.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/close_icon.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/controls.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg_now.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_ical.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_pdf.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resize_dots.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resizing.png +0 -0
- package/codebase/sources/less/skins/contrast_black/index.less +0 -4
- package/codebase/sources/less/skins/contrast_black/skin.less +0 -758
- package/codebase/sources/less/skins/contrast_white/dhx_skin_contrast_white.less +0 -1017
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_left.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_right.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/calendar.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_big.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_small.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/close_icon.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/controls.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/databg.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_ical.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_pdf.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/quick_info_edit.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resize_dots.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resizing.png +0 -0
- package/codebase/sources/less/skins/contrast_white/index.less +0 -4
- package/codebase/sources/less/skins/flat/add_styles.less +0 -286
- package/codebase/sources/less/skins/flat/imgs_flat/agenda_bg.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/arrow_left.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/arrow_right.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/calendar.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/clock.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/clock_big.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/clock_small.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/close_icon.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/controls.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/databg.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/databg_now.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/export_ical.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/export_pdf.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/resize_dots.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/resizing.png +0 -0
- package/codebase/sources/less/skins/flat/index.less +0 -4
- package/codebase/sources/less/skins/flat/skin.less +0 -674
- package/codebase/sources/less/skins/material/add_styles.less +0 -2055
- package/codebase/sources/less/skins/material/imgs_dhx_material/Shape.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar-hov.svg +0 -4
- package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar.svg +0 -4
- package/codebase/sources/less/skins/material/imgs_dhx_material/agenda_bg.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left_hov.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right_hov.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/but_repeat.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/calendar.svg +0 -4
- package/codebase/sources/less/skins/material/imgs_dhx_material/clock_big.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/clock_small.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/close_icon.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/collapse_expand_icon.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/controls.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/databg.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/export_ical.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/export_pdf.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/icon.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/menu-down.svg +0 -1
- package/codebase/sources/less/skins/material/imgs_dhx_material/resizing.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/time.svg +0 -24
- package/codebase/sources/less/skins/material/imgs_dhx_material/tree_arrow.svg +0 -3
- package/codebase/sources/less/skins/material/index.less +0 -10
- package/codebase/sources/less/skins/material/skin.less +0 -879
- package/codebase/sources/less/skins/terrace/add_styles.less +0 -351
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_left.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_right.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/calendar.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_big.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_small.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/close_icon.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/controls.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg_now.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_ical.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_pdf.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resize_dots.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resizing.png +0 -0
- package/codebase/sources/less/skins/terrace/index.less +0 -4
- package/codebase/sources/less/skins/terrace/skin.less +0 -687
- package/codebase/sources/skins/dhtmlxscheduler_contrast_black.css +0 -3218
- package/codebase/sources/skins/dhtmlxscheduler_contrast_white.css +0 -3644
- package/codebase/sources/skins/dhtmlxscheduler_flat.css +0 -2975
- package/codebase/sources/skins/dhtmlxscheduler_material.css +0 -4360
- package/codebase/sources/skins/dhtmlxscheduler_material_nofont.css +0 -4359
- package/codebase/sources/skins/dhtmlxscheduler_terrace.css +0 -3080
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dhtmlxscheduler.es.js","sources":["../../sources/dhtmlx_hook.js","../../sources/global.js","../../sources/core/common/assert.js","../../sources/core/common_errors.js","../../sources/core/connector.js","../../sources/core/nav_bar.js","../../sources/core/scheduler_resize_listener.js","../../sources/utils/eventable.js","../../sources/core/scheduler.js","../../sources/core/utils/event.js","../../sources/core/utils/scoped_event.js","../../sources/core/common.js","../../sources/core/wai_aria.js","../../sources/core/utils/utils.js","../../sources/core/utils/dom_helpers.js","../../sources/utils/env.js","../../sources/core/destructor.js","../../sources/core/common/url_serialize.js","../../sources/core/utils/ajax.js","../../sources/core/base.js","../../sources/core/config.js","../../sources/core/event.js","../../sources/core/event_highlight.js","../../sources/core/loaders/xml.js","../../sources/core/loaders/json.js","../../sources/core/loaders/ical.js","../../sources/core/common/get_serializable_events.js","../../sources/core/load.js","../../sources/core/lightbox.js","../../sources/core/touch.js","../../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../../sources/core/skins.js","../../sources/core/jquery.js","../../sources/core/delay_render.js","../../sources/core/dataprocessor/dataprocessor_hooks.js","../../sources/core/dataprocessor/dataprocessor.js","../../sources/core/message.js","../../sources/locale/locale_ar.js","../../sources/locale/locale_be.js","../../sources/locale/locale_ca.js","../../sources/locale/locale_cn.js","../../sources/locale/locale_cs.js","../../sources/locale/locale_da.js","../../sources/locale/locale_de.js","../../sources/locale/locale_el.js","../../sources/locale/locale_en.js","../../sources/locale/locale_es.js","../../sources/locale/locale_fi.js","../../sources/locale/locale_fr.js","../../sources/locale/locale_he.js","../../sources/locale/locale_hu.js","../../sources/locale/locale_id.js","../../sources/locale/locale_it.js","../../sources/locale/locale_jp.js","../../sources/locale/locale_manager.js","../../sources/locale/locale_nb.js","../../sources/locale/locale_nl.js","../../sources/locale/locale_no.js","../../sources/locale/locale_pl.js","../../sources/locale/locale_pt.js","../../sources/locale/locale_ro.js","../../sources/locale/locale_ru.js","../../sources/locale/locale_si.js","../../sources/locale/locale_sk.js","../../sources/locale/locale_sv.js","../../sources/locale/locale_tr.js","../../sources/locale/locale_ua.js","../../sources/locale/index.js","../../sources/core/datepicker.js","../../sources/scheduler_factory_method.js","../../sources/ext/extension_manager.js","../../sources/scheduler_factory.js","../../sources/ext/active_links.js","../../sources/ext/agenda_legacy_view.js","../../sources/ext/agenda.js","../../sources/ext/all_timed.js","../../sources/ext/collision.js","../../sources/ext/container_autoresize.js","../../sources/ext/cookie.js","../../sources/ext/restricted_extensions/not_implemented_extension.js","../../sources/ext/restricted_extensions/daytimeline.js","../../sources/ext/restricted_extensions/drag_between.js","../../sources/ext/editors.js","../../sources/ext/expand.js","../../sources/ext/restricted_extensions/grid_view.js","../../sources/ext/html_templates.js","../../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../../sources/ext/keyboard_navigation/common/eventhandler.js","../../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../../sources/ext/keyboard_navigation/marker.js","../../sources/ext/keyboard_navigation/elements/scheduler_node.js","../../sources/ext/keyboard_navigation/elements/nav_node.js","../../sources/ext/keyboard_navigation/elements/header_cell.js","../../sources/ext/keyboard_navigation/elements/event.js","../../sources/ext/keyboard_navigation/elements/time_slot.js","../../sources/ext/keyboard_navigation/elements/minical_button.js","../../sources/ext/keyboard_navigation/elements/minical_cell.js","../../sources/ext/keyboard_navigation/elements/data_area.js","../../sources/ext/keyboard_navigation/modals.js","../../sources/ext/keyboard_navigation/core.js","../../sources/ext/keyboard_navigation/key_nav_legacy.js","../../sources/ext/keyboard_navigation/scheduler_handlers.js","../../sources/ext/keyboard_navigation/minical_handlers.js","../../sources/ext/key_nav.js","../../sources/ext/layer.js","../../sources/ext/limit.js","../../sources/ext/map_view.js","../../sources/ext/minical.js","../../sources/ext/monthheight.js","../../sources/ext/restricted_extensions/multisection.js","../../sources/ext/multiselect.js","../../sources/ext/multisource.js","../../sources/ext/mvc.js","../../sources/ext/outerdrag.js","../../sources/ext/pdf.js","../../sources/ext/quick_info.js","../../sources/ext/readonly.js","../../sources/ext/recurring.js","../../sources/ext/serialize.js","../../sources/ext/restricted_extensions/timeline.js","../../sources/ext/tooltip/tooltip.ts","../../sources/ext/tooltip/tooltipManager.ts","../../sources/ext/tooltip/index.ts","../../sources/ext/restricted_extensions/treetimeline.js","../../sources/ext/restricted_extensions/units.js","../../sources/ext/url.js","../../sources/ext/restricted_extensions/week_agenda.js","../../sources/ext/wp.js","../../sources/ext/year_view.js","../../sources/ext/export_api/index.js","../../sources/ext/extensions_gpl.js","../../sources/dhtmlxscheduler.gpl.js"],"sourcesContent":["\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '<div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div>';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '<div id=\"' + obj.id + '\" class=\"dhx_cal_container\" style=\"width:100%; height:100%;\"><div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div>' + tabs + '</div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div></div>';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"<div id='scheduler_here' class='dhx_cal_container' style='width:100%; height:600px;'> \\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\telement.addEventListener(\"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nvar layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tvar element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tvar element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tvar views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tvar date = [\r\n\t\t\"date\"\r\n\t];\r\n\tvar nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(var i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(var i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(var i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tvar optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\tvar h = this._y = this._obj.clientHeight-this.xy.margin_top;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\tvar scale_s=this._table_view?-1:this.xy.scale_width;\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\tif(!scheduler._is_new_skin()){\r\n\t\tthis.set_xy(this._els[\"dhx_cal_navline\"][0],w,this.xy.nav_height,0,0);\r\n\r\n\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0],w-scale_x + 1,this.xy.scale_height,scale_s,this.xy.nav_height+1);\r\n\t\t//to support alter-skin, we need a way to alter height directly from css\r\n\t\tvar actual_height = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\tif (actual_height > 0) this.xy.nav_height = actual_height;\r\n\r\n\t\tvar data_y=this.xy.scale_height+this.xy.nav_height;\r\n\t\tthis.set_xy(this._els[\"dhx_cal_data\"][0],w,h-(data_y+2),0,data_y+2);\r\n\t} else {\r\n\t\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\t\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\t\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\t\theader.style.left = ``;\r\n\t\theader.style.right = ``;\r\n\t\tif(!this._table_view){\r\n\t\t\tif(this.config.rtl){\r\n\t\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t\t}else{\r\n\t\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(!this.config.rtl){\r\n\t\t\t\theader.style.left = `-1px`;\r\n\t\t\t} else {\r\n\t\t\t\theader.style.right = `-1px`;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tvar els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++){\r\n\t\tvar class_name= scheduler._getClassName(els[i]);\r\n\t\tvar attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tvar label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nvar domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (var a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (var i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(e) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\tvar ev = e;\r\n\t\tvar src = ev.target||ev.srcElement;\r\n\t\tvar returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(src), ev]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) return;\r\n\tvar t=this._select_id;\r\n\tthis._select_id = null;\r\n\tif (t && this.getEvent(t)) this.updateEvent(t);\r\n\tthis.callEvent(\"onEventUnselected\", [t]);\r\n};\r\nscheduler.getState=function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n};\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar trg = e.target;\r\n\t\tvar id = scheduler._locate_event(trg);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = trg.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tvar mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tvar def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tvar name = this.getAttribute(\"data-tab\");\r\n\t\tvar deprecated_name = this.getAttribute(\"name\");\r\n\t\tvar mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tvar c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tvar opts = { ...config, text: message };\r\n\tif (title)\r\n\t\topts.title = title;\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result)\r\n\t\t\t\tcallback();\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tvar base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\tvar start_date = new Date(start);\r\n\tif (!end){\r\n\t\tvar start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+d;\r\n\t}\r\n\tvar end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+d);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tvar eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src||(e.target||e.srcElement);\r\n\tif (this.config.readonly) return;\r\n\tvar name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\":\r\n\t\t\tvar id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault:\r\n\t\t\tvar t = this[\"dblclick_\"+name];\r\n\t\t\tif (t) {\r\n\t\t\t\tt.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tvar column = 0;\r\n\tif (this._cols){\r\n\t\tvar width = 0;\r\n\t\tvar i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tvar column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tvar pos;\r\n\tvar b=document.body;\r\n\tvar d = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (b.scrollLeft||d.scrollLeft||0) - b.clientLeft,\r\n\t\ty:ev.clientY + (b.scrollTop||d.scrollTop||0) - b.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tvar dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tvar handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tvar column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tvar dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tvar c=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_closing, callback: function() { scheduler.editStop(scheduler.config.positive_closing); }});\r\n\t\tif(c){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tvar delay = 100,\r\n\t\td_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tvar obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tvar len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tvar obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tvar end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()<this.config.last_hour) || scheduler._allow_dnd ){\r\n\t\t\t\tev.start_date=new_start;\r\n\t\t\t\tev.end_date=new Date(end);\r\n\t\t\t\tif (this.config.update_render){\r\n\t\t\t\t\t//fix for repaint after dnd and scroll issue, #231\r\n\t\t\t\t\tvar sx = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\t\tthis.update_view();\r\n\t\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = sx;\r\n\t\t\t\t} else\r\n\t\t\t\t\tthis.updateEvent(this._drag_id);\r\n\t\t\t}\r\n\t\t\tif (this._table_view) {\r\n\t\t\t\tthis.for_rendered(this._drag_id,function(r){\r\n\t\t\t\t\tr.className+=\" dhx_in_move dhx_cal_event_drag\";\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onEventDrag\", [this._drag_id, this._drag_mode, e]);\r\n\t\t}\r\n\t} else {\r\n\t\tif (scheduler.checkEvent(\"onMouseMove\")){\r\n\t\t\tvar id = this._locate_event(e.target||e.srcElement);\r\n\t\t\tthis.callEvent(\"onMouseMove\",[id,e]);\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._on_mouse_down=function(e,src) {\r\n\t// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\r\n\t// let's ignore right mouse button then\r\n\tif (e.button == 2)\r\n\t\treturn;\r\n\r\n\tif (this.config.readonly || this._drag_mode) return;\r\n\tsrc = src||(e.target||e.srcElement);\r\n\tvar classname = scheduler._getClassName(src).split(\" \")[0];\r\n\r\n\tif (this.config.drag_event_body && classname == \"dhx_body\") {\r\n\t\tif(src.parentNode && src.parentNode.className.indexOf(\"dhx_cal_select_menu\") === -1){\r\n\t\t\tclassname = \"dhx_event_move\";\r\n\t\t\tthis._dragEventBody = true;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (classname) {\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\":\r\n\t\t\tif (this._table_view)\r\n\t\t\t\tthis._drag_mode=\"move\"; //item in table mode\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_event_move\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\t\tthis._drag_mode=\"move\";\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_event_resize\":\r\n\t\t\tthis._drag_mode=\"resize\";\r\n\t\t\tvar fullClass = scheduler._getClassName(src);\r\n\t\t\tif((fullClass).indexOf(\"dhx_event_resize_end\") < 0){\r\n\t\t\t\tscheduler._drag_from_start = true;\r\n\t\t\t}else{\r\n\t\t\t\tscheduler._drag_from_start = false;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_matrix_cell\":\r\n\t\tcase \"dhx_marked_timespan\":\r\n\t\t\tthis._drag_mode=\"create\";\r\n\t\t\tbreak;\r\n\t\tcase \"\":\r\n\t\t\tif (src.parentNode)\r\n\t\t\t\treturn scheduler._on_mouse_down(e,src.parentNode);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tif (!scheduler.checkEvent(\"onMouseDown\") || scheduler.callEvent(\"onMouseDown\", [classname, e])) {\r\n\t\t\t\tif (src.parentNode && src != this && classname != \"dhx_body\") {\r\n\t\t\t\t\treturn scheduler._on_mouse_down(e,src.parentNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_id=null;\r\n\t\t\tbreak;\r\n\t}\r\n\tif (this._drag_mode){\r\n\t\tvar id = this._locate_event(src);\r\n\t\tif (!this.config[\"drag_\"+this._drag_mode] || !this.callEvent(\"onBeforeDrag\",[id, this._drag_mode, e]))\r\n\t\t\tthis._drag_mode=this._drag_id=0;\r\n\t\telse {\r\n\t\t\tthis._drag_id= id;\r\n\r\n\t\t\tif (this._edit_id!=this._drag_id || (this._edit_id && this._drag_mode == \"create\"))\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tthis._drag_event = scheduler._lame_clone(this.getEvent(this._drag_id) || {});\r\n\t\t\tthis._drag_pos = this._mouse_coords(e);\r\n\t\t}\r\n\t}\r\n\tthis._drag_start=null;\r\n};\r\n\r\n\r\nscheduler._get_private_properties = function(event){\r\n\tvar fields = {};\r\n\tfor(var i in event){\r\n\t\tif(i.indexOf(\"_\") === 0){\r\n\t\t\tfields[i] = true;\r\n\t\t}\r\n\t}\r\n\treturn fields;\r\n};\r\nscheduler._clear_temporary_properties = function(clean, flagged_event){\r\n\tvar initial = this._get_private_properties(clean);\r\n\tvar current_state = this._get_private_properties(flagged_event);\r\n\tfor(var i in current_state){\r\n\t\tif(!initial[i]){\r\n\t\t\tdelete flagged_event[i];\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nscheduler._on_mouse_up=function(e){\r\n\tif (e && e.button == 2 && this._mobile) return;\r\n\tif (this._drag_mode && this._drag_id){\r\n\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"default\";\r\n\t\t//drop\r\n\r\n\t\tvar drag_id = this._drag_id;\r\n\t\tvar mode = this._drag_mode;\r\n\r\n\t\tvar moved = !this._drag_pos || this._drag_pos.has_moved;\r\n\t\tdelete this._drag_event._move_event_shift;\r\n\r\n\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\tif (moved && (this._drag_event._dhx_changed || !this._drag_event.start_date || ev.start_date.valueOf()!=this._drag_event.start_date.valueOf() || ev.end_date.valueOf()!=this._drag_event.end_date.valueOf())){\r\n\t\t\tvar is_new=(this._drag_mode==\"new-size\");\r\n\t\t\tif (!this.callEvent(\"onBeforeEventChanged\",[ev, e, is_new, this._drag_event])){\r\n\t\t\t\tif (is_new)\r\n\t\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._drag_event._dhx_changed = false;\r\n\t\t\t\t\tthis._clear_temporary_properties(ev, this._drag_event);\r\n\t\t\t\t\tscheduler._lame_copy(ev, this._drag_event);\r\n\t\t\t\t\tthis.updateEvent(ev.id);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis._drag_id = this._drag_mode = null;\r\n\t\t\t\tif (is_new && this.config.edit_on_create){\r\n\t\t\t\t\tthis.unselect();\r\n\t\t\t\t\tthis._new_event=new Date();//timestamp of creation\r\n\t\t\t\t\t//if selection disabled - force lightbox usage\r\n\t\t\t\t\tif (this._table_view || this.config.details_on_create || !this.config.select || !this.isOneDayEvent(this.getEvent(drag_id))) {\r\n\t\t\t\t\t\tscheduler.callEvent(\"onDragEnd\", [drag_id, mode, e]);\r\n\t\t\t\t\t\treturn this.showLightbox(drag_id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._drag_pos = true; //set flag to trigger full redraw\r\n\t\t\t\t\tthis._select_id = this._edit_id = drag_id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!this._new_event)\r\n\t\t\t\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[drag_id,this.getEvent(drag_id)]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._drag_pos && (this._drag_pos.has_moved || this._drag_pos === true)) {\r\n\t\t\tthis._drag_id = this._drag_mode = null; // set null to prevent _sorder recalculation for drag event\r\n\t\t\tthis.render_view_data(); //redraw even if there is no real changes - necessary for correct positioning item after drag\r\n\t\t}\r\n\t\tscheduler.callEvent(\"onDragEnd\", [drag_id, mode, e]);\r\n\t}\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode=null;\r\n\tthis._drag_pos=null;\r\n};\r\n\r\nscheduler._trigger_dyn_loading = function(){\r\n\tif (this._load_mode && this._load()){\r\n\t\tthis._render_wait = true;\r\n\t\treturn true;\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.update_view=function(){\r\n\tthis._reset_ignores();\r\n\tthis._update_nav_bar(\r\n\t\tthis.config.header,\r\n\t\tthis.$container.querySelector(\".dhx_cal_navline\"));\r\n\r\n\tvar view = this[this._mode + \"_view\"];\r\n\tif(view){\r\n\t\tview.call(this, true);\r\n\t}else{\r\n\t\tthis._reset_scale();\r\n\t}\r\n\r\n\tif (this._trigger_dyn_loading()){\r\n\t\treturn true;\r\n\t}\r\n\tthis.render_view_data();\r\n};\r\n\r\nscheduler.isViewExists = function(mode){\r\n\treturn !!(scheduler[mode+ \"_view\"] ||\r\n\t\t(scheduler.date[mode+ \"_start\"] && scheduler.templates[mode+ \"_date\"] && scheduler.templates[mode+ \"_scale_date\"]));\r\n};\r\n\r\nscheduler._set_aria_buttons_attrs = function(){\r\n\tvar buttonGroups = [\"dhx_cal_next_button\", \"dhx_cal_prev_button\", \"dhx_cal_tab\", \"dhx_cal_today_button\"];\r\n\tfor(var i = 0; i < buttonGroups.length; i++){\r\n\t\tvar group = this._els[buttonGroups[i]];\r\n\t\tfor(var j = 0; group && j < group.length; j++ ){\r\n\t\t\tvar name = group[j].getAttribute(\"data-tab\") || group[j].getAttribute(\"name\");\r\n\t\t\tvar label = this.locale.labels[buttonGroups[i]];\r\n\t\t\tif(name){\r\n\t\t\t\tlabel = this.locale.labels[name + \"_tab\"] || this.locale.labels[name] || label;\r\n\t\t\t}\r\n\t\t\tif(buttonGroups[i] == \"dhx_cal_next_button\"){\r\n\t\t\t\tlabel = this.locale.labels.next;\r\n\t\t\t}else if(buttonGroups[i] == \"dhx_cal_prev_button\"){\r\n\t\t\t\tlabel = this.locale.labels.prev;\r\n\t\t\t}\r\n\t\t\tthis._waiAria.headerButtonsAttributes(group[j], label || \"\");\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.updateView = function(date, mode) {\r\n\r\n\tif (!this.$container) {\r\n\t\tthrow new Error(\"The scheduler is not initialized. \\n **scheduler.updateView** or **scheduler.setCurrentView** can be called only after **scheduler.init**\");\r\n\t}\r\n\r\n\tdate = date || this._date;\r\n\tmode = mode || this._mode;\r\n\tvar dhx_cal_data = 'dhx_cal_data';\r\n\r\n\tif(!this.locale.labels.icon_form){\r\n\t\tthis.locale.labels.icon_form = this.locale.labels.icon_edit;\r\n\t}\r\n\r\n\tvar container = this._obj;\r\n\tvar oldClass = \"dhx_scheduler_\" + this._mode;\r\n\tvar newClass = \"dhx_scheduler_\" + mode;\r\n\r\n\tif (!this._mode || (container.className.indexOf(oldClass) == -1)){\r\n\t\tcontainer.className += \" \" + newClass;\r\n\t} else {\r\n\t\tcontainer.className = container.className.replace(oldClass, newClass);\r\n\t}\r\n\r\n\tvar dhx_multi_day = 'dhx_multi_day';\r\n\r\n\tvar prev_scroll = (this._mode == mode && this.config.preserve_scroll) ? this._els[dhx_cal_data][0].scrollTop : false; // saving current scroll\r\n\r\n\tvar multidayScroll;\r\n\tif(this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tmultidayScroll = this._els[dhx_multi_day][0].scrollTop;\r\n\t}\r\n\r\n\t//hide old custom view\r\n\tif (this[this._mode + \"_view\"] && mode && this._mode != mode)\r\n\t\tthis[this._mode + \"_view\"](false);\r\n\r\n\tthis._close_not_saved();\r\n\r\n\tif (this._els[dhx_multi_day]) {\r\n\t\tthis._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);\r\n\t\tthis._els[dhx_multi_day] = null;\r\n\t}\r\n\r\n\tthis._mode = mode;\r\n\tthis._date = date;\r\n\tthis._table_view = (this._mode == \"month\");\r\n\r\n\tthis._dy_shift = 0;//correction for multiday section in week/day views\r\n\r\n\t//show new view\r\n\tthis.update_view();\r\n\r\n\tthis._set_aria_buttons_attrs();\r\n\r\n\tvar tabs = this._els[\"dhx_cal_tab\"];\r\n\tif(tabs){//calendar can work without view tabs\r\n\t\tfor (var i = 0; i < tabs.length; i++) {\r\n\t\t\tvar tab = tabs[i];\r\n\r\n\t\t\tif (tab.getAttribute(\"data-tab\") == this._mode || tab.getAttribute(\"name\") == this._mode + \"_tab\"){\r\n\t\t\t\ttab.classList.add(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, true);\r\n\t\t\t}else{\r\n\t\t\t\ttab.classList.remove(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (typeof prev_scroll == \"number\") // if we are updating or working with the same view scrollTop should be saved\r\n\t\tthis._els[dhx_cal_data][0].scrollTop = prev_scroll; // restoring original scroll\r\n\r\n\tif(typeof multidayScroll == \"number\" && this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tthis._els[dhx_multi_day][0].scrollTop = multidayScroll;\r\n\t}\r\n\r\n};\r\nscheduler.setCurrentView = function(date, mode) {\r\n\tif (!this.callEvent(\"onBeforeViewChange\", [this._mode, this._date, mode || this._mode, date || this._date])) return;\r\n\tthis.updateView(date, mode);\r\n\tthis.callEvent(\"onViewChange\", [this._mode, this._date]);\r\n};\r\n\r\nscheduler.render = function(date, mode){\r\n\tscheduler.setCurrentView(date, mode);\r\n};\r\n\r\nscheduler._render_x_header = function(i,left,date,container, offset_top){\r\n\toffset_top = offset_top || 0;\r\n\t//header scale\r\n\tvar head=document.createElement(\"div\");\r\n\thead.className = \"dhx_scale_bar\";\r\n\r\n\tif(this.templates[this._mode+\"_scalex_class\"]){\r\n\t\t//'_scalex_class' - timeline already have similar template, use the same name\r\n\t\thead.className += ' ' + this.templates[this._mode+\"_scalex_class\"](date);\r\n\t}\r\n\r\n\tvar width = this._cols[i];\r\n\r\n\tif (this._mode == \"month\" && i === 0 && this.config.left_border) {\r\n\t\thead.className += \" dhx_scale_bar_border\";\r\n\t\tleft = left+1;\r\n\t}\r\n\t\r\n\tif(scheduler._is_new_skin()){\r\n\t\tthis.set_xy(head, width, this.xy.scale_height-1, left, offset_top);\r\n\t}else{\r\n\t\tthis.set_xy(head, width - 1, this.xy.scale_height-2, left, offset_top);//-1 for border\r\n\t}\r\n\r\n\tvar columnHeaderText = this.templates[this._mode+\"_scale_date\"](date,this._mode); //TODO - move in separate method\r\n\thead.innerHTML = columnHeaderText;\r\n\r\n\tthis._waiAria.dayHeaderAttr(head, columnHeaderText);\r\n\r\n\tcontainer.appendChild(head);\r\n};\r\n\r\nscheduler._get_columns_num = function(from, to){\r\n\tvar count = 7;\r\n\tif (!scheduler._table_view){\r\n\t\tvar count_n = scheduler.date[\"get_\"+scheduler._mode+\"_end\"];\r\n\t\tif (count_n) to = count_n(from);\r\n\t\tcount = Math.round((to.valueOf()-from.valueOf())/(1000*60*60*24));\r\n\t}\r\n\treturn count;\r\n};\r\nscheduler._get_timeunit_start = function(){\r\n\t//start date of currently displayed time unit(day, week,...)\r\n\treturn this.date[this._mode+\"_start\"](new Date(this._date.valueOf()));\r\n};\r\n\r\nscheduler._get_view_end = function(){\r\n\tvar dd = this._get_timeunit_start();\r\n\tvar ed = scheduler.date.add(dd, 1, this._mode);\r\n\tif (!scheduler._table_view){\r\n\t\tvar count_n = scheduler.date[\"get_\"+scheduler._mode+\"_end\"];\r\n\t\tif (count_n) ed = count_n(dd);\r\n\t}\r\n\treturn ed;\r\n};\r\nscheduler._calc_scale_sizes = function(width, from, to){//\r\n\t//calculates number of displayed columns(days/units/month view cols) and their widths\r\n\tvar rtl = this.config.rtl;\r\n\tvar summ = width; //border delta\r\n\tvar count = this._get_columns_num(from, to);\r\n\t//if (this.config.rtl) this._process_ignores(scheduler.date.add(to, -1, \"day\"), count, \"day\", -1);\r\n\t//else\r\n\tthis._process_ignores(from, count, \"day\", 1);\r\n\tvar realcount = count - this._ignores_detected;\r\n\tfor (var i=0; i<count; i++){\r\n\t\tif (this._ignores[i]){\r\n\t\t\tthis._cols[i] = 0;\r\n\t\t\trealcount++;\r\n\t\t} else {\r\n\t\t\tthis._cols[i]=Math.floor(summ/(realcount-i));\r\n\t\t}\r\n\t\tsumm-=this._cols[i];\r\n\t\tthis._colsS[i]=(this._cols[i-1]||0)+(this._colsS[i-1]||(this._table_view?0:(rtl ? this.xy.scroll_width : this.xy.scale_width)));\r\n\t\t//this._colsS[j]=(this._cols[rtl ? j+1 : (i-1)]||0)+(this._colsS[rtl ? j+1 : (i-1)]||(this._table_view?0:(rtl?this.xy.scroll_width:this.xy.scale_width)+2));\r\n\t}\r\n\tthis._colsS['col_length'] = count;\r\n\tthis._colsS[count] = (this._cols[count-1]+this._colsS[count-1]) || 0;\r\n\t//this._colsS[count] = (this._cols[rtl ? 0 : count-1]+this._colsS[rtl ? 0 : count-1]) || 0;\r\n};\r\n\r\nscheduler._set_scale_col_size = function(div, width, left){\r\n\tvar c = this.config;\r\n\tthis.set_xy(div, width, c.hour_size_px*(c.last_hour-c.first_hour), left+this.xy.scale_width + 1, 0);//-1 for border\r\n};\r\n\r\nscheduler._render_scales = function(header, data_area){\r\n\t//render columns in week/units view, or header in month view\r\n\tvar sd = new Date(scheduler._min_date),\r\n\t\ted = new Date(scheduler._max_date),\r\n\t\ttoday = this.date.date_part( scheduler._currentDate());\r\n\r\n\tvar summ = parseInt(header.style.width,10) - 1;\r\n\tvar d = new Date(this._min_date);\r\n\t// if (this.config.rtl) {\r\n\t// \td = new Date(scheduler.date.add(this._max_date, -1, \"day\"));\r\n\t// }\r\n\tvar count = this._get_columns_num(sd, ed);\r\n\tthis._calc_scale_sizes(summ, sd, ed);\r\n\tvar left=0;\r\n\r\n\theader.innerHTML = \"\";\r\n\tfor (var i=0; i<count; i++){\r\n\t\tif (!this._ignores[i]){\r\n\t\t\tthis._render_x_header(i,left,d,header);\r\n\t\t}\r\n\t\tif (!this._table_view){\r\n\t\t\tvar scales=document.createElement(\"div\");\r\n\t\t\tvar cls = \"dhx_scale_holder\";\r\n\t\t\tif (d.valueOf() == today.valueOf()) cls += \" dhx_scale_holder_now\";\r\n\r\n\t\t\tscales.setAttribute(\"data-column-index\", i);\r\n\t\t\tif (this._ignores_detected && this._ignores[i]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tif(this._is_new_skin()){\r\n\t\t\t\tfor (let i=this.config.first_hour*1; i < this.config.last_hour; i++) {\r\n\t\t\t\t\tconst firstHalf = document.createElement(\"div\");\r\n\t\t\t\t\tfirstHalf.className=\"dhx_scale_time_slot dhx_scale_time_slot_hour_start\";\r\n\t\t\t\t\tfirstHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet slotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 0);\r\n\t\t\t\t\tfirstHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\r\n\t\t\t\t\tlet htmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\t\tif(htmlContent){\r\n\t\t\t\t\t\tfirstHalf.innerHTML = htmlContent;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet cssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\t\tif(cssClass){\r\n\t\t\t\t\t\tfirstHalf.classList.add(cssClass);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tscales.appendChild(firstHalf);\r\n\r\n\t\t\t\t\tconst secondHalf = document.createElement(\"div\");\r\n\t\t\t\t\tsecondHalf.className=\"dhx_scale_time_slot\";\r\n\t\t\t\t\tslotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 30);\r\n\t\t\t\t\tsecondHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\t\t\t\t\tsecondHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\t\thtmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\t\tif(htmlContent){\r\n\t\t\t\t\t\tsecondHalf.innerHTML = htmlContent;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\t\tif(cssClass){\r\n\t\t\t\t\t\tsecondHalf.classList.add(cssClass);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscales.appendChild(secondHalf);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tscales.className = cls+\" \"+this.templates.week_date_class(d,today);\r\n\t\t\tthis._waiAria.dayColumnAttr(scales, d);\r\n\t\t\tthis._set_scale_col_size(scales, this._cols[i], left);\r\n\r\n\t\t\tdata_area.appendChild(scales);\r\n\t\t\tthis.callEvent(\"onScaleAdd\",[scales, d]);\r\n\t\t}\r\n\t\tleft+=this._cols[i];\r\n\t\t//if (this.config.rtl) d=this.date.add(d,-1,\"day\");\r\n\t\t//else\r\n\t\td=this.date.add(d,1,\"day\");\r\n\t\td = this.date.day_start(d);\r\n\t}\r\n};\r\n\r\nscheduler._getNavDateElement = function(){\r\n\treturn this.$container.querySelector(\".dhx_cal_date\");\r\n};\r\n\r\nscheduler._reset_scale=function(){\r\n\t//current mode doesn't support scales\r\n\t//we mustn't call reset_scale for such modes, so it just to be sure\r\n\tif (!this.templates[this._mode + \"_date\"]) return;\r\n\r\n\tvar header = this._els[\"dhx_cal_header\"][0];\r\n\tvar data_area = this._els[\"dhx_cal_data\"][0];\r\n\tvar c = this.config;\r\n\r\n\theader.innerHTML = \"\";\r\n\t//data_area.scrollTop = 0; //fix flickering in FF; makes IE8 flicker instead\r\n\tdata_area.innerHTML = \"\";\r\n\r\n\tvar str = ((c.readonly || (!c.drag_resize)) ? \" dhx_resize_denied\" : \"\") + ((c.readonly || (!c.drag_move)) ? \" dhx_move_denied\" : \"\");\r\n\tdata_area.className = \"dhx_cal_data\" + str;\r\n\r\n\tthis._scales = {};\r\n\tthis._cols = [];\t//store for data section\r\n\tthis._colsS = {height: 0};\r\n\tthis._dy_shift = 0;\r\n\r\n\tthis.set_sizes();\r\n\r\n\tvar d,sd;\r\n\tvar dd = this._get_timeunit_start(),\r\n\t\ted = scheduler._get_view_end();\r\n\r\n\td = sd = this._table_view ? scheduler.date.week_start(dd) : dd;\r\n\r\n\r\n\tthis._min_date=d;\r\n\r\n\tvar navBarDateStr = this.templates[this._mode+\"_date\"](dd,ed,this._mode);\r\n\r\n\tvar scaleElement = this._getNavDateElement();\r\n\tif(scaleElement){\r\n\t\tscaleElement.innerHTML = navBarDateStr;\r\n\t\tthis._waiAria.navBarDateAttr(scaleElement, navBarDateStr);\r\n\t}\r\n\r\n\tthis._max_date = ed;\r\n\tscheduler._render_scales(header, data_area);\r\n\r\n\tif (this._table_view) // month view\r\n\t\tthis._reset_month_scale(data_area,dd,sd);\r\n\telse{\r\n\t\tthis._reset_hours_scale(data_area,dd,sd);\r\n\t\tif (c.multi_day) {\r\n\t\t\tvar dhx_multi_day = 'dhx_multi_day';\r\n\r\n\t\t\tif(this._els[dhx_multi_day]) {\r\n\t\t\t\tthis._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);\r\n\t\t\t\tthis._els[dhx_multi_day] = null;\r\n\t\t\t}\r\n\r\n\t\t\tvar navline = this._els[\"dhx_cal_navline\"][0];\r\n\t\t\tvar top = navline.offsetHeight + this._els[\"dhx_cal_header\"][0].offsetHeight+1;\r\n\t\t\tif(this._is_new_skin()){\r\n\t\t\t\ttop = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tvar c1 = document.createElement(\"div\");\r\n\t\t\tc1.className = dhx_multi_day;\r\n\t\t\tc1.style.visibility=\"hidden\";\r\n\t\t\tc1.style.display=\"none\";\r\n\t\t\tvar totalWidth = this._colsS[this._colsS.col_length];\r\n\t\t\tvar offset = c.rtl ? this.xy.scale_width : this.xy.scroll_width;\r\n\t\t\tvar hiddenWidth = Math.max(totalWidth + offset, 0);\r\n\t\t\tthis.set_xy(c1, hiddenWidth, 0, 0, top); // 2 extra borders, dhx_header has -1 bottom margin\r\n\t\t\tdata_area.parentNode.insertBefore(c1,data_area);\r\n\r\n\t\t\tvar c2 = c1.cloneNode(true);\r\n\t\t\tc2.className = dhx_multi_day+\"_icon\";\r\n\t\t\tc2.style.visibility=\"hidden\";\r\n\t\t\tc2.style.display=\"none\";\r\n\t\t\tthis.set_xy(c2, this.xy.scale_width + 1, 0, 0, top); // dhx_header has -1 bottom margin\r\n\r\n\t\t\tc1.appendChild(c2);\r\n\t\t\tthis._els[dhx_multi_day]=[c1,c2];\r\n\t\t\tscheduler.event(this._els[dhx_multi_day][0], \"click\", this._click.dhx_cal_data);\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._reset_hours_scale=function(b,dd,sd){\r\n\tvar c=document.createElement(\"div\");\r\n\tc.className=\"dhx_scale_holder\";\r\n\r\n\tvar date = new Date(1980,1,1,this.config.first_hour,0,0);\r\n\tfor (var i=this.config.first_hour*1; i < this.config.last_hour; i++) {\r\n\t\tvar cc=document.createElement(\"div\");\r\n\t\tcc.className=\"dhx_scale_hour\";\r\n\t\tcc.style.height=this.config.hour_size_px+\"px\";\r\n\t\tvar width = this.xy.scale_width;\r\n\t\tif (this.config.left_border) {\r\n\t\t\tcc.className += \" dhx_scale_hour_border\";\r\n\t\t}\r\n\t\tcc.style.width = width + \"px\";\r\n\r\n\t\tvar content = scheduler.templates.hour_scale(date);\r\n\t\tcc.innerHTML = content;\r\n\t\tthis._waiAria.hourScaleAttr(cc, content);\r\n\r\n\t\tc.appendChild(cc);\r\n\t\tdate=this.date.add(date,1,\"hour\");\r\n\t}\r\n\tb.appendChild(c);\r\n\tif (this.config.scroll_hour)\r\n\t\tb.scrollTop = this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour);\r\n};\r\n\r\nscheduler._currentDate = function(){\r\n\tif(scheduler.config.now_date){\r\n\t\treturn new Date(scheduler.config.now_date);\r\n\t}\r\n\treturn new Date();\r\n};\r\n\r\nscheduler._reset_ignores = function(){\r\n\tthis._ignores={};\r\n\tthis._ignores_detected = 0;\r\n};\r\n\r\nscheduler._process_ignores = function(sd, n, mode, step, preserve){\r\n\tthis._reset_ignores();\r\n\tvar ignore = scheduler[\"ignore_\"+this._mode];\r\n\tif (ignore){\r\n\t\tvar ign_date = new Date(sd);\r\n\t\tfor (var i=0; i<n; i++){\r\n\t\t\tif (ignore(ign_date)){\r\n\t\t\t\tthis._ignores_detected += 1;\r\n\t\t\t\tthis._ignores[i] = true;\r\n\t\t\t\tif (preserve)\r\n\t\t\t\t\tn++;\r\n\t\t\t}\r\n\t\t\tign_date = scheduler.date.add(ign_date, step, mode);\r\n\t\t\tif(scheduler.date[mode + '_start'])\r\n\t\t\t\tign_date = scheduler.date[mode + '_start'](ign_date);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._render_month_scale = function(div, dd/*month start*/, sd/*view start*/, rows ){\r\n\t//renders month view layout\r\n\r\n\tvar ed=scheduler.date.add(dd,1,\"month\"),\r\n\t\tview_start = new Date(sd);\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\tvar tdwidths=[];\r\n\r\n\tfor (var i=0; i<=7; i++) {\r\n\t\tvar cell_width = this._cols[i] || 0;\r\n\t\tif(!isNaN(Number(cell_width))){\r\n\t\t\tcell_width = cell_width + \"px\";\r\n\t\t}\r\n\t\ttdwidths[i] = cell_width;\r\n\t}\r\n\r\n\tfunction getCellHeight(row){\r\n\t\tvar h = scheduler._colsS.height;\r\n\t\tif(scheduler._colsS.heights[row + 1] !== undefined ){\r\n\t\t\th = scheduler._colsS.heights[row + 1] - (scheduler._colsS.heights[row]||0);\r\n\t\t}\r\n\t\treturn h;\r\n\t}\r\n\r\n\r\n\tvar cellheight = 0;\r\n\r\n\tconst table = document.createElement(\"div\");\r\n\ttable.classList.add(\"dhx_cal_month_table\");\r\n\r\n\tvar rendered_dates = [];\r\n\tfor (var i=0; i<rows; i++){\r\n\t\tvar row = document.createElement(\"div\");\r\n\t\trow.classList.add(\"dhx_cal_month_row\");\r\n\t\trow.style.height = getCellHeight(i) + \"px\";\r\n\t\ttable.appendChild(row);\r\n\t\t// var row_height = Math.max(getCellHeight(i) - scheduler.xy.month_head_height, 0);\r\n\t\tfor (var j=0; j<7; j++) {\r\n\t\t\tvar cell = document.createElement(\"div\");\r\n\t\t\trow.appendChild(cell);\r\n\r\n\t\t\tvar cls = \"dhx_cal_month_cell\";\r\n\t\t\tif (sd<dd)\r\n\t\t\t\tcls += ' dhx_before';\r\n\t\t\telse if (sd>=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i<sections.length; i++) {\r\n\t\tif(sections[i].map_to == property) {\r\n\t\t\tvar options = sections[i].options;\r\n\t\t\tfor (var j=0; j<options.length; j++) {\r\n\t\t\t\tif(options[j].key == key) {\r\n\t\t\t\t\treturn options[j].label;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn \"\";\r\n};\r\nscheduler.updateCollection = function(list_name, collection) {\r\n\tvar list = scheduler.serverList(list_name);\r\n\tif (!list) return false;\r\n\tlist.splice(0, list.length);\r\n\tlist.push.apply(list, collection || []);\r\n\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\tscheduler.resetLightbox();\r\n\tscheduler.hideCover();\r\n\treturn true;\r\n};\r\nscheduler._lame_clone = function(object, cache) {\r\n\tvar i, t, result; // iterator, types array, result\r\n\r\n\tcache = cache || [];\r\n\r\n\tfor (i=0; i<cache.length; i+=2)\r\n\t\tif(object === cache[i])\r\n\t\t\treturn cache[i+1];\r\n\r\n\tif (object && typeof object == \"object\") {\r\n\t\tresult = Object.create(object); // preserve prototype methods\r\n\t\tt = [Array,Date,Number,String,Boolean];\r\n\t\tfor (i=0; i<t.length; i++) {\r\n\t\t\tif (object instanceof t[i])\r\n\t\t\t\tresult = i ? new t[i](object) : new t[i](); // first one is array\r\n\t\t}\r\n\t\tcache.push(object, result);\r\n\t\tfor (i in object) {\r\n\t\t\tif (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\tresult[i] = scheduler._lame_clone(object[i], cache);\r\n\t\t}\r\n\t}\r\n\treturn result || object;\r\n};\r\nscheduler._lame_copy = function(target, source) {\r\n\tfor (var key in source) {\r\n\t\tif (source.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n};\r\nscheduler._get_date_from_pos = function(pos) {\r\n\tvar start=this._min_date.valueOf()+(pos.y*this.config.time_step+(this._table_view?0:pos.x)*24*60)*60000;\r\n\t//if (this.config.rtl) start=scheduler.date.add(this._max_date, -1, \"day\").valueOf()+(pos.y*this.config.time_step-(this._table_view?0:pos.x)*24*60)*60000;\r\n\treturn new Date(this._correct_shift(start));\r\n};\r\n// n_ev - native event\r\nscheduler.getActionData = function(n_ev) {\r\n\tvar pos = this._mouse_coords(n_ev);\r\n\treturn {\r\n\t\tdate:this._get_date_from_pos(pos),\r\n\t\tsection:pos.section\r\n\t};\r\n};\r\nscheduler._focus = function(node, select){\r\n\tif (node && node.focus){\r\n\t\tif (this._mobile){\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tnode.focus();\r\n\t\t\t},10);\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tif (select && node.select && node.offsetWidth) {\r\n\t\t\t\t\tnode.select();\r\n\t\t\t\t}\r\n\t\t\t\tnode.focus();\r\n\t\t\t} catch (e) {\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getDaysDifference(startDate, endDate) {\r\n\tconst start = new Date(startDate);\r\n\tconst end = new Date(endDate);\r\n\tconst differenceInTime = end.getTime() - start.getTime();\r\n\tconst differenceInDays = differenceInTime / (1000 * 3600 * 24);\r\n\treturn Math.abs(differenceInDays);\r\n}\r\n\r\n//non-linear scales\r\nscheduler._get_real_event_length=function(startDate, endDate, config){ // config may be a timeline view or a configuration object\r\n\tvar eventLength = endDate - startDate;\r\n\r\n\t// excludedDuration - duration between [00:00, first_hour] and [last_hour, 23:59]\r\n\t// var excludedDuration = (config._start_correction + config._end_correction)||0;\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar startColumnIndex = 0,\r\n\t\tendColumnIndex;\r\n\tif (config.render){\r\n\t\tstartColumnIndex = this._get_date_index(config, startDate);\r\n\t\tendColumnIndex = this._get_date_index(config, endDate);\r\n\r\n\t\tif(startDate.valueOf() < scheduler.getState().min_date.valueOf()){\r\n\t\t\tstartColumnIndex = -getDaysDifference(startDate, scheduler.getState().min_date);\r\n\t\t}\r\n\t\tif(endDate.valueOf() > scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisIE6: isWindowAwailable && (!XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0),\r\n\tisIE7: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0),\r\n\tisIE8: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\t\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nvar canUseCsp = false;\r\n(function() {\r\n\ttry {\r\n\t\tnew Function(\"canUseCsp = false;\");\r\n\t} catch(e) {\r\n\t\tcanUseCsp = true;\r\n\t}\r\n})();\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tresult = canUseCsp;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\t_bind_host_object : function(method){\r\n\t\tif(method.bind){\r\n\t\t\treturn method.bind(scheduler);\r\n\t\t}else{\r\n\t\t\treturn function(){ return method.apply(scheduler, arguments); };\r\n\t\t}\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn scheduler.date._bind_host_object(func);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t//return scheduler.date._bind_host_object(func);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\t\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 0,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"<a>View more(\"+count+\" events)</a>\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"<b>Event:</b> \" + event.text + \"<br/><b>Start date:</b> \" + scheduler.templates.tooltip_date_format(start) + \"<br/><b>End date:</b> \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!scheduler._is_new_skin()){\r\n\t\t\t\t\t\tdata.style.top = (this._els[\"dhx_cal_navline\"][0].offsetHeight + this._els[\"dhx_cal_header\"][0].offsetHeight + used_multi_day_height ) + 'px';\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - parseInt(data.style.top, 10) - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\t\t\t\t\t\tif(!scheduler._is_new_skin()){\r\n\t\t\t\t\t\t\tdata.style.top = (parseInt(data.style.top) + 2) + \"px\";\r\n\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + (ev_sorder > 0 ? 2 : 1);\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"<textarea class='dhx_cal_editor'>\" + ev.text + \"</textarea>\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `<div class='dhx_menu_icon ${currentIcon}' title='${this.locale.labels[currentIcon]}' ${ariaAttr}></div>`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"<div class='dhx_menu_head'></div>\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w;\r\n\r\n\tvar html = '<div event_id=\"' + id + '\" ' + this.config.event_attribute + '=\"' + id + '\" class=\"' + cs +\r\n\t\t\t\t'\" style=\"position:absolute; top:' + y + 'px; ' +\r\n\t\t\t\t((this.config.rtl) ? 'right:':'left:') + x + 'px; width:' + boxWidth + 'px; height:' + h + 'px;' +\r\n\t\t\t\t(style || \"\") + '\"></div>';\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '<div class=\"dhx_event_move dhx_header\" > </div>';\r\n\t\tinner_html += '<div class=\"dhx_event_move dhx_title\">' + contentA + '</div>';\r\n\t\tinner_html += '<div class=\"dhx_body\">' + contentB + '</div>'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '<div class=\"' + footer_class + '\" style=\" width:' + (bottom ? ' margin-top:-1px;' : '') + '\" ></div>';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"<div class='dhx_event_resize dhx_event_resize_start'></div>\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"<div class='dhx_event_resize dhx_event_resize_end'></div>\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-text:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"<div event_id='\" + ev.id + \"' \" + this.config.event_attribute + \"='\" + ev.id + \"' class='\"+ cs + \"' style='\"+style_text+\"'\"+this._waiAria.eventBarAttrString(ev)+\">\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `<span class='dhx_cal_event_clear_date'>${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}</span>`;\r\n\t}\r\n\r\n\thtml += \"<div class='dhx_cal_event_line_content'>\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '</div>';\r\n\thtml += \"</div>\";\r\n\thtml += '</div>';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i<rendered_events.length; i++) {\r\n\t\tvar rendered_event = rendered_events[i];\r\n\t\tif (rendered_event.getAttribute(scheduler.config.event_attribute) == id) {\r\n\t\t\treturn rendered_event;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\nscheduler.showEvent = function(id, mode) {\r\n\tvar section;\r\n\tif(id && typeof id === \"object\"){\r\n\t\tmode = id.mode;\r\n\t\tsection = id.section;\r\n\t\tid = id.section;\r\n\t}\r\n\tvar ev = (typeof id == \"number\" || typeof id == \"string\") ? scheduler.getEvent(id) : id;\r\n\tmode = mode||scheduler._mode;\r\n\r\n\tif (!ev || (this.checkEvent(\"onBeforeEventDisplay\") && !this.callEvent(\"onBeforeEventDisplay\", [ev, mode])))\r\n\t\treturn;\r\n\r\n\tvar scroll_hour = scheduler.config.scroll_hour;\r\n\tscheduler.config.scroll_hour = ev.start_date.getHours();\r\n\tvar preserve_scroll = scheduler.config.preserve_scroll;\r\n\tscheduler.config.preserve_scroll = false;\r\n\r\n\tvar original_color = ev.color;\r\n\tvar original_text_color = ev.textColor;\r\n\tif (scheduler.config.highlight_displayed_event) {\r\n\t\tev.color = scheduler.config.displayed_event_color;\r\n\t\tev.textColor = scheduler.config.displayed_event_text_color;\r\n\t}\r\n\r\n\tscheduler.setCurrentView(new Date(ev.start_date), mode);\r\n\r\n\tfunction restoreOriginalColors(){\r\n\t\tev.color = original_color;\r\n\t\tev.textColor = original_text_color;\r\n\t}\r\n\r\n\tscheduler.config.scroll_hour = scroll_hour;\r\n\tscheduler.config.preserve_scroll = preserve_scroll;\r\n\r\n\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\tvar timeline = scheduler.getView();\r\n\t\tvar property = timeline.y_property;\r\n\r\n\t\tvar event = scheduler.getEvent(ev.id);\r\n\r\n\t\tif(event){\r\n\t\t\tif(!section){\r\n\t\t\t\tvar section = event[property];\r\n\t\t\t\tif(Array.isArray(section)){\r\n\t\t\t\t\tsection = section[0];\r\n\t\t\t\t}else if(typeof section === \"string\" && scheduler.config.section_delimiter && section.indexOf(scheduler.config.section_delimiter) > -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"<div class='dhx_cal_ltext dhx_cal_template' ></div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\treturn \"<div class='dhx_cal_ltext'><textarea></textarea></div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"<div class='dhx_cal_ltext dhx_cal_select'><select style='width:100%;'>\";\r\n\t\t\tfor (var i=0; i < sns.options.length; i++)\r\n\t\t\t\thtml+=\"<option value='\"+sns.options[i].key+\"'>\"+sns.options[i].label+\"</option>\";\r\n\t\t\thtml+=\"</select></div>\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"<option value='\" + (i) + \"'>\" + (i) + \"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+this.locale.date.month_full[i]+\"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+i+\"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i<last){\r\n\t\t\t\t\t\t\tvar time=this.templates.time_picker(dt);\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+time+\"</option>\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \"<select class='\"+selectBoxClass+\"' \"+readonly + ariaAttrs+\">\"+options+\"</select> \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"<div class='dhx_section_time'>\"+html+\"<span style='font-weight:normal; font-size:10pt;' class='dhx_section_time_spacer'> – </span>\"+html+\"</div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> \"+scheduler.locale.labels.full_day+\" </label></input>\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k<time_values.length; k++) {\r\n\t\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ts[i+map[0]].value=(value_found)?direct_value:fixed_value;\r\n\t\t\t\tif(!(value_found || fixed_value)){\r\n\t\t\t\t\ts[i+map[0]].selectedIndex = -1;//show empty select in FF\r\n\t\t\t\t}\r\n\t\t\t\ts[i+map[1]].value=d.getDate();\r\n\t\t\t\ts[i+map[2]].value=d.getMonth();\r\n\t\t\t\ts[i+map[3]].value=d.getFullYear();\r\n\t\t\t}\r\n\r\n\t\t\t_fill_lightbox_select(s,0,ev.start_date);\r\n\t\t\t_fill_lightbox_select(s,4,ev.end_date);\r\n\t\t},\r\n\t\tget_value:function(node, ev, config) {\r\n\t\t\tvar s = node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\r\n\t\t\tev.start_date=new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\tev.end_date=new Date(s[map[3]+4].value,s[map[2]+4].value,s[map[1]+4].value,0,s[map[0]+4].value);\r\n\r\n\t\t\tif(!(s[map[3]].value && s[map[3]+4].value)){\r\n\t\t\t\t// use the previous date if start/end years are empty (outside lightbox range)\r\n\t\t\t\tvar original = scheduler.getEvent(scheduler._lightbox_id);\r\n\t\t\t\tif(original){\r\n\t\t\t\t\tev.start_date = original.start_date;\r\n\t\t\t\t\tev.end_date = original.end_date;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.end_date<=ev.start_date)\r\n\t\t\t\tev.end_date=scheduler.date.add(ev.start_date,scheduler.config.time_step,\"minute\");\r\n\t\t\treturn {\r\n\t\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\t\tend_date: new Date(ev.end_date)\r\n\t\t\t};\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tscheduler._focus(node.getElementsByTagName(\"select\")[0]);\r\n\t\t}\r\n\t}\r\n\r\n};\r\n\r\n\t// GS-2214. Attaching the lightbox to the BODY element is not considered secure.\r\n\t// Attach it to Scheduler container for Salesforce and other secure environments\r\n\tfunction getLightboxRoot(){\r\n\t\tconst cspEnvironment = scheduler.config.csp === true;\r\n\t\tconst salesforceEnvironment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"] || ('$shadowResolver$' in document.body);\r\n\t\tif (cspEnvironment || salesforceEnvironment) {\r\n\t\t\treturn scheduler.$root;\r\n\t\t} else {\r\n\t\t\treturn document.body;\r\n\t\t}\r\n\t}\r\n\r\nscheduler._setLbPosition = function(box) {\r\n\tif(!box){\r\n\t\treturn;\r\n\t}\r\n\r\n\tbox.style.top = Math.max(getLightboxRoot().offsetHeight / 2 - box.offsetHeight/2, 0) + \"px\";\r\n\tbox.style.left = Math.max(getLightboxRoot().offsetWidth / 2 - box.offsetWidth/2, 0) + \"px\";\r\n\r\n};\r\n\r\nscheduler.showCover=function(box){\r\n\tif (box){\r\n\t\tbox.style.display=\"block\";\r\n\r\n\t\tthis._setLbPosition(box);\r\n\t}\r\n\tif(scheduler.config.responsive_lightbox){\r\n\t\tdocument.documentElement.classList.add(\"dhx_cal_overflow_container\");\r\n\t\tgetLightboxRoot().classList.add(\"dhx_cal_overflow_container\");\r\n\t}\r\n\tthis.show_cover();\r\n\tthis._cover.style.display = \"\";\r\n};\r\nscheduler.showLightbox=function(id){\r\n\tif (!id) return;\r\n\tif (!this.callEvent(\"onBeforeLightbox\",[id])) {\r\n\t\tif (this._new_event)\r\n\t\t\tthis._new_event = null;\r\n\t\treturn;\r\n\t}\r\n\tthis.showCover(box);\r\n\tvar box = this.getLightbox();\r\n\tthis._setLbPosition(box);\r\n\tthis._fill_lightbox(id,box);\r\n\tthis._waiAria.lightboxVisibleAttr(box);\r\n\t\r\n\tthis.callEvent(\"onLightbox\",[id]);\r\n};\r\nscheduler._fill_lightbox = function(id, box) {\r\n\tvar ev = this.getEvent(id);\r\n\tvar s = box.getElementsByTagName(\"span\");\r\n\tvar lightboxHeader = [];\r\n\r\n\tif (scheduler.templates.lightbox_header) {\r\n\t\tlightboxHeader.push(\"\");\r\n\t\tvar headerContent = scheduler.templates.lightbox_header(ev.start_date, ev.end_date, ev);\r\n\t\tlightboxHeader.push(headerContent);\r\n\t\ts[1].innerHTML = \"\";\r\n\t\ts[2].innerHTML = headerContent;\r\n\t} else {\r\n\t\tvar headerDate = this.templates.event_header(ev.start_date, ev.end_date, ev);\r\n\t\tvar headerTitle = (this.templates.event_bar_text(ev.start_date, ev.end_date, ev) || \"\").substr(0, 70); //IE6 fix;\r\n\r\n\t\tlightboxHeader.push(headerDate);\r\n\t\tlightboxHeader.push(headerTitle);\r\n\t\ts[1].innerHTML = headerDate;\r\n\t\ts[2].innerHTML = headerTitle;\r\n\t}\r\n\r\n\tthis._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\r\n\r\n\tvar sns = this.config.lightbox.sections;\r\n\tfor (var i = 0; i < sns.length; i++) {\r\n\t\tvar current_sns = sns[i];\r\n\t\tvar node = scheduler._get_lightbox_section_node(current_sns);\r\n\t\tvar block = this.form_blocks[current_sns.type];\r\n\t\tvar value = (ev[current_sns.map_to] !== undefined) ? ev[current_sns.map_to] : current_sns.default_value;\r\n\t\tblock.set_value.call(this, node, value, ev, current_sns);\r\n\t\tif (sns[i].focus)\r\n\t\t\tblock.focus.call(this, node);\r\n\t}\r\n\r\n\tscheduler._lightbox_id = id;\r\n};\r\n\r\nscheduler._get_lightbox_section_node = function(section){\r\n\treturn scheduler._lightbox.querySelector(`#${section.id}`).nextSibling;\r\n};\r\n\r\nscheduler._lightbox_out=function(ev){\r\n\tvar sns = this.config.lightbox.sections;\r\n\tfor (var i=0; i < sns.length; i++) {\r\n\t\tvar node = scheduler._lightbox.querySelector(`#${sns[i].id}`);\r\n\t\tnode=(node?node.nextSibling:node);\r\n\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\tvar res=block.get_value.call(this,node,ev, sns[i]);\r\n\t\tif (sns[i].map_to!=\"auto\")\r\n\t\t\tev[sns[i].map_to]=res;\r\n\t}\r\n\treturn ev;\r\n};\r\nscheduler._empty_lightbox=function(data){\r\n\tvar id=scheduler._lightbox_id;\r\n\tvar ev=this.getEvent(id);\r\n\t//var box=this.getLightbox();\r\n\r\n\tthis._lame_copy(ev, data);\r\n\r\n\tthis.setEvent(ev.id,ev);\r\n\tthis._edit_stop_event(ev,true);\r\n\tthis.render_view_data();\r\n};\r\nscheduler.hide_lightbox=function(id){\r\n\tscheduler.endLightbox(false, this.getLightbox());\r\n};\r\n\r\nscheduler.hideCover=function(box){\r\n\tif (box) box.style.display=\"none\";\r\n\tthis.hide_cover();\r\n\tif(scheduler.config.responsive_lightbox){\r\n\t\tdocument.documentElement.classList.remove(\"dhx_cal_overflow_container\");\r\n\t\tgetLightboxRoot().classList.remove(\"dhx_cal_overflow_container\");\r\n\t}\r\n};\r\nscheduler.hide_cover=function(){\r\n\tif (this._cover)\r\n\t\tthis._cover.parentNode.removeChild(this._cover);\r\n\tthis._cover=null;\r\n};\r\n\r\nscheduler.show_cover=function(){\r\n\tif(this._cover) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis._cover=document.createElement(\"div\");\r\n\tthis._cover.className=\"dhx_cal_cover\";\r\n\tthis._cover.style.display = \"none\";\r\n\r\n\tscheduler.event(this._cover, \"mousemove\", scheduler._move_while_dnd);\r\n\tscheduler.event(this._cover, \"mouseup\", scheduler._finish_dnd);\r\n\r\n\tgetLightboxRoot().appendChild(this._cover);\r\n};\r\nscheduler.save_lightbox=function(){\r\n\tvar data = this._lightbox_out({}, this._lame_copy(this.getEvent(this._lightbox_id)));\r\n\tif (this.checkEvent(\"onEventSave\") && !this.callEvent(\"onEventSave\",[this._lightbox_id, data, this._new_event]))\r\n\t\treturn;\r\n\tthis._empty_lightbox(data);\r\n\tthis.hide_lightbox();\r\n};\r\nscheduler.startLightbox = function(id, box){\r\n\tthis._lightbox_id = id;\r\n\tthis._custom_lightbox = true;\r\n\r\n\tthis._temp_lightbox = this._lightbox;\r\n\tthis._lightbox = box;\r\n\tthis.showCover(box);\r\n};\r\nscheduler.endLightbox = function(mode, box){\r\n\tvar box = box || scheduler.getLightbox();\r\n\r\n\tvar event = scheduler.getEvent(this._lightbox_id);\r\n\tif(event)\r\n\t\tthis._edit_stop_event(event, mode);\r\n\tif (mode)\r\n\t\tscheduler.render_view_data();\r\n\tthis.hideCover(box);\r\n\r\n\tif (this._custom_lightbox){\r\n\t\tthis._lightbox = this._temp_lightbox;\r\n\t\tthis._custom_lightbox = false;\r\n\t}\r\n\tthis._temp_lightbox = this._lightbox_id = null; // in case of custom lightbox user only calls endLightbox so we need to reset _lightbox_id\r\n\tthis._waiAria.lightboxHiddenAttr(box);\r\n\tthis.resetLightbox();\r\n\tthis.callEvent(\"onAfterLightbox\",[]);\r\n};\r\nscheduler.resetLightbox = function(){\r\n\tif (scheduler._lightbox && !scheduler._custom_lightbox)\r\n\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\tscheduler._lightbox = null;\r\n};\r\nscheduler.cancel_lightbox=function(){\r\n\tif(this._lightbox_id){\r\n\t\tthis.callEvent(\"onEventCancel\",[this._lightbox_id, !!this._new_event]);\r\n\t}\r\n\r\n\tthis.hide_lightbox();\r\n};\r\nscheduler.hideLightbox = scheduler.cancel_lightbox;// GS-1650 need to use cancel in order to fire onEventCancel event, which is important to refresh the state of recurring series\r\n\r\nscheduler._init_lightbox_events=function(){\r\n\tif(this.getLightbox().$_eventAttached){\r\n\t\treturn;\t\r\n\t}\r\n\tconst lightbox = this.getLightbox();\r\n\tlightbox.$_eventAttached = true;\r\n\r\n\tscheduler.event(lightbox, \"click\", function(e){\r\n\r\n\t\tif(e.target.closest(\".dhx_cal_ltitle_close_btn\")){\r\n\t\t\tscheduler.cancel_lightbox();\r\n\t\t}\r\n\t\t\r\n\t\tconst buttonTarget = scheduler.$domHelpers.closest(e.target, \".dhx_btn_set\");\r\n\t\tif(!buttonTarget) {\r\n\t\t\tconst sectionButton = scheduler.$domHelpers.closest(e.target, \".dhx_custom_button[data-section-index]\");\r\n\t\t\tif(sectionButton){\r\n\t\t\t\tconst index = Number(sectionButton.getAttribute(\"data-section-index\"));\r\n\t\t\t\tconst block = scheduler.form_blocks[scheduler.config.lightbox.sections[index].type];\r\n\t\t\t\tblock.button_click(scheduler.$domHelpers.closest(sectionButton, \".dhx_cal_lsection\"), sectionButton, e);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tconst action = buttonTarget ? buttonTarget.getAttribute(\"data-action\") : null;\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"dhx_save_btn\":\r\n\t\t\tcase \"save\":\r\n\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.save_lightbox();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dhx_delete_btn\":\r\n\t\t\tcase \"delete\":\r\n\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar c=scheduler.locale.labels.confirm_deleting;\r\n\r\n\t\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback: function(){\r\n\t\t\t\t\tscheduler.deleteEvent(scheduler._lightbox_id);\r\n\t\t\t\t\tscheduler._new_event = null; //clear flag, if it was unsaved event\r\n\t\t\t\t\tscheduler.hide_lightbox();\r\n\t\t\t\t},\r\n\t\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}});\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dhx_cancel_btn\":\r\n\t\t\tcase \"cancel\":\r\n\t\t\t\tscheduler.cancel_lightbox();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tscheduler.callEvent(\"onLightboxButton\", [action, buttonTarget, e]);\r\n\t\t}\r\n\t});\r\n\tscheduler.event(lightbox, \"keydown\", function(e){\r\n\t\tvar event = e || window.event;\r\n\t\tvar target = e.target || e.srcElement;\r\n\t\tvar buttonTarget = target.querySelector(\"[dhx_button]\");\r\n\r\n\t\tif(!buttonTarget){\r\n\t\t\tbuttonTarget = target.parentNode.querySelector(\".dhx_custom_button, .dhx_readonly\");\r\n\t\t}\r\n\r\n\t\tswitch((e||event).keyCode){\r\n\t\t\tcase 32:{//space\r\n\t\t\t\tif ((e||event).shiftKey) return;\r\n\t\t\t\tif(buttonTarget && buttonTarget.click){\r\n\t\t\t\t\tbuttonTarget.click();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase scheduler.keys.edit_save:\r\n\t\t\t\tif ((e||event).shiftKey) return;\r\n\t\t\t\tif(buttonTarget && buttonTarget.click){\r\n\t\t\t\t\tbuttonTarget.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.save_lightbox();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase scheduler.keys.edit_cancel:\r\n\t\t\t\tscheduler.cancel_lightbox();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t});\r\n};\r\nscheduler.setLightboxSize=function(){\r\n\treturn;\r\n/* TODO: inspect and remove in 7.0\r\n\tvar d = this._lightbox;\r\n\tif (!d) return;\r\n\r\n\tvar con = d.childNodes[1];\r\n\tcon.style.height=\"0px\";\r\n\tcon.style.height=con.scrollHeight+\"px\";\r\n\td.style.height=con.scrollHeight+scheduler.xy.lightbox_additional_height+\"px\";\r\n\tcon.style.height=con.scrollHeight+\"px\"; //it is incredible , how ugly IE can be*/\r\n};\r\n\r\nscheduler._init_dnd_events = function(){\r\n\tscheduler.event(getLightboxRoot(), \"mousemove\", scheduler._move_while_dnd);\r\n\tscheduler.event(getLightboxRoot(), \"mouseup\", scheduler._finish_dnd);\r\n\tscheduler._init_dnd_events = function(){};\r\n };\r\nscheduler._move_while_dnd = function(e){\r\n\tif (scheduler._dnd_start_lb){\r\n\t\tif (!document.dhx_unselectable){\r\n\t\t\tgetLightboxRoot().classList.add(\"dhx_unselectable\");\r\n\t\t\tdocument.dhx_unselectable = true;\r\n\t\t}\r\n\t\tvar lb = scheduler.getLightbox();\r\n\t\tvar now = [e.pageX, e.pageY];\r\n\t\tlb.style.top = scheduler._lb_start[1]+now[1]-scheduler._dnd_start_lb[1]+\"px\";\r\n\t\tlb.style.left = scheduler._lb_start[0]+now[0]-scheduler._dnd_start_lb[0]+\"px\";\r\n\t}\r\n};\r\nscheduler._ready_to_dnd = function(e){\r\n\tvar lb = scheduler.getLightbox();\r\n\tscheduler._lb_start = [lb.offsetLeft, lb.offsetTop];\r\n\tscheduler._dnd_start_lb = [e.pageX, e.pageY];\r\n};\r\nscheduler._finish_dnd = function(){\r\n\tif (scheduler._lb_start){\r\n\t\tscheduler._lb_start = scheduler._dnd_start_lb = false;\r\n\t\tgetLightboxRoot().classList.remove(\"dhx_unselectable\");\r\n\t\tdocument.dhx_unselectable = false;\r\n\t}\r\n};\r\nscheduler.getLightbox=function(){ //scheduler.config.wide_form=true;\r\n\tif (!this._lightbox){\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\td.className=\"dhx_cal_light\";\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\td.className+=\" dhx_cal_light_wide\";\r\n\t\tif (scheduler.form_blocks.recurring)\r\n\t\t\td.className+=\" dhx_cal_light_rec\";\r\n\t\tif (scheduler.config.rtl)\r\n\t\t\td.className+=\" dhx_cal_light_rtl\";\r\n\t\tif (scheduler.config.responsive_lightbox)\r\n\t\t\td.className += \" dhx_cal_light_responsive\";\r\n\r\n\t\td.style.visibility=\"hidden\";\r\n\t\tvar html = this._lightbox_template;\r\n\r\n\t\tvar buttons = this.config.buttons_left;\r\n\r\n\r\n\t\thtml += \"<div class='dhx_cal_lcontrols'>\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"<div \"+ariaAttr+\" data-action='\"+ buttons[i]+\"' class='dhx_btn_set dhx_\"+(scheduler.config.rtl?\"right\":\"left\")+\"_btn_set \" + buttons[i] + \"_set'><div class='dhx_btn_inner \" + buttons[i] + \"'></div><div>\" + scheduler.locale.labels[buttons[i]] + \"</div></div>\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\tif(scheduler._is_new_skin()){\r\n\t\t\t\thtml += \"<div class='dhx_cal_lcontrols_push_right'></div>\";\r\n\t\t\t}\r\n\t\t\thtml += \"<div \"+ariaAttr+\" data-action='\"+ buttons[i]+\"' class='dhx_btn_set dhx_\"+(rtl?\"left\":\"right\")+\"_btn_set \" +\r\n\t\t\t\t\t\tbuttons[i] + \"_set'><div class='dhx_btn_inner \" +\r\n\t\t\t\t\t\tbuttons[i] + \"'></div><div>\" + scheduler.locale.labels[buttons[i]] + \"</div></div>\";\r\n\t\t}\r\n\t\thtml += \"</div>\";\r\n\t\thtml+=\"</div>\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"<div \"+ariaAttr+\" class='dhx_custom_button' data-section-index='\"+i+\"' index='\"+i+\"'><div class='dhx_custom_button_\"+sns[i].button+\"'></div><div>\"+this.locale.labels[\"button_\"+sns[i].button]+\"</div></div>\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"<div class='dhx_wrap_section'>\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"<div id='\"+sns[i].id+\"' class='dhx_cal_lsection'>\"+button+ \"<label>\"+label_name+\"</label></div>\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"</div>\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i<ds.length; i++) {\r\n\t\t\tvar t_ds = ds[i];\r\n\t\t\tvar className = scheduler._getClassName(t_ds);\r\n\t\t\tif (className == \"dhx_cal_larea\") {\r\n\t\t\t\tt_ds.innerHTML = html;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// bind labels to lightbox inputs\r\n\t\tscheduler._bindLightboxLabels(sns);\r\n\r\n\t\t//sizes\r\n\t\tthis.setLightboxSize();\r\n\r\n\t\tthis._init_lightbox_events(this);\r\n\t\t//d.style.display=\"none\";\r\n\t\td.style.visibility=\"visible\";\r\n\t}\r\n\r\n\r\n\treturn this._lightbox;\r\n};\r\n\r\nscheduler._bindLightboxLabels = function(sections){\r\n\t// link section labels to controls using label[for] attribute and label.onclick=control.focus as a fallback\r\n\t// label[for] is preferable for accessibility reasons\r\n\r\n\tfor(var i = 0; i < sections.length; i++){\r\n\t\tvar section = sections[i];\r\n\t\tif(!section.id || !scheduler._lightbox.querySelector(`#${section.id}`))\r\n\t\t\tcontinue;\r\n\r\n\t\tvar labelBlock = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\t\tvar label = labelBlock.querySelector(\"label\");\r\n\r\n\t\tvar inputBlock = scheduler._get_lightbox_section_node(section);\r\n\t\twhile(inputBlock && !inputBlock.querySelector){\r\n\t\t\tinputBlock = inputBlock.nextSibling;\r\n\t\t}\r\n\r\n\t\tvar fallback = true;\r\n\r\n\t\tif(inputBlock) {\r\n\t\t\tvar input = inputBlock.querySelector(\"input, select, textarea\");\r\n\t\t\tif(input){\r\n\t\t\t\tsection.inputId = input.id || \"input_\" + scheduler.uid();\r\n\t\t\t\tif(!input.id)\r\n\t\t\t\t\tinput.id = section.inputId;\r\n\t\t\t\tlabel.setAttribute(\"for\", section.inputId);\r\n\t\t\t\tfallback = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// use control.focus if failed to bind input using label[for]\r\n\t\tif(fallback){\r\n\t\t\tvar control = scheduler.form_blocks[section.type];\r\n\t\t\tif(control.focus){\r\n\t\t\t\tscheduler.event(label, \"click\", (function(section){\r\n\t\t\t\t\treturn function(){\r\n\r\n\t\t\t\t\t\tvar block = scheduler.form_blocks[section.type];\r\n\t\t\t\t\t\tvar node = scheduler._get_lightbox_section_node(section);\r\n\r\n\t\t\t\t\t\tif(block && block.focus)\r\n\t\t\t\t\t\t\tblock.focus.call(scheduler, node);\r\n\t\t\t\t\t};\r\n\t\t\t\t})(section));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(old_id, new_id){\r\n\tif(this._lightbox_id == old_id)\r\n\t\tthis._lightbox_id = new_id;\r\n});\r\n\r\nscheduler._lightbox_template= `<div class='dhx_cal_ltitle'><div class=\"dhx_cal_ltitle_descr\"><span class='dhx_mark'> </span><span class='dhx_time'></span><span class='dhx_title'></span>\r\n</div>\r\n<div class=\"dhx_cal_ltitle_controls\">\r\n<a class=\"dhx_cal_ltitle_close_btn scheduler_icon close\"></a>\r\n</div></div><div class='dhx_cal_larea'></div>`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\telement.addEventListener(name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"<div>\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"</div>\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '<div class=\"dhx_cal_navline\">' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_prev_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_next_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_today_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_date\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"day\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"week\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"month\"></div>' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_header\">' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_data\">' +\r\n\t\t\t\t\t'</div>';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._is_new_skin = function(){\r\n\treturn scheduler._theme_info.cssVarTheme;\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\"<div class='dhx_cal_scale_placeholder'>\" +\r\n\t\t\t\"</div>\"+\r\n\t\t\"<div>\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\t\"<div class='dhx_cal_data'>\" +\r\n\t\t\t\t\t\"<div class='dhx_cal_event'><div class='dhx_body'></div>\"+\r\n\t\t\t\t\"</div>\"+\r\n\t\t\t\"<div>\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nwindow.addEventListener('DOMContentLoaded', refreshAfterLoad);\r\nwindow.addEventListener('load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"<span class='dhx_scale_h'>\"+ date.getHours() +\"</span>\"+\r\n\t\t\"<span class='dhx_scale_m'> \"+ min +\"</span>\";\r\n\treturn html;\r\n}\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\t// if(this._theme_info.cssVarTheme){\r\n\t// \tconst themeVariables = this._theme_info.values;\r\n\t// \tfor(let i in scheduler.xy){\r\n\t// \t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t// \t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t// \t\t}\r\n\t// \t}\r\n\t// }\r\n\r\n\tif(!this._theme_info.cssVarTheme){\r\n\t\tvar set = 0;\r\n\t\tif (scheduler.skin && (scheduler.skin === \"classic\" || scheduler.skin === \"glossy\")) set = 1;\r\n\r\n\r\n\t\tif(scheduler._is_material_skin()){\r\n\t\t\tvar defaultButtonsLeft = scheduler.config.buttons_left.$initial;\r\n\t\t\tvar defaultButtonsRight = scheduler.config.buttons_right.$initial;\r\n\t\t\tif(defaultButtonsLeft && scheduler.config.buttons_left.slice().join() == defaultButtonsLeft &&\r\n\t\t\t\tdefaultButtonsRight && scheduler.config.buttons_right.slice().join() == defaultButtonsRight){\r\n\t\t\t\tvar tmp = scheduler.config.buttons_left.slice();\r\n\t\t\t\tscheduler.config.buttons_left = scheduler.config.buttons_right.slice();\r\n\t\t\t\tscheduler.config.buttons_right = tmp;\r\n\t\t\t}\r\n\t\t\tscheduler.xy.event_header_height = 18;\r\n\t\t//\tscheduler.xy.menu_width = 25;\r\n\t\t\tscheduler.xy.week_agenda_scale_height = 35;\r\n\t\t\tscheduler.xy.map_icon_width = 38;\r\n\t\t\tscheduler._lightbox_controls.defaults.textarea.height = 64;\r\n\t\t\tscheduler._lightbox_controls.defaults.time.height = 'auto';\r\n\t\t}\r\n\r\n\t\t//apply skin related settings\r\n\r\n\r\n\r\n\t\tthis._configure(scheduler.config, scheduler._skin_settings, set);\r\n\t\tthis._configure(scheduler.xy, scheduler._skin_xy, set);\r\n\r\n\t\tif (scheduler.skin === \"flat\"){\r\n\t\t\tscheduler.xy.scale_height = 35;\r\n\t\t\tscheduler.templates.hour_scale = function(date){\r\n\t\t\t\tvar min = date.getMinutes();\r\n\t\t\t\tmin = min < 10 ? \"0\"+min : min;\r\n\t\t\t\tvar html = \"<span class='dhx_scale_h'>\"+ date.getHours() +\"</span>\"+\r\n\t\t\t\t\t\"<span class='dhx_scale_m'> \"+ min +\"</span>\";\r\n\t\t\t\treturn html;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t//classic skin need not any further customization\r\n\t\tif (set) return;\r\n\r\n\t}\r\n\r\n\tif(!this._theme_info.cssVarTheme){\r\n\t\tvar minic = scheduler.config.minicalendar;\r\n\t\tif (minic) minic.padding = 14;\r\n\t}\r\n\r\n\t//scheduler._lightbox_template=\"<div class='dhx_cal_ltitle'><span class='dhx_mark'> </span><span class='dhx_time'></span><span class='dhx_title'></span><div class='dhx_close_icon'></div></div><div class='dhx_cal_larea'></div>\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '<div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div><div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div></div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div>';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tglobal.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_prepareDataItem: function(item) {\r\n\t\tvar processedItem = {};\r\n\t\tvar scheduler = this.$scheduler;\r\n\t\tvar copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (copy[i]) {\r\n\t\t\t\tif(copy[i].getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(copy[i]);\r\n\t\t\t\t} else if(typeof copy[i] == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareDataItem(copy[i]);\r\n\t\t\t\t} else if(copy[i] === null) {\r\n\t\t\t\t\tprocessedItem[i] = \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = copy[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `<div ${buttonAriaAttrs} class='scheduler_popup_button dhtmlx_popup_button ${buttonCss}' data-result='${result}' result='${result}' ><div>${text}</div></div>`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"<div>\" + text.text + \"</div>\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function () {\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '<div class=\"scheduler_popup_title dhtmlx_popup_title\">' + config.title + '</div>';\r\n\t\tinner += '<div class=\"scheduler_popup_text dhtmlx_popup_text\" id=\"' + contentId + '\"><span>' + (config.content ? '' : config.text) + '</span></div><div class=\"scheduler_popup_controls dhtmlx_popup_controls\">';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '</div>';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Κυριακή\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\"\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\n\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"<a data-link-date='\" + d_s(date) + \"' href='#'>\" + week_x(date) + \"</a>\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"<div \"+rowAttr+\" class='dhx_agenda_line dhx_agenda_line_header'>\" +\r\n\t\t\t\t\"<div \"+dateHeader+\">\"+l.date+\"</div>\" +\r\n\t\t\t\t\"<span class = 'description_header' style='padding-left:25px' \"+descriptionHeader+\">\"+l.description+\"</span>\" +\r\n\t\t\t\t\"</div>\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"<div class='dhx_agenda_area' \"+tableAttr+\">\";\r\n\t\tfor (var i=0; i<events.length; i++){\r\n\t\t\tvar ev = events[i];\r\n\t\t\tvar bg_color = (ev.color?(\"--dhx-scheduler-event-background:\"+ev.color+\";\"):\"\");\r\n\t\t\tvar color = (ev.textColor?(\"--dhx-scheduler-event-color:\"+ev.textColor+\";\"):\"\");\r\n\t\t\tvar ev_class = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\t\tagendaEventAttrString = scheduler._waiAria.agendaEventAttrString(ev);\r\n\t\t\tvar agendaDetailsButtonAttr = scheduler._waiAria.agendaDetailsBtnString();\r\n\r\n\t\t\thtml+=\"<div \"+agendaEventAttrString+\" class='dhx_agenda_line\"+(ev_class?' '+ev_class:'')+\r\n\t\t\t\t\t\"' event_id='\"+ev.id+\"' \"+scheduler.config.event_attribute+\"='\"+ev.id+\"' style='\"+color+\"\"+bg_color+\"\"+\r\n\t\t\t\t\t(ev._text_style||\"\")+\"'><div class='dhx_agenda_event_time'>\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"</div>\";\r\n\t\t\thtml+=`<div ${agendaDetailsButtonAttr} class='dhx_event_icon icon_details'><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t\t<path d=\"M15.4444 16.4H4.55556V7.6H15.4444V16.4ZM13.1111 2V3.6H6.88889V2H5.33333V3.6H4.55556C3.69222 3.6 3 4.312 3 5.2V16.4C3 16.8243 3.16389 17.2313 3.45561 17.5314C3.74733 17.8314 4.143 18 4.55556 18H15.4444C15.857 18 16.2527 17.8314 16.5444 17.5314C16.8361 17.2313 17 16.8243 17 16.4V5.2C17 4.312 16.3 3.6 15.4444 3.6H14.6667V2H13.1111ZM13.8889 10.8H10V14.8H13.8889V10.8Z\" fill=\"#A1A4A6\"/>\r\n\t\t\t</svg></div>`;\r\n\t\t\thtml+=\"<span>\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"</span></div>\";\r\n\t\t}\r\n\t\thtml+=\"<div class='dhx_v_border'></div></div>\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `<div class=\"dhx_agenda_day_date\">${dayDateToStr(date)}</div>\r\n\t\t<div class=\"dhx_agenda_day_dow\">${dayDowToStr(date)}</div>`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `<div class=\"dhx_cal_agenda_no_events\">${scheduler.locale.labels.agenda_tab}</div>`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n<div class=\"dhx_cal_agenda_day\">\r\n\t<div class=\"dhx_cal_agenda_day_header\">${scheduler.templates.agenda_day(day)}</div>\r\n\t<div class=\"dhx_cal_agenda_day_events\">\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `</div></div>`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\treturn `<div class=\"dhx_cal_agenda_event_line ${cls||\"\"} ${calendarEvent.id == selectedId ? \"dhx_cal_agenda_event_line_selected\" : \"\"}\" ${scheduler.config.event_attribute}=\"${calendarEvent.id}\">\r\n\t<div class=\"dhx_cal_agenda_event_line_marker\"></div>\r\n\t<div class=\"dhx_cal_agenda_event_line_time\">${dates}</div>\r\n\t<div class=\"dhx_cal_agenda_event_line_text\">${description}</div>\r\n</div>`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k<evs_dates.length; k++) {\r\n\t\t\tvar tevs = scheduler.getEvents(evs_dates[k].start_date, evs_dates[k].end_date);\r\n\t\t\tfor(var j=0; j<tevs.length; j++) {\r\n\t\t\t\tif ((tevs[j].event_pid || tevs[j].id) != ev.id )\r\n\t\t\t\t\tevs.push(tevs[j]);\r\n\t\t\t}\r\n\t\t}\r\n\t} else {\r\n\t\tevs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\tfor (var i=0; i<evs.length; i++) {\r\n\t\t\tvar concurrent = evs[i];\r\n\r\n\t\t\tif (concurrent.id == ev.id || (concurrent.event_length && [concurrent.event_pid, concurrent.event_length].join(\"#\") == ev.id)) {\r\n\t\t\t\tevs.splice(i,1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tvar map_to = scheduler._get_section_property();\r\n\r\n\tvar single = true;\r\n\tif (checked_mode) { // custom view\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++){\r\n\t\t\tif (evs[i].id != ev.id && this._check_sections_collision(evs[i], ev))\r\n\t\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\tif (count >= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tif(last.style.visibility == \"hidden\"){\r\n\t\t\t\t\t\t\tlast.style.display = \"none\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tlast.style.display = \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.<br>\r\n\t\tYou may need a <a href=\"https://docs.dhtmlx.com/scheduler/editions_comparison.html\" target=\"_blank\">Professional version of the component</a>.<br>\r\n\t\tContact us at <a href=\"https://dhtmlx.com/docs/contact.shtml\" target=\"_blank\">https://dhtmlx.com/docs/contact.shtml</a> if you have any questions.`);\r\n\t}\r\n};","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"<div class='\"+sns.type+\"' ></div>\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `<div class='dhx_cal_ltext dhx_cal_radio ${sns.vertical ? \"dhx_cal_radio_vertical\": \"\"}' style='max-height:${sns.height}px;'>`;\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\tvar id = scheduler.uid();\r\n\t\t\tres += \"<label class='dhx_cal_radio_item' for='\"+id+\"'><input id='\"+id+\"' type='radio' name='\"+sns.name+\"' value='\"+sns.options[i].key+\"'><span>\"+\" \"+sns.options[i].label+\"</span></label>\";\r\n\t\t}\r\n\t\tres += \"</div>\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i<radiobuttons.length; i++) {\r\n\t\t\tif(radiobuttons[i].checked) {\r\n\t\t\t\treturn radiobuttons[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['checkbox']={\r\n\trender:function(sns) {\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\treturn '<div class=\"dhx_cal_wide_checkbox\"></div>';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"<input id='\"+id+\"' type='checkbox' value='true' name='\"+config.name+\"'\"+((isChecked)?\"checked='true'\":'')+\"'>\";\r\n\t\tvar label_html = \"<label for='\"+id+\"'>\"+(scheduler.locale.labels[\"section_\"+config.name]||config.name)+\"</label>\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t<g>\r\n\t<line x1=\"0.5\" y1=\"5\" x2=\"0.5\" y2=\"3.0598e-08\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"0.5\" x2=\"5\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"0.5\" y1=\"11\" x2=\"0.5\" y2=\"16\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"15.5\" x2=\"5\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"0.5\" x2=\"16\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"2.18557e-08\" x2=\"15.5\" y2=\"5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"15.5\" x2=\"16\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"16\" x2=\"15.5\" y2=\"11\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t</g>\r\n\t</svg>\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](section.key, section.label, section);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](section.key, section.label, section);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tvar start_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts)-1;\r\n\t\tvar end_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts)-1;\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tblock.style.cssText = \"height: \"+height+\"px; left: \"+start_pos+\"px; width: \"+width+\"px; top: \"+top+\"px;\";\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\"table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\r\n\t\tvar dataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_data\"));\r\n\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsetInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\r\n\t\t})();\r\n\t/*\tif(window.Scheduler && window.Scheduler.plugin){\r\n\t\t\twindow.Scheduler.plugin(setupKeyNav);\r\n\t\t}else{\r\n\t\t\tsetupKeyNav(window.scheduler);\r\n\t\t}*/\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tscheduler.config['lightbox_'+scheduler.layers[i].name] = { };\r\n scheduler.config['lightbox_'+scheduler.layers[i].name].sections = _cloneObj(scheduler.config.lightbox.sections);\r\n\t\t\tscheduler._layers_zindex[scheduler.layers[i].name] = scheduler.config.initial_layer_zindex||5 + i*3;\r\n\t\t\tif(scheduler.layers[i].url) {\r\n\t\t\t\tvar dp = scheduler.createDataProcessor({\r\n\t\t\t\t\turl: scheduler.layers[i].url\r\n\t\t\t\t});\r\n\t\t\t\tdp.layer = scheduler.layers[i].name;\r\n\t\t\t\tscheduler._dataprocessors.push(dp);\r\n\t\t\t\tscheduler._dataprocessors[i].init(scheduler);\r\n\t\t\t}\r\n\t\t\tif(scheduler.layers[i].isDefault)\r\n\t\t\t\tscheduler.defaultLayer = scheduler.layers[i].name;\r\n\t\t}\r\n\t})();\r\n\r\n\r\n\tscheduler.showLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, true);\r\n\t};\r\n\r\n\tscheduler.hideLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, false);\r\n\t};\r\n\r\n\tscheduler.toggleLayer = function(tlayer, visible) { // visible is optional\r\n\t\tvar layer = this.getLayer(tlayer);\r\n\r\n\t\tif(typeof visible != 'undefined')\r\n\t\t\tlayer.visible = !!visible;\r\n\t\telse\r\n\t\t\tlayer.visible = !layer.visible;\r\n\r\n\t\tthis.setCurrentView(this._date, this._mode);\r\n\t};\r\n\r\n\tscheduler.getLayer = function(tlayer) { // either string with layer name or event with layer property\r\n\t\tvar layer,\r\n\t\t\tlayer_name;\r\n\t\tif(typeof tlayer == 'string')\r\n\t\t\tlayer_name = tlayer;\r\n\t\tif(typeof tlayer == 'object')\r\n\t\t\tlayer_name = tlayer.layer;\r\n\t\tfor (var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tif(scheduler.layers[i].name == layer_name)\r\n\t\t\t\tlayer = scheduler.layers[i];\r\n\t\t}\r\n\t\treturn layer;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function (event_id){\r\n\t\tvar ev = this.getEvent(event_id);\r\n this.config.lightbox.sections = this.config['lightbox_'+ev.layer].sections;\r\n scheduler.resetLightbox();\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\tvar ev = scheduler.getEvent(event_id);\r\n return !scheduler.getLayer(ev.layer).noMenu;\r\n\t});\r\n\r\n\tscheduler.attachEvent('onEventCollision', function(ev, evs) {\r\n\t\tvar layer = this.getLayer(ev);\r\n\t\tif(!layer.checkCollision)\r\n\t\t\treturn false;\r\n\t\tvar count = 0;\r\n\t\tfor(var i = 0; i<evs.length; i++) {\r\n\t\t\tif(evs[i].layer == layer.name && evs[i].id != ev.id)\r\n\t\t\t\tcount++;\r\n\t\t}\r\n\t\treturn (count >= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('<div class=') == -1)\r\n\t\t\tcontentA = (scheduler.templates['event_header_'+ev.layer])?scheduler.templates['event_header_'+ev.layer](ev.start_date,ev.end_date,ev):contentA;\r\n\t\tif(contentB.indexOf('<div class=') == -1)\r\n\t\tcontentB = (scheduler.templates['event_text_'+ev.layer])?scheduler.templates['event_text_'+ev.layer](ev.start_date,ev.end_date,ev):contentB;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = \"dhx_cal_event\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar borderBox = scheduler._border_box_events();\r\n\r\n\t\tvar borderBoxWidth = w - 2;\r\n\t\tvar boxWidth = borderBox ? borderBoxWidth : (w-4),\r\n\t\theaderWidth = borderBox ? borderBoxWidth : (w-6),\r\n\t\tbodyWidth = borderBox ? borderBoxWidth : (w-14),\r\n\t\tfooterWidth = borderBox ? (borderBoxWidth - 2) : (w-8);\r\n\r\n\t\tvar bodyHeight = borderBox ? (h - this.xy.event_header_height) : (h-30 + 1);\r\n\r\n\t\tvar html='<div event_id=\"'+id+'\" '+scheduler.config.event_attribute+'=\"'+id+'\" class=\"'+cs+'\" style=\"position:absolute; top:'+y+'px; left:'+x+'px; width:'+boxWidth+'px; height:'+h+'px;'+(style||\"\")+'\">';\r\n\t\thtml+='<div class=\"dhx_header\" style=\" width:'+headerWidth+'px;\" > </div>';\r\n\t\thtml+='<div class=\"dhx_title\">'+contentA+'</div>';\r\n\t\thtml+='<div class=\"dhx_body\" style=\" width:'+bodyWidth+'px; height:'+bodyHeight+'px;\">'+contentB+'</div>';\r\n\t\thtml+='<div class=\"dhx_footer\" style=\" width:'+footerWidth+'px;'+(bottom?' margin-top:-1px;':'')+'\" ></div></div>';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='<div event_id=\"'+ev.id+'\" '+this.config.event_attribute+'=\"'+ev.id+'\" class=\"'+cs+'\" style=\"position:absolute; top:'+y+'px; left:'+x+'px; width:'+(x2-x-15)+'px;'+(ev._text_style||\"\")+'\">';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '</div>)');\r\n\t\thtml+='</div>';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"<textarea class='dhx_cal_editor'>\"+ev.text+\"</textarea>\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i<icons.length; i++)\r\n\t\t\t\ticons_str+=\"<div class='dhx_menu_icon \"+icons[i]+\"' title='\"+this.locale.labels[icons[i]]+\"'></div>\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"<div class='dhx_menu_head'></div>\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\nscheduler.config.mark_now = true;\r\nscheduler.config.display_marked_timespans = true;\r\nscheduler.config.overwrite_marked_timespans = true;\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStart<eventEnd && markerEnd>eventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tvar blocker = scheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif (event.rec_type) {\r\n\t\t\tvar dates = scheduler.getRecDates(event);\r\n\t\t\tfor(var i=0; i < dates.length; i++){\r\n\t\t\t\tvar ev = scheduler._copy_event(event);\r\n\t\t\t\tscheduler._lame_copy(ev, dates[i]);\r\n\t\t\t\tevs.push(ev);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p<evs.length; p++) {\r\n\t\t\tvar res = true;\r\n\t\t\tvar ev = evs[p];\r\n\t\t\t// Event could have old _timed property (e.g. we are creating event with DND on timeline view and crossed day)\r\n\t\t\tev._timed = scheduler.isOneDayEvent(ev);\r\n\r\n\t\t\tres = (c.limit_start && c.limit_end) ? (ev.start_date.valueOf() >= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i<blocked_timeline_zones.length; i++) {\r\n\t\t\t\tzones = this._add_timespan_zones(zones, blocked_timeline_zones[i].zones);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn zones;\r\n\t};\r\n\tscheduler._get_relevant_blocked_zones = function(day_index, day_value, zones, timespan_type) {\r\n\t\tvar resultZones;\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tresultZones = (zones[day_value] && zones[day_value][timespan_type]) ? zones[day_value][timespan_type] :\r\n\t\t\t(zones[day_index] && zones[day_index][timespan_type]) ? zones[day_index][timespan_type] : [];\r\n\t\t}else{\r\n\t\t\tresultZones = [];\r\n\t\t\tif(zones[day_value] && zones[day_value][timespan_type]){\r\n\t\t\t\tresultZones = resultZones.concat(zones[day_value][timespan_type]);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif((zones[day_index] && zones[day_index][timespan_type])){\r\n\t\t\t\tresultZones = resultZones.concat(zones[day_index][timespan_type]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn resultZones;\r\n\t};\r\n\tfunction getZones(ev, timespans, day_index, day_value, timespan_type){\r\n\t\tvar s = scheduler;\r\n\t\t//containers for 'unit' and 'timeline' views, and related 'section_id' properties\r\n\t\tvar zones = [];\r\n\t\tvar containers = {\r\n\t\t\t'_props':'map_to',\r\n\t\t\t'matrix':'y_property'};\r\n\t\t//check blocked sections in all units and timelines\r\n\t\tfor(var container in containers){\r\n\t\t\tvar property = containers[container];\r\n\t\t\tif(s[container]){\r\n\t\t\t\tfor(var view in s[container]){\r\n\t\t\t\t\tvar view_config = s[container][view];\r\n\t\t\t\t\tvar linker = view_config[property];\r\n\t\t\t\t\tif(!ev[linker]) continue;\r\n\t\t\t\t\tzones = s._add_timespan_zones(zones,\r\n\t\t\t\t\t\tscheduler._get_blocked_zones(timespans[view], ev[linker], day_index, day_value, timespan_type));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// now need to add day blocks\r\n\t\tzones = s._add_timespan_zones(zones, scheduler._get_blocked_zones(timespans, 'global', day_index, day_value, timespan_type));\r\n\t\treturn zones;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn blocker(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn blocker(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn blocker(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn blocker(data_copy);\r\n\t\t}\r\n\t\treturn blocker(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!blocker(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!blocker(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn blocker(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn blocker(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\tscheduler._mark_now = function(hide) {\r\n\t\t// day, week, units views\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tif (!this._els[dhx_now_time]) {\r\n\t\t\tthis._els[dhx_now_time] = [];\r\n\t\t}\r\n\t\tvar now = scheduler._currentDate();\r\n\t\tvar cfg = this.config;\r\n\t\tscheduler._remove_mark_now(); // delete previous marks if they exist\r\n\t\tif (!hide && cfg.mark_now && now < this._max_date && now > this._min_date && now.getHours() >= cfg.first_hour && now.getHours()<cfg.last_hour) {\r\n\t\t\tvar day_index = this.locate_holder_day(now);\r\n\t\t\tthis._els[dhx_now_time] = scheduler._append_mark_now(day_index, now);\r\n\t\t}\r\n\t};\r\n\tscheduler._append_mark_now = function(day_index, now) {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar zone_start= scheduler._get_zone_minutes(now);\r\n\t\tvar options = {\r\n\t\t\tzones: [zone_start, zone_start+1],\r\n\t\t\tcss: dhx_now_time,\r\n\t\t\ttype: dhx_now_time\r\n\t\t};\r\n\t\tif (!this._table_view) {\r\n\t\t\tif (this._props && this._props[this._mode]) { // units view\r\n\t\t\t\tvar start_index,\r\n\t\t\t\t\tend_index;\r\n\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\tif (view.days > 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i<els.length; i++) {\r\n\t\t\tvar div = els[i];\r\n\t\t\tvar parent = div.parentNode;\r\n\t\t\tif (parent) {\r\n\t\t\t\tparent.removeChild(div);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._els[dhx_now_time] = [];\r\n\t};\r\n\r\n\t/*\r\n\tscheduler._marked_timespans = {\r\n\t\t\"global\": {\r\n\t\t\t\"0\": {\r\n\t\t\t\t\"default\": [\r\n\t\t\t\t\t{ // sunday\r\n\t\t\t\t\t\tzones: [0, 100, 500, 600],\r\n\t\t\t\t\t\tcss: \"yellow_box\",\r\n\t\t\t\t\t\ttype: \"default\",\r\n\t\t\t\t\t\tview: \"global\",\r\n\t\t\t\t\t\tday: 0\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t\t\"112121312\": {\r\n\t\t\t\t\"my_special_type\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tzones: [600, 900],\r\n\t\t\t\t\t\ttype: \"block\",\r\n\t\t\t\t\t\tcss: \"some_class\",\r\n\t\t\t\t\t\tview: \"global\",\r\n\t\t\t\t\t\tday: 112121312\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"units\": {\r\n\t\t\t\"5_id\": {\r\n\t\t\t\t\"3\": {\r\n\t\t\t\t\t\"special_type\": [ {}, {}, {} ],\r\n\t\t\t\t\t\"another_type\": [ {} ]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"6_id\": {\r\n\t\t\t\t\"11212127\": {\r\n\t\t\t\t\t...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n\tscheduler._marked_timespans = { global: {} };\r\n\r\n\tscheduler._get_zone_minutes = function(date) {\r\n\t\treturn date.getHours()*60 + date.getMinutes();\r\n\t};\r\n\tscheduler._prepare_timespan_options = function(config) { // receives 1 option, returns array of options\r\n\t\tvar r_configs = []; // resulting configs\r\n\t\tvar temp_configs = [];\r\n\r\n\t\tif (config.days == \"fullweek\")\r\n\t\t\tconfig.days = [0,1,2,3,4,5,6];\r\n\r\n\t\tif (config.days instanceof Array) {\r\n\t\t\tvar t_days = config.days.slice();\r\n\t\t\tfor (var i=0; i<t_days.length; i++) {\r\n\t\t\t\tvar cloned_config = scheduler._lame_clone(config);\r\n\t\t\t\tcloned_config.days = t_days[i];\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._prepare_timespan_options(cloned_config));\r\n\t\t\t}\r\n\t\t\treturn r_configs;\r\n\t\t}\r\n\r\n\t\tif ( !config ||\r\n\t\t\t!((config.start_date && config.end_date && config.end_date > config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i<ids.length; i++) {\r\n\t\t\t\t\t\tvar t_config = scheduler._lame_copy({}, config);\r\n\t\t\t\t\t\tt_config.sections = {};\r\n\t\t\t\t\t\tt_config.sections[view_key] = ids[i];\r\n\t\t\t\t\t\ttemp_configs.push(t_config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttemp_configs.push(config);\r\n\t\t}\r\n\r\n\t\tfor (var k=0; k<temp_configs.length; k++) {\r\n\t\t\tvar c_config = temp_configs[k]; // config to be checked\r\n\r\n\t\t\tvar start_date = c_config.start_date;\r\n\t\t\tvar end_date = c_config.end_date;\r\n\r\n\t\t\tif (start_date && end_date) {\r\n\t\t\t\tvar t_sd = scheduler.date.date_part(new Date(start_date)); // e.g. 05 october\r\n\t\t\t\tvar t_ed= scheduler.date.add(t_sd, 1, \"day\"); // 06 october, will both be incremented in the loop\r\n\r\n\t\t\t\twhile (t_sd < end_date) {\r\n\t\t\t\t\tvar t_config = scheduler._lame_copy({}, c_config);\r\n\t\t\t\t\tdelete t_config.start_date;\r\n\t\t\t\t\tdelete t_config.end_date;\r\n\t\t\t\t\tt_config.days = t_sd.valueOf();\r\n\t\t\t\t\tvar zone_start = (start_date > t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i<divs.length; i++) {\r\n\t\t\tvar div = divs[i];\r\n\t\t\t// parent may no longer be present if we switched views, navigated\r\n\t\t\tif (div.parentNode) {\r\n\t\t\t\tdiv.parentNode.removeChild(div);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tscheduler._addMarkerTimespanConfig = function(config){\r\n\t\tvar global = \"global\";\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar id = config.id;\r\n\r\n\t\tvar ids = scheduler._marked_timespans_ids;\r\n\t\tif (!ids[id])\r\n\t\t\tids[id] = [];\r\n\r\n\r\n\t\tvar day = config.days;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tvar type = config.type; // default or specified\r\n\t\tconfig.id = id;\r\n\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tif (!timespans[view_key])\r\n\t\t\t\t\t\ttimespans[view_key] = {};\r\n\t\t\t\t\tvar unit_id = sections[view_key];\r\n\t\t\t\t\tvar timespans_view = timespans[view_key];\r\n\t\t\t\t\tif (!timespans_view[unit_id])\r\n\t\t\t\t\t\ttimespans_view[unit_id] = {};\r\n\t\t\t\t\tif (!timespans_view[unit_id][day])\r\n\t\t\t\t\t\ttimespans_view[unit_id][day] = {};\r\n\t\t\t\t\tif (!timespans_view[unit_id][day][type]){\r\n\t\t\t\t\t\ttimespans_view[unit_id][day][type] = [];\r\n\t\t\t\t\t\tif(!scheduler._marked_timespans_types)\r\n\t\t\t\t\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t\t\t\t\tif(!scheduler._marked_timespans_types[type])\r\n\t\t\t\t\t\t\tscheduler._marked_timespans_types[type] = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar day_configs = timespans_view[unit_id][day][type];\r\n\t\t\t\t\tconfig._array = day_configs;\r\n\t\t\t\t\tday_configs.push(config);\r\n\t\t\t\t\tids[id].push(config);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!timespans[global][day])\r\n\t\t\t\ttimespans[global][day] = {};\r\n\t\t\tif (!timespans[global][day][type])\r\n\t\t\t\ttimespans[global][day][type] = [];\r\n\r\n\t\t\tif(!scheduler._marked_timespans_types)\r\n\t\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t\tif(!scheduler._marked_timespans_types[type])\r\n\t\t\t\tscheduler._marked_timespans_types[type] = true;\r\n\r\n\t\t\tvar day_configs = timespans[global][day][type];\r\n\t\t\tconfig._array = day_configs;\r\n\t\t\tday_configs.push(config);\r\n\t\t\tids[id].push(config);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tscheduler._marked_timespans_ids = {};\r\n\t// adds marked timespan to collections, persistent\r\n\tscheduler.addMarkedTimespan = function(configuration) {\r\n\t\tvar configs = scheduler._prepare_timespan_options(configuration);\r\n\t\tif (!configs.length)\r\n\t\t\treturn; // options are incorrect, nothing to mark\r\n\r\n\t\tvar id = configs[0].id;\r\n\t\tfor (var i=0; i<configs.length; i++) {\r\n\t\t\tscheduler._addMarkerTimespanConfig(configs[i]);\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\t// not used for now\r\n\tscheduler._add_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tzones = zones.slice();\r\n\r\n\t\tif (!resulting_zones.length)\r\n\t\t\treturn zones;\r\n\r\n\t\tfor (var i=0; i<resulting_zones.length; i+=2) {\r\n\t\t\tvar c_zone_start = resulting_zones[i];\r\n\t\t\tvar c_zone_end = resulting_zones[i+1];\r\n\t\t\tvar isLast = (i+2 == resulting_zones.length);\r\n\r\n\t\t\tfor (var k=0; k<zones.length; k+=2) {\r\n\t\t\t\tvar zone_start = zones[k];\r\n\t\t\t\tvar zone_end = zones[k+1];\r\n\t\t\t\tif ((zone_end > c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i<resulting_zones.length; i+=2 ) {\r\n\t\t\tvar c_zone_start = resulting_zones[i];// current_zone_start\r\n\t\t\tvar c_zone_end = resulting_zones[i+1];\r\n\t\t\tfor (var k=0; k<zones.length; k+=2) {\r\n\t\t\t\tvar zone_start = zones[k];\r\n\t\t\t\tvar zone_end = zones[k+1];\r\n\t\t\t\tif (zone_end > c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i<configs.length; i++) {\r\n\t\t\t\tvar config = configs[i];\r\n\t\t\t\tvar parent_array = config._array;\r\n\t\t\t\tfor (var k=0; k<parent_array.length; k++) {\r\n\t\t\t\t\tif (parent_array[k] == config) {\r\n\t\t\t\t\t\tparent_array.splice(k, 1);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_config = function(config) {\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar sections = config.sections;\r\n\t\tvar day = config.days;\r\n\t\tvar type = config.type||default_timespan_type;\r\n\t\tvar viewspans;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key) && timespans[view_key]) {\r\n\t\t\t\t\tvar unit_id = sections[view_key];\r\n\t\t\t\t\tif (timespans[view_key][unit_id]){\r\n\t\t\t\t\t\tviewspans = timespans[view_key][unit_id];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tviewspans = timespans.global;\r\n\t\t}\r\n\r\n\t\tif(viewspans) {\r\n\t\t\tif (day !== undefined) {\r\n\t\t\t\tif (viewspans[day] && viewspans[day][type]) {\r\n\t\t\t\t\tscheduler._addMarkerTimespanConfig(config); // register config in order to be able to delete recurring timespan from a specific day\r\n\t\t\t\t\tscheduler._delete_marked_timespans_list(viewspans[day][type], config);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (var d in viewspans) {\r\n\t\t\t\t\tif (viewspans[d][type]) {\r\n\t\t\t\t\t\tvar dayConfig = scheduler._lame_clone(config);\r\n\t\t\t\t\t\tconfig.days = d;\r\n\t\t\t\t\t\tscheduler._addMarkerTimespanConfig(dayConfig); // register config in order to be able to delete recurring timespan from a specific day\r\n\t\t\t\t\t\tscheduler._delete_marked_timespans_list(viewspans[d][type], config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._delete_marked_timespans_list = function(day_timespans, config){\r\n\t\tfor (var i=0; i<day_timespans.length; i++) {\r\n\t\t\tvar d_t = day_timespans[i];\r\n\t\t\tvar zones = scheduler._subtract_timespan_zones(d_t.zones, config.zones);\r\n\t\t\tif (zones.length)\r\n\t\t\t\td_t.zones = zones;\r\n\t\t\telse {\r\n\t\t\t\tday_timespans.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t\t// need to update ids collection\r\n\t\t\t\tvar related_zones = scheduler._marked_timespans_ids[d_t.id];\r\n\t\t\t\tfor (var k=0; k<related_zones.length; k++) {\r\n\t\t\t\t\tif (related_zones[k] == d_t) {\r\n\t\t\t\t\t\trelated_zones.splice(k, 1);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler.deleteMarkedTimespan = function(configuration) {\r\n\t\t// delete everything\r\n\t\tif (!arguments.length) {\r\n\t\t\tscheduler._marked_timespans = { global: {} };\r\n\t\t\tscheduler._marked_timespans_ids = {};\r\n\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t}\r\n\r\n\t\tif (typeof configuration != \"object\") { // id was passed\r\n\t\t\tscheduler._delete_marked_timespan_by_id(configuration);\r\n\t\t} else { // normal configuration was passed\r\n\r\n\t\t\tif(!(configuration.start_date && configuration.end_date)){\r\n\t\t\t\tif(configuration.days === undefined && !configuration.type)\r\n\t\t\t\t\tconfiguration.days = \"fullweek\";\r\n\t\t\t\tif(!configuration.zones)\r\n\t\t\t\t\tconfiguration.zones = \"fullday\";\r\n\t\t\t}\r\n\r\n\t\t\tvar types = [];\r\n\t\t\tif(!configuration.type){\r\n\t\t\t\t//if type not specified - delete timespans of all types\r\n\t\t\t\tfor(var type in scheduler._marked_timespans_types){\r\n\t\t\t\t\ttypes.push(type);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\ttypes.push(configuration.type);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar configs = scheduler._prepare_timespan_options(configuration);\r\n\r\n\t\t\tfor (var i=0; i<configs.length; i++) {\r\n\r\n\t\t\t\tvar config = configs[i];\r\n\t\t\t\tfor( var t=0; t < types.length; t++){\r\n\t\t\t\t\tvar typedConfig = scheduler._lame_clone(config);\r\n\t\t\t\t\ttypedConfig.type = types[t];\r\n\t\t\t\t\tscheduler._delete_marked_timespan_by_config(typedConfig);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t};\r\n\tscheduler._get_types_to_render = function(common, specific) {\r\n\t\tvar types_to_render = (common) ? scheduler._lame_copy({},common) : {};\r\n\t\tfor (var type in specific||{} ) {\r\n\t\t\tif (specific.hasOwnProperty(type)) {\r\n\t\t\t\ttypes_to_render[type] = specific[type];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn types_to_render;\r\n\t};\r\n\tscheduler._get_configs_to_render = function(types) {\r\n\t\tvar configs = [];\r\n\t\tfor (var type in types) {\r\n\t\t\tif (types.hasOwnProperty(type)) {\r\n\t\t\t\tconfigs.push.apply(configs, types[type]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn configs;\r\n\t};\r\n\r\n\tscheduler._on_scale_add_marker = function(area, day){\r\n\t\tif (scheduler._table_view && scheduler._mode != \"month\")\r\n\t\t\treturn;\r\n\r\n\t\tvar day_index = day.getDay();\r\n\t\tvar day_value = day.valueOf();\r\n\t\tvar mode = this._mode;\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar r_configs = [];\r\n\t\tvar divs = [];\r\n\t\tif (this._props && this._props[mode]) { // we are in the units view and need to draw it's sections as well\r\n\t\t\tvar view = this._props[mode]; // units view object\r\n\t\t\tvar units = view.options;\r\n\t\t\tvar index = scheduler._get_unit_index(view, day);\r\n\t\t\tvar unit = units[index]; // key, label\r\n\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i<r_configs.length; i++) {\r\n\t\t\tdivs.push.apply(divs, (scheduler._render_marked_timespan(r_configs[i], area, day)));\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.attachEvent(\"onScaleAdd\", function(){\r\n\t\tscheduler._on_scale_add_marker.apply(scheduler, arguments);\r\n\t});\r\n\r\n\tscheduler.dblclick_dhx_marked_timespan = function(e,src){\r\n\t\tscheduler.callEvent(\"onScaleDblClick\",[scheduler.getActionData(e).date,src,e]);\r\n\r\n\t\tif (scheduler.config.dblclick_create){\r\n\t\t\tscheduler.addEventNow(scheduler.getActionData(e).date,null,e);\r\n\t\t}\r\n\t};\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","export default function(scheduler){\r\n /* global google */\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tgeocoder: null,\r\n\tmap: null,\r\n\tpoints: null,\r\n\tmarkers: null,\r\n\tinfoWindow: null,\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\n\r\nscheduler.config.map_resolve_event_location = true; // if events in database doesn't have lat and lng values there will be an attempt to resolve them on event loading, useful for migration\r\nscheduler.config.map_resolve_user_location = true; // if user will be promted to share his location to display it on the map\r\n\r\nscheduler.config.map_initial_position = new google.maps.LatLng(48.724, 8.215); // initial position of the map\r\nscheduler.config.map_error_position = new google.maps.LatLng(15, 15); // this position will be displayed in case if event doesn't have corresponding coordinates\r\n\r\nscheduler.config.map_infowindow_max_width = 300;\r\n\r\nscheduler.config.map_type = google.maps.MapTypeId.ROADMAP;\r\n\r\nscheduler.config.map_zoom_after_resolve = 15;\r\n\r\nscheduler.locale.labels.marker_geo_success = \"It seems you are here.\";\r\nscheduler.locale.labels.marker_geo_fail = \"Sorry, could not get your current position using geolocation.\";\r\n\r\nscheduler.templates.marker_date = scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"); // date for map's infowindow will be formatted following way\r\n\r\nscheduler.templates.marker_text = function(start, end, ev) {\r\n\treturn \"<div><b>\" + ev.text + \"</b><br/><br/>\" + (ev.event_location || '') + \"<br/><br/>\" + scheduler.templates.marker_date(start) + \" - \" + scheduler.templates.marker_date(end) + \"</div>\";\r\n};\r\nscheduler.dblclick_dhx_map_area = function() {\r\n\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler._date,\r\n\t\t\tend_date: scheduler.date.add(scheduler._date, scheduler.config.time_step, \"minute\")\r\n\t\t});\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\n\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\n\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\n\r\nscheduler._latLngUpdate = false; // flag for not displaying event second time in case of coordinates update\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\tscheduler._isMapPositionSet = false; // if user actual (geolocation) position was set on the map\r\n\r\n\tconst gmap = document.createElement('div');\r\n\tgmap.className = 'dhx_map';\r\n\tgmap.id = 'dhx_gmap';\r\n\tgmap.style.display = \"none\";\r\n\r\n\tscheduler._obj.appendChild(gmap);\r\n\r\n\tscheduler._els.dhx_gmap = [];\r\n\tscheduler._els.dhx_gmap.push(gmap);\r\n\r\n\t_setMapSize('dhx_gmap');\r\n\r\n\tconst mapOptions = {\r\n\t\tzoom: scheduler.config.map_initial_zoom || 10,\r\n\t\tcenter: scheduler.config.map_initial_position,\r\n\t\tmapTypeId: scheduler.config.map_type || google.maps.MapTypeId.ROADMAP\r\n\t};\r\n\tconst map = new google.maps.Map(document.getElementById('dhx_gmap'), mapOptions);\r\n\tmap.disableDefaultUI = false;\r\n\tmap.disableDoubleClickZoom = !scheduler.config.readonly;\r\n\r\n\tgoogle.maps.event.addListener(map, \"dblclick\", function(event) {\r\n\t\tconst geocoder = scheduler.ext.mapView.geocoder;\r\n\r\n\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\tvar point = event.latLng;\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'latLng': point },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\tstart_date: scheduler._date,\r\n\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler._date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t});\r\n\r\n\tvar infoWindowOptions = {\r\n\t\tcontent: ''\r\n\t};\r\n\r\n\tif (scheduler.config.map_infowindow_max_width) {\r\n\t\tinfoWindowOptions.maxWidth = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\r\n\tscheduler.map = {\r\n\t\t_points: [],\r\n\t\t_markers: [],\r\n\t\t_infowindow: new google.maps.InfoWindow(infoWindowOptions),\r\n\t\t_infowindows_content: [],\r\n\t\t_initialization_count: -1,\r\n\t\t_obj: map\r\n\t};\r\n\r\n\tscheduler.ext.mapView.geocoder = new google.maps.Geocoder();\r\n\tscheduler.ext.mapView.map = map;\r\n\tscheduler.ext.mapView.points = scheduler.map._points;\r\n\tscheduler.ext.mapView.markers = scheduler.map._markers;\r\n\tscheduler.ext.mapView.infoWindow = scheduler.map._infowindow;\r\n\r\n\tif (scheduler.config.map_resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tif (!scheduler._isMapPositionSet) {\r\n\t\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\t\tvar _userLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\r\n\t\t\t\t\tmap.setCenter(_userLocation);\r\n\t\t\t\t\tmap.setZoom(scheduler.config.map_zoom_after_resolve || 10);\r\n\t\t\t\t\tscheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_success);\r\n\t\t\t\t\tscheduler.map._infowindow.position = map.getCenter();\r\n\t\t\t\t\tscheduler.map._infowindow.open(map);\r\n\r\n\t\t\t\t\tscheduler._isMapPositionSet = true;\r\n\t\t\t\t},\r\n\t\t\t\t\t\tfunction() {\r\n\t\t\t\t\t\t\tscheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_fail);\r\n\t\t\t\t\t\t\tscheduler.map._infowindow.setPosition(map.getCenter());\r\n\t\t\t\t\t\t\tscheduler.map._infowindow.open(map);\r\n\t\t\t\t\t\t\tscheduler._isMapPositionSet = true;\r\n\t\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tgoogle.maps.event.addListener(map, \"resize\", function(event) {\r\n\t\tgmap.style.zIndex = '5';\r\n\t\tmap.setZoom(map.getZoom());\r\n\r\n\t});\r\n\tgoogle.maps.event.addListener(map, \"tilesloaded\", function(event) {\r\n\t\tgmap.style.zIndex = '5';\r\n\t});\r\n\r\n\tgmap.style.display = 'none'; // property was changed after attaching map\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tvar events = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\t\tif (!scheduler.map._markers[events[i].id]) {\r\n\t\t\t\t\tshowAddress(events[i], false, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"<div class='dhx_map_head' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"px;' ><div class='headline_date' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscheduler.xy.map_date_width + \"px;'>\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"</div><div class='headline_description' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscheduler.xy.map_description_width + \"px;'>\" + l.description + \"</div></div>\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction clear_map_tab() {\r\n\t\tscheduler._selected_event_id = null;\r\n\t\tscheduler.map._infowindow.close();\r\n\t\tvar markers = scheduler.map._markers;\r\n\t\tfor (var key in markers) {\r\n\t\t\tif (markers.hasOwnProperty(key)) {\r\n\t\t\t\tmarkers[key].setMap(null);\r\n\t\t\t\tdelete scheduler.map._markers[key];\r\n\t\t\t\tif (scheduler.map._infowindows_content[key])\r\n\t\t\t\t\tdelete scheduler.map._infowindows_content[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tvar ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tvar html = \"<div \"+ariaAttr+\" class='dhx_map_area'>\";\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar ev = events[i];\r\n\t\t\tvar event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tvar ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tvar ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"<div \"+ariaAttr+\" class='\" + event_class + \"' event_id='\" + ev.id + \"' \"+scheduler.config.event_attribute+\"='\"+ev.id+\"' style='\" + bg_color + \"\" + color + \"\" + (ev._text_style || \"\") + \" width: \" + (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + \"px;'><div class='dhx_map_event_time' style='width: \" + scheduler.xy.map_date_width + \"px;' >\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"</div>\";\r\n\t\t\thtml += `<div ${ariaButtonAttr} class='dhx_event_icon icon_details'><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t\t<path d=\"M15.4444 16.4H4.55556V7.6H15.4444V16.4ZM13.1111 2V3.6H6.88889V2H5.33333V3.6H4.55556C3.69222 3.6 3 4.312 3 5.2V16.4C3 16.8243 3.16389 17.2313 3.45561 17.5314C3.74733 17.8314 4.143 18 4.55556 18H15.4444C15.857 18 16.2527 17.8314 16.5444 17.5314C16.8361 17.2313 17 16.8243 17 16.4V5.2C17 4.312 16.3 3.6 15.4444 3.6H14.6667V2H13.1111ZM13.8889 10.8H10V14.8H13.8889V10.8Z\" fill=\"#A1A4A6\"/>\r\n\t\t\t</svg></div>`;\r\n\t\t\thtml += \"<div class='line_description' style='width:\" + (scheduler.xy.map_description_width - scheduler.xy.map_icon_width) + \"px;'>\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"</div></div>\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"<div class='dhx_v_border' style=\"+(scheduler.config.rtl ? \"'right: \" : \"'left: \") + (scheduler.xy.map_date_width - 1) + \"px;'></div><div class='dhx_v_border_description'></div></div>\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tvar t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (var i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tvar map = document.getElementById(elem_id);\r\n\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\tvar height = scheduler._y - nav_height;\r\n\t\tif (height < 0)\r\n\t\t\theight = 0;\r\n\t\tvar width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\tif (width < 0)\r\n\t\t\twidth = 0;\r\n\t\tmap.style.height = height + 'px';\r\n\t\tmap.style.width = width + 'px';\r\n\t\tmap.style.position = \"absolute\";\r\n\t\tmap.style.top = nav_height + \"px\";\r\n\t\tif (scheduler.config.rtl) {\r\n\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t} else {\r\n\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t}\r\n\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t}\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler.map._initialization_count++;\r\n\t\tvar gmap = scheduler._els.dhx_gmap[0];\r\n\t\tvar temp_center;\r\n\t\t//scheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\r\n\t\tif (mode) { //map tab activated\r\n\t\t\tclear_map_tab();\r\n\t\t\tfill_map_tab();\r\n\t\t\tgmap.style.display = 'block';\r\n\r\n\t\t\t// need to resize block every time window is resized\r\n\t\t\t_setMapSize('dhx_gmap');\r\n\t\t\ttemp_center = scheduler.map._obj.getCenter();\r\n\r\n\t\t\tvar events = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\t\tif (!scheduler.map._markers[events[i].id]) {\r\n\t\t\t\t\tshowAddress(events[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else { //map tab de-activated\r\n\t\t\tgmap.style.display = 'none';\r\n\t\t}\r\n\t\tgoogle.maps.event.trigger(scheduler.map._obj, 'resize');\r\n\r\n\t\tif (scheduler.map._initialization_count === 0 && temp_center) { // if tab is activated for the first time need to fix position\r\n\t\t\tscheduler.map._obj.setCenter(temp_center);\r\n\t\t}\r\n\r\n\t\tif (scheduler._selected_event_id) {\r\n\t\t\tselectEvent(scheduler._selected_event_id);\r\n\t\t}\r\n\t};\r\n\r\n\tvar selectEvent = function(event_id) {\r\n\t\tscheduler.map._obj.setCenter(scheduler.map._points[event_id]);\r\n\t\tscheduler.callEvent(\"onClick\", [event_id]);\r\n\t};\r\n\r\n\tvar showAddress = function(event, setCenter, performClick) { // what if event have incorrect position from the start?\r\n\t\tvar point = scheduler.config.map_error_position;\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tpoint = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t}\r\n\t\tvar message = scheduler.templates.marker_text(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._new_event) {\r\n\r\n\t\t\tscheduler.map._infowindows_content[event.id] = message;\r\n\r\n\t\t\tif (scheduler.map._markers[event.id])\r\n\t\t\t\tscheduler.map._markers[event.id].setMap(null);\r\n\r\n\t\t\tscheduler.map._markers[event.id] = scheduler.ext.mapView.createMarker({\r\n\t\t\t\tposition: point,\r\n\t\t\t\tmap: scheduler.map._obj\r\n\t\t\t});\r\n\r\n\t\t\tgoogle.maps.event.addListener(scheduler.map._markers[event.id], 'click', function() {\r\n\t\t\t\tscheduler.map._infowindow.setContent(scheduler.map._infowindows_content[event.id]);\r\n\t\t\t\tscheduler.map._infowindow.open(scheduler.map._obj, scheduler.map._markers[event.id]);\r\n\t\t\t\tscheduler._selected_event_id = event.id;\r\n\t\t\t\tscheduler.render_data();\r\n\t\t\t});\r\n\t\t\tscheduler.map._points[event.id] = point;\r\n\r\n\t\t\tif (setCenter) scheduler.map._obj.setCenter(scheduler.map._points[event.id]);\r\n\t\t\tif (performClick) scheduler.callEvent(\"onClick\", [event.id]);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onClick\", function(id, domEvent) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tscheduler._selected_event_id = id;\r\n\t\t\tfor (var i = 0; i < scheduler._rendered.length; i++) {\r\n\t\t\t\tscheduler._rendered[i].className = 'dhx_map_line';\r\n\t\t\t\tif (scheduler._rendered[i].getAttribute(scheduler.config.event_attribute) == id) {\r\n\t\t\t\t\tscheduler._rendered[i].className += \" highlight\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (scheduler.map._points[id] && scheduler.map._markers[id]) {\r\n\t\t\t\tscheduler.map._obj.setCenter(scheduler.map._points[id]); // was panTo\r\n\t\t\t\tgoogle.maps.event.trigger(scheduler.map._markers[id], 'click');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tvar _displayEventOnMap = function(event) {\r\n\t\tconst geocoder = scheduler.ext.mapView.geocoder;\r\n\t\tif (event.event_location && geocoder) {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{\r\n\t\t\t\t\t'address': event.event_location,\r\n\t\t\t\t\t'language': scheduler.uid().toString()\r\n\t\t\t\t},\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tvar point = {};\r\n\t\t\t\t\tif (status != google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tpoint = scheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\t\t\tif (!point || point === true)\r\n\t\t\t\t\t\t\tpoint = scheduler.config.map_error_position;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tevent.lat = point.lat();\r\n\t\t\t\t\tevent.lng = point.lng();\r\n\r\n\t\t\t\t\tscheduler._selected_event_id = event.id;\r\n\r\n\t\t\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t\t\t\tshowAddress(event, true, true);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tshowAddress(event, true, true);\r\n\t\t}\r\n\t};\r\n\r\n\tvar _updateEventLocation = function(event) { // update lat and lng in database\r\n\t\tconst geocoder = scheduler.ext.mapView.geocoder;\r\n\t\tif (event.event_location && geocoder) {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{\r\n\t\t\t\t\t'address': event.event_location,\r\n\t\t\t\t\t'language': scheduler.uid().toString()\r\n\t\t\t\t},\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tvar point = {};\r\n\t\t\t\t\tif (status != google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tpoint = scheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\t\t\tif (!point || point === true)\r\n\t\t\t\t\t\t\tpoint = scheduler.config.map_error_position;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tevent.lat = point.lat();\r\n\t\t\t\t\tevent.lng = point.lng();\r\n\t\t\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tvar _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tvar ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\t\tif (!this._latLngUpdate) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tif ((event.start_date < scheduler._min_date && event.end_date > scheduler._min_date) || (event.start_date < scheduler._max_date && event.end_date > scheduler._max_date) || (event.start_date.valueOf() >= scheduler._min_date && event.end_date.valueOf() <= scheduler._max_date)) {\r\n\t\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\t\t_displayEventOnMap(event);\r\n\t\t\t} else { // event no longer should be displayed on the map view\r\n\t\t\t\tscheduler._selected_event_id = null;\r\n\t\t\t\tscheduler.map._infowindow.close();\r\n\t\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._latLngUpdate = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_event_id, new_event_id) {\r\n\t\tvar event = scheduler.getEvent(new_event_id);\r\n\t\tif ((event.start_date < scheduler._min_date && event.end_date > scheduler._min_date) || (event.start_date < scheduler._max_date && event.end_date > scheduler._max_date) || (event.start_date.valueOf() >= scheduler._min_date && event.end_date.valueOf() <= scheduler._max_date)) {\r\n\t\t\tif (scheduler.map._markers[old_event_id]) {\r\n\t\t\t\tscheduler.map._markers[old_event_id].setMap(null);\r\n\t\t\t\tdelete scheduler.map._markers[old_event_id];\r\n\t\t\t}\r\n\t\t\tif (scheduler.map._infowindows_content[old_event_id])\r\n\t\t\t\tdelete scheduler.map._infowindows_content[old_event_id];\r\n\t\t\t_displayEventOnMap(event);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id, event) {\r\n\t\tif (!scheduler._dataprocessor) {\r\n\t\t\tif ((event.start_date < scheduler._min_date && event.end_date > scheduler._min_date) || (event.start_date < scheduler._max_date && event.end_date > scheduler._max_date) || (event.start_date.valueOf() >= scheduler._min_date && event.end_date.valueOf() <= scheduler._max_date)) {\r\n\t\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\t\t_displayEventOnMap(event);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\t/* Test/example\r\n\t scheduler.attachEvent(\"onLocationError\", function(event_id,event_object){\r\n\t return new google.maps.LatLng(8, 8);\r\n\t });\r\n\t */\r\n\r\n\tscheduler.attachEvent(\"onBeforeEventDelete\", function(id, event) {\r\n\t\tif (scheduler.map._markers[id]) {\r\n\t\t\tscheduler.map._markers[id].setMap(null); // if new event is deleted tab != map then it doesn't have marker yet\r\n\t\t}\r\n\t\tscheduler._selected_event_id = null;\r\n\t\tscheduler.map._infowindow.close();\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (scheduler.config.map_resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventCancel\", function(id, is_new) {\r\n\t\tif (is_new) {\r\n\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\tscheduler.map._infowindow.close();\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"<div class='dhx_year_month'></div>\" +\r\n\t\t\t\"<div class='dhx_year_grid\" +\r\n\t\t\t(scheduler.config.rtl ? \" dhx_grid_rtl'>\" : \"'>\") +\r\n\t\t\t\"<div class='dhx_year_week'>\"+(week_template ? week_template.innerHTML : \"\")+\"</div>\" +\r\n\t\t\t\"<div class='dhx_year_body'></div>\" +\r\n\t\t\"</div>\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"<span class='dhx_minical_input_wrapper'><input class='dhx_readonly dhx_minical_input' type='text' readonly='true'></span>\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" <select class='dhx_lightbox_time_select'>\";\r\n\t\tfor (var i = first; i < last; i += this.config.time_step * 1) { // `<` to exclude last \"00:00\" option\r\n\t\t\tvar time = this.templates.time_picker(dt);\r\n\t\t\thtml += \"<option value='\" + i + \"'>\" + time + \"</option>\";\r\n\t\t\tsns._time_values.push(i);\r\n\t\t\tdt = this.date.add(dt, this.config.time_step, \"minute\");\r\n\t\t}\r\n\t\thtml += \"</select>\";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"<div class='dhx_section_time dhx_lightbox_minical'>\" + html + \"<span class='dhx_lightbox_minical_spacer'> – </span>\" + html + \"</div>\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> \" + scheduler.locale.labels.full_day + \" </label></input>\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"<div class='\"+css+\"' style='overflow: auto; max-height: \"+sns.height+\"px; position: relative;' >\";\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\t_result += \"<label><input type='checkbox' value='\"+sns.options[i].key+\"'/>\"+sns.options[i].label+\"</label>\";\r\n\t\t}\r\n\t\t_result += \"</div>\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"<br[^>]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"</\"+tag+\">\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"<scale mode='\" + mode + \"' today='\" + scheduler._els.dhx_cal_date[0].innerHTML + \"'>\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"<column>\" + clean_html(xh[i].innerHTML) + \"</column>\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"<column>\" + clean_html(xh[0].innerHTML) + \"</column><column>\" + clean_html(xh[1].innerHTML) + \"</column>\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"<month label='\" + clean_html(xh[i].querySelector(\".dhx_year_month\").innerHTML) + \"'>\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"</month>\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"<x>\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"</x>\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"<y>\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"<row><![CDATA[\" + clean_html(el.cells[0].innerHTML) + \"]]></row>\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"</y>\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"<y>\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n<row><![CDATA[\" + clean_html(yh[i].innerHTML) + \"]]></row>\";\r\n\t\t\t\txml += \"</y>\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"</scale>\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n<row height='\" + cells[0].offsetHeight + \"'><![CDATA[\" + clean_html(days.join(\"|\")) + \"]]></row>\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n<column><![CDATA[\" + clean_html(xh[i].innerHTML) + \"]]></column>\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n<column second_scale='\" + top_col + \"'><![CDATA[\" + clean_html(xhs[i].innerHTML) + \"]]></column>\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"<event><head><![CDATA[\" + clean_html(evs[i].childNodes[0].innerHTML) + \"]]></head><body><![CDATA[\" + clean_html(evs[i].childNodes[2].innerHTML) + \"]]></body></event>\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"<event day='\" + evs[i].parentNode.getAttribute(\"day\") + \"'><body>\" + clean_html(evs[i].innerHTML) + \"</body></event>\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"<event day='\" + (day % 7) + \"' week='\" + Math.floor(day / 7) + \"' month='\" + m + \"' backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'></event>\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n<event><body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].innerHTML) + \"]]></body></event>\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n<event week='\" + week + \"' day='\" + day + \"' type='\" + e_type + \"' x='\" + zx + \"' y='\" + zy + \"' width='\" + zdx + \"' height='\" + zdy + \"' len='\" + length + \"'>\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"<header><![CDATA[\" + clean_html(evs[i].childNodes[1].innerHTML) + \"]]></header>\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"<body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].childNodes[2].innerHTML) + \"]]></body>\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"<body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].innerHTML) + \"]]></body>\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"</event>\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '<form id=\"' + uid + '\" method=\"post\" target=\"_blank\" action=\"' + url + '\" accept-charset=\"utf-8\" enctype=\"application/x-www-form-urlencoded\"><input type=\"hidden\" name=\"mycoolxmlbody\"/> </form>';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"<data>\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"</data>\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i<events.length; i++){\r\n\t\tscheduler.attachEvent(events[i], hiding_function);\r\n\t}\r\n})();\r\n\r\nscheduler.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };\r\nscheduler.templates.quick_info_content = function(start, end, ev){ return ev.details || \"\"; };\r\nscheduler.templates.quick_info_date = function(start, end, ev){\r\n\tif (scheduler.isOneDayEvent(ev) && scheduler.config.rtl){\r\n\t\treturn scheduler.templates.day_date(start, end, ev) + \" \" +scheduler.templates.event_header(end, start, ev);\r\n\t} else if (scheduler.isOneDayEvent(ev)) {\r\n\t\treturn scheduler.templates.day_date(start, end, ev) + \" \" +scheduler.templates.event_header(start, end, ev);\r\n\t} else if (scheduler.config.rtl) {\r\n\t\treturn scheduler.templates.week_date(end, start, ev);\r\n\t} else {\r\n\t\treturn scheduler.templates.week_date(start, end, ev);\r\n\t}\r\n};\r\n\r\nscheduler.showQuickInfo = function(id){\r\n\tif (id == this._quick_info_box_id) return;\r\n\tthis.hideQuickInfo(true);\r\n\tif(this.callEvent(\"onBeforeQuickInfo\", [id]) === false){\r\n\t\treturn;\r\n\t}\r\n\tvar pos = this._get_event_counter_part(id);\r\n\r\n\tif (pos){\r\n\t\tthis._quick_info_box = this._init_quick_info(pos);\r\n\t\tthis._fill_quick_data(id);\r\n\t\tthis._show_quick_info(pos);\r\n\r\n\t\tthis.callEvent(\"onQuickInfo\", [id]);\r\n\t}\r\n};\r\n\r\n(function(){\r\n\r\nfunction cssTimeToMs(time) {\r\n\ttime = time || \"\";\r\n\r\n\tvar num = parseFloat(time),\r\n\t\tunit = time.match(/m?s/),\r\n\t\tmilliseconds;\r\n\r\n\tif (unit) {\r\n\t\tunit = unit[0];\r\n\t}\r\n\r\n\tswitch (unit) {\r\n\t\tcase \"s\": // seconds\r\n\t\t\tmilliseconds = num * 1000;\r\n\t\t\tbreak;\r\n\t\tcase \"ms\": // milliseconds\r\n\t\t\tmilliseconds = num;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tmilliseconds = 0;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\treturn milliseconds;\r\n}\r\n\r\nscheduler.hideQuickInfo = function(forced){\r\n\tvar qi = this._quick_info_box;\r\n\tvar eventId = this._quick_info_box_id;\r\n\tthis._quick_info_box_id = 0;\r\n\r\n\tif (qi && qi.parentNode){\r\n\t\tvar width = qi.offsetWidth;\r\n\t\tif (scheduler.config.quick_info_detached) {\r\n\t\t\tthis.callEvent(\"onAfterQuickInfo\", [eventId]);\r\n\t\t\treturn qi.parentNode.removeChild(qi);\r\n\t\t}\r\n\r\n\t\tif (qi.style.right == \"auto\")\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\t\telse\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\tif (forced) {\r\n\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t}else{\r\n\r\n\t\t\tvar style;\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tstyle = window.getComputedStyle(qi, null);\r\n\t\t\t}else if(qi.currentStyle){\r\n\t\t\t\tstyle = qi.currentStyle;\r\n\t\t\t}\r\n\t\t\tvar delay = cssTimeToMs(style[\"transition-delay\"]) + cssTimeToMs(style[\"transition-duration\"]);\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(qi.parentNode){\r\n\t\t\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t\t\t}\r\n\t\t\t}, delay);\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterQuickInfo\", [eventId]);\r\n\t}\r\n};\r\n\r\n})();\r\n\r\nscheduler.event(window, \"keydown\", function(e){\r\n\tif (e.keyCode == 27)\r\n\t\tscheduler.hideQuickInfo();\r\n});\r\n\r\nscheduler._show_quick_info = function(pos){\r\n\tvar qi = scheduler._quick_info_box;\r\n\tscheduler._obj.appendChild(qi);\r\n\tvar width = qi.offsetWidth;\r\n\tvar height = qi.offsetHeight;\r\n\r\n\tif (scheduler.config.quick_info_detached){\r\n\t\tvar left = pos.left - pos.dx*(width - pos.width);\r\n\t\tvar right = left + width;\r\n\t\tif(right > window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\t\tqi.style.top = this.xy.scale_height+this.xy.nav_height + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t<div class=\"dhx_cal_qi_tcontrols\">\r\n\t\t\t<a class=\"dhx_cal_qi_close_btn scheduler_icon close\"></a>\r\n\t\t</div>\r\n\t\t<div class=\"dhx_cal_qi_title\" ${ariaAttr}>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"dhx_cal_qi_tcontent\"></div>\r\n\t\t\t\t<div class=\"dhx_cal_qi_tdate\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"dhx_cal_qi_content\"></div>`;\r\n\r\n\t//buttons\r\n\t\thtml += \"<div class=\\\"dhx_cal_qi_controls\\\">\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `<div ${ariaAttr} class=\"dhx_qi_big_icon ${buttons[i]}\" title=\"${scheduler.locale.labels[buttons[i]]}\">\r\n\t\t\t\t<div class='dhx_menu_icon ${buttons[i]}'></div><div>${scheduler.locale.labels[buttons[i]]}</div></div>`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"</div>\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\tvar left = 0;\r\n\tvar top = 0;\r\n\r\n\tvar node = domEv;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tvar dx = (left + domEv.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tvar dy = (top + domEv.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:domEv.offsetWidth, height:domEv.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `<span>${header.content}</span>`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '<div class=\"dhx_form_repeat\"> '+\r\n\t\t\t\t\t'<form> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_left\"> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"day\" />'+loc.repeat_radio_day+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"week\"/>'+loc.repeat_radio_week+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"month\" checked />'+loc.repeat_radio_month+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"year\" />'+loc.repeat_radio_year+'</label></div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_divider\">'+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_center\"> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_day\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"day_type\" value=\"d\"/>'+loc.repeat_radio_day_type+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"day_count\" value=\"1\" />'+loc.repeat_text_day_count+'</label></div> '+\r\n\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"day_type\" checked value=\"w\"/>'+loc.repeat_radio_day_type2+'</label></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_week\">'+\r\n\t\t\t\t\t\t\t\t'<div><label>'+loc.repeat_week+'<input class=\"dhx_repeat_text\" type=\"text\" name=\"week_count\" value=\"1\" /></label>'+\r\n\t\t\t\t\t\t\t\t'<span>'+loc.repeat_text_week_count+'</span></div> '+\r\n\t\t\t\t\t\t\t\t'<table class=\"dhx_repeat_days\"> '+\r\n\t\t\t\t\t\t\t\t\t'<tr> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"1\" />'+loc.day_for_recurring[1]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"4\" />'+loc.day_for_recurring[4]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"2\" />'+loc.day_for_recurring[2]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"5\" />'+loc.day_for_recurring[5]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"3\" />'+loc.day_for_recurring[3]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"6\" />'+loc.day_for_recurring[6]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"0\" />'+loc.day_for_recurring[0]+'</label></div> </td> '+\r\n\t\t\t\t\t\t\t\t\t'</tr> '+\r\n\t\t\t\t\t\t\t\t'</table> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div id=\"dhx_repeat_month\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_month_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"month_type\" value=\"d\"/>'+loc.repeat_radio_month_type+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_day\" value=\"1\" />'+loc.repeat_text_month_day+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_count\" value=\"1\" />'+loc.repeat_text_month_count+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_month_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"month_type\" checked value=\"w\"/>'+loc.repeat_radio_month_start+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"month_week2\" value=\"1\" />'+\r\n\t\t\t\t\t\t\t\t\t'<label>'+\r\n\t\t\t\t\t\t\t\t\t\t'<select name=\"month_day2\">'+\r\n\t\t\t\t\t\t\t\t\t\t'\t<option value=\"1\" selected >'+scheduler.locale.date.day_full[1]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+scheduler.locale.date.day_full[2]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+scheduler.locale.date.day_full[3]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+scheduler.locale.date.day_full[4]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+scheduler.locale.date.day_full[5]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+scheduler.locale.date.day_full[6]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"0\">'+scheduler.locale.date.day_full[0]+\r\n\t\t\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\t\t\tloc.repeat_text_month_count2_before+\r\n\t\t\t\t\t\t\t\t\t'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_count2\" value=\"1\" />'+loc.repeat_text_month_count2_after+'</label></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_year\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_year_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"year_type\" value=\"d\"/>'+loc.repeat_radio_day_type+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"year_day\" value=\"1\" />'+loc.repeat_text_year_day+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label>'+\r\n\t\t\t\t\t\t\t\t\t'<select name=\"year_month\">'+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"0\" selected >'+loc.month_for_recurring[0]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"1\">'+loc.month_for_recurring[1]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+loc.month_for_recurring[2]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+loc.month_for_recurring[3]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+loc.month_for_recurring[4]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+loc.month_for_recurring[5]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+loc.month_for_recurring[6]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+loc.month_for_recurring[7]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"8\">'+loc.month_for_recurring[8]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"9\">'+loc.month_for_recurring[9]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"10\">'+loc.month_for_recurring[10]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"11\">'+loc.month_for_recurring[11]+\r\n\t\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\t\tloc.select_year_month+\r\n\t\t\t\t\t\t\t\t'</label></div> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_year_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"year_type\" checked value=\"w\"/>'+loc.repeat_year_label+'</label>'+\r\n\t\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"year_week2\" value=\"1\" />'+\r\n\t\t\t\t\t\t\t\t'<select name=\"year_day2\">'+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"1\" selected >'+scheduler.locale.date.day_full[1]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+scheduler.locale.date.day_full[2]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+scheduler.locale.date.day_full[3]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+scheduler.locale.date.day_full[4]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+scheduler.locale.date.day_full[5]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+scheduler.locale.date.day_full[6]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+scheduler.locale.date.day_full[0]+\r\n\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'<select name=\"year_month2\">'+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"0\" selected >'+loc.month_for_recurring[0]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"1\">'+loc.month_for_recurring[1]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+loc.month_for_recurring[2]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+loc.month_for_recurring[3]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+loc.month_for_recurring[4]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+loc.month_for_recurring[5]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+loc.month_for_recurring[6]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+loc.month_for_recurring[7]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"8\">'+loc.month_for_recurring[8]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"9\">'+loc.month_for_recurring[9]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"10\">'+loc.month_for_recurring[10]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"11\">'+loc.month_for_recurring[11]+\r\n\t\t\t\t\t\t\t\t'</select></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_divider\">'+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_right\"> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" checked/>'+loc.repeat_radio_end+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" />'+loc.repeat_radio_end2+'</label>'+\r\n\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"occurences_count\" value=\"1\" />'+loc.repeat_text_occurences_count+'</div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" />'+loc.repeat_radio_end3+'</label>'+\r\n\t\t\t\t\t\t\t'<input class=\"dhx_repeat_date\" type=\"text\" name=\"date_of_end\" value=\"'+scheduler.config.repeat_date_of_end+'\" /></div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t'</form> '+\r\n\t\t\t\t'</div> '+\r\n\t\t\t\t'</div>';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"<event>\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\"><![CDATA[\"+(attrs[i][1]?attrs[i][1](ev[attrs[i][0]]):ev[attrs[i][0]])+\"]]></\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"</event>\");\r\n\t}\r\n\treturn (header||\"\")+\"<data>\"+xml.join(\"\\n\")+\"</data>\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_month_head = function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"<div class='dhx_tooltip_line' style='\" + bg_color + \"\" + color + \"' event_id='\" + evs[i].id + \"' \"+this.config.event_attribute+\"='\"+evs[i].id+\"'>\";\r\n\t\t\thtml += \"<div class='dhx_tooltip_date' style='\" + bg_color + \"\" + color + \"'>\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"</div>\";\r\n\t\t\thtml += \"<div class='dhx_event_icon icon_details'> </div>\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"</div>\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dx = Math.floor(parseInt(dataArea.style.width) / c.year_x);\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t\tdx = Math.floor((parseInt(dataArea.style.width) - scheduler.xy.scroll_width) / c.year_x);\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tif(!this._is_new_skin()){\r\n\t\t\t\t\tyearBox.style.cssText = \"position:absolute;\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"<div class='dhx_year_month'></div><div class='dhx_year_grid'><div class='dhx_year_week'>\" + week_template.innerHTML + \"</div><div class='dhx_year_body'></div></div>\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar weekHeader = yearBox.querySelector(\".dhx_year_week\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\t\t\t\tif(!this._is_new_skin()){\r\n\t\t\t\t\tweekHeader.style.height = weekHeader.childNodes[0].offsetHeight + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tvar dt = Math.round((dy - 190) / 2);\r\n\t\t\t\t\tyearBox.style.marginTop = dt + \"px\";\r\n\t\t\t\t\tthis.set_xy(yearBox, dx - 10, dy - dt - 10, dx * j + 5, dy * i + 5 + scheduler.xy.year_top);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `<div class='dhx_year_month'>${this.templates.year_month(currentDate)}</div>\r\n\t\t\t<div class='dhx_year_grid'></div>`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"<form method='POST' target='_blank'><input type='text' name='data'><input type='hidden' name='type' value=''></form>\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };"],"names":["dhtmlxHook","dhtmlx","attaches","attachScheduler","day","mode","tabs","scheduler","obj","document","createElement","id","this","_genStr","innerHTML","body","appendChild","firstChild","attachObject","vs","av","sched","schedId","setSizes","updateView","destructor","init","_viewRestore","globalScope","window","global","global$1","assert","check","message","config","show_errors","callEvent","type","text","expire","console","log","extend","commonViews","agenda","grid","map","unit","timeline","week_agenda","year","anythingElse","requiredExtensions","limit","_commonErrorMessages","unknownView","view","relatedDoc","relatedExtension","collapsedContainer","div","createTimelineView","Error","createUnitsView","createGridView","addMarkedTimespan","renderCalendar","exportToPNG","join","exportToPDF","attachEvent","dhtmlxError","catchError","a","b","c","responseText","ajax_error","alert","className","element","classes","split","forEach","cssClass","classList","add","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","date","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","event","isCalendarVisible","destroyCalendar","position","getState","navigation","handler","calendar","setCurrentView","html_element","findRenderer","renderer","rows","cols","renderElement","css","width","value","style","height","addEventListener","html","align","justifyContent","prepareConfig","renderLayout","fragment","createDocumentFragment","items","Array","isArray","i","length","next","_init_nav_bar","navBar","$container","querySelector","_update_nav_bar","previousHeight","container","heightChanged","configChanged","newHeight","xy","nav_height","unset_actions","_els","get_elements","set_actions","display","isAttachedNode","root","parentNode","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","equals","listenWindowResize","oldSize","resizeDelay","clearTimeout","setTimeout","$destroyed","newSize","triggerSchedulerResize","$root","watchNodeResize","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","addResizeListener","containerStyles","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","salesforce_environment","contentWindow","removeChild","EventHost","constructor","_silent_mode","listeners","_silentEnd","createEventStorage","handlers","index","eventStorage","combinedResult","handlerResult","apply","arguments","addEvent","settings","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","innerId","attachAll","callback","name","eventArguments","handlerName","concat","checkEvent","detachEvent","list","eventId","detachAllEvents","eventable","nav_bar","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","layout","navbar","render","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","matrix","push","_props","_grid","names","optionalViews","viewName","_currentDate","_obj","getElementById","error","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","object","_x","_y","scale_x","_table_view","scale_s","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","_is_new_skin","actual_height","data_y","left","right","node","x","y","prepareValue","val","prepared","isNaN","Number","Math","max","direction","undefined","top","els","getElementsByTagName","class_name","_getClassName","attr_value","getAttribute","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","e","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","ev","src","target","srcElement","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","unselect","updateEvent","t","getEvent","_mode","Date","_date","min_date","_min_date","max_date","_max_date","editor_id","_edit_id","lightbox_id","_lightbox_id","new_event","_new_event","select_id","expanded","drag_id","_drag_id","drag_mode","_drag_mode","dhx_cal_data","cancelBubble","trg","getActionData","readonly","icon","closest","mask","indexOf","buttons","replace","valueOf","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","result","confirm","addEventNow","start","end","base","_isObject","_isDate","d","event_duration","time_step","start_date","round","start_hour","first_hour","getHours","setHours","end_date","setTime","uid","_loading","_drag_event","dblclick_create","details_on_dblclick","_timed","call","_get_column_index","x_pos","column","_cols","_ignores","floor","_week_indexes_from_pos","pos","min","ceil","hour_size_px","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","delay","d_pos","has_moved","_correct_drag_start_date","len","_start_correction","_end_correction","last_hour","getMinutes","_get_fictional_event_length","_correct_drag_end_date","duration","mousedownPos","_get_date_from_pos","_drag_start","res","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","date_part","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","getView","getDate","_allow_dnd","update_render","sx","update_view","for_rendered","r","classname","drag_event_body","fullClass","_lame_clone","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","_lame_copy","edit_on_create","details_on_create","isOneDayEvent","render_view_data","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","getFullYear","getMonth","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","_scales","week_start","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","navline","c1","visibility","totalWidth","col_length","offset","hiddenWidth","c2","cloneNode","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","cells","querySelectorAll","parse_date","getLabel","property","key","sections","lightbox","map_to","options","updateCollection","list_name","collection","serverList","splice","resetLightbox","hideCover","cache","Object","create","String","Boolean","prototype","hasOwnProperty","source","n_ev","section","_focus","focus","getDaysDifference","startDate","endDate","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","days","fd","start_slot","end_slot","_get_section_property","y_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","slice","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","isActive","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","uidSeed","now","pop","isStringObject","Function","toString","isNumberObject","isBooleanObject","isDate","defined","timeout","timer","$cancelTimeout","$pending","args","$execute","utils","mixin","force","f","copy","varType","elementPosition","elem","bottom","getBoundingClientRect","box","docElem","pageYOffset","pageXOffset","offsetLeft","offsetParent","getRelativeEventPosition","getNodePosition","getClassName","baseVal","getTargetNode","tagName","shadowRoot","composedPath","locateCss","strict","ind","charAt","isVisible","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","hasHref","canHaveHref","area","nodeName","loLowerCase","isEnabled","canDisable","input","textarea","hasAttribute","getFocusableNodes","nodes","nodesArray","$position","sort","isValid","isShadowDomSupported","createShadowRoot","attachShadow","getActiveElement","activeElement","getSelection","focusNode","getRootNode","ShadowRoot","host","hasShadowParent","dom_helpers","htmlObject","getOffset","getOffsetSum","getOffsetRect","test","navigator","userAgent","dummyBox","selector","insertAfter","newNode","referenceNode","nextSibling","isChildOf","child","parent","contains","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","isEdge","isNode","clearAll","_dp","serialize$1","data","serialized","encodeURIComponent","Promise","createConfig","method","url","async","headers","serialize","ajax","serializeRequestParams","parse","DOMParser","parseFromString","ActiveXObject","loadXML","xmltop","tagname","xhr","status","xml","responseXML","xpath","xpathExp","docObj","selectNodes","first","col","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","query","_call","get","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","isQt","match","readyState","xmlDoc","filePath","open","setRequestHeader","toUpperCase","send","urlSeparator","$ajax","generateStringToDate","format","utc","splt","code","csp_date_to_str","to_fixed","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","getDay","day_full","month_short","month_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","csp_str_to_date","set","temp","month_short_hash","month_full_hash","UTC","canUseCsp","useCsp","csp","s","_bind_host_object","old","setMinutes","setSeconds","setMilliseconds","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","datesDiff","rest","hours","setYear","num","date_to_str","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","isYMDDate","datestr","isMDYDate","isDMYDate","isISO8601","parseYMD","parseMDY","parseDMY","parse_exact_format","nday","first_thursday","year_number","ordinal_date","week_number","convert_to_utc","default_date","month_date","load_date","week_date","hour_date","date_format","api_date","displayed_event_color","displayed_event_text_color","wide_form","day_column_padding","use_select_menu_space","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_display","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch","touch_tip","touch_drag","touch_swipe_dates","quick_info_detached","drag_highlight","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","timeline_swap_resize","event_attribute","$initial","_helpers","parseDate","xml_date","formatDate","xml_format","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","event_header","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","_events","_loaded","clear_view","extra_data","event_updated","silent","setEvent","hash","_rendered","changeEventId","new_id","create_getter","create_setter","_changed","is_visible_events","clear_event","in_visible_range","evFirstHour","evLastHour","end_dates_visible","hidden_duration","checkEndDate","get_visible_events","only_timed","stack","filter_event","filter","_is_main_area_event","evs","hold","full","_not_render","_recalculate_timed","tvs","tvd","_rendered_location","render_data","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","containers","render_event_bar","max_evs","max_month_events","_sorder","locate_holder","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_line","_pre_render_events_table","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","k","_max_sorder","max_count","_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","cellIndex","locate_holder_day","weekCellIndex","out","weeks","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","parentPosition","zIndex","color","setProperty","tplClass","cssText","_editor","shiftKey","keyCode","icons","icons_str","ariaAttr","currentIcon","textColor","highlightEventPosition","contentA","contentB","cs","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","childNodes","past","_get_dnd_order","order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","restoreOriginalColors","section_delimiter","getSectionTop","posFromDate","dx","_smartRenderingEnabled","scrollTo","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","size","_parsers","canParse","topElement","loader","csrfToken","security_key","arr","itms","itm","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","option","option_key","ical","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","dh","dm","utcMark","dn","getSerializator","_load_url","prevent_cache","ajaxCallback","response","on_load","lf","cache_line","temp_to","xmlLoaded","jsonLoader","iCalLoader","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","cfg","dt","last","limit_time_select","p","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","block","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","defaultButtonsLeft","defaultButtonsRight","tmp","week_agenda_scale_height","map_icon_width","minic","minicalendar","padding","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","methods","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_type","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","updateMode","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","setUpdateMode","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","sendData","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","ids","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","setInterval","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","_prepareDataItem","item","processedItem","dataItem","createDataProcessor","tMode","batchUpdate","boxAttribute","_dhx_msg_cfg","usercall","modalBox","hide","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","be","agenda_tab","description","year_tab","week_agenda_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","month_for_recurring","day_for_recurring","ca","cn","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","labelFormat","dayElement","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","dayStart","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","_weeksBetween","currDate","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","common_errors","common","schedulerCore","wai_aria","dom","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","event_highlight","dhtmlx_suite_hooks","skins","jquery","dataProcessorExtend","connector","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","ext","activePlugins","plugins","extensionList","getExtensionList","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","ExtensionsManager","_extensions","SchedulerFactory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","calendars","addCalendar","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","_agendaScrollTop","set_full_view","l","rowAttr","dateHeader","descriptionHeader","tableAttr","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","agenda_area","v_border","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","eventStart","renderEmptyView","renderDay","calendarEvent","renderOneEvent","dates","selectedId","all_timed_month","is_event_short","_safe_copy","proto","event_pid","isPrototypeOf","event_length","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","collision_limit","_setTempSection","event_id","checked_mode","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","rows_length","year_y","cur_height","eventsContainer","g","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","setCookie","cookie_param","getCookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","old_load","notImplemented","daytimeline_restricted","drag_between_restricted","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","all_options","single_option","addOption","getIndexByValue","selectOption","selected_id","disable","setComboValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","grid_view","html_templates","all","keyboard_shortcuts","$keyboardNavigation","shortcuts","createCommand","modifiers","alt","ctrl","meta","shortcut","commands","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","ctrlKey","metaKey","printableKey","fromCharCode","getHashFromEvent","getHash","parts","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","eventhandler","EventHandler","_handlers","findHandler","doAction","unbind","bindAll","initKeys","trap_modal_focus","trapFocus","currentFocus","currentIndex","nextIndex","nextItem","divs","renderMultiple","currentStart","currentEnd","TimeSlot","_modes","_getMode","units","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","areas","round_position","blocks","_trace_x","_is_column_visible","start_pos","_timeline_getX","end_pos","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","inner_index","all_hours_height","hour_ms","lineHeight","scheduler_node","SchedulerNode","_compose","getDefaultNode","getMode","blur","enable","removeAttribute","_compareEvents","_pickEvent","startId","eventElement","Event","getNode","nextEventHandler","activeNode","dispatcher","nextEvent","currEvent","visibleDates","nextEv","setActiveNode","prevEventHandler","HeaderCell","getNodes","_key_nav_copy_paste","nav_node","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","header_cell","defaultCell","_getSection","_getNodes","eventNode","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","keepScrollPosition","_moveToSlot","slot","nextSlot","time_slot","movingDate","getDefaultDate","key_nav_step","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","clone","timeslot","_getMultisectionView","_getNextSection","sectionId","isInRange","defaultSlot","DataArea","smart_rendering","_pasteDate","_pasteSection","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","minical_button","MinicalButton","globalNode","MinicalCell","minical_cell","_getGrid","_getNode","enabled","newRow","newCol","modals","modalsStack","isModal","afterPopup","startModal","endModal","isTopModal","currentTarget","traceLightbox","_keyNavMessagePopup","focusElement","backupFocus","core","getActiveNode","setDefaultNode","focusGlobalNode","blurNode","editor","keyDownHandler","defaultPrevented","schedulerNode","_timeout","key_nav_legacy","_temp_key_scope","key_nav","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","clear_event_after","copyEvent","_make_pasted_event","multisection","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","getSelectedEvent","_buffer_event","new_ev","scheduler_handlers","attachSchedulerHandlers","focusHandler","waitCall","reFocusActiveNode","mousedownHandler","dataAreaClick","focusEvent","evNode","prevState","lastStart","lastEnd","lastSection","minical_handlers","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","td","renderMinical","cal","added","destroyMinical","_def_count","addShortcut","scope","scopeObject","getScope","getShortcutHandler","removeShortcut","disp","scopes","minicalButton","minicalDate","timeSlot","searchMap","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_start","limit_end","limit_view","check_limits","mark_now","display_marked_timespans","overwrite_marked_timespans","_temp_limit_scope","dhx_time_block","default_timespan_type","fix_options","zones","get_resulting_options","blockTime","unblockTime","deleteMarkedTimespan","om","od","nm","nd","isBlocked","date_end","resetDate","checkInMarkedTimespan","timespan_type","on_overlap","temp_start_date","temp_end_date","timespans","_marked_timespans","day_value","day_index","getZones","_get_zone_minutes","eventEnd","markerStart","markerEnd","blocker","checkLimitViolation","complete_res","allow","_get_blocked_zones","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","_add_timespan_zones","resultZones","view_config","linker","is_new_event","data_copy","native_object","_mark_now","_mark_now_timer","dhx_now_time","_remove_mark_now","_append_mark_now","zone_start","start_index","end_index","units_l","r_divs","t_day","t_div","_render_marked_timespan","_prepare_timespan_options","r_configs","temp_configs","t_days","cloned_config","invert_zones","invertZones","view_key","t_config","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","start_day","delta","t_date","_get_css_classes_by_config","css_classes","_get_block_by_config","date_to_display","min_day","sday","block_proto","_mark_timespans","_on_scale_add_marker","markTimespan","configuration","rebuild_els","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","unmarkTimespan","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","dayConfig","day_timespans","d_t","related_zones","types","typedConfig","_get_types_to_render","specific","types_to_render","_get_configs_to_render","_get_unit_index","day_ind","unitsPerDay","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","map_view","mapView","geocoder","points","markers","infoWindow","createMarker","google","maps","Marker","map_date_width","map_description_width","map_resolve_event_location","map_resolve_user_location","map_initial_position","LatLng","map_error_position","map_infowindow_max_width","map_type","MapTypeId","ROADMAP","map_zoom_after_resolve","marker_geo_success","marker_geo_fail","marker_date","marker_text","event_location","dblclick_dhx_map_area","map_time","map_text","map_start","add_map","map_date","_latLngUpdate","_isMapPositionSet","gmap","dhx_gmap","_setMapSize","mapOptions","zoom","map_initial_zoom","center","mapTypeId","Map","disableDefaultUI","disableDoubleClickZoom","addListener","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","lat","lng","formatted_address","infoWindowOptions","maxWidth","_points","_markers","_infowindow","InfoWindow","_infowindows_content","_initialization_count","Geocoder","geolocation","getCurrentPosition","_userLocation","coords","latitude","longitude","setCenter","setZoom","setContent","getCenter","setPosition","getZoom","fill_map_tab","showAddress","clear_map_tab","_selected_event_id","close","setMap","ariaButtonAttr","elem_id","marginRight","marginLeft","marginTop","temp_center","map_end","trigger","selectEvent","performClick","_displayEventOnMap","address","language","_updateEventLocation","_delay","ret","old_event_id","new_event_id","_event_resolve_delay","minical","minicalDomEvents","mark_events","_synced_minicalendars","_prev","is_refresh","cont","tpos","_get_def_cont","_render_calendar","$dom","cellRoot","dateAttribute","unmarkCalendar","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","refreshOnLoad","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","noHighlight","monthheight","old_s","multisection_restricted","multiselect","parseXMLOptions","parseJSONOptions","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","backup","mvc","use_id","sanitize","update_timer","_start_ext_load","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","dragger","dhtmlDragAndDropObject","stopDrag","last_event","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","parseFloat","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_start","xml_end","xml_top","profile","footer","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","getPDFData","send_xml","submit","to_pdf","schedulersToPdf","objects","toPDF","toPDFRange","quick_info","show_quick_info","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","titleContent","titleDate","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","txt_replace","txts","txtt","originalForm","readonlyForm","_lightbox_r","occurrence_timestamp_in_utc","recurring_workdays","_get_node","_outer_html","outerHTML","getOuterHTML","rec","loc","repeat_date_of_end","_ds","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","_init_set_value","_end_date","str_date_format","repeat_date","str_date","include_end_by","date_str","register_els","inps","formatter","change_current_view","get_repeat_code","get_rcode","repeat","get_end_rule","transpose_type","transp","set_end_rule","has_values","_get_repeat_code","get_numeric_value","repeat_precise","_start","start_exists","transpose_day_week","set_rcode","set_repeat_code","dispatchEvent","MouseEvent","_set_repeat_code","elements","_rec_init_done","rf","blocked","_is_modified_occurence","_toggle_block","actual_dates","timeControl","getTimeSection","_start_date","_get_button","getRecurringSection","_get_form","backgroundPosition","getFirstSectionOfType","_rec_markers","_rec_markers_pull","_pid_time","_get_rec_marker","ch","_get_rec_markers","clearMilliseconds","_rec_temp","old_add_event","ev_id","_ignore_call","tev","_pid_changed","nid","nev","sub","isEventFound","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","old_update_event","transponse_size","day_week","originalMonth","cday","newMonth","cor","cor2","transposeRecurring","recurringParts","dayDurationMs","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","maxCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","getMilliseconds","non_render","startHour","visibleCount","_fix_daylight_saving_date","ted","recurrings","sev","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","timeline_restricted","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","_getViewPort","viewport","_getViewPortSize","tooltipNode","tooltip","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_month_head","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_x","year_top","ssd","yearBox","yearStart","datepicker","locateEvent","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":"AACe,SAAAA,aAEf;AAAA,MAAA,OAAWC,UAAU,eAAeA,OAAOC,UAAU;AACpDD,WAAOC,SAASC,kBAAkB,SAAUC,KAAKC,MAAMC,MAAMC,YAAAA;AAC5D,UAAID,OAAOA,QAAQ;AACnB,UAAIE,MAAMC,SAASC,cAAc,KAAA;AACjCF,UAAIG,KAAK,iBAAiBC,KAAKC,QAAQ,EAAA;AACvCL,UAAIM,YAAY,cAAcN,IAAIG,KAAK,qPAAqPL,OAAO;AACnSG,eAASM,KAAKC,YAAYR,IAAIS,UAAAA;AAE9BL,WAAKM,aAAaV,IAAIG,IAAI,OAAO,IAEjCC;AAAAA,WAAKO,GAAGP,KAAKQ,EAAIC,EAAAA,QAAQd;AACzBK,WAAKO,GAAGP,KAAKQ,EAAAA,EAAIE,UAAUd,IAAIG;AAC/BJ,MAAAA,WAAUgB,WAAWhB,WAAUiB;AAC/BjB,MAAAA,WAAUkB,aAAa;;AACvBlB,MAAAA,WAAUmB,KAAKlB,IAAIG,IAAIP,KAAKC,IAAAA;AAE5B,aAAOO,KAAKO,GAAGP,KAAKe,aAAgBN,CAAAA,EAAAA;AAAAA,IACtC;AAAA,EACA;AAEA;;ACrBA,IAAIO;AACJ,IAAA,OAAUC,WAAW,aAAY;AAChCD,gBAAcC;AACf,OAAK;AACJD,gBAAcE;AACf;AAGA,MAAAC,WAAeH;ACVA,SAAQI,OAACzB,YAAAA;AACvB,SAAO,SAASyB,QAAOC,OAAOC,UAAAA;AAC7B,QAAKD,CAAAA,OAAM;AACV,UAAG1B,WAAU4B,OAAOC,eAAe7B,WAAU8B,UAAU,WAAU,CAACH,QAAc,CAAA,MAAA,OAAO;AACtF,YAAI3B,WAAU2B,SAAS;AACtB3B,UAAAA,WAAU2B,QAAQ,EAACI,MAAM,SAASC,MAAML,UAASM,QAAS,GAAA,CAAA;AAAA,QAC1D,OACI;AAEJC,kBAAQC,IAAIR,QACZ;AAAA,QAAA;AAGD;AAAA,MACA;AAAA,IACD;AAAA,EACH;AACA;ACjBe,SAASS,SAAOpC,YAAAA;AAE/B,MAAIqC,cAAc,EACjBC,QAAQ,sDACRC,MAAM,oDACNC,KAAK,mDACLC,MAAM,qDACNC,UAAU,wDACVC,aAAa,0DACbC,MAAM,oDACNC,cAAc;AAGf,MAAIC,qBAAqB,EACxBR,QAAQ,sCACRC,MAAM,oCACNC,KAAK,mCACLC,MAAM,gCACNC,UAAU,4GACVC,aAAa,sCACbC,MAAM,oCACNG,OAAO,+BAAA;AAGR/C,EAAAA,WAAUgD,uBAAuB,EAChCC,aAAa,SAASC,MAAAA;AACrB,QAAIC,aAAa,oBAAoBd,YAAYa,IAAAA,KAASb,YAAYQ;AACtE,QAAIO,mBAAmBN,mBAAmBI,IAAS,IAAA,6BAA6BJ,mBAAmBI,IAAAA,IAAQ,MAAO;AAClH,WACC,MAAIA,OAAK,mLAETC,aAAa,QAAQC,mBAAoBA,mBAAmB,OAAQ;AAAA,EACrE,GACDC,oBAAoB,SAASC,KAAAA;AAC5B,WAAO;AAAA,EAGP;AAGFtD,EAAAA,WAAUuD,qBAAqB,WAC9B;AAAA,UAAM,IAAIC,MAAM,6FAA6FV,mBAAmBJ,WAChI,qBACmBL,YAAYK,QAAAA;AAAAA,EAChC;AAEA1C,EAAAA,WAAUyD,kBAAkB,WAAA;AAC3B,UAAM,IAAID,MAAM,0FAA0FV,mBAAmBL,OAC7H,qBACmBJ,YAAYI;EAChC;AAEAzC,EAAAA,WAAU0D,iBAAiB,WAAA;AAC1B,UAAM,IAAIF,MAAM,yFAAyFV,mBAAmBP,OAC5H,qBACmBF,YAAYE,IAChC;AAAA,EAAA;AAEAvC,EAAAA,WAAU2D,oBAAoB;AAC7B,UAAM,IAAIH,MAAM,kLAEhB;AAAA,EACD;AAEAxD,EAAAA,WAAU4D,iBAAiB,WAAA;AAC1B,UAAM,IAAIJ,MAAM,yKAEhB;AAAA,EACD;AAEAxD,EAAAA,WAAU6D,cAAc,WACvB;AAAA,UAAM,IAAIL,MAAM,CACf,6CACA,gIACA,+EACCM,EAAAA,KAAK,IACR,CAAA;AAAA,EAAA;AAEA9D,EAAAA,WAAU+D,cAAc,WACvB;AAAA,UAAM,IAAIP,MAAM,CACf,6CACA,gIACA,+EACCM,EAAAA,KAAK,IACR,CAAA;AAAA,EAAA;AAGA;ACrFe,SAAS1B,SAAOpC,YAAAA;AAa/BA,EAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AACzC,eAAUC,gBAAgB,aAAa;AACtC3C,aAAO2C,YAAYC,WAAW,WAAW,SAASC,GAAGC,GAAGC,GAAAA;AACvD,YAAI1C,WAAU0C,EAAE,CAAA,EAAGC;AAEnB,gBAAQtE,WAAU4B,OAAO2C,YAAAA;AAAAA,UACxB,KAAK;AACJhD,qBAAOiD,MAAM7C,QACb;AAAA;AAAA,UACD,KAAK;AACJJ,qBAAOW,QAAQC,IAAIR,QAAAA;AACnB;AAAA,QAIL;AAAA,MAAA,CAAA;AAAA,IACE;AAAA,EACF,CAGA;AAAA;ACnCe,SAASS,SAAOpC,YAE/B;AAAA,WAASsD,IAAImB,WAAAA;AACZ,QAAIC,UAAUxE,SAASC,cAAc,KAAA;AACrC,QAAIwE,WAAWF,aAAa,IAAIG,MAAM,GACtCD;AAAAA,YAAQE,QAAQ,SAASC,UACxBJ;AAAAA,cAAQK,UAAUC,IAAIF;IACxB,CACC;AAAA,WAAOJ;AAAAA,EACR;AACA,MAAIO,YAAY,EACfC,gBAAgB;AACf,WAAO5B,IAAI,+BACX;AAAA,EAAA,GACD6B,KAAK,WAAA;AACJ,WAAO7B,IAAI;EACX,GACDJ,MAAM,SAAUtB,QAAAA;AACf,QAAI8C,UAAUpB,IAAI,aAAA;AAClBoB,YAAQU,aAAa,QAAQxD,OAAOsB,OAAO,MAC3CwB;AAAAA,YAAQU,aAAa,YAAYxD,OAAOsB,IAAAA;AAExC,QAAGlD,WAAU4B,OAAOyD,kBAAiB;AACpC,UAAGzD,OAAO0D,WAAW;AACpBZ,gBAAQK,UAAUC,IAAI,mBAAA;AAAA,MAC1B,WAAYpD,OAAO2D,UAAU;AACzBb,gBAAQK,UAAUC,IAAI,kBAAA;AAAA,MAC1B,WAAapD,OAAOsB,SAAS,QAAQ;AACjCwB,gBAAQK,UAAUC,IAAI,wBACtB;AAAA,MAAA;AAED,UAAGpD,OAAO4D,eAAe;AACxBd,gBAAQK,UAAUC,IAAI,uBAAA;AAAA,MACtB;AAAA,IACD;AACD,WAAON;AAAAA,EACP,GACDe,MAAM,WAAA;AACL,WAAOnC,IAAI;EACX,GACDoC,QAAQ,SAAU9D,QAAAA;AACjB,WAAO0B,IAAI,0DACX;AAAA,EAAA,GACDqC,eAAe,SAAU/D,QAAAA;AACxB,WAAO0B,IAAI,aAAa1B,OAAOsB,OAAO,4BAAA;AAAA,EACtC,GACD0C,QAAQ,WACP;AAAA,WAAOtC,IAAI,qBAAA;AAAA,EACX,GACDuC,oBAAoB,SAASjE,QAC5B;AAAA,QAAIkE,kBAAkBxC,IAAI,kBAC1B;AAAA,QAAA,CAAI1B,OAAOmE,SAAAA,CAAUD,gBAAgBE,iBAAgB;AAEpDhG,MAAAA,WAAUiG,MAAMH,iBAAiB,SAAS,WACzC;AAAA,YAAI9F,WAAUkG,kBAAqB,GAAA;AAClClG,UAAAA,WAAUmG,gBAAAA;AAAAA,QACf,OAAW;AACNnG,UAAAA,WAAU4D,eAAe,EACxBwC,UAAU/F,MACVoF,MAAMzF,WAAUqG,SAAWZ,EAAAA,MAC3Ba,YAAY,MACZC,SAAS,SAAUd,MAAMe,UACxBxG;AAAAA,YAAAA,WAAUyG,eAAehB,IAAAA;AACzBzF,YAAAA,WAAUmG,gBAAAA;AAAAA,UACV;QAEF;AAAA,MACL,CAAA;AAAA,IACG;AACD,WAAOL;AAAAA,EACP,GACDY,cAAc,SAAU9E;AACvB,WAAO0B,IAAI,qBACX;AAAA,EAAA,EAAA;AAGF,WAASqD,aAAa/E,QACrB;AAAA,QAAIgF;AACJ,QAAIhF,OAAOsB,MAAM;AAChB,cAAQtB,OAAOsB,MAAAA;AAAAA,QACd,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ0D,qBAAW3B,UAAUU;AACrB;AAAA,QACD,KAAK;AACJiB,qBAAW3B,UAAUQ;AACrB;AAAA,QACD,KAAK;AACJmB,qBAAW3B,UAAUW;AACrB;AAAA,QACD,KAAK;AACJgB,qBAAW3B,UAAUS;AACrB;AAAA,QACD,KAAK;AACJkB,qBAAW3B,UAAUY;AACrB;AAAA,QACD;AACCe,qBAAW3B,UAAU/B;AACrB;AAAA,MAEJ;AAAA,IAAA,WAAWtB,OAAOiF,MAAM;AACtBD,iBAAW3B,UAAUC;AAAAA,IACvB,WAAWtD,OAAOkF,MAAM;AACtBF,iBAAW3B,UAAUE;AAAAA,IACrB;AACD,WAAOyB;AAAAA,EACR;AAEA,WAASG,cAAcnF,QAAAA;AACtB,QAAIgF,WAAWD,aAAa/E,MAAAA;AAC5B,QAAIgF,CAAAA,UAAS;AACZ;AAAA,IACA;AACD,QAAIlC,UAAUkC,SAAShF,MAAAA;AACvB,QAAGA,OAAOoF,KAAI;AACbtC,cAAQK,UAAUC,IAAIpD,OAAOoF,GAAAA;AAAAA,IAC7B;AACD,QAAGpF,OAAOqF,OAAM;AACf,UAAIC,QAAQtF,OAAOqF;AACnB,UAAGC,UAAUA,QAAQ,GAAE;AACtBA,iBAAS;AAAA,MACT;AACDxC,cAAQyC,MAAMF,QAAQC;AAAAA,IACtB;AACD,QAAGtF,OAAOwF,QAAO;AAChB,UAAIF,QAAQtF,OAAOwF;AACnB,UAAGF,UAAUA,QAAQ,GAAE;AACtBA,iBAAS;AAAA,MACT;AACDxC,cAAQyC,MAAMC,SAASF;AAAAA,IACvB;AACD,QAAItF,OAAOmE,OAAO;AACjBrB,cAAQ2C,iBAAiB,SAASzF,OAAOmE,KACzC;AAAA,IAAA;AACD,QAAInE,OAAO0F,MAAM;AAChB5C,cAAQnE,YAAYqB,OAAO0F;AAAAA,IAC3B;AAED,QAAI1F,OAAO2F,OAAO;AACjB,UAAIL,QAAQ;AACZ,UAAItF,OAAO2F,SAAS,SAAS;AAC5BL,gBAAQ;AAAA,MACX,WAAYtF,OAAO2F,SAAS,QAAQ;AACjCL,gBAAQ;AAAA,MACR;AACDxC,cAAQyC,MAAMK,iBAAiBN;AAAAA,IAC/B;AACD,WAAOxC;AAAAA,EACR;AAEA,WAAS+C,cAAc7F,QACtB;AAAA,QAAA,OAAWA,WAAW,UAAU;AAC/BA,eAAS,EACRsB,MAAMtB,OAAAA;AAAAA,IAEP;AACD,QAAA,CAAKA,OAAOsB,QAAAA,CAAStB,OAAOiF,QAAAA,CAASjF,OAAOkF,MAAM;AACjDlF,aAAOsB,OAAO;AAAA,IACd;AACD,WAAOtB;AAAAA,EACR;AAEA,WAAS8F,aAAa9F,QAAAA;AACrB,QAAI+F,WAAWzH,SAAS0H,uBAAAA;AACxB,QAAIC;AACJ,QAAGC,MAAMC,QAAQnG,MAAQ,GAAA;AACxBiG,cAAQjG;AAAAA,IACV,OAAM;AACJiG,cAAQ,CAACjG,MAAAA;AAAAA,IACT;AAED,aAASoG,IAAI,GAAGA,IAAIH,MAAMI,QAAQD,KAAK;AACtC,UAAI9E,OAAOuE,cAAcI,MAAMG,CAE/B,CAAA;AAAA,UAAG9E,KAAKA,SAAS,SAAS2E,MAAMG,IAAI,CAAA,GAAG;AACtC,YAAIE,OAAOT,cAAcI,MAAMG,IAAI,CAAA,CAAA;AACnC,YAAGE,KAAKhF,SAAS,UAAUgF,KAAKhF,SAAS,SAAQ;AAChDA,eAAKoC,YAAY;AACjBpC,eAAKsC,gBAAgB;AAAA,QACrB;AAAA,MACD;AAED,UAAGtC,KAAKA,SAAS,UAAU2E,MAAMG,IAAI,CAAG,GAAA;AACvC,YAAIE,OAAOT,cAAcI,MAAMG,IAAI,CACnC,CAAA;AAAA,YAAGE,KAAKhF,SAAS,UAAUgF,KAAKhF,SAAS,SAAQ;AAChDA,eAAKsC,gBAAgB;AAAA,QACrB;AAAA,MACD;AAED,UAAGtC,KAAKA,SAAS,WAAW2E,MAAMG,IAAI,CAAG,GAAA;AACxC,YAAIE,OAAOT,cAAcI,MAAMG,IAAI,CAAA,CAAA;AACnC,YAAGE,KAAKhF,SAAS,UAAUgF,KAAKhF,SAAS,OAAM;AAC9CA,eAAKqC,WAAW;AAChBrC,eAAKsC,gBAAgB;AAAA,QACrB;AAAA,MACD;AAED,UAAId,UAAUqC,cAAc7D,IAAAA;AAE5ByE,eAASlH,YAAYiE,OACrB;AAAA,UAAGxB,KAAK4D,QAAQ5D,KAAK2D,MAAK;AACzBnC,gBAAQjE,YAAYiH,aAAaxE,KAAK4D,QAAQ5D,KAAK2D,IACnD,CAAA;AAAA,MAAA;AAAA,IACD;AACD,WAAOc;AAAAA,EACR;AAEA3H,EAAAA,WAAUmI,gBAAgB,SAAUN,OACnC;AAAA,QAAIO,SAAS/H,KAAKgI,WAAWC,cAAc;AAC3C,QAAKF,CAAAA,QAAO;AACXA,eAASlI,SAASC,cAAc,KAChCiI;AAAAA,aAAO3D,YAAY;AACnBzE,MAAAA,WAAUuI,gBAAgBV,OAAOO,MACjC;AAAA,aAAOA;AAAAA,IACP;AACD,WAAOA;AAAAA,EACR;AAGA,MAAII,iBAAiB;AACrBxI,EAAAA,WAAUuI,kBAAkB,SAAU3G,QAAQ6G,WAE7C;AAAA,QAAA,CAAI7G,QAAO;AACV;AAAA,IACA;AACD,QAAI8G,gBAAgB;AACpB,QAAIC,gBAAgB;AAEpB,QAAIC,YAAYhH,OAAOwF,UAAUpH,WAAU6I,GAAGC;AAE9C,QAAGN,mBAAmB,QACnBA,mBAAmBI,WAAW;AAChCF,sBAAgB;AAAA,IAChB;AAC+D;AAC/DC,sBAAgB;AAAA,IAChB;AAED,QAAGD,eAAc;AAChB1I,MAAAA,WAAU6I,GAAGC,aAAaF;AAAAA,IAC1B;AACD,QAAGD,eAAc;AAChBF,gBAAUlI,YAAY;AACtBkI,gBAAUhI,YAAYiH,aAAa9F,MAAAA,CAAAA;AAAAA,IACnC;AAED,QAAG8G,iBAAiBC,eAAc;AACjC3I,MAAAA,WAAU+I,cAAAA;AACV/I,MAAAA,WAAUgJ,OAAO,CACjBhJ;AAAAA,MAAAA,WAAUiJ;AACVjJ,MAAAA,WAAUkJ,YAAAA;AAAAA,IACV;AAED,QAAGN,cAAc,GAAE;AAClBH,gBAAUtB,MAAMgC,UAAU;AAAA,IAC5B,OAAM;AACJV,gBAAUtB,MAAMgC,UAAU;AAAA,IAC1B;AAEDX,qBAAiBI;AAAAA,EAClB;AAEA;ACvQe,SAASxG,SAAOpC,YAE9B;AAAA,WAASoJ,eAAeX,WACvB;AAAA,QAAIY,OAAOnJ,SAASM;AAEpB,WAAMiI,aAAaA,aAAaY,MAAK;AACpCZ,kBAAYA,UAAUa;AAAAA,IACtB;AAED,WAAUD,CAAAA,EAAAA,QAAQZ;AAAAA,EAClB;AAED,WAASc,cAAcjI,SAAAA;AACtB,WAAO,EACNkI,GAAIlI,QAAOmI,cAAcvJ,SAASwJ,gBAAgBC,aAClDC,GAAItI,QAAOuI,eAAe3J,SAASwJ,gBAAgBI;EAEpD;AACD,WAASC,OAAO5F,GAAEC,GACjB;AAAA,WAAOD,EAAEqF,KAAKpF,EAAEoF,KAAKrF,EAAEyF,KAAKxF,EAAEwF;AAAAA,EAC9B;AAED,WAASI,mBAAmBhK,YAAWsB,SACtC;AAAA,QAAI2I,UAAUV,cAAcjI,OAC5B;AAAA,QAAI4I;AACJlK,IAAAA,WAAUiG,MAAM3E,SAAQ,UAAU,WACjC6I;AAAAA,mBAAaD,WACbA;AAAAA,oBAAcE,WAAW,WAAA;AAExB,aAAKhB,eAAepJ,WAAUqI,UAAerI,KAAAA,WAAUqK,YAAW;AACjE;AAAA,QACA;AACD,YAAIC,UAAUf,cAAcjI,OAAAA;AAG5B,YAAKyI,CAAAA,OAAOE,SAASK,OAAAA,GAAU;AAC9BL,oBAAUK;AACVC,iCAAuBvK,UAAAA;AAAAA,QACvB;AAAA,MACD,GAAE,GACN;AAAA,IAAA,CAAA;AAAA,EACE;AAED,WAASuK,uBAAuBvK,YAC/B;AAAA,QAAGA,WAAUqK,cAAAA,CAAerK,WAAUwK,SAAAA,CAAUpB,eAAepJ,WAAUwK,KAAAA,GAAO;AAC/E;AAAA,IACA;AACD,QAAIxK,WAAU8B,UAAU,qBAAqB,CAAA,CAAA,GAAK;AACjD9B,MAAAA,WAAUiB,WACVjB;AAAAA,MAAAA,WAAU8B,UAAU,0BAA0B;IAC9C;AAAA,EACD;AAED,WAAS2I,gBAAgBzK,YACxB;AAAA,QAAIwI,iBAAiBxI,WAAUwK,MAAME;AACrC,QAAIC,gBAAgB3K,WAAUwK,MAAMI;AAEpC,aAASC,wBAAAA;AACR,UAAG7K,WAAUqK,YAAW;AACvB;AAAA,MACA;AAED,UAAGrK,WAAUwK,OAAM;AAClB,YAAIxK,WAAUwK,MAAME,gBAAgBlC,kBACnCxI,WAAUwK,MAAMI,eAAeD,eAAc;AAC7CJ,iCAAuBvK,UAAAA;AAAAA,QACvB;AAEDwI,yBAAiBxI,WAAUwK,MAAME;AACjCC,wBAAgB3K,WAAUwK,MAAMI;AAAAA,MAChC;AAEDR,iBAAWS,uBAAuB,GAAA;AAAA,IAClC;AAEDA,0BACA;AAAA,EAAA;AAED,WAASC,kBAAkB9K,YAC1B;AAAA,QAAIqJ,OAAOrJ,WAAUqI;AACrB,QAAI0C,kBAAkBzJ,OAAO0J,iBAAiB3B,IAC9C;AAAA,QAAG0B,gBAAgBE,iBAAiB,eAAe,UAAS;AAC3D5B,WAAKlC,MAAMf,WAAW;AAAA,IACtB;AAED,QAAI8E,gBAAgBhL,SAASC,cAAc,QAC3C+K;AAAAA,kBAAczG,YAAY;AAC1ByG,kBAAcC,WAAAA;AACd,QAAGnL,WAAU4B,OAAOwJ,qBAAoB;AACvCF,oBAAc9F,aAAa,QAAQ,MACnC8F;AAAAA,oBAAc9F,aAAa,eAAe,IAC1C;AAAA,IAAA;AAGD,QAAIiG,yBAAAA,CAAAA,CAA2B/J,OAAO,MAAaA,KAAAA,CAAAA,CAAAA,OAAO,IAASA,KAAAA,OAAO,MAC1E;AAAA,QAAG+J,wBAAuB;AACzBZ,sBAAgBzK,UACnB;AAAA,IAAA,OAAS;AACNqJ,WAAK5I,YAAYyK,aAAAA;AACjB,UAAIA,cAAcI,eAAe;AAChCtB,2BAAmBhK,YAAWkL,cAAcI,aAChD;AAAA,MAAA,OAAU;AAENjC,aAAKkC,YAAYL,aAAAA;AACjBlB,2BAAmBhK,YAAWsB,MAC9B;AAAA,MAAA;AAAA,IACD;AAAA,EACD;AAEDwJ,oBAAkB9K,UAEnB;AAAA;AC/GA,MAAMwL,UAAAA;AAAAA,EACL,cAAAC;AACCpL,SAAKqL,eAAe;AACpBrL,SAAKsL,YAAY;EACjB;AAAA,EACD,eACCtL;AAAAA,SAAKqL,eAAe;AAAA,EACpB;AAAA,EACD,aAAAE;AACCvL,SAAKqL,eAAe;AAAA,EACpB;AAAA;AAGF,MAAMG,qBAAqB,SAAS5L,KAAAA;AACnC,MAAI6L,WAAW,CAAA;AACf,MAAIC,QAAQ;AACZ,QAAMC,eAAe,WACpB;AAAA,QAAIC,iBAAiB;AACrB,eAAUjE,KAAK8D,UAAS;AACvB,YAAMI,gBAAgBJ,SAAS9D,CAAAA,EAAGmE,MAAMlM,KAAKmM,SAAAA;AAC7CH,uBAAeA,kBAAkBC;AAAAA,IACjC;AACD,WAAOD;AAAAA,EACT;AACCD,eAAaK,WAAS,SAAS9F,SAAS+F,UACvC;AAAA,QAAA,OAAY,WAAY,YAAW;AAClC,UAAIC;AACJ,UAAGD,YAAYA,SAASlM,IAAG;AAC1BmM,oBAAYD,SAASlM;AAAAA,MACzB,OAAQ;AACJmM,oBAAYR;AACZA;AAAAA,MACA;AAED,UAAGO,YAAYA,SAASE,MAAK;AAC5B,cAAMC,kBAAkBlG;AACxBA,kBAAU,WAAA;AACTkG,0BACAT;AAAAA,uBAAaU,YAAYH,SAAAA;AAAAA,QAC9B;AAAA,MACI;AAEDT,eAASS,SAAAA,IAAahG;AACtB,aAAOgG;AAAAA,IACP;AACD,WAAO;AAAA,EACT;AACCP,eAAaU,cAAY,SAAStM,KAC1B0L;AAAAA,WAAAA,SAAS1L,GAClB;AAAA,EAAA;AAEC4L,eAAaW,QAAQ,WACpBb;AAAAA,eAAW,CAAA;AAAA,EACb;AAEC,SAAOE;AACR;AAEA,SAASY,cAAc3M,KAAAA;AAEtB,QAAM4M,YAAY,IAAIrB;AACtBvL,MAAI+D,cAAY,SAAS8I,WAAWvG,SAAS+F,UAC5CQ;AAAAA,gBAAY,QAAMA,UAAUC,YAC5B;AAAA,QAAA,CAAKF,UAAUlB,UAAUmB,YAAW;AACnCD,gBAAUlB,UAAUmB,SAAAA,IAAajB,mBAAmBxL,IAAAA;AAAAA,IACpD;AAED,QAAGiM,YAAYA,SAASU,YAAW;AAClCzG,gBAAUA,QAAQ0G,KAAKX,SAASU,UAAAA;AAAAA,IAChC;AAED,UAAME,UAAUL,UAAUlB,UAAUmB,SAAAA,EAAWT,SAAS9F,SAAS+F;AAEjE,QAAIC,YAAaO,YAAU,MAAII;AAC/B,QAAGZ,YAAYA,SAASlM,IAAG;AAC1BmM,kBAAYD,SAASlM;AAAAA,IACrB;AACD,WAAOmM;AAAAA,EACT;AAECtM,MAAIkN,YAAY,SAASC,UACxB/M;AAAAA,SAAK2D,YAAY,cAAcoJ,QACjC;AAAA,EAAA;AAECnN,MAAI6B,YAAU,SAASuL,MAAMC,gBAAAA;AAC5B,QAAIT,UAAUnB;AAAc,aAAO;AAEnC,UAAM6B,cAAc,QAAMF,KAAKN,YAE/B;AAAA,UAAMpB,YAAYkB,UAAUlB;AAC5B,QAAIA,UAAU,eAAiB,GAAA;AAC9BA,gBAAU,eAAA,EAAiBQ,MAAM9L,MAAM,CAACgN,IAAMG,EAAAA,OAAOF,cACrD,CAAA;AAAA,IAAA;AAED,QAAI3B,UAAU4B,WACb;AAAA,aAAO5B,UAAU4B,WAAAA,EAAapB,MAAM9L,MAAMiN,cAC3C;AAAA,WAAO;AAAA,EACT;AAECrN,MAAIwN,aAAW,SAASJ,MACvB;AAAA,UAAM1B,YAAYkB,UAAUlB;AAC5B,WAAA,CAAA,CAAUA,UAAU,QAAM0B,KAAKN,YACjC,CAAA;AAAA,EAAA;AAEC9M,MAAIyN,cAAY,SAAStN,KAAAA;AACxB,QAAIA,KAAG;AACN,UAAIuL,YAAYkB,UAAUlB;AAC1B,iBAAU3D,KAAK2D,WAAU;AACxBA,kBAAU3D,CAAAA,EAAG0E,YAAYtM,GAAAA;AAAAA,MACzB;AAED,YAAMuN,OAAOvN,IAAGwE,MAAM,GACtB+G;AAAAA,kBAAYkB,UAAUlB;AACtB,UAAGgC,KAAK1F,WAAW,GAAE;AACpB,cAAM6E,YAAYa,KAAK,CAAA;AACvB,cAAMC,UAAUD,KAAK,CACrB;AAAA,YAAGhC,UAAUmB,SAAAA,GAAW;AACvBnB,oBAAUmB,SAAWJ,EAAAA,YAAYkB,OACjC;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACH;AACC3N,MAAI4N,kBAAkB,WAAA;AACrB,eAAWR,QAAQR,UAAUlB,WAAW;AACvCkB,gBAAUlB,UAAU0B,IAAAA,EAAMV;IAC1B;AAAA,EACH;AAEA;AC1He,SAASvK,SAAOpC,YAAAA;AAE/B8N,gBAAU9N,UAAAA;AAEV+N,WAAQ/N,UAERA;AAAAA,EAAAA,WAAUgO,kBAAkB,SAASC,KAAIhI,QAAOM,SAC/C;AAAA,QAAI0H,IAAGC,qBAAoB;AAC1BD,MAAAA,IAAGC,oBAAoBjI,QAAOM,SAAS,KAEzC;AAAA,IAAA,WAAW0H,IAAGP,aAAY;AACxBO,MAAAA,IAAGP,YAAY,OAAKzH,QAAOM,OAAAA;AAAAA,IAC3B;AAAA,EACF;AAGAvG,EAAAA,WAAUmO,aAAa,WAAA;AACtBC,aAA0BpO,UAAAA;AAE1BA,IAAAA,WAAUmO,aAAa;;EACxB;AAEA,MAAIE,SAAS,EACZC,QAAU,EACTC,QAAQ,SAAU3M,QAAAA;AACjB,WAAO5B,WAAUmI,cAAcvG,MAAAA;AAAAA,EAC/B,EAEF4M,GAAAA,QAAU,EACTD,QAAQ,SAAU3M,QACjB;AAAA,QAAI8C,UAAUxE,SAASC,cAAc,KAAA;AACrCuE,YAAQD,YAAY;AACpB,WAAOC;AAAAA,EACP,EAEF+J,GAAAA,UAAY,EACXF,QAAQ,SAAU3M,QACjB;AAAA,QAAI8C,UAAUxE,SAASC,cAAc,KAAA;AACrCuE,YAAQD,YAAY;AACpB,WAAOC;AAAAA,EACP,EAAA,GAEFgC,cAAgB,EACf6H,QAAQ,SAAU3M;AACjB,WAAOA,OAAO0F;AAAAA,EACd,EAAA,EAAA;AAIH,WAASoH,mBAAmBhK,SAC3B;AAAA,WAAA,CAAA,EACCA,QAAQ4D,cAAc,iBAAA,KACtB5D,QAAQ4D,cAAc,eACtB5D,KAAAA,QAAQ4D,cAAc,kBAAA;AAAA,EAExB;AAEA,WAASqG,oBAAoB3O,YAC5B;AAAA,QAAI4O,QAAQ,CACX,OACA,QACA,OAED;AAAA,QAAInJ,OAAO,CACV,MAED;AAAA,QAAIoJ,MAAM,CACT,QACA,SACA,MAAA;AAGD,QAAG7O,WAAU8O,QAAO;AACnB,eAAQ9G,KAAKhI,WAAU8O,QAAO;AAC7BF,cAAMG,KAAK/G,CAAAA;AAAAA,MACX;AAAA,IACD;AACD,QAAGhI,WAAUgP,QAAO;AACnB,eAAQhH,KAAKhI,WAAUgP,QAAO;AAC7BJ,cAAMG,KAAK/G,CACX;AAAA,MAAA;AAAA,IACD;AAED,QAAGhI,WAAUiP,SAASjP,WAAUiP,MAAMC,OAAM;AAC3C,eAAQlH,KAAKhI,WAAUiP,MAAMC,OAAM;AAClCN,cAAMG,KAAK/G,CAAAA;AAAAA,MACX;AAAA,IACD;AAED,QAAImH,gBAAgB,CACnB,OACA,UACA,eACA,MAAA;AAGDA,kBAActK,QAAQ,SAASuK,UAAAA;AAC9B,UAAGpP,WAAUoP,WAAW,OAAA,GAAS;AAChCR,cAAMG,KAAKK,QAAAA;AAAAA,MACX;AAAA,IACH,CAEC;AAAA,WAAOR,MAAMpB,OAAO/H,IAAM+H,EAAAA,OAAOqB,GAClC;AAAA,EAAA;AAEA7O,EAAAA,WAAUmB,OAAK,SAASf,KAAGqF,MAAK3F,MAC/B;AAAA,QAAGO,KAAKgK,YAAW;AAClB;AAAA,IACA;AACD5E,WAAKA,QAAOzF,WAAUqP,aAAAA;AACtBvP,WAAKA,QAAM;AAEX,QAAGO,KAAKiP,MAAK;AACZjP,WAAK0I,cACL;AAAA,IAAA;AAED1I,SAAKiP,OAAalP,OAAAA,OAAM,WAAUF,SAASqP,eAAenP,GAAAA,IAAIA;AAC9DC,SAAKgI,aAAahI,KAAKiP;AACvBjP,SAAKmK,QAAQnK,KAAKiP;AAElB,QAAIjP,CAAAA,KAAKgI,WAAWqC,gBAAgBrK,KAAKgI,WAAWuC,eAAevK,KAAKgI,WAAWlB,MAAMC,WAAW,QAAO;AAE1G9F,aAAOY,QAAQsN,MAAMxP,WAAUgD,qBAAqBK,mBAAAA,GAAsBhD,KAAKgI,UAC/E;AAAA,IAAA;AAED,QAAGhI,KAAKuB,OAAOwJ,uBAAuB/K,KAAKuB,OAAO6N,2BAA0B;AAC3EpP,WAAKgI,WAAWjD,aAAa,QAAQ,aAAA;AAAA,IACrC;AAED,QAAA,CAAI/E,KAAKuB,OAAO4M,UAAAA,CAAWE,mBAAmBrO,KAAKgI,UAAY,GAAA;AAG9DhI,WAAKuB,OAAO4M,SAASG,oBAAoBtO,IAAAA;AACzCiB,aAAOY,QAAQC,IAAI,CAClB,oHACA,0CACA,+BAA+BuN,KAAKC,UAAUtP,KAAKuB,OAAO4M,QAAQ,MAAM,CACxE,GAAA,2FAAA,EACC1K,KAAK,IACP,CAAA;AAAA,IAAA;AAED,QAAIzD,KAAKuB,OAAO4M,QAAQ;AACvBnO,WAAKgI,WAAW9H,YAAY;AAC5BF,WAAKgI,WAAWtD,UAAUC,IAAI,mBAC9B;AAAA,UAAG3E,KAAKuB,OAAO4M,OAAOpH,QAAO;AAC5B/G,aAAKwI,GAAGC,aAAazI,KAAKuB,OAAO4M,OAAOpH;AAAAA,MACxC;AACD/G,WAAKgI,WAAW5H,YAAY4N,OAAOC,OAAOC,OAAOlO,KAAKuB,OAAO4M,MAAAA,CAAAA;AAC7DnO,WAAKgI,WAAW5H,YAAY4N,OAAOG,OAAOD,OAC1ClO,CAAAA;AAAAA,WAAKgI,WAAW5H,YAAY4N,OAAOI,SAASF,OAC9C,CAAA;AAAA,IAAA,OAAQ;AAEN,UAAA,CAAIG,mBAAmBrO,KAAKgI,UAAY,GAAA;AACvC,cAAM,IAAI7E,MAAM,CACf,mEACA,+IACA,kLAAA,EACCM,KAAK,IAAA,CAAA;AAAA,MACP;AAAA,IACD;AAED,QAAIzD,KAAKuB,OAAOgO;AAAKvP,WAAKgI,WAAW5D,aAAa;AAGlD,QAAIpE,KAAKwP;AACR7P,MAAAA,WAAU6P,WAEX7P;AAAAA,IAAAA,WAAUyF,KAAKtE,KAAAA;AAEfd,SAAKyP,UAAQ;AAEbzP,SAAK2I,OAAK,CAAA;AACV3I,SAAK4I,aAAAA;AACL5I,SAAK0P,eAAAA;AACL1P,SAAK6I,YAEL7I;AAAAA,SAAK8N,WACL9N;AAAAA,SAAK2P,mBAEL3P;AAAAA,SAAK4P,UACLjQ;AAAAA,IAAAA,WAAU8B,UAAU,oBAAoB,CAAA,CAAA;AACxC9B,IAAAA,WAAUkQ,eAAe;AACzB7P,SAAKoG,eAAehB,MAAK3F;EAE1B;AAEAE,EAAAA,WAAU6I,KAAG,EACZsH,kBAAiB,IACjBC,YAAY,IACZC,aAAY,IACZC,cAAa,IACbC,cAAa,IACbC,oBAAmB,IACnBC,YAAW,IACXC,YAAW,GACXC,aAAY,GACZC,cAAa,KACbC,mBAAkB,IAClBC,qBAAqB,GAEtB9Q;AAAAA,EAAAA,WAAU+Q,OAAK,EACdC,WAAU,IACVC,aAAY,GAAA;AAGbjR,EAAAA,WAAUiN,OAAO,SAASA,KAAKiE,SAASC,QACvC;AAAA,QAAGD,QAAQjE;AACV,aAAOiE,QAAQjE,KAAKkE,MAAAA;AAAAA;AAEpB,aAAO,WAAA;AAAY,eAAOD,QAAQ/E,MAAMgF,QAAO/E,SAAAA;AAAAA;EACjD;AAEApM,EAAAA,WAAUiQ,YAAU,WAEnB;AAAA,QAAIzG,IAAInJ,KAAK+Q,KAAK/Q,KAAKiP,KAAK3F,cAAYtJ,KAAKwI,GAAG8H;AAChD,QAAI/G,IAAIvJ,KAAKgR,KAAKhR,KAAKiP,KAAKxF,eAAazJ,KAAKwI,GAAG6H;AAGjD,QAAIY,UAAQjR,KAAKkR,cAAY,IAAGlR,KAAKwI,GAAGwH,cAAYhQ,KAAKwI,GAAGyH;AAC5D,QAAIkB,UAAQnR,KAAKkR,cAAAA,KAAelR,KAAKwI,GAAGwH;AAExC,QAAIoB,2BAA2BpR,KAAKgI,WAAWC,cAAc,4BAC7D;AAAA,QAAGtI,WAAU0R,kBAAoB,GAAA;AAChC,UAAID,CAAAA,0BAA0B;AAC7BA,mCAA2BvR,SAASC,cAAc,KAClDsR;AAAAA,iCAAyBhN,YAAY;AACrCpE,aAAKgI,WAAWsJ,aAAaF,0BAA0BpR,KAAK2I,KAAK,gBAAA,EAAkB,CACnF,CAAA;AAAA,MAAA;AACDyI,+BAAyBtK,MAAMgC,UAAU;AAEzC9I,WAAKuR,OAAOH,0BAAyBjI,GAAEnJ,KAAKwI,GAAG0H,eAAe,GAAE,GAAGlQ,KAAK2I,KAAK,gBAAA,EAAkB,CAAG6I,EAAAA,SAAAA;AAAAA,IAEpG,OAAM;AACJ,UAAGJ,0BAAyB;AAC3BA,iCAAyBnI,WAAWiC,YAAYkG,wBAAAA;AAAAA,MAChD;AAAA,IACD;AAED,QAAIpR,KAAKyR,WAAW;AACnB,UAAI9R,WAAUqI,WAAWuC,cAAe;AAAA;AAAA,WACjC;AACNvK,aAAK0R,eAAe7R,SAASoI,cAAc,gBAC3C,CAAA;AAAA,MAAA;AAAA,IACD;AAEDjI,SAAK2R,cAAcxI,IAAE8H;AACrB,QAAItR,CAAAA,WAAUiS,aAAe,GAAA;AAC5B5R,WAAKuR,OAAOvR,KAAK2I,KAAK,iBAAmB,EAAA,CAAA,GAAGQ,GAAEnJ,KAAKwI,GAAGC,YAAW,GAAE,CAAA;AAEnEzI,WAAKuR,OAAOvR,KAAK2I,KAAK,gBAAA,EAAkB,CAAGQ,GAAAA,IAAE8H,UAAU,GAAEjR,KAAKwI,GAAG0H,cAAaiB,SAAQnR,KAAKwI,GAAGC,aAAW,CAEzG;AAAA,UAAIoJ,gBAAgB7R,KAAK2I,KAAK,iBAAmB,EAAA,CAAA,EAAG0B;AACpD,UAAIwH,gBAAgB;AAAG7R,aAAKwI,GAAGC,aAAaoJ;AAE5C,UAAIC,SAAO9R,KAAKwI,GAAG0H,eAAalQ,KAAKwI,GAAGC;AACxCzI,WAAKuR,OAAOvR,KAAK2I,KAAK,cAAA,EAAgB,IAAGQ,GAAEI,KAAGuI,SAAO,IAAG,GAAEA,SAAO,CACnE;AAAA,IAAA,OAAQ;AACN9R,WAAK2I,KAAK,iBAAmB,EAAA,CAAA,EAAG7B,MAAMF,QAAQuC,IAAI;AAClD,YAAMgF,SAASnO,KAAK2I,KAAK,gBAAkB,EAAA,CAAA;AAC3C3I,WAAKuR,OAAOpD,QAAQnO,KAAK2R,aAAa3R,KAAKwI,GAAG0H,YAE9C/B;AAAAA,aAAOrH,MAAMiL,OAAO;AACpB5D,aAAOrH,MAAMkL,QAAQ;AACrB,UAAIhS,CAAAA,KAAKkR,aAAY;AACpB,YAAGlR,KAAKuB,OAAOgO,KAAI;AAClBpB,iBAAOrH,MAAMkL,QAAQ,GAAGhS,KAAKwI,GAAGwH,WAAAA;AAAAA,QACpC,OAAQ;AACJ7B,iBAAOrH,MAAMiL,OAAO,GAAG/R,KAAKwI,GAAGwH,WAAAA;AAAAA,QAC/B;AAAA,MACJ,OAAS;AACN,YAAA,CAAIhQ,KAAKuB,OAAOgO,KAAI;AACnBpB,iBAAOrH,MAAMiL,OAAO;AAAA,QACxB,OAAU;AACN5D,iBAAOrH,MAAMkL,QAAQ;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA,EAGF;AACArS,EAAAA,WAAU4R,SAAO,SAASU,MAAK9I,GAAEI,GAAE2I,GAAEC,GAAAA;AACpC,aAASC,aAAaC;AACrB,UAAIC,WAAWD;AACf,UAAA,CAAIE,MAAMC,OAAOF,QAAW,CAAA,GAAA;AAC3BA,mBAAWG,KAAKC,IAAI,GAAEJ,QAAAA,IAAY;AAAA,MAClC;AACD,aAAOA;AAAAA,IACP;AAED,QAAIK,YAAY;AAEhB,QAAGxJ,MAAMyJ,QAAW;AACnBX,WAAKnL,MAAMF,QAAQwL,aAAajJ,CAAAA;AAAAA,IAChC;AAED,QAAGI,MAAMqJ,QAAU;AAClBX,WAAKnL,MAAMC,SAASqL,aAAa7I,CACjC;AAAA,IAAA;AAED,QAAIwC,UAAUnE,SAAO,GAAE;AAEtB,UAAGsK,MAAMU,QAAU;AAClB,YAAI5S,KAAKuB,OAAOgO;AAAKoD,sBAAY;AACjCV,aAAKnL,MAAM6L,SAAAA,IAAWT,IAAE;AAAA,MACxB;AACD,UAAGC,MAAMS,QAAU;AAClBX,aAAKnL,MAAM+L,MAAIV,IAAE;AAAA,MACjB;AAAA,IAED;AAAA,EACF;AACAxS,EAAAA,WAAUiJ,eAAa,WAEtB;AAAA,QAAIkK,MAAI9S,KAAKiP,KAAK8D,qBAAqB,KAAA;AACvC,aAASpL,IAAE,GAAGA,IAAImL,IAAIlL,QAAQD,KAAI;AACjC,UAAIqL,aAAYrT,WAAUsT,cAAcH,IAAInL,CAC5C,CAAA;AAAA,UAAIuL,aAAaJ,IAAInL,CAAGwL,EAAAA,aAAa,UAAeL,KAAAA,IAAInL,GAAGwL,aAAa,MAAA,KAAW;AACnF,UAAIH;AAAYA,qBAAaA,WAAWzO,MAAM,KAAK,CACnD;AAAA,UAAA,CAAKvE,KAAK2I,KAAKqK,UAAahT;AAAAA,aAAK2I,KAAKqK,UAAAA,IAAY;AAClDhT,WAAK2I,KAAKqK,UAAYtE,EAAAA,KAAKoE,IAAInL,CAAAA,CAAAA;AAI/B,UAAIyL,QAAQzT,WAAU0T,OAAOC,OAAOJ,aAAW,MAAWvT,KAAAA,WAAU0T,OAAOC,OAAOJ,cAAYF,UAC9F;AAAA,UAAA,OAAWI,UAAU,YAAYF,cAAeJ,CAAAA,IAAInL,CAAGzH,EAAAA;AACtDkT,gBAAQF,WAAW3O,MAAM,GAAK,EAAA,CAAA;AAC/B,UAAI6O,OAAO;AACVpT,aAAKuT,SAASC,UAAUV,IAAInL,CAAIyL,GAAAA,KAAAA;AAChCN,YAAInL,CAAAA,EAAGzH,YAAYkT;AAAAA,MACnB;AAAA,IACD;AAAA,EACF;AAGA,MAAIK,iBAAiB9T,WAAU+T,qBAE/B/T;AAAAA,EAAAA,WAAU+I,gBAAgB,WACzB+K;AAAAA,mBAAeE,UAEhB;AAAA,EAAA;AAEAhU,EAAAA,WAAUkJ,cAAY,WACrB;AAAA,aAAS/E,KAAK9D,KAAK2I,MAAK;AACvB,UAAI3I,KAAK4T,OAAO9P,CAAAA,GAAG;AAClB,iBAAS6D,IAAE,GAAGA,IAAI3H,KAAK2I,KAAK7E,CAAAA,EAAG8D,QAAQD,KAAI;AAC1C,gBAAMtD,UAAUrE,KAAK2I,KAAK7E,CAAAA,EAAG6D;AAC7B,gBAAMzB,UAAUlG,KAAK4T,OAAO9P,CAAG8I,EAAAA,KAAKvI,OACpCoP;AAAAA,yBAAeI,OAAOxP,SAAS,SAAS6B,OACxC;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAEDuN,mBAAeI,OAAO7T,KAAKiP,MAAM,eAAe,SAAS6E,GAAAA;AACxDA,QAAEC,eAAAA;AACF,aAAO;AAAA,IACT;AAECN,mBAAeI,OAAO7T,KAAKiP,MAAM,aAAa,SAAS6E,GACtD;AAAA,UAAA,CAAKnU,WAAUqU;AACdrU,QAAAA,WAAUsU,eAAeH,CAAAA;AAAAA,IAC5B,CACCL;AAAAA,mBAAeI,OAAO7T,KAAKiP,MAAM,aAAa,SAAS6E,GACtD;AAAA,UAAA,CAAKnU,WAAUuU;AACdvU,QAAAA,WAAUwU,eAAeL;IAC5B,CACCL;AAAAA,mBAAeI,OAAO7T,KAAKiP,MAAM,WAAW,SAAS6E,GAAAA;AACpD,UAAKnU,CAAAA,WAAUuU;AACdvU,QAAAA,WAAUyU,aAAaN,CAAAA;AAAAA,IAC1B,CACCL;AAAAA,mBAAeI,OAAO7T,KAAKiP,MAAM,YAAY,SAAS6E,GACrDnU;AAAAA,MAAAA,WAAU0U,cAAcP,CAAAA;AAAAA,IAC1B;AACCL,mBAAeI,OAAO7T,KAAKiP,MAAM,eAAe,SAAS6E,GACxD;AAAA,UAAGnU,WAAUyN,WAAW,eAAA,GAAiB;AAExC0G,UAAEC,eACF;AAAA,MAAA;AACD,UAAIO,KAAKR;AACT,UAAIS,MAAMD,GAAGE,UAAQF,GAAGG;AACxB,UAAIC,cAAc/U,WAAU8B,UAAU,iBAAiB,CAAC9B,WAAUgV,cAAcJ,GAAMD,GAAAA,EAAAA,CAAAA;AACtF,aAAOI;AAAAA,IACT,CAAA;AAAA,EACA;AACA/U,EAAAA,WAAUiV,SAAO,SAAS7U,KACzB;AAAA,QAAIC,KAAK6U,cAAY9U;AAAI;AACzBJ,IAAAA,WAAUmV,iBACV9U;AAAAA,SAAK+U,SAAS,KAAA;AACd,QAAG/U,KAAK6U,YAAW;AAClB7U,WAAKgV,SAAAA;AAAAA,IACL;AACDhV,SAAK6U,aAAa9U;AAClBC,SAAKiV,YAAYlV,GAAAA;AACjBC,SAAKyB,UAAU,mBAAmB,CAAC1B;EACpC;AACAJ,EAAAA,WAAUqV,WAAS,SAASjV,KAC3B;AAAA,QAAIA,OAAMA,OAAIC,KAAK6U;AAAY;AAC/B,QAAIK,IAAElV,KAAK6U;AACX7U,SAAK6U,aAAa;AAClB,QAAIK,KAAKlV,KAAKmV,SAASD,CAAIlV;AAAAA,WAAKiV,YAAYC,CAAAA;AAC5ClV,SAAKyB,UAAU,qBAAqB,CAACyT,CAAAA,CAAAA;AAAAA,EACtC;AACAvV,EAAAA,WAAUqG,WAAS,WAAA;AAClB,WAAO,EACNvG,MAAMO,KAAKoV,OACXhQ,MAAM,IAAIiQ,KAAKrV,KAAKsV,QACpBC,UAAU,IAAIF,KAAKrV,KAAKwV,SACxBC,GAAAA,UAAU,IAAIJ,KAAKrV,KAAK0V,SAAAA,GACxBC,WAAW3V,KAAK4V,UAChBC,aAAa7V,KAAK8V,cAClBC,WAAW/V,KAAKgW,YAChBC,WAAWjW,KAAK6U,YAChBqB,UAAUlW,KAAKkW,UACfC,SAASnW,KAAKoW,UACdC,WAAWrW,KAAKsW,WAElB;AAAA,EAAA;AACA3W,EAAAA,WAAUiU,SAAO,EAChB2C,cAAa,SAASzC,GAErB;AAAA,QAAInU,WAAUuU,oBAAmB;AAChC,UAAIJ,EAAEC;AACLD,UAAEC,eAAAA;AACHD,QAAE0C,eAAe;AACjB7W,MAAAA,WAAUuU,qBAAqB;AAC/B,aAAO;AAAA,IACP;AAED,QAAIuC,MAAM3C,EAAEU;AACZ,QAAIzU,MAAKJ,WAAUgV,cAAc8B,GAAAA;AAEjC,QAAK1W,CAAAA,KAAI;AACRJ,MAAAA,WAAU8B,UAAU,gBAAe,CAAC9B,WAAU+W,cAAc5C,CAAG1O,EAAAA,MAAM0O,CACxE,CAAA;AAAA,IAAA,OAAS;AACN,UAAA,CAAMnU,WAAU8B,UAAU,WAAU,CAAC1B,KAAG+T,CAAAA,CAAAA,KAAOnU,WAAU4B,OAAOoV;AAAW;AAAA,IAC3E;AAED,QAAI5W,OAAMJ,WAAU4B,OAAOqT,QAAQ;AAElCjV,MAAAA,WAAUiV,OAAO7U,GAAAA;AACjB,YAAM6W,OAAOH,IAAII,QAAQ;AAEzB,UAAIC,OAAOnX,WAAUsT,cAAc2D,IACnC;AAAA,UAAIE,KAAKC,QAAQ;AAChBpX,QAAAA,WAAUiU,OAAOoD,QAAQF,KAAKvS,MAAM,GAAK,EAAA,CAAA,EAAG0S,QAAQ,SAAQ,EAAA,CAAA,EAAKlX,GACrE;AAAA,IAAA,OAAQ;AACLJ,MAAAA,WAAUmV,iBACV;AAAA,UAAInV,WAAUqG,SAAWiQ,EAAAA,cAAa,oBAAIZ,QAAO6B,QAAWvX,KAAAA,WAAUqW,cAAY,KAAK,KAAI;AAC1FrW,QAAAA,WAAUqV,SACV;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GACDmC,qBAAoB,WAAA;AACnBxX,IAAAA,WAAUiU,OAAOwD,oBAAoB,GAAA,EACrC;AAAA,EAAA,GACDA,qBAAoB,SAASC,OAAMC,MAClC;AAAA,QAAIC,WAAW;AACf,QAAI5X,WAAU4B,OAAOgO,KAAI;AACxB+H,aAAQA,CAAAA;AACRC,iBAAYA,CAAAA;AAAAA,IACZ;AACD5X,IAAAA,WAAUyG,eAAezG,WAAUyF,KAAKT,IACvChF,WAAUyF,KAAKzF,WAAUyV,QAAM,QAAA,EAAU,IAAIC,KAAK1V,WAAU2V,KAAAA,CAAAA,GAASgC,QAAMC,UAAU5X,WAAUyV,KAAAA,CAAAA;AAAAA,EAChG,GACDoC,sBAAqB;AACpB,QAAI7X,WAAU8B,UAAU,0BAA0B,CAAK,CAAA,GAAA;AACtD9B,MAAAA,WAAUyG,eAAezG,WAAUqP,aACnC,CAAA;AAAA,IAAA;AAAA,EACD,GACDyI,aAAY,WACX;AAAA,QAAIzK,OAAOhN,KAAKmT,aAAa,UAC7B;AAAA,QAAIuE,kBAAkB1X,KAAKmT,aAAa,MAAA;AACxC,QAAI1T,OAAOuN,QAAQ0K,gBAAgBC,UAAU,GAAGD,gBAAgBE,OAAO,MACvEjY,CAAAA;AAAAA,IAAAA,WAAUyG,eAAezG,WAAU2V,OAAM7V,IACzC;AAAA,EAAA,GACDuX,SAAQ,EACPa,QAAS,SAAS9X;AACjB,QAAIiE,IAAIrE,WAAU0T,OAAOC,OAAOwE;AAChCnY,IAAAA,WAAUoY,gBAAgB,EAACzW,SAAS0C,GAAGgU,OAAOrY,WAAU0T,OAAOC,OAAO2E,wBAAwBlL,UAAS;AAAYpN,MAAAA,WAAUuY,YAAYnY,GAAM;AAAA,IAAA,GAC/IwB,QAAQ,EAAC4W,IAAIxY,WAAU0T,OAAOC,OAAO8E,YAAAA,EAAAA,CAAAA;AAAAA,EAErC,GACDC,MAAK,SAAStY,KAAAA;AAAKJ,IAAAA,WAAU0Y,KAAKtY;EAAM,GACxCuY,MAAK,SAASvY,KAAAA;AAAKJ,IAAAA,WAAUoV,SAAS,IAAQ;AAAA,EAAA,GAC9CwD,SAAQ,SAASxY,KAAAA;AAAKJ,IAAAA,WAAU6Y,aAAazY,GAAM;AAAA,EAAA,GACnD0Y,MAAK,SAAS1Y,KAAKJ;AAAAA,IAAAA,WAAU6Y,aAAazY,GAAAA;AAAAA,EAAM,GAChD2Y,QAAO,SAAS3Y,KAAAA;AAAKJ,IAAAA,WAAUoV,SAAS,KAAA;AAAA,EAAS,EAGnDpV,EAAAA;AAAAA,EAAAA,WAAUoY,kBAAkB,SAAA,EAASzW,SAACA,UAAO0W,OAAOjL,UAAUxL,OAC7D,GAAA;AAAA,QAAA,CAAKD;AACJ,aAAOyL;AAERxL,aAASA,UAAU;AACnB,QAAIoX,OAAO,EAAKpX,GAAAA,QAAQI,MAAML,SAAAA;AAC9B,QAAI0W;AACHW,WAAKX,QAAQA;AACd,QAAIjL,UAAU;AACb4L,WAAK5L,WAAW,SAAS6L,QACxB;AAAA,YAAIA;AACH7L,mBAAAA;AAAAA,MACJ;AAAA,IACE;AACDpN,IAAAA,WAAUkZ,QAAQF,IAAAA;AAAAA,EACnB;AACAhZ,EAAAA,WAAUmZ,cAAY,SAASC,OAAMC,KAAIlF,GAAAA;AACxC,QAAImF,OAAO,CAAA;AACX,QAAItZ,WAAUuZ,UAAUH,KAAAA,KAAAA,CAAWpZ,WAAUwZ,QAAQJ,KAAO,GAAA;AAC3DE,aAAOF;AACPA,cAAQ;AAAA,IACR;AAED,QAAIK,KAAKpZ,KAAKuB,OAAO8X,kBAAgBrZ,KAAKuB,OAAO+X,aAAW;AAC5D,QAAKP,CAAAA;AAAOA,cAAQE,KAAKM,cAAY9G,KAAK+G,MAAO7Z,WAAUqP,aAAAA,EAAgBkI,QAAUkC,IAAAA,CAAAA,IAAGA;AACxF,QAAIG,aAAa,IAAIlE,KAAK0D,KAC1B;AAAA,QAAA,CAAKC,KAAI;AACR,UAAIS,aAAazZ,KAAKuB,OAAOmY;AAC7B,UAAID,aAAaF,WAAWI,SAAAA,GAAW;AACtCJ,mBAAWK,SAASH,UAAAA;AACpBV,gBAAQQ,WAAWrC,QAAAA;AAAAA,MACnB;AACD8B,YAAMD,MAAM7B,QAAAA,IAAUkC;AAAAA,IACtB;AACD,QAAIS,WAAW,IAAIxE,KAAK2D,GAAAA;AAGxB,QAAGO,WAAWrC,QAAa2C,KAAAA,SAAS3C,QACnC2C;AAAAA,eAASC,QAAQD,SAAS3C,QAAUkC,IAAAA,CAAAA;AACrCH,SAAKM,aAAaN,KAAKM,cAAYA;AACnCN,SAAKY,WAAYZ,KAAKY,YAAUA;AAChCZ,SAAKtX,OAAOsX,KAAKtX,QAAM3B,KAAKqT,OAAOC,OAAOyC;AAC1CkD,SAAKlZ,KAAKC,KAAKoW,WAAW6C,KAAKlZ,MAAMC,KAAK+Z,IAC1C/Z;AAAAA,SAAKsW,aAAW;AAChBtW,SAAKga,WAAS;AACd,QAAIzM,UAAUvN,KAAKgM,SAASiN,IAC5BjZ;AAAAA,SAAKyB,UAAU,kBAAiB,CAACzB,KAAKoW,UAAStC,CAC/C9T,CAAAA;AAAAA,SAAKga,WAAS;AAEdha,SAAKia,cAAY;AACjBja,SAAKoU,aAAaN,CAAAA;AAClB,WAAOvG;AAAAA,EACR;AACA5N,EAAAA,WAAU0U,gBAAc,SAASP,GAAES,KAClCA;AAAAA,UAAMA,QAAMT,EAAEU,UAAQV,EAAEW;AACxB,QAAIzU,KAAKuB,OAAOoV;AAAU;AAC1B,QAAI3J,OAAOrN,WAAUsT,cAAcsB,GAAAA,EAAKhQ,MAAM,GAAA,EAAK,CACnD;AAAA,YAAOyI;MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ,aAAKrN,WAAU4B,OAAO2Y;AAAiB;AACvCla,aAAK8Y,YAAY9Y,KAAK0W,cAAc5C,GAAG1O,MAAK,MAAK0O,CACjD;AAAA;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ,YAAI/T,MAAKC,KAAK2U,cAAcJ,GAC5B;AAAA,YAAA,CAAKvU,KAAKyB,UAAU,cAAa,CAAC1B,KAAG+T,CAAK,CAAA;AAAA;AAC1C,YAAI9T,KAAKuB,OAAO4Y,uBAAuBna,KAAKkR,eAAAA,CAAgBlR,KAAKmV,SAASpV,GAAIqa,EAAAA,UAAAA,CAAWpa,KAAKuB,OAAOqT;AACpG5U,eAAKwY,aAAazY,GAElBC;AAAAA;AAAAA,eAAKqY,KAAKtY,GAAAA;AACX;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJ;AAAA,MACD;AACC,YAAImV,IAAIlV,KAAK,cAAYgN;AACzB,YAAIkI,GAAG;AACNA,YAAEmF,KAAKra,MAAK8T,CACZ;AAAA,QAAA,OACI;AACJ,cAAIS,IAAItL,cAAcsL,OAAOvU;AAC5B,mBAAOL,WAAU0U,cAAcP,GAAES,IAAItL,UACtC;AAAA,QAAA;AACD;AAAA,IAEH;AAAA,EAAA;AAEAtJ,EAAAA,WAAU2a,oBAAoB,SAASC,OACtC;AAAA,QAAIC,SAAS;AACb,QAAIxa,KAAKya,OAAM;AACd,UAAI7T,QAAQ;AACZ,UAAIe,IAAI;AACR,aAAOf,QAAQ5G,KAAKya,MAAM9S,CAAAA,IAAK4S,SAAS5S,IAAI3H,KAAKya,MAAM7S,QAAO;AAC7DhB,iBAAS5G,KAAKya,MAAM9S,CACpBA;AAAAA;AAAAA,MACA;AACD6S,eAAS7S,KAAK3H,KAAKya,MAAM9S,CAAO4S,KAAAA,QAAQ3T,SAAQ5G,KAAKya,MAAM9S,CAAAA,IAAM;AAEjE,UAAI3H,KAAK0a,UAAS;AACjB,YAAGF,UAAUxa,KAAKya,MAAM7S,QAAO;AAC9B,iBAAM4S,UAAU,KAAKxa,KAAK0a,SAASjI,KAAKkI,MAAMH,MAAS,CAAA,GAAA;AACtDA;AAAAA,UACA;AAAA,QACD;AAAA,MAED;AAAA,IACD;AACD,WAAOA;AAAAA,EACR;AAGA7a,EAAAA,WAAUib,yBAAyB,SAASC,KAAAA;AAE3C,QAAI7a,CAAAA,KAAKya,OAAM;AACd,aAAOI;AAAAA,IACT,OAAM;AACJ,UAAIL,SAASxa,KAAKsa,kBAAkBO,IAAI3I,CAExC2I;AAAAA,UAAI3I,IAAEO,KAAKqI,IAAI9a,KAAKya,MAAM7S,SAAO,GAAG6K,KAAKC,IAAI,GAAED,KAAKsI,KAAKP,MAAAA,IAAQ,CACjEK,CAAAA;AAAAA,UAAI1I,IAAEM,KAAKC,IAAI,GAAED,KAAKsI,KAAKF,IAAI1I,IAAE,MAAInS,KAAKuB,OAAO+X,YAAUtZ,KAAKuB,OAAOyZ,aAAe,IAAA,CAAA,IAAGhb,KAAKuB,OAAOmY,cAAY,KAAG1Z,KAAKuB,OAAO+X;AAChI,aAAOuB;AAAAA,IACP;AAAA,EACF;AAEAlb,EAAAA,WAAUsb,gBAAc,SAAS3G,IAAAA;AAChC,QAAIuG;AACJ,QAAI9W,IAAElE,SAASM;AACf,QAAIiZ,IAAIvZ,SAASwJ;AACjB,QAAA,CAAKrJ,KAAKkb,KAAKC,SAAS7G,GAAG8G,SAAS9G,GAAG+G;AACtCR,YAAI,EAAC3I,GAAEoC,GAAG8G,OAAOjJ,GAAEmC,GAAG+G,MAAAA;AAAAA;AAClBR,YAAI,EACR3I,GAAEoC,GAAGgH,WAAWvX,EAAEwX,cAAYnC,EAAEmC,cAAY,KAAKxX,EAAEyX,YACnDrJ,GAAEmC,GAAGmH,WAAW1X,EAAE2X,aAAWtC,EAAEsC,aAAW,KAAK3X,EAAE4X,UAAAA;AAGlD,QAAI3b,KAAKuB,OAAOgO,OAAOvP,KAAK4b,QAAQ;AACnCf,UAAI3I,IAAIlS,KAAKgI,WAAWC,cAAc,eAAiBsC,EAAAA,cAAcsQ,IAAI3I;AACzE,UAAIlS,KAAKoV,UAAU,SAAS;AAC3ByF,YAAI3I,KAAKlS,KAAKwI,GAAGwH;AAAAA,MACjB;AAAA,IACH,OAAQ;AACN6K,UAAI3I,KAAGlS,KAAK6b,YAAYC,gBAAgB9b,KAAKiP,IAAAA,KAAOjP,KAAKkR,cAAY,IAAElR,KAAKwI,GAAGwH;AAAAA,IAC/E;AAED,QAAI5B,WAAWpO,KAAKgI,WAAWC,cAAc,eAAA;AAE7C4S,QAAI1I,KAAGnS,KAAK6b,YAAYE,eAAe3N,QAAAA,IAAUpO,KAAK2I,KAAK,cAAA,EAAgB,CAAG+S,EAAAA;AAC9Eb,QAAIvG,KAAKA;AACT,QAAIpO,UAAUlG,KAAK,WAASA,KAAKoV,KAAAA;AACjC,QAAIlP,SAAQ;AACX2U,YAAM3U,QAAQmU,KAAKra,MAAK6a,GAC1B;AAAA,IAAA,OAAM;AAEJ,UAAA,CAAK7a,KAAKkR,aAAa;AACtB2J,cAAM7a,KAAK4a,uBAAuBC,GACrC;AAAA,MAAA,OAAS;AACN,YAAIL,SAASxa,KAAKsa,kBAAkBO,IAAI3I,CAAAA;AACxC,YAAKlS,CAAAA,KAAKya,SAAUza,CAAAA,KAAK4b;AACxB,iBAAOf;AACR,YAAImB,KAAG;AACP,aAAKA,KAAG,GAAGA,KAAKhc,KAAK4b,OAAOK,QAAQrU,QAAQoU;AAC3C,cAAIhc,KAAK4b,OAAOK,QAAQD,EAAAA,IAAInB,IAAI1I;AAAG;AAEpC0I,YAAI1I,IAAEM,KAAKsI,MAAOtI,KAAKC,IAAI,GAAG8H,MAAAA,IAAQ/H,KAAKC,IAAI,GAAEsJ,KAAG,KAAG,KAAG,KAAG,KAAGhc,KAAKuB,OAAO+X,SAAAA;AAE5E,YAAI3Z,WAAU2W,cAActW,KAAKoV,SAAS;AACzCyF,cAAI1I,KAAGM,KAAKC,IAAI,GAAED,KAAKsI,KAAKP,MAAAA,IAAQ,CAAG/H,IAAAA,KAAKC,IAAI,GAAEsJ,KAAG,CAAA,IAAG,KAAG,KAAG,KAAGhc,KAAKuB,OAAO+X;AAG9E,YAAItZ,KAAKsW,cAAc,QAAO;AAC7B,cAAI3W,WAAUuc,qBAAqBvc,WAAU4B,OAAO4a,iBAAgB;AACnEtB,gBAAIH,WAAW;AAEf,gBAAK1a,CAAAA,KAAKia,YAAYmC;AACrBpc,mBAAKia,YAAYmC,gBAAgBpc,KAAKqc,uBAAuBrc,KAAKia,YAAYV,YAAYvZ,KAAKia,YAAYJ,UAAU,EAAEyC,QAAO,GAAGC,QAAO,MACzI,CAAA;AAAA,UAAA;AAAA,QACD;AAED1B,YAAI3I,IAAE;AAAA,MACN;AAAA,IACD;AACD2I,QAAI2B,YAAa,CAAA,oBAAInH;AACrB,WAAOwF;AAAAA,EACR;AACAlb,EAAAA,WAAUmV,mBAAiB,WAAA;AAC1B,SAAI,oBAAIO,QAAO6B,QAAAA,KAAWvX,WAAUqW,cAAY,KAAK,OAAOrW,WAAUiW,UAAS;AAC9E,UAAI5R,IAAErE,WAAU0T,OAAOC,OAAOmJ;AAE9B9c,MAAAA,WAAUoY,gBAAgB,EAACzW,SAAS0C,GAAGgU,OAAOrY,WAAU0T,OAAOC,OAAOoJ,uBAAuB3P,UAAU,WAAA;AAAapN,QAAAA,WAAUoV,SAASpV,WAAU4B,OAAOob,gBAAAA;AAAAA,MAAoB,EAC5K,CAAA;AAAA,UAAG3Y,GAAE;AACJhE,aAAKoW,WAAWpW,KAAK4c,YAAY5c,KAAKsW,aAAa;AAAA,MACnD;AAAA,IACD;AAAA,EACF;AACA3W,EAAAA,WAAUkd,iBAAe,SAAS9D,OAAO+D,MAAAA;AACxC,WAAO/D,UAAQ,IAAK1D,KAAK1V,WAAU6V,SAAYuH,EAAAA,kBAAAA,IAAoB,IAAK1H,KAAK0D,KAAQgE,EAAAA,kBAAAA,KAAqB,OAAOD,OAAAA,KAAQ;AAAA,EAC1H;AAEAnd,EAAAA,WAAUqd,kBAAkB,SAASC,SAASC,SAC7C;AAAA,aAASC,KAAKC,SAASC,SAASC,KAC/B;AAAA,aAAA,CAAA,EAAU7K,KAAK8K,IAAIH,UAAUC,OAAAA,IAAWC;AAAAA,IACxC;AAED,QAAA,EAAKL,WAAWjd,KAAK4c,YAAW;AAC/B,aAAO;AAAA,IACP;AACD,QAAIY,SAAQ,KACXC,QAAQ;AAGT,WAAA,CAAA,EAAUzd,KAAK4c,UAAUc,cAAc1d,KAAK4c,UAAUJ,aAAcU,QAAQV,YAAYxc,KAAK4c,UAAUJ,YAAYgB,UAAUL,KAAKF,QAAQ3I,GAAGgH,SAAS4B,QAAQ5I,GAAGgH,SAASmC,UAAUN,KAAKF,QAAQ3I,GAAGmH,SAASyB,QAAQ5I,GAAGmH,SAASgC,KAAAA;AAAAA,EAClO;AAEA9d,EAAAA,WAAUge,2BAA2B,SAAS5E,OAAAA;AAC7C,QAAInZ;AACJ,QAAID,WAAU8O;AACb7O,YAAMD,WAAU8O,OAAO9O,WAAUyV,KAClCxV;AAAAA,UAAMA,OAAQ,EAAE0c,QAAO,GAAGC,QAAO,MAAA;AAEjCxD,YAAQ,IAAI1D,KAAK0D,KAAAA;AACjB,QAAI6E,MAAM;AACV,QAAGhe,IAAIie,qBAAqBje,IAAIke;AAC/BF,aAAOhe,IAAIme,aAAW,KAAG,MAAMhF,MAAMY,SAAW,IAAA,KAAGZ,MAAMiF,WAAAA,MAAiB;AAE3E,WAAOjF,QAAM,KAAKpZ,WAAUse,4BAA4BlF,OAAO6E,KAAKhe,GAAAA,IAAQge;AAAAA,EAC7E;AACAje,EAAAA,WAAUue,yBAAyB,SAASnF,OAAOoF,UAClD;AAAA,QAAIve;AACJ,QAAID,WAAU8O;AACb7O,YAAMD,WAAU8O,OAAO9O,WAAUyV,KAAAA;AAClCxV,UAAMA,OAAQ,EAAE0c,QAAO,GAAGC,QAAO,MAAA;AAEjC,QAAIvD,MAAMD,QAAM,IAAIpZ,WAAUse,4BAA4BlF,OAAOoF,UAAUve,GAAAA;AAC3E,WAAO,IAAIyV,KAAK2D,MAAI,KAAKrZ,WAAUse,4BAA4BjF,KAAM,IAAGpZ,KAAM,EAAA,IAAK;EACpF;AAEAD,EAAAA,WAAUsU,iBAAe,SAASH,GACjC;AAAA,QAAI9T,KAAKsW,YAAW;AACnB,UAAIuE,MAAI7a,KAAKib,cAAcnH,CAC3B;AAAA,UAAI9T,KAAKgd,gBAAgBhd,KAAK4c,WAAW/B,GAAAA,GAAK;AAC7C,YAAI9B,OAAOC;AACX,YAAIhZ,KAAK4V,YAAU5V,KAAKoW;AACvBpW,eAAK8U,iBAEN;AAAA,YAAA,CAAI9U,KAAKsW;AACR;AAED,YAAI8H,eAAe;AACnB,YAAGpe,KAAK4c,aAAAA,CAAc5c,KAAK4c,UAAUc,WAAU;AAC9CU,yBAAepe,KAAK4c;AACpBwB,uBAAaV,YAAY;AAAA,QACzB;AAED1d,aAAK4c,YAAY/B;AAEjB7a,aAAK4c,UAAUc,YAAY;AAE3B,YAAI1d,KAAKsW,cAAY,UAAS;AAG7B,cAAG8H,cAAa;AACfvD,kBAAMuD;AAAAA,UACN;AAEDpe,eAAK8U,iBAAAA;AACL9U,eAAKgV,SAAShV,KAAK6U,UAAAA;AACnB7U,eAAKga,WAAS;AAEdjB,kBAAQ/Y,KAAKqe,mBAAmBxD,GAAAA,EAAK3D,QAErC;AAAA,cAAA,CAAKlX,KAAKse,aAAa;AACtB,gBAAIC,MAAMve,KAAKyB,UAAU,wBAAwB,CAACqS,GAAG9T,KAAKoW,QAC1D,CAAA;AAAA,gBAAA,CAAKmI,KAAI;AACRve,mBAAKga,WAAS;AACd;AAAA,YAEA;AAEDha,iBAAKga,WAAS;AACdha,iBAAKse,cAAYvF;AACjB;AAAA,UACA;AAEDC,gBAAMD;AACN,cAAIC,OAAOhZ,KAAKse;AAGhB;AAAA,cAAI/E,aAAa,IAAIlE,KAAKrV,KAAKse,WAAAA;AAC/B,cAAIzE,WAAW,IAAIxE,KAAK2D,GACxB;AAAA,eAAMhZ,KAAKoV,SAAS,SAASpV,KAAKoV,SAAS,YACzCmE,WAAWI,SAAcE,KAAAA,SAASF,cACnCJ,WAAWyE,WAAAA,KAAgBnE,SAASmE,WAAAA,IAAgB;AACnDnE,uBAAW,IAAIxE,KAAKrV,KAAKse,cAAY,GAAA;AAAA,UACtC;AAGDte,eAAKoW,WAASpW,KAAK+Z,IACnB/Z;AAAAA,eAAKgM,SAASuN,YAAYM,UAAU7Z,KAAKqT,OAAOC,OAAOyC,WAAW/V,KAAKoW,UAAUyE,IAAI2D,MAAAA;AAErFxe,eAAKyB,UAAU,kBAAiB,CAACzB,KAAKoW,UAAStC;AAC/C9T,eAAKga,WAAS;AACdha,eAAKsW,aAAW;AAAA,QAEhB;AAED,YAAImI,WAAWze,KAAKuB,OAAO+X;AAC3B,YAAIhF,KAAGtU,KAAKmV,SAASnV,KAAKoW;AAC1B,YAAIxW;AACJ,YAAID,WAAU8O;AACb7O,gBAAMD,WAAU8O,OAAO9O,WAAUyV,KAAAA;AAClCxV,cAAMA,OAAQ,EAAE0c,QAAO,GAAGC,QAAO;AAEjC,YAAIvc,KAAKsW,cAAY,QAAO;AAC3ByC,kBAAQ/Y,KAAKwV,UAAU0B,aAAW2D,IAAI1I,IAAEnS,KAAKuB,OAAO+X,YAAUuB,IAAI3I,IAAE,KAAG,MAAI;AAC3E,cAAA,CAAK2I,IAAI6D,UAAU1e,KAAKkR,aAAa;AACpC6H,qBAAS/Y,KAAKoF,KAAKuZ,UAAUrK,GAAGiF,UAAc,IAAA;AAAA,UAC9C;AAED,cAAA,CAAKvZ,KAAKkR,eAAelR,KAAK4e,kBAAkB5e,KAAKia,YAAY4E,sBAAsBjM,QAAW;AACjG5S,iBAAKia,YAAY4E,oBAAoB9F,QAAQzE,GAAGiF;AAAAA,UAChD;AAED,cAAIvZ,KAAKia,YAAY4E,mBAAmB;AACvC9F,qBAAS/Y,KAAKia,YAAY4E;AAAAA,UAC1B;AAED9F,kBAAQ/Y,KAAK6c,eAAe9D,KAAAA;AAE5B,cAAI8B,IAAIH,YAAY1a,KAAKuB,OAAO4a,mBAAmBnc,KAAKkR,eAAetR,KAAI;AAE1EmZ,oBAAQpZ,WAAUge,yBAAyB5E,KAC3CC;AAAAA,kBAAMrZ,WAAUue,uBAAuBnF,OAAM/Y,KAAKia,YAAYmC,aAE9D;AAAA,UAAA;AACApD,kBAAM1E,GAAGuF,SAAS3C,QAAW5C,KAAAA,GAAGiF,WAAWrC,QAAAA,IAAU6B;AAAAA,QAC1D,OAAU;AACNA,kBAAQzE,GAAGiF,WAAWrC,QACtB8B;AAAAA,gBAAM1E,GAAGuF,SAAS3C,QAClB;AAAA,cAAIlX,KAAKkR,aAAa;AACrB,gBAAI4N,cAAc9e,KAAKwV,UAAU0B,QAAU2D,IAAAA,IAAI1I,IAAEnS,KAAKuB,OAAO+X,YAAU,OAASuB,IAAI6D,SAAO,IAAE,KAAG,KAAG;AACnG,gBAAI1e,KAAKoV,SAAS,SAAS;AAC1B0J,4BAAc9e,KAAK6c,eAAeiC,aAAa,KAAA;AAC/C,kBAAI9e,KAAK+e,kBAAmB;AAC3B,oBAAIvf,MAAM,KAAG,KAAG;AAChB,oBAAIsf,eAAenf,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAK2D,MAAIxZ,MAAI,CAAI0X,CAAAA,EAAAA,QAAAA;AAChE6B,0BAAQ+F,cAActf;AAAAA,cAC9B,OAAa;AACNwZ,sBAAM8F;AAAAA,cACN;AAAA,YACP,OAAY;AACN,kBAAG9e,KAAKuB,OAAO4a,iBAAiB;AAC/B,oBAAItB,IAAIoE,mBAAmB;AAC1BlG,0BAAQpZ,WAAUge,yBAAyBmB,WACnD;AAAA,gBAAA,OAAc;AACN9F,wBAAMrZ,WAAUue,uBAAuBY,aAAa,CAAA;AAAA,gBACpD;AAAA,cACD,OACI;AACJ,oBAAIjE,IAAIoE,mBAAmB;AAC1BlG,0BAAQ+F;AAAAA,gBAChB,OAAc;AACN9F,wBAAM8F;AAAAA,gBACN;AAAA,cACD;AAAA,YACD;AAAA,UACN,OAAW;AACN,gBAAII,gBAAgBlf,KAAKoF,KAAK4Z,UAAU,IAAI3J,KAAKf,GAAGuF,SAAS3C,YAAY,CAAIA,CAAAA,EAAAA,QAAAA;AAC7E,gBAAIiI,eAAe,IAAI9J,KAAK6J,aAC5B;AAAA,gBAAIE,YAAYpf,KAAKuB,OAAOmY;AAC5B,gBAAI2F,WAAWrf,KAAKuB,OAAOwc;AAC3B,gBAAIuB,QAAQD,WAAWD,cAAc,KAAGX;AAExCze,iBAAKuB,OAAO+X,YAAY;AACxB,gBAAIiG,aAAavf,KAAKib,cAAcnH,CAAAA;AACpC9T,iBAAKuB,OAAO+X,YAAYmF;AAExB,gBAAIe,UAAU3E,IAAI1I,IAAEsM,WAAS;AAC7B,gBAAIgB,UAAUhN,KAAKqI,IAAID,IAAI1I,IAAI,GAAGmN,IAAAA,IAAMb,WAAS;AACjD,gBAAIiB,cAAcH,WAAWpN,IAAE;AAG/B,gBAAGM,KAAK8K,IAAIiC,UAAUE,WAAejN,IAAAA,KAAK8K,IAAIkC,UAAUC,WAAa,GAAA;AACpE1G,oBAAMkG,gBAAgBO;AAAAA,YAC5B,OAAU;AACJzG,oBAAMkG,gBAAgBM;AAAAA,YACtB;AACDxG,kBAAMA,OAAO,IAAK3D,KAAK2D,GAAAA,EAAM+D,kBAAsBoC,IAAAA,aAAapC,kBAAuB,KAAA;AACvF/c,iBAAK2I,KAAK,gBAAgB,CAAG7B,EAAAA,MAAM6Y,SAAO;AAC1C,gBAAI3f,KAAKoV,SAAS,UAAUpV,KAAKoV,SAAS;AACzC4D,oBAAMhZ,KAAK6c,eAAe7D,GAC3B;AAAA,UAAA;AACD,cAAIhZ,KAAKsW,cAAc,YAAY;AAClC,gBAAI0C,OAAOhZ,KAAKse,aAAY;AAC3B,kBAAIsB,QAAQ/E,IAAI+E,UAAS5f,KAAKkR,eAAAA,CAAgB2J,IAAI6D,SAAQ,KAAG,KAAG,MAAM;AACtE3F,sBAAQC,OAAK6B,IAAI+E,QAAM,IAAEA;AACzB5G,oBAAMhZ,KAAKse,eAAasB,SAAQnB,WAAS;AAAA,YAC/C,OAAY;AACN1F,sBAAQ/Y,KAAKse;AAAAA,YACb;AAAA,UACN,OAAW;AACN,gBAAItF,OAAKD;AACRC,oBAAID,QAAM0F,WAAS;AAAA,UACpB;AAAA,QACD;AACD,YAAIoB,UAAU,IAAIxK,KAAK2D,MAAI,CAAA;AAC3B,YAAI8G,YAAY,IAAIzK,KAAK0D,KAEzB;AAAA,YAAG/Y,KAAKsW,cAAY,UAAU3W,WAAU4B,OAAOwe,mBAAAA,CAC5CD,YAAangB,CAAAA,WAAU6V,cAAcwD,MAAOrZ,CAAAA,WAAU+V,YAAW;AAEnE,cAAIpB,CAAAA,GAAGiF,aAAc5Z,CAAAA,WAAU6V,cAAclB,GAAGuF,WAAAA,CAAYla,WAAU+V,WAAU;AAE/EoK,wBAAY,IAAIzK,KAAKf,GAAGiF,UACxBP;AAAAA,kBAAM,IAAI3D,KAAKf,GAAGuF,QAAAA;AAAAA,UACvB,OAAS;AAEJ,gBAAIsE,WAAWnF,MAAM8G;AAErB,gBAAIA,CAAAA,YAAAA,CAAangB,WAAU6V,WAAU;AACpCsK,0BAAY,IAAIzK,KAAK1V,WAAU6V,SAC/B;AAAA,kBAAIqF,IAAIH,YAAY1a,KAAKuB,OAAO4a,mBAAmBnc,KAAKkR,aAAY;AACnE4O,4BAAY,IAAIzK,KAAK1V,WAAUge,yBAAyBmC,SAAAA,CAAAA;AACxD,oBAAGlgB,IAAIie;AACNiC,8BAAY,IAAIzK,KAAKyK,UAAU5I,QAAAA,IAAYtX,IAAIie,iBAAAA;AAChD7E,sBAAM,IAAI3D,KAAKyK,YAAU,IAAI9f,KAAKie,4BAA4B6B,WAAW9f,KAAKia,YAAYmC,eAAexc,GAChH,CAAA;AAAA,cAAA,OAAW;AACJoZ,sBAAM,IAAI3D,KAAMyK,CAAAA,YAAY3B,QAC5B;AAAA,cAAA;AAAA,YACP,OAAU;AACJnF,oBAAM,IAAI3D,KAAK1V,WAAU+V,SAAAA;AAEzB,kBAAImF,IAAIH,YAAY1a,KAAKuB,OAAO4a,mBAAmBnc,KAAKkR,aAAY;AACnE,oBAAGtR,IAAIke;AACN9E,wBAAM,IAAI3D,KAAK2D,IAAI9B,QAAYtX,IAAAA,IAAIke,eACpC9E;AAAAA,sBAAM,IAAI3D,KAAK2D,MAAI,IAAIhZ,KAAKie,4BAA4BjF,KAAK,GAAGpZ,KAAK,IACrEkgB,CAAAA;AAAAA,4BAAY,IAAIzK,KAAK2D,MAAI,IAAIhZ,KAAKie,4BAA4BjF,KAAKhZ,KAAKia,YAAYmC,eAAexc,KAAK,IACxG,CAAA;AAAA,oBAAGI,KAAKkc,mBAAkB;AACzB4D,8BAAYngB,WAAUyF,KAAKT,IAAImb,WAAWlgB,IAAI0c,QAAQ1c,IAAI2c,MAC1DvD;AAAAA,wBAAM,IAAI3D,KAAK2D,MAAI,IAAIhZ,KAAKie,4BAA4BjF,KAAK,GAAGpZ,KAAK;AACrEoZ,wBAAMrZ,WAAUyF,KAAKT,IAAIqU,KAAKpZ,IAAI0c,QAAQ1c,IAAI2c,MAC9C;AAAA,gBAAA;AAAA,cAER,OAAW;AACJuD,4BAAY,IAAIzK,KAAM2D,CAAAA,MAAMmF;cAC5B;AAAA,YAED;AAAA,UAED;AACD,cAAI0B,UAAU,IAAIxK,KAAK2D,MAAI;QAC3B;AAKD,YAAA,CAAIhZ,KAAKkR,eAAelR,KAAK4e,kBAAAA,CAC3Bjf,WAAU4B,OAAOye,eACfrgB,WAAUsgB,kBAAAA,KAAuBpF,IAAI3I,KAAKlS,KAAKkgB,gBAAgB,EAAC3G,YAAY,IAAIlE,KAAK0D,KAAQc,GAAAA,UAAS,IAAIxE,KAAK0D,KAAa,EAAA,CAAA,KAAA,IAAI1D,KAAK0D,KAAOY,EAAAA,SAAAA,IAAa3Z,KAAKuB,OAAOmY,aAAY;AACpL,cAAIyE,WAAWnF,MAAM8G;AACrB,cAAI9f,KAAKsW,cAAc,QAAQ;AAC9B,gBAAI9W,MAAMQ,KAAKwV,UAAU0B,QAAAA,IAAa2D,IAAI3I,IAAI,KAAK,KAAM;AACzD4N,wBAAY,IAAIzK,KAAK7V,GAAAA;AACrBsgB,sBAAUlG,SAAS5Z,KAAKuB,OAAOmY,UAC/BV;AAAAA,kBAAM,IAAI3D,KAAKyK,UAAU5I,QAAYiH,IAAAA,QAAAA;AACrC0B,sBAAU,IAAIxK,KAAK2D,MAAI;UACvB;AAAA,QACD;AAGD,YAAIhZ,CAAAA,KAAKkR,eACPvR,CAAAA,WAAU4B,OAAOye,cAAAA,CACfrgB,WAAUwgB,QAAatF,KAAAA,IAAI3I,KAAKlS,KAAKkgB,gBAAgB,EAAC3G,YAAY,IAAIlE,KAAK2D,GAAAA,GAAMa,UAAS,IAAIxE,KAAK2D,GAAAA,EAAAA,CAAAA,KAAW,IAAI3D,KAAK2D,KAAKW,SAAc3Z,KAAAA,KAAKuB,OAAOwc,YAAW;AACpK,cAAII,WAAWnF,MAAM8G;AACrB,cAAItgB,MAAMQ,KAAKwV,UAAU0B,QAAW2D,IAAAA,IAAI3I,IAAE,KAAG,KAAI;AACjD8G,gBAAMrZ,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAK7V,GAAAA,CAAAA;AACxCwZ,cAAIY,SAAS5Z,KAAKuB,OAAOwc,SACzB8B;AAAAA,oBAAU,IAAIxK,KAAK2D,MAAI,CACvB;AAAA,cAAGhZ,KAAKsW,cAAc,QAAO;AAC5BwJ,wBAAY,IAAIzK,MAAM2D,MAAMmF,QAAAA;AAAAA,UAC5B;AAAA,QACD;AAGD,YAAKne,KAAKkR,eAAgB2O,QAAQO,aAAWN,UAAUM,QAAAA,KAAaP,QAAQlG,SAAAA,IAAW3Z,KAAKuB,OAAOwc,aAAcpe,WAAU0gB,YAAY;AACtI/L,aAAGiF,aAAWuG;AACdxL,aAAGuF,WAAS,IAAIxE,KAAK2D,GACrB;AAAA,cAAIhZ,KAAKuB,OAAO+e,eAAc;AAE7B,gBAAIC,KAAK5gB,WAAUgJ,KAAK,cAAA,EAAgB,CAAG+S,EAAAA;AAC3C1b,iBAAKwgB,YAAAA;AACL7gB,YAAAA,WAAUgJ,KAAK,gBAAgB,CAAG+S,EAAAA,YAAY6E;AAAAA,UAC9C;AACAvgB,iBAAKiV,YAAYjV,KAAKoW,QAAAA;AAAAA,QACvB;AACD,YAAIpW,KAAKkR,aAAa;AACrBlR,eAAKygB,aAAazgB,KAAKoW,UAAS,SAASsK,GACxCA;AAAAA,cAAEtc,aAAW;AAAA,UAClB,CACI;AAAA,QAAA;AAEDpE,aAAKyB,UAAU,eAAe,CAACzB,KAAKoW,UAAUpW,KAAKsW,YAAYxC,CAAAA,CAAAA;AAAAA,MAC/D;AAAA,IACH,OAAS;AACP,UAAInU,WAAUyN,WAAW,aAAA,GAAe;AACvC,YAAIrN,MAAKC,KAAK2U,cAAcb,EAAEU,UAAQV,EAAEW,UACxCzU;AAAAA,aAAKyB,UAAU,eAAc,CAAC1B,KAAG+T,CAAAA,CAAAA;AAAAA,MACjC;AAAA,IACD;AAAA,EACF;AACAnU,EAAAA,WAAUwU,iBAAe,SAASL,GAAES,KAGnC;AAAA,QAAIT,EAAEzO,UAAU;AACf;AAED,QAAIrF,KAAKuB,OAAOoV,YAAY3W,KAAKsW;AAAY;AAC7C/B,UAAMA,QAAMT,EAAEU,UAAQV,EAAEW;AACxB,QAAIkM,YAAYhhB,WAAUsT,cAAcsB,GAAKhQ,EAAAA,MAAM,KAAK,CAExD;AAAA,QAAIvE,KAAKuB,OAAOqf,mBAAmBD,aAAa,YAAY;AAC3D,UAAGpM,IAAItL,cAAcsL,IAAItL,WAAW7E,UAAU2S,QAAQ,qBAA4B,MAAA,IAAE;AACnF4J,oBAAY;AACZ3gB,aAAK4e,iBAAiB;AAAA,MACtB;AAAA,IACD;AAED,YAAQ+B,WACP;AAAA,MAAA,KAAK;AAAA,MACL,KAAK;AACJ,YAAI3gB,KAAKkR;AACRlR,eAAKsW,aAAW;AACjB;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJtW,aAAKsW,aAAW;AAChB;AAAA,MACD,KAAK;AACJtW,aAAKsW,aAAW;AAChB,YAAIuK,YAAYlhB,WAAUsT,cAAcsB,GACxC;AAAA,YAAG,UAAYwC,QAAQ,sBAA0B,IAAA,GAAE;AAClDpX,UAAAA,WAAUof,mBAAmB;AAAA,QACjC,OAAQ;AACJpf,UAAAA,WAAUof,mBAAmB;AAAA,QAC7B;AACD;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ/e,aAAKsW,aAAW;AAChB;AAAA,MACD,KAAK;AACJ,YAAI/B,IAAItL;AACP,iBAAOtJ,WAAUwU,eAAeL,GAAES,IAAItL,UAAAA;AACvC;AAAA,MACD;AACC,YAAKtJ,CAAAA,WAAUyN,WAAW,aAAA,KAAkBzN,WAAU8B,UAAU,eAAe,CAACkf,WAAW7M,CAAK,CAAA,GAAA;AAC/F,cAAIS,IAAItL,cAAcsL,OAAOvU,QAAQ2gB,aAAa,YAAY;AAC7D,mBAAOhhB,WAAUwU,eAAeL,GAAES,IAAItL;UACtC;AAAA,QACD;AACDjJ,aAAKsW,aAAW;AAChBtW,aAAKoW,WAAS;AACd;AAAA,IAEF;AAAA,QAAIpW,KAAKsW,YAAW;AACnB,UAAIvW,MAAKC,KAAK2U,cAAcJ,GAC5B;AAAA,UAAA,CAAKvU,KAAKuB,OAAO,UAAQvB,KAAKsW,UAAgBtW,KAAAA,CAAAA,KAAKyB,UAAU,gBAAe,CAAC1B,KAAIC,KAAKsW,YAAYxC,CAAAA,CAAAA;AACjG9T,aAAKsW,aAAWtW,KAAKoW,WAAS;AAAA,WAC1B;AACJpW,aAAKoW,WAAUrW;AAEf,YAAIC,KAAK4V,YAAU5V,KAAKoW,YAAapW,KAAK4V,YAAY5V,KAAKsW,cAAc;AACxEtW,eAAK8U,iBACN;AAAA,YAAA,CAAI9U,KAAKsW;AACR;AAEDtW,aAAKia,cAActa,WAAUmhB,YAAY9gB,KAAKmV,SAASnV,KAAKoW,QAAAA,KAAa,CAAA,CAAA;AACzEpW,aAAK4c,YAAY5c,KAAKib,cAAcnH,CAAAA;AAAAA,MACpC;AAAA,IACD;AACD9T,SAAKse,cAAY;AAAA,EAClB;AAGA3e,EAAAA,WAAUohB,0BAA0B,SAASnb,QAC5C;AAAA,QAAI4Y,SAAS,CAAA;AACb,aAAQ7W,KAAK/B,QAAM;AAClB,UAAG+B,EAAEoP,QAAQ,GAAS,MAAA,GAAE;AACvByH,eAAO7W,CAAAA,IAAK;AAAA,MACZ;AAAA,IACD;AACD,WAAO6W;AAAAA,EACR;AACA7e,EAAAA,WAAUqhB,8BAA8B,SAASC,OAAOC,eAAAA;AACvD,QAAIC,UAAUnhB,KAAK+gB,wBAAwBE,KAC3C;AAAA,QAAIG,gBAAgBphB,KAAK+gB,wBAAwBG,aAAAA;AACjD,aAAQvZ,KAAKyZ,eAAc;AAC1B,UAAID,CAAAA,QAAQxZ,CAAG,GAAA;AAAA,eACPuZ,cAAcvZ,CAAAA;AAAAA,MACrB;AAAA,IACD;AAAA,EACF;AAGAhI,EAAAA,WAAUyU,eAAa,SAASN,GAAAA;AAC/B,QAAIA,KAAKA,EAAEzO,UAAU,KAAKrF,KAAKqhB;AAAS;AACxC,QAAIrhB,KAAKsW,cAActW,KAAKoW,UAAS;AACpCpW,WAAK2I,KAAK,cAAA,EAAgB,CAAG7B,EAAAA,MAAM6Y,SAAO;AAG1C,UAAIxJ,UAAUnW,KAAKoW;AACnB,UAAI3W,OAAOO,KAAKsW;AAEhB,UAAIgL,QAAAA,CAASthB,KAAK4c,aAAa5c,KAAK4c,UAAUc;AACvC1d,aAAAA,KAAKia,YAAY4E;AAExB,UAAIvK,KAAGtU,KAAKmV,SAASnV,KAAKoW,QAC1B;AAAA,UAAIkL,UAAUthB,KAAKia,YAAYsH,gBAAAA,CAAiBvhB,KAAKia,YAAYV,cAAcjF,GAAGiF,WAAWrC,QAAWlX,KAAAA,KAAKia,YAAYV,WAAWrC,QAAa5C,KAAAA,GAAGuF,SAAS3C,QAAAA,KAAWlX,KAAKia,YAAYJ,SAAS3C,QAAW,IAAA;AAC5M,YAAIsK,SAAQxhB,KAAKsW,cAAY;AAC7B,YAAKtW,CAAAA,KAAKyB,UAAU,wBAAuB,CAAC6S,IAAIR,GAAG0N,QAAQxhB,KAAKia,WAAc,CAAA,GAAA;AAC7E,cAAIuH;AACHxhB,iBAAKkY,YAAY5D,GAAGvU,IAAI;eACpB;AACJC,iBAAKia,YAAYsH,eAAe;AAChCvhB,iBAAKghB,4BAA4B1M,IAAItU,KAAKia,WAC1Cta;AAAAA,YAAAA,WAAU8hB,WAAWnN,IAAItU,KAAKia,WAAAA;AAC9Bja,iBAAKiV,YAAYX,GAAGvU,EACpB;AAAA,UAAA;AAAA,QACL,OAAU;AAENC,eAAKoW,WAAWpW,KAAKsW,aAAa;AAClC,cAAIkL,UAAUxhB,KAAKuB,OAAOmgB,gBAAe;AACxC1hB,iBAAKgV;AACLhV,iBAAKgW,aAAW,oBAAIX;AAEpB,gBAAIrV,KAAKkR,eAAelR,KAAKuB,OAAOogB,qBAAsB3hB,CAAAA,KAAKuB,OAAOqT,UAAAA,CAAW5U,KAAK4hB,cAAc5hB,KAAKmV,SAASgB,WAAW;AAC5HxW,cAAAA,WAAU8B,UAAU,aAAa,CAAC0U,SAAS1W,MAAMqU,CAAAA,CAAAA;AACjD,qBAAO9T,KAAKwY,aAAarC,OACzB;AAAA,YAAA;AACDnW,iBAAK4c,YAAY;AACjB5c,iBAAK6U,aAAa7U,KAAK4V,WAAWO;AAAAA,UACvC,OAAW;AACN,gBAAA,CAAKnW,KAAKgW;AACThW,mBAAKyB,UAAU+f,SAAO,iBAAe,kBAAiB,CAACrL,SAAQnW,KAAKmV,SAASgB;UAC9E;AAAA,QACD;AAAA,MACD;AACD,UAAInW,KAAK4c,cAAc5c,KAAK4c,UAAUc,aAAa1d,KAAK4c,cAAc,OAAO;AAC5E5c,aAAKoW,WAAWpW,KAAKsW,aAAa;AAClCtW,aAAK6hB,iBACL;AAAA,MAAA;AACDliB,MAAAA,WAAU8B,UAAU,aAAa,CAAC0U,SAAS1W,MAAMqU,CAAAA,CAAAA;AAAAA,IACjD;AACD9T,SAAKoW,WAAW;AAChBpW,SAAKsW,aAAW;AAChBtW,SAAK4c,YAAU;AAAA,EAChB;AAEAjd,EAAAA,WAAUmiB,uBAAuB,WAChC;AAAA,QAAI9hB,KAAK+hB,cAAc/hB,KAAKgiB,MAAQ,GAAA;AACnChiB,WAAKiiB,eAAe;AACpB,aAAO;AAAA,IACT,OAAM;AACJ,aAAO;AAAA,IACP;AAAA,EACF;AACAtiB,EAAAA,WAAU6gB,cAAY;AACrBxgB,SAAKkiB,eAAAA;AACLliB,SAAKkI,gBACJlI,KAAKuB,OAAO4M,QACZnO,KAAKgI,WAAWC,cAAc,kBAAA,CAAA;AAE/B,QAAIpF,OAAO7C,KAAKA,KAAKoV,QAAQ,OAAA;AAC7B,QAAGvS,MAAK;AACPA,WAAKwX,KAAKra,MAAM,IAClB;AAAA,IAAA,OAAM;AACJA,WAAKmiB,aAAAA;AAAAA,IACL;AAED,QAAIniB,KAAK8hB,qBAAAA,GAAuB;AAC/B,aAAO;AAAA,IACP;AACD9hB,SAAK6hB,iBACN;AAAA,EAAA;AAEAliB,EAAAA,WAAUyiB,eAAe,SAAS3iB,MAAAA;AACjC,cAAUE,WAAUF,OAAM,OACxBE,KAAAA,WAAUyF,KAAK3F,OAAM,QAAaE,KAAAA,WAAU0iB,UAAU5iB,OAAM,OAAYE,KAAAA,WAAU0iB,UAAU5iB,OAAM,aACrG;AAAA,EAAA;AAEAE,EAAAA,WAAU2iB,0BAA0B,WAAA;AACnC,QAAIC,eAAe,CAAC,uBAAuB,uBAAuB,eAAe;AACjF,aAAQ5a,IAAI,GAAGA,IAAI4a,aAAa3a,QAAQD,KAAI;AAC3C,UAAI6a,QAAQxiB,KAAK2I,KAAK4Z,aAAa5a,CAAAA,CAAAA;AACnC,eAAQ8a,IAAI,GAAGD,SAASC,IAAID,MAAM5a,QAAQ6a,KAAK;AAC9C,YAAIzV,OAAOwV,MAAMC,CAAGtP,EAAAA,aAAa,UAAeqP,KAAAA,MAAMC,CAAGtP,EAAAA,aAAa;AACtE,YAAIC,QAAQpT,KAAKqT,OAAOC,OAAOiP,aAAa5a,CAC5C,CAAA;AAAA,YAAGqF,MAAK;AACPoG,kBAAQpT,KAAKqT,OAAOC,OAAOtG,OAAO,MAAWhN,KAAAA,KAAKqT,OAAOC,OAAOtG,IAAAA,KAASoG;AAAAA,QACzE;AACD,YAAGmP,aAAa5a,CAAM,KAAA,uBAAsB;AAC3CyL,kBAAQpT,KAAKqT,OAAOC,OAAOzL;AAAAA,QAC3B,WAAQ0a,aAAa5a,MAAM,uBAAsB;AACjDyL,kBAAQpT,KAAKqT,OAAOC,OAAOoP;AAAAA,QAC3B;AACD1iB,aAAKuT,SAASoP,wBAAwBH,MAAMC,CAAAA,GAAIrP,SAAS,EAAA;AAAA,MACzD;AAAA,IACD;AAAA,EACF;AAEAzT,EAAAA,WAAUiB,aAAa,SAASwE,MAAM3F,MAAAA;AAErC,QAAKO,CAAAA,KAAKgI,YAAY;AACrB,YAAM,IAAI7E,MAAM,2IAChB;AAAA,IAAA;AAEDiC,WAAOA,QAAQpF,KAAKsV;AACpB7V,WAAOA,QAAQO,KAAKoV;AACpB,QAAImB,eAAe;AAEnB,SAAIvW,KAAKqT,OAAOC,OAAOsP,WAAU;AAChC5iB,WAAKqT,OAAOC,OAAOsP,YAAY5iB,KAAKqT,OAAOC,OAAOuP;AAAAA,IAClD;AAED,QAAIza,YAAYpI,KAAKiP;AACrB,QAAI6T,WAAW,mBAAmB9iB,KAAKoV;AACvC,QAAI2N,WAAW,mBAAmBtjB;AAElC,QAAA,CAAKO,KAAKoV,SAAUhN,UAAUhE,UAAU2S,QAAQ+L,QAAAA,KAAAA,IAAiB;AAChE1a,gBAAUhE,aAAa,MAAM2e;AAAAA,IAC/B,OAAQ;AACN3a,gBAAUhE,YAAYgE,UAAUhE,UAAU6S,QAAQ6L,UAAUC,QAAAA;AAAAA,IAC5D;AAED,QAAIC,gBAAgB;AAEpB,QAAIC,cAAejjB,KAAKoV,SAAS3V,QAAQO,KAAKuB,OAAO2hB,kBAAmBljB,KAAK2I,KAAK4N,YAAc,EAAA,CAAA,EAAGmF,YAAY;AAE/G,QAAIyH;AACJ,QAAGnjB,KAAK2I,KAAKqa,aAAkBhjB,KAAAA,KAAK2I,KAAKqa,aAAAA,EAAe,CAAG,GAAA;AAC1DG,uBAAiBnjB,KAAK2I,KAAKqa,aAAe,EAAA,CAAA,EAAGtH;AAAAA,IAC7C;AAGD,QAAI1b,KAAKA,KAAKoV,QAAQ,OAAA,KAAY3V,QAAQO,KAAKoV,SAAS3V;AACvDO,WAAKA,KAAKoV,QAAQ,OAAS,EAAA,KAAA;AAE5BpV,SAAK8U,iBAAAA;AAEL,QAAI9U,KAAK2I,KAAKqa,aAAAA,GAAgB;AAC7BhjB,WAAK2I,KAAKqa,aAAe,EAAA,CAAA,EAAG/Z,WAAWiC,YAAYlL,KAAK2I,KAAKqa,aAAe,EAAA,CAAA,CAAA;AAC5EhjB,WAAK2I,KAAKqa,aAAiB,IAAA;AAAA,IAC3B;AAEDhjB,SAAKoV,QAAQ3V;AACbO,SAAKsV,QAAQlQ;AACbpF,SAAKkR,cAAelR,KAAKoV,SAAS;AAElCpV,SAAKojB,YAAY;AAGjBpjB,SAAKwgB,YAELxgB;AAAAA,SAAKsiB,wBAEL;AAAA,QAAI5iB,OAAOM,KAAK2I,KAAK,aACrB;AAAA,QAAGjJ,MAAK;AACP,eAASiI,IAAI,GAAGA,IAAIjI,KAAKkI,QAAQD,KAAK;AACrC,YAAI0b,MAAM3jB,KAAKiI,CAAAA;AAEf,YAAI0b,IAAIlQ,aAAa,UAAA,KAAenT,KAAKoV,SAASiO,IAAIlQ,aAAa,MAAA,KAAWnT,KAAKoV,QAAQ,QAAO;AACjGiO,cAAI3e,UAAUC,IAAI,QAClB3E;AAAAA,eAAKuT,SAAS+P,kBAAkBD,KAAK,IAAA;AAAA,QACzC,OAAQ;AACJA,cAAI3e,UAAU6e,OAAO,QAAA;AACrBvjB,eAAKuT,SAAS+P,kBAAkBD,KAAK;QACrC;AAAA,MACD;AAAA,IACD;AAED,QAAA,OAAWJ,eAAe;AACzBjjB,WAAK2I,KAAK4N,cAAc,CAAGmF,EAAAA,YAAYuH;AAExC,QAAA,OAAUE,kBAAkB,YAAYnjB,KAAK2I,KAAKqa,kBAAkBhjB,KAAK2I,KAAKqa,aAAe,EAAA,CAAA,GAAG;AAC/FhjB,WAAK2I,KAAKqa,aAAAA,EAAe,GAAGtH,YAAYyH;AAAAA,IACxC;AAAA,EAEF;AACAxjB,EAAAA,WAAUyG,iBAAiB,SAAShB,MAAM3F;AACzC,QAAKO,CAAAA,KAAKyB,UAAU,sBAAsB,CAACzB,KAAKoV,OAAOpV,KAAKsV,OAAO7V,QAAQO,KAAKoV,OAAOhQ,QAAQpF,KAAKsV,KAAAA,CAAAA;AAAS;AAC7GtV,SAAKY,WAAWwE,MAAM3F,IAAAA;AACtBO,SAAKyB,UAAU,gBAAgB,CAACzB,KAAKoV,OAAOpV,KAAKsV,KAAAA,CAAAA;AAAAA,EAClD;AAEA3V,EAAAA,WAAUuO,SAAS,SAAS9I,MAAM3F,MAAAA;AACjCE,IAAAA,WAAUyG,eAAehB,MAAM3F,IAChC;AAAA,EAAA;AAEAE,EAAAA,WAAU6jB,mBAAmB,SAAS7b,GAAEoK,MAAK3M,MAAKgD,WAAWqb,YAC5DA;AAAAA,iBAAaA,cAAc;AAE3B,QAAIC,OAAK7jB,SAASC,cAAc,KAAA;AAChC4jB,SAAKtf,YAAY;AAEjB,QAAGpE,KAAKqiB,UAAUriB,KAAKoV,QAAM,eAAA,GAAiB;AAE7CsO,WAAKtf,aAAa,MAAMpE,KAAKqiB,UAAUriB,KAAKoV,QAAM,eAAA,EAAiBhQ,IACnE;AAAA,IAAA;AAED,QAAIwB,QAAQ5G,KAAKya,MAAM9S;AAEvB,QAAI3H,KAAKoV,SAAS,WAAWzN,MAAM,KAAK3H,KAAKuB,OAAOoiB,aAAa;AAChED,WAAKtf,aAAa;AAClB2N,aAAOA,OAAK;AAAA,IACZ;AAED,QAAGpS,WAAUiS,aAAe,GAAA;AAC3B5R,WAAKuR,OAAOmS,MAAM9c,OAAO5G,KAAKwI,GAAG0H,eAAa,GAAG6B,MAAM0R,UACzD;AAAA,IAAA,OAAM;AACJzjB,WAAKuR,OAAOmS,MAAM9c,QAAQ,GAAG5G,KAAKwI,GAAG0H,eAAa,GAAG6B,MAAM0R;IAC3D;AAED,QAAIG,mBAAmB5jB,KAAKqiB,UAAUriB,KAAKoV,QAAM,aAAA,EAAehQ,MAAKpF,KAAKoV,KAAAA;AAC1EsO,SAAKxjB,YAAY0jB;AAEjB5jB,SAAKuT,SAASsQ,cAAcH,MAAME,gBAElCxb;AAAAA,cAAUhI,YAAYsjB,IAAAA;AAAAA,EACvB;AAEA/jB,EAAAA,WAAUmkB,mBAAmB,SAASC,MAAMC,IAC3C;AAAA,QAAIC,QAAQ;AACZ,QAAKtkB,CAAAA,WAAUuR,aAAY;AAC1B,UAAIgT,UAAUvkB,WAAUyF,KAAK,SAAOzF,WAAUyV,QAAM,MACpD;AAAA,UAAI8O;AAASF,aAAKE,QAAQH,IAAAA;AAC1BE,cAAQxR,KAAK+G,OAAOwK,GAAG9M,YAAU6M,KAAK7M,QAAAA,MAAY,MAAK,KAAG,KAAG,GAAA;AAAA,IAC7D;AACD,WAAO+M;AAAAA,EACR;AACAtkB,EAAAA,WAAUwkB,sBAAsB,WAAA;AAE/B,WAAOnkB,KAAKoF,KAAKpF,KAAKoV,QAAM,QAAU,EAAA,IAAIC,KAAKrV,KAAKsV,MAAM4B,QAAAA,CAAAA,CAAAA;AAAAA,EAC3D;AAEAvX,EAAAA,WAAUykB,gBAAgB,WAAA;AACzB,QAAIC,KAAKrkB,KAAKmkB,oBAAAA;AACd,QAAIG,KAAK3kB,WAAUyF,KAAKT,IAAI0f,IAAI,GAAGrkB,KAAKoV,KAAAA;AACxC,QAAKzV,CAAAA,WAAUuR,aAAY;AAC1B,UAAIgT,UAAUvkB,WAAUyF,KAAK,SAAOzF,WAAUyV,QAAM;AACpD,UAAI8O;AAASI,aAAKJ,QAAQG,EAC1B;AAAA,IAAA;AACD,WAAOC;AAAAA,EACR;AACA3kB,EAAAA,WAAU4kB,oBAAoB,SAAS3d,OAAOmd,MAAMC,IAEnD;AAAA,QAAIzU,MAAMvP,KAAKuB,OAAOgO;AACtB,QAAIiV,OAAO5d;AACX,QAAIqd,QAAQjkB,KAAK8jB,iBAAiBC,MAAMC,EAGxChkB;AAAAA,SAAKykB,iBAAiBV,MAAME,OAAO,OAAO;AAC1C,QAAIS,YAAYT,QAAQjkB,KAAKkc;AAC7B,aAASvU,IAAE,GAAGA,IAAEsc,OAAOtc,KAAI;AAC1B,UAAI3H,KAAK0a,SAAS/S,CAAAA,GAAG;AACpB3H,aAAKya,MAAM9S,CAAK,IAAA;AAChB+c;AAAAA,MACH,OAAS;AACN1kB,aAAKya,MAAM9S,CAAG8K,IAAAA,KAAKkI,MAAM6J,QAAME,YAAU/c,EAAAA;AAAAA,MACzC;AACD6c,cAAMxkB,KAAKya,MAAM9S,CAAAA;AACjB3H,WAAK4b,OAAOjU,CAAI3H,KAAAA,KAAKya,MAAM9S,IAAE,CAAI,KAAA,MAAI3H,KAAK4b,OAAOjU,IAAE,CAAA,MAAK3H,KAAKkR,cAAY,IAAG3B,MAAMvP,KAAKwI,GAAGyH,eAAejQ,KAAKwI,GAAGwH;AAAAA,IAEjH;AACDhQ,SAAK4b,OAAO,YAAA,IAAgBqI;AAC5BjkB,SAAK4b,OAAOqI,KAAAA,IAAUjkB,KAAKya,MAAMwJ,QAAM,CAAGjkB,IAAAA,KAAK4b,OAAOqI,QAAM,CAAO,KAAA;AAAA,EAEpE;AAEAtkB,EAAAA,WAAUglB,sBAAsB,SAAS1hB,KAAK2D,OAAOmL,MACpD;AAAA,QAAI/N,IAAIhE,KAAKuB;AACbvB,SAAKuR,OAAOtO,KAAK2D,OAAO5C,EAAEgX,gBAAchX,EAAE+Z,YAAU/Z,EAAE0V,aAAa3H,OAAK/R,KAAKwI,GAAGwH,cAAc,GAAG,CAClG;AAAA,EAAA;AAEArQ,EAAAA,WAAUilB,iBAAiB,SAASzW,QAAQ0W,YAAAA;AAE3C,QAAIC,KAAK,IAAIzP,KAAK1V,WAAU6V,SAAAA,GAC3B8O,KAAK,IAAIjP,KAAK1V,WAAU+V,SACxBqP,GAAAA,QAAQ/kB,KAAKoF,KAAK4Z,UAAWrf,WAAUqP,aAAAA,CAAAA;AAExC,QAAIwV,OAAOQ,SAAS7W,OAAOrH,MAAMF,OAAM,EAAA,IAAM;AAC7C,QAAIwS,IAAI,IAAI/D,KAAKrV,KAAKwV;AAItB,QAAIyO,QAAQjkB,KAAK8jB,iBAAiBgB,IAAIR,EAAAA;AACtCtkB,SAAKukB,kBAAkBC,MAAMM,IAAIR,EAAAA;AACjC,QAAIvS,OAAK;AAET5D,WAAOjO,YAAY;AACnB,aAASyH,IAAE,GAAGA,IAAEsc,OAAOtc,KAAI;AAC1B,UAAA,CAAK3H,KAAK0a,SAAS/S,CAAAA,GAAG;AACrB3H,aAAKwjB,iBAAiB7b,GAAEoK,MAAKqH,GAAEjL;MAC/B;AACD,UAAA,CAAKnO,KAAKkR,aAAY;AACrB,YAAI+T,SAAOplB,SAASC,cAAc,KAAA;AAClC,YAAIolB,MAAM;AACV,YAAI9L,EAAElC,QAAAA,KAAa6N,MAAM7N,QAAWgO;AAAAA,iBAAO;AAE3CD,eAAOlgB,aAAa,qBAAqB4C,CACzC;AAAA,YAAI3H,KAAKkc,qBAAqBlc,KAAK0a,SAAS/S,CAAAA,GAAG;AAC9Cud,iBAAO;AAAA,QACP;AAED,YAAGllB,KAAK4R,aAAAA,GAAe;AACtB,mBAASjK,KAAE3H,KAAKuB,OAAOmY,aAAW,GAAG/R,KAAI3H,KAAKuB,OAAOwc,WAAWpW,MAAK;AACpE,kBAAMwd,YAAYtlB,SAASC,cAAc,KAAA;AACzCqlB,sBAAU/gB,YAAU;AACpB+gB,sBAAUre,MAAMC,SAAO/G,KAAKuB,OAAOyZ,eAAa,IAAE;AAElD,gBAAIoK,WAAW,IAAI/P,KAAK+D,EAAEiM,YAAejM,GAAAA,EAAEkM,SAAYlM,GAAAA,EAAEgH,QAAWzY,GAAAA,IAAG,CACvEwd;AAAAA,sBAAUpgB,aAAa,kBAAkB/E,KAAKqiB,UAAUkD,YAAYH,QAAAA,CAAAA;AAEpE,gBAAII,cAAcxlB,KAAKqiB,UAAUoD,eAAeL,QAChD;AAAA,gBAAGI,aAAY;AACdL,wBAAUjlB,YAAYslB;AAAAA,YACtB;AACD,gBAAI/gB,WAAWzE,KAAKqiB,UAAUqD,gBAAgBN;AAC9C,gBAAG3gB,UAAS;AACX0gB,wBAAUzgB,UAAUC,IAAIF,QACxB;AAAA,YAAA;AAEDwgB,mBAAO7kB,YAAY+kB,SAAAA;AAEnB,kBAAMQ,aAAa9lB,SAASC,cAAc,KAC1C6lB;AAAAA,uBAAWvhB,YAAU;AACrBghB,uBAAW,IAAI/P,KAAK+D,EAAEiM,YAAAA,GAAejM,EAAEkM,SAAAA,GAAYlM,EAAEgH,QAAWzY,GAAAA,IAAG,EACnEge;AAAAA,uBAAW5gB,aAAa,kBAAkB/E,KAAKqiB,UAAUkD,YAAYH,QACrEO,CAAAA;AAAAA,uBAAW7e,MAAMC,SAAO/G,KAAKuB,OAAOyZ,eAAa,IAAE;AACnDwK,0BAAcxlB,KAAKqiB,UAAUoD,eAAeL,QAAAA;AAC5C,gBAAGI,aAAY;AACdG,yBAAWzlB,YAAYslB;AAAAA,YACvB;AACD/gB,uBAAWzE,KAAKqiB,UAAUqD,gBAAgBN;AAC1C,gBAAG3gB,UAAS;AACXkhB,yBAAWjhB,UAAUC,IAAIF,QACzB;AAAA,YAAA;AACDwgB,mBAAO7kB,YAAYulB,UAAAA;AAAAA,UACnB;AAAA,QACD;AAEDV,eAAO7gB,YAAY8gB,MAAI,MAAIllB,KAAKqiB,UAAUuD,gBAAgBxM,GAAE2L,KAAAA;AAC5D/kB,aAAKuT,SAASsS,cAAcZ,QAAQ7L;AACpCpZ,aAAK2kB,oBAAoBM,QAAQjlB,KAAKya,MAAM9S,CAAAA,GAAIoK,IAEhD8S;AAAAA,QAAAA,WAAUzkB,YAAY6kB,MACtBjlB;AAAAA,aAAKyB,UAAU,cAAa,CAACwjB,QAAQ7L,CACrC,CAAA;AAAA,MAAA;AACDrH,cAAM/R,KAAKya,MAAM9S,CAGjByR;AAAAA,UAAEpZ,KAAKoF,KAAKT,IAAIyU,GAAE,GAAE,KAAA;AACpBA,UAAIpZ,KAAKoF,KAAK0gB,UAAU1M,CACxB;AAAA,IAAA;AAAA,EACF;AAEAzZ,EAAAA,WAAUomB,qBAAqB,WAC9B;AAAA,WAAO/lB,KAAKgI,WAAWC,cAAc,eAAA;AAAA,EACtC;AAEAtI,EAAAA,WAAUwiB,eAAa,WAGtB;AAAA,QAAA,CAAKniB,KAAKqiB,UAAUriB,KAAKoV,QAAQ;AAAU;AAE3C,QAAIjH,SAASnO,KAAK2I,KAAK,gBAAA,EAAkB,CACzC;AAAA,QAAIkc,aAAY7kB,KAAK2I,KAAK,cAAgB,EAAA,CAAA;AAC1C,QAAI3E,IAAIhE,KAAKuB;AAEb4M,WAAOjO,YAAY;AAEnB2kB,IAAAA,WAAU3kB,YAAY;AAEtB,QAAI8lB,OAAQhiB,EAAE2S,aAAc3S,EAAEiiB,cAAgB,uBAAuB,OAAQjiB,EAAE2S,YAAAA,CAAc3S,EAAEkiB,YAAc,qBAAqB;AAClIrB,IAAAA,WAAUzgB,YAAY,iBAAiB4hB;AAEvChmB,SAAKmmB,UAAU;AACfnmB,SAAKya,QAAQ,CAAA;AACbza,SAAK4b,SAAS,EAAC7U,QAAQ;AACvB/G,SAAKojB,YAAY;AAEjBpjB,SAAK4P,UAEL;AAAA,QAAIwJ,GAAE0L;AACN,QAAIT,KAAKrkB,KAAKmkB,oBACbG,GAAAA,KAAK3kB,WAAUykB,cAAAA;AAEhBhL,QAAI0L,KAAK9kB,KAAKkR,cAAcvR,WAAUyF,KAAKghB,WAAW/B,EAAMA,IAAAA;AAG5DrkB,SAAKwV,YAAU4D;AAEf,QAAIiN,gBAAgBrmB,KAAKqiB,UAAUriB,KAAKoV,QAAM,OAAA,EAASiP,IAAGC,IAAGtkB,KAAKoV,KAElE;AAAA,QAAIkR,eAAetmB,KAAK+lB,mBACxB;AAAA,QAAGO,cAAa;AACfA,mBAAapmB,YAAYmmB;AACzBrmB,WAAKuT,SAASgT,eAAeD,cAAcD;IAC3C;AAEDrmB,SAAK0V,YAAY4O;AACjB3kB,IAAAA,WAAUilB,eAAezW,QAAQ0W,UAAAA;AAEjC,QAAI7kB,KAAKkR;AACRlR,WAAKwmB,mBAAmB3B,YAAUR,IAAGS,EAAAA;AAAAA,SAClC;AACH9kB,WAAKymB,mBAAmB5B,YAAUR,IAAGS,EACrC;AAAA,UAAI9gB,EAAE0iB,WAAW;AAChB,YAAI1D,gBAAgB;AAEpB,YAAGhjB,KAAK2I,KAAKqa,aAAgB,GAAA;AAC5BhjB,eAAK2I,KAAKqa,aAAAA,EAAe,CAAG/Z,EAAAA,WAAWiC,YAAYlL,KAAK2I,KAAKqa,aAAAA,EAAe;AAC5EhjB,eAAK2I,KAAKqa,aAAiB,IAAA;AAAA,QAC3B;AAED,YAAI2D,UAAU3mB,KAAK2I,KAAK,iBAAmB,EAAA,CAAA;AAC3C,YAAIkK,MAAM8T,QAAQtc,eAAerK,KAAK2I,KAAK,kBAAkB,CAAG0B,EAAAA,eAAa;AAC7E,YAAGrK,KAAK4R,aAAAA,GAAe;AACtBiB,gBAAMD;AAAAA,QACN;AAED,YAAIgU,KAAK/mB,SAASC,cAAc,KAAA;AAChC8mB,WAAGxiB,YAAY4e;AACf4D,WAAG9f,MAAM+f,aAAW;AACpBD,WAAG9f,MAAMgC,UAAQ;AACjB,YAAIge,aAAa9mB,KAAK4b,OAAO5b,KAAK4b,OAAOmL,UACzC;AAAA,YAAIC,SAAShjB,EAAEuL,MAAMvP,KAAKwI,GAAGwH,cAAchQ,KAAKwI,GAAGyH;AACnD,YAAIgX,cAAcxU,KAAKC,IAAIoU,aAAaE,QAAQ,CAAA;AAChDhnB,aAAKuR,OAAOqV,IAAIK,aAAa,GAAG,GAAGpU,GACnCgS;AAAAA,QAAAA,WAAU5b,WAAWqI,aAAasV,IAAG/B,UAErC;AAAA,YAAIqC,KAAKN,GAAGO,UAAU,IAAA;AACtBD,WAAG9iB,YAAY4e,gBAAc;AAC7BkE,WAAGpgB,MAAM+f,aAAW;AACpBK,WAAGpgB,MAAMgC,UAAQ;AACjB9I,aAAKuR,OAAO2V,IAAIlnB,KAAKwI,GAAGwH,cAAc,GAAG,GAAG,GAAG6C,GAAAA;AAE/C+T,WAAGxmB,YAAY8mB,EACflnB;AAAAA,aAAK2I,KAAKqa,aAAAA,IAAe,CAAC4D,IAAGM,EAAAA;AAC7BvnB,QAAAA,WAAUiG,MAAM5F,KAAK2I,KAAKqa,aAAe,EAAA,CAAA,GAAI,SAAShjB,KAAK4T,OAAO2C,YAClE;AAAA,MAAA;AAAA,IACD;AAAA,EACF;AACA5W,EAAAA,WAAU8mB,qBAAmB,SAAS1iB,GAAEsgB,IAAGS,IAC1C;AAAA,QAAI9gB,IAAEnE,SAASC,cAAc,KAAA;AAC7BkE,MAAEI,YAAU;AAEZ,QAAIgB,OAAO,IAAIiQ,KAAK,MAAK,GAAE,GAAErV,KAAKuB,OAAOmY,YAAW,GAAE,CACtD;AAAA,aAAS/R,IAAE3H,KAAKuB,OAAOmY,aAAW,GAAG/R,IAAI3H,KAAKuB,OAAOwc,WAAWpW,KAAK;AACpE,UAAIyf,KAAGvnB,SAASC,cAAc,KAC9BsnB;AAAAA,SAAGhjB,YAAU;AACbgjB,SAAGtgB,MAAMC,SAAO/G,KAAKuB,OAAOyZ,eAAa;AACzC,UAAIpU,QAAQ5G,KAAKwI,GAAGwH;AACpB,UAAIhQ,KAAKuB,OAAOoiB,aAAa;AAC5ByD,WAAGhjB,aAAa;AAAA,MAChB;AACDgjB,SAAGtgB,MAAMF,QAAQA,QAAQ;AAEzB,UAAIygB,UAAU1nB,WAAU0iB,UAAUiF,WAAWliB,IAC7CgiB;AAAAA,SAAGlnB,YAAYmnB;AACfrnB,WAAKuT,SAASgU,cAAcH,IAAIC,OAEhCrjB;AAAAA,QAAE5D,YAAYgnB,EAAAA;AACdhiB,aAAKpF,KAAKoF,KAAKT,IAAIS,MAAK,GAAE,MAAA;AAAA,IAC1B;AACDrB,MAAE3D,YAAY4D,CACd;AAAA,QAAIhE,KAAKuB,OAAOimB;AACfzjB,QAAE2X,YAAY1b,KAAKuB,OAAOyZ,gBAAchb,KAAKuB,OAAOimB,cAAYxnB,KAAKuB,OAAOmY;AAAAA,EAC9E;AAEA/Z,EAAAA,WAAUqP,eAAe,WACxB;AAAA,QAAGrP,WAAU4B,OAAOkmB,UAAS;AAC5B,aAAO,IAAIpS,KAAK1V,WAAU4B,OAAOkmB,QACjC;AAAA,IAAA;AACD,WAAO,oBAAIpS;AAAAA,EACZ;AAEA1V,EAAAA,WAAUuiB,iBAAiB,WAAA;AAC1BliB,SAAK0a,WAAS;AACd1a,SAAKkc,oBAAoB;AAAA,EAC1B;AAEAvc,EAAAA,WAAU8kB,mBAAmB,SAASK,IAAI4C,GAAGjoB,MAAM6X,MAAMqQ,UAAAA;AACxD3nB,SAAKkiB,eAAAA;AACL,QAAI0F,SAASjoB,WAAU,YAAUK,KAAKoV,KACtC;AAAA,QAAIwS,QAAO;AACV,UAAIC,WAAW,IAAIxS,KAAKyP;AACxB,eAASnd,IAAE,GAAGA,IAAE+f,GAAG/f,KAAI;AACtB,YAAIigB,OAAOC,QAAAA,GAAU;AACpB7nB,eAAKkc,qBAAqB;AAC1Blc,eAAK0a,SAAS/S,CAAK,IAAA;AACnB,cAAIggB;AACHD;AAAAA,QACD;AACDG,mBAAWloB,WAAUyF,KAAKT,IAAIkjB,UAAUvQ,MAAM7X,IAAAA;AAC9C,YAAGE,WAAUyF,KAAK3F,OAAO;AACxBooB,qBAAWloB,WAAUyF,KAAK3F,OAAO,QAAUooB,EAAAA,QAAAA;AAAAA,MAC5C;AAAA,IACD;AAAA,EACF;AAEAloB,EAAAA,WAAUmoB,sBAAsB,SAAS7kB,KAAKohB,IAAmBS,IAAkBte,MAGlF;AAAA,QAAI8d,KAAG3kB,WAAUyF,KAAKT,IAAI0f,IAAG,GAAE,OAC9B0D,GAAAA,aAAa,IAAI1S,KAAKyP,EAAAA;AACvB,QAAIkD,KAAKroB,WAAUqP,aAAAA;AACnBhP,SAAKoF,KAAK4Z,UAAUgJ,EACpBhoB;AAAAA,SAAKoF,KAAK4Z,UAAU8F,EAEpBte;AAAAA,WAAOA,QAAQiM,KAAKsI,KAAKtI,KAAK+G,OAAO8K,GAAGpN,QAAAA,IAAU4N,GAAG5N,QAAAA,MAAc,KAAG,KAAG,KAAG,IAAA,IAAU,CACtF;AAAA,QAAI+Q,WAAS,CAAA;AAEb,aAAStgB,IAAE,GAAGA,KAAG,GAAGA,KAAK;AACxB,UAAIugB,aAAaloB,KAAKya,MAAM9S,CAAM,KAAA;AAClC,UAAI4K,CAAAA,MAAMC,OAAO0V,UAAAA,CAAAA,GAAa;AAC7BA,qBAAaA,aAAa;AAAA,MAC1B;AACDD,eAAStgB,CAAAA,IAAKugB;AAAAA,IACd;AAED,aAASC,cAAcrjB;AACtB,UAAIyE,IAAI5J,WAAUic,OAAO7U;AACzB,UAAGpH,WAAUic,OAAOK,QAAQnX,OAAM,CAAA,MAAO8N,QAAW;AACnDrJ,YAAI5J,WAAUic,OAAOK,QAAQnX,OAAM,CAAMnF,KAAAA,WAAUic,OAAOK,QAAQnX,IAAM,KAAA;AAAA,MACxE;AACD,aAAOyE;AAAAA,IACP;AAGD,QAAI6e,aAAa;AAEjB,UAAMC,QAAQxoB,SAASC,cAAc,KACrCuoB;AAAAA,UAAM3jB,UAAUC,IAAI,qBAGpB;AAAA,aAASgD,IAAE,GAAGA,IAAEnB,MAAMmB,KAAI;AACzB,UAAI7C,MAAMjF,SAASC,cAAc;AACjCgF,UAAIJ,UAAUC,IAAI,mBAAA;AAClBG,UAAIgC,MAAMC,SAASohB,cAAcxgB,KAAK;AACtC0gB,YAAMjoB,YAAY0E,GAAAA;AAElB,eAAS2d,IAAE,GAAGA,IAAE,GAAGA,KAAK;AACvB,YAAI6F,OAAOzoB,SAASC,cAAc;AAClCgF,YAAI1E,YAAYkoB,IAEhB;AAAA,YAAIpD,MAAM;AACV,YAAIJ,KAAGT;AACNa,iBAAO;AAAA,iBACCJ,MAAIR;AACZY,iBAAO;AAAA,iBACCJ,GAAG5N,QAAW8Q,KAAAA,GAAG9Q,QACzBgO;AAAAA,iBAAO;AAER,YAAIllB,KAAKkc,qBAAqBlc,KAAK0a,SAAS+H,CAAG,GAAA;AAC9CyC,iBAAO;AAAA,QACP;AAEDoD,aAAKlkB,YAAY8gB,MAAM,MAAMllB,KAAKqiB,UAAUkG,iBAAiBzD,IAAIkD,EAEjEM;AAAAA,aAAKvjB,aAAa,kBAAkBpF,WAAU0iB,UAAUkD,YAAYT,EACpE,CAAA;AAAA,YAAI0D,aAAa;AACjB,YAAIC,aAAa;AACjB,YAAIhG,MAAM,KAAKziB,KAAKuB,OAAOoiB,aAAa;AACvC6E,wBAAc;AACdC,wBAAc;AAAA,QACd;AACD,YAAA,CAAKzoB,KAAKkc,qBAAAA,CAAsBlc,KAAK0a,SAAS+H,CAAAA,GAAG;AAChD6F,eAAKxhB,MAAMF,QAAQqhB,SAASxF,CAAAA;AAC5BziB,eAAKuT,SAASmV,cAAcJ,MAAMxD,EAAAA;AAElC,cAAI6D,WAAW9oB,SAASC,cAAc;AACtC6oB,mBAAS7hB,MAAMC,SAASpH,WAAU6I,GAAGgI,oBAAoB;AACzDmY,mBAASvkB,YAAYqkB;AACrBE,mBAASzoB,YAAYF,KAAKqiB,UAAUuG,UAAU9D,EAAAA;AAC9CwD,eAAKloB,YAAYuoB,QAAAA;AAEjB,cAAIE,WAAWhpB,SAASC,cAAc,KACtC+oB;AAAAA,mBAASzkB,YAAYokB;AAGrBF,eAAKloB,YAAYyoB,QAAAA;AAAAA,QAErB,OAAU;AACNP,eAAKloB,YAAYP,SAASC,cAAc,KAAA,CAAA;AACxCwoB,eAAKloB,YAAYP,SAASC,cAAc,KACxC,CAAA;AAAA,QAAA;AAED,YAAIgpB,MAAMhE,GAAG1E,QAAAA;AACb0E,aAAG9kB,KAAKoF,KAAKT,IAAImgB,IAAG,GAAE,KAAA;AACtB,YAAIA,GAAG1E,QAAY0I,IAAAA,MAAM;AACxBhE,eAAK,IAAIzP,KAAKyP,GAAGO,YAAeP,GAAAA,GAAGQ,SAAYwD,GAAAA,MAAM,GAAG,IAAI;MAC7D;AAEDnpB,MAAAA,WAAUic,OAAOK,QAAQtU,CAAKygB,IAAAA;AAC9BA,oBAAcD,cAAcxgB,CAC5B;AAAA,IAAA;AAED3H,SAAKwV,YAAYuS;AACjB/nB,SAAK0V,YAAYoP;AAEjB7hB,QAAI/C,YAAY;AAChB+C,QAAI7C,YAAYioB,KAEhBroB;AAAAA,SAAKmmB,UAAU;AACf,QAAI4C,QAAQ9lB,IAAI+lB,iBAAiB,kBACjCD;AAAAA,UAAMvkB,QAAS8jB,CAAAA,UAAAA;AACd,YAAMljB,OAAOzF,WAAU0iB,UAAU4G,WAAWX,MAAKnV,aAAa,gBAC9D,CAAA;AAAA,YAAMhT,OAAOmoB,MAAKrgB,cAAc,iBAChCjI;AAAAA,WAAKmmB,QAAS/gB,CAAAA,IAAAA,IAAQjF;AACtBH,WAAKyB,UAAU,cAAc,CAACzB,KAAKmmB,QAAAA,CAAS/gB,IAAOA,GAAAA,IAAAA,CAAAA;AAAAA,IAAM,CAG1D;AAAA,WAAOpF,KAAK0V;AAAAA,EACb;AAEA/V,EAAAA,WAAU6mB,qBAAmB,SAASziB,GAAEsgB,IAAGS,IAAGte;AAE7C,QAAI8d,KAAG3kB,WAAUyF,KAAKT,IAAI0f,IAAG,GAAE,OAAA;AAG/B,QAAI2D,KAAKroB,WAAUqP,aAAAA;AACnBhP,SAAKoF,KAAK4Z,UAAUgJ,EAAAA;AACpBhoB,SAAKoF,KAAK4Z,UAAU8F,EAEpBte;AAAAA,WAAOA,QAAQiM,KAAKsI,KAAKtI,KAAK+G,OAAO8K,GAAGpN,QAAAA,IAAU4N,GAAG5N,QAAAA,MAAc,KAAG,KAAG,KAAG,IAAA,IAAU;AAEtF,QAAInQ,SAAU0L,KAAKkI,MAAM5W,EAAE0F,eAAajD,IAAQxG,IAAAA,KAAKwI,GAAGgI;AAExDxQ,SAAK4b,OAAO7U,SAASA,SAAS/G,KAAKwI,GAAGgI;AACtCxQ,SAAK4b,OAAOK,UAAU,CAAA;AAEtB,WAAOtc,WAAUmoB,oBAAoB/jB,GAAGsgB,IAAIS,IAAIte,IAAAA;AAAAA,EAEjD;AAEA7G,EAAAA,WAAUwgB,UAAU,SAAUpR,UAC7B;AAAA,QAAA,CAAKA,UAAU;AACdA,iBAAWpP,WAAUqG,SAAAA,EAAWvG;AAAAA,IAChC;AACD,QAAIE,WAAU8O,UAAU9O,WAAU8O,OAAOM,QAAAA,GAAW;AACnD,aAAOpP,WAAU8O,OAAOM;IACxB;AAED,QAAIpP,WAAUgP,UAAUhP,WAAUgP,OAAOI,QAAW,GAAA;AACnD,aAAOpP,WAAUgP,OAAOI,QACxB;AAAA,IAAA;AAED,WAAO;AAAA,EACR;AAEApP,EAAAA,WAAUupB,WAAW,SAASC,UAAUC,KACvC;AAAA,QAAIC,WAAWrpB,KAAKuB,OAAO+nB,SAASD;AACpC,aAAS1hB,IAAE,GAAGA,IAAE0hB,SAASzhB,QAAQD,KAAK;AACrC,UAAG0hB,SAAS1hB,CAAG4hB,EAAAA,UAAUJ,UAAU;AAClC,YAAIK,UAAUH,SAAS1hB,CAAG6hB,EAAAA;AAC1B,iBAAS/G,IAAE,GAAGA,IAAE+G,QAAQ5hB,QAAQ6a,KAAK;AACpC,cAAG+G,QAAQ/G,CAAG2G,EAAAA,OAAOA,KAAK;AACzB,mBAAOI,QAAQ/G,CAAGrP,EAAAA;AAAAA,UAClB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACD,WAAO;AAAA,EACR;AACAzT,EAAAA,WAAU8pB,mBAAmB,SAASC,WAAWC,YAChD;AAAA,QAAIrc,OAAO3N,WAAUiqB,WAAWF,SAChC;AAAA,QAAA,CAAKpc;AAAM,aAAO;AAClBA,SAAKuc,OAAO,GAAGvc,KAAK1F,MACpB0F;AAAAA,SAAKoB,KAAK5C,MAAMwB,MAAMqc,cAAc;AACpChqB,IAAAA,WAAU8B,UAAU,iBAAiB,CAAA,CAAA;AACrC9B,IAAAA,WAAUmqB,cAAAA;AACVnqB,IAAAA,WAAUoqB,UAAAA;AACV,WAAO;AAAA,EACR;AACApqB,EAAAA,WAAUmhB,cAAc,SAAShQ,QAAQkZ,OACxC;AAAA,QAAIriB,GAAGuN,GAAG0D;AAEVoR,YAAQA,SAAS,CAEjB;AAAA,SAAKriB,IAAE,GAAGA,IAAEqiB,MAAMpiB,QAAQD,KAAG;AAC5B,UAAGmJ,WAAWkZ,MAAMriB,CAAAA;AACnB,eAAOqiB,MAAMriB,IAAE,CAAA;AAEjB,QAAImJ,UAAAA,OAAiBA,UAAU,UAAU;AACxC8H,eAASqR,OAAOC,OAAOpZ,MAAAA;AACvBoE,UAAI,CAACzN,OAAM4N,MAAK7C,QAAO2X,QAAOC,OAAAA;AAC9B,WAAKziB,IAAE,GAAGA,IAAEuN,EAAEtN,QAAQD,KAAK;AAC1B,YAAImJ,kBAAkBoE,EAAEvN,CACvBiR;AAAAA,mBAASjR,IAAI,IAAIuN,EAAEvN,CAAGmJ,EAAAA,MAAAA,IAAU,IAAIoE,EAAEvN,CACvC;AAAA,MAAA;AACDqiB,YAAMtb,KAAKoC,QAAQ8H,MACnB;AAAA,WAAKjR,KAAKmJ,QAAQ;AACjB,YAAImZ,OAAOI,UAAUC,eAAexe,MAAMgF,QAAQ,CAACnJ,CAAAA,CAAAA;AAClDiR,iBAAOjR,CAAAA,IAAKhI,WAAUmhB,YAAYhQ,OAAOnJ,CAAIqiB,GAAAA,KAAAA;AAAAA,MAC9C;AAAA,IACD;AACD,WAAOpR,UAAU9H;AAAAA,EAClB;AACAnR,EAAAA,WAAU8hB,aAAa,SAASjN,QAAQ+V,QACvC;AAAA,aAASnB,OAAOmB,QAAQ;AACvB,UAAIA,OAAOD,eAAelB,GAAM,GAAA;AAC/B5U,eAAO4U,GAAAA,IAAOmB,OAAOnB,GACrB;AAAA,MAAA;AAAA,IACD;AACD,WAAO5U;AAAAA,EACR;AACA7U,EAAAA,WAAU0e,qBAAqB,SAASxD,KACvC;AAAA,QAAI9B,QAAM/Y,KAAKwV,UAAU0B,QAAAA,KAAW2D,IAAI1I,IAAEnS,KAAKuB,OAAO+X,aAAWtZ,KAAKkR,cAAY,IAAE2J,IAAI3I,KAAG,KAAG,MAAI;AAElG,WAAO,IAAImD,KAAKrV,KAAK6c,eAAe9D,KAAAA,CAAAA;AAAAA,EACrC;AAEApZ,EAAAA,WAAU+W,gBAAgB,SAAS8T,MAAAA;AAClC,QAAI3P,MAAM7a,KAAKib,cAAcuP;AAC7B,WAAO,EACNplB,MAAKpF,KAAKqe,mBAAmBxD,GAAAA,GAC7B4P,SAAQ5P,IAAI4P,QAEd;AAAA,EAAA;AACA9qB,EAAAA,WAAU+qB,SAAS,SAASzY,MAAM2C,QACjC;AAAA,QAAI3C,QAAQA,KAAK0Y,OAAM;AACtB,UAAI3qB,KAAKqhB,SAAQ;AAChBpgB,eAAO8I,WAAW,WACjBkI;AAAAA,eAAK0Y,MACL;AAAA,QAAA,GAAC,EACL;AAAA,MAAA,OAAS;AACN,YAAA;AACC,cAAI/V,UAAU3C,KAAK2C,UAAU3C,KAAK1H,aAAa;AAC9C0H,iBAAK2C,OAAAA;AAAAA,UACL;AACD3C,eAAK0Y,MAAAA;AAAAA,QACL,SAAQ7W,GACR;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACF;AAEA,WAAS8W,kBAAkBC,WAAWC,SAAAA;AACrC,UAAM/R,QAAQ,IAAI1D,KAAKwV;AACvB,UAAM7R,MAAM,IAAI3D,KAAKyV,OACrB;AAAA,UAAMC,mBAAmB/R,IAAIgS,YAAYjS,MAAMiS,QAAAA;AAC/C,UAAMC,mBAAmBF,oBAAoB,MAAO,OAAO;AAC3D,WAAOtY,KAAK8K,IAAI0N,gBAAAA;AAAAA,EACjB;AAGAtrB,EAAAA,WAAU0c,yBAAuB,SAASwO,WAAWC,SAASvpB,QAAAA;AAC7D,QAAI2pB,cAAcJ,UAAUD;AAI5B,QAAIjD,SAAS5nB,KAAK,YAAUA,KAAKoV,KAEjC;AAAA,QAAI+V,mBAAmB,GACtBC;AACD,QAAI7pB,OAAO2M,QAAO;AACjBid,yBAAmBnrB,KAAKqrB,gBAAgB9pB,QAAQspB,SAChDO;AAAAA,uBAAiBprB,KAAKqrB,gBAAgB9pB,QAAQupB,OAAAA;AAE9C,UAAGD,UAAU3T,QAAYvX,IAAAA,WAAUqG,WAAWuP,SAAS2B,QAAAA,GAAU;AAChEiU,2BAAAA,CAAoBP,kBAAkBC,WAAWlrB,WAAUqG,SAAAA,EAAWuP;MACtE;AACD,UAAGuV,QAAQ5T,QAAAA,IAAYvX,WAAUqG,SAAAA,EAAWyP,SAASyB,QAAAA,GAAU;AAC9DkU,0BAAkBR,kBAAkBE,SAASnrB,WAAUqG,SAAWyP,EAAAA,QAAAA;AAAAA,MAClE;AAAA,IACH,OAAO;AACL2V,uBAAiB3Y,KAAK+G,MAAM0R,cAAY,KAAG,KAAG,MAAK;IACnD;AAED,QAAII,cAAc;AAClB,WAAOH,mBAAmBC,gBAAe;AACxC,UAAI/pB,QAAQ1B,WAAUyF,KAAKT,IAAImmB,SAAUvpB,CAAAA,OAAO+a,QAAQ/a,OAAOgb;AAC/D,UAAIqL,UAAUA,OAAOkD,OAAAA,MAAAA,CAAcQ,eAAgBA,eAAe1D,OAAOvmB,KAAAA,IAAU;AAClF6pB,uBAAgBJ,UAAQzpB;AAAAA,MAE3B,OAAO;AACJ,YAAIkqB,mBAAmB;AACvB,cAAMC,gBAAgB,IAAInW,KAAK5C,KAAKC,IAAIrR,MAAM6V,QAAW2T,GAAAA,UAAU3T;AACnE,cAAMuU,cAAcX;AACpB,cAAMY,sBAAsB,IAAIrW,KAAKmW,cAAcnG,eAAemG,cAAclG,SAAAA,GAAYkG,cAAcpL,QAAAA,GAAW7e,OAAOmY,UAAAA;AAC5H,cAAMiS,oBAAoB,IAAItW,KAAKmW,cAAcnG,YAAAA,GAAemG,cAAclG,SAAAA,GAAYkG,cAAcpL,QAAAA,GAAW7e,OAAOwc,SAC1H;AAAA,cAAM6N,uBAAuB,IAAIvW,KAAKyV,QAAQzF,YAAeyF,GAAAA,QAAQxF,YAAYwF,QAAQ1K,QAAAA,GAAW7e,OAAOmY,UAAAA;AAC3G,cAAMmS,qBAAqB,IAAIxW,KAAKyV,QAAQzF,YAAeyF,GAAAA,QAAQxF,SAAYwF,GAAAA,QAAQ1K,QAAW7e,GAAAA,OAAOwc,SAEzG;AAAA,YAAG0N,YAAYvU,QAAAA,IAAY2U,mBAAmB3U,QAAAA,GAAU;AACvDqU,8BAAoBE,cAAcI;AAAAA,QAClC;AAED,YAAGJ,YAAYvU,QAAY0U,IAAAA,qBAAqB1U,QAAU,GAAA;AACzDqU,8BAAoBhqB,OAAOsc;AAAAA,QAC/B,OAAU;AACN0N,8BAAoBE,YAAY9R,SAAW,IAAA,KAAG,KAAG,MAAO8R,YAAYzN,WAAa,IAAA,KAAG;AAAA,QACpF;AAED,YAAGwN,cAActU,QAAYyU,IAAAA,kBAAkBzU,QAAU,GAAA;AACxDqU,8BAAoBhqB,OAAOuc;AAAAA,QAC3B;AAED,YAAG0N,cAActU,YAAYwU,oBAAoBxU,QAAAA,GAAU;AAC1DqU,8BAAqBG,oBAAoBxU,QAAAA,IAAYsU,cAActU,QAAAA;AAAAA,QACnE;AAGDgU,uBAAeK;AACfD,sBAAc;AAAA,MACd;AACDR,gBAAUzpB;AACV+pB;AAAAA,IACA;AACD,WAAOF;AAAAA,EACR;AACAvrB,EAAAA,WAAUse,8BAA4B,SAASpE,UAAUiS,WAAWlsB,KAAKkd,MACxE;AAAA,QAAIgI,KAAK,IAAIzP,KAAKwE,QAAAA;AAClB,QAAIkS,MAAMjP,YAAY;AAGtB,QAAIld,IAAIie,qBAAqBje,IAAIke,iBAAgB;AAChD,UAAIiH;AACJ,UAAIjI;AACHiI,gBAASD,GAAGnL,SAAAA,IAAW,KAAGmL,GAAG9G,gBAAiBpe,IAAI8Z,cAAY,KAAG;AAAA;AAEjEqL,iBAASnlB,IAAIme,aAAW,KAAG,MAAM+G,GAAGnL,SAAW,IAAA,KAAGmL,GAAG9G,WAAAA;AACtD,UAAIgO,WAAWpsB,IAAIme,YAAYne,IAAI8Z,cAAY;AAC/C,UAAIuS,OAAOxZ,KAAKsI,MAAO+Q,aAAa,KAAG,OAAQ/G,SAAUiH,OAAAA;AACzD,UAAGC,OAAO;AAAGA,eAAO;AACpBH,mBAAaG,QAAQ,KAAG,KAAKD,WAAW,KAAK;AAAA,IAC7C;AAED,QAAIE,KAAK,IAAI7W,KAAKwE,WAAS,IAAEiS,YAAUC,GACvC;AAAA,QAAInE,SAAS5nB,KAAK,YAAUA,KAAKoV,KAAAA;AAEjC,QAAI+W,aAAa,GAChBC;AACD,QAAIxsB,IAAIsO,QAAO;AACdie,mBAAansB,KAAKqrB,gBAAgBzrB,KAAKklB,EAAAA;AACvCsH,iBAAWpsB,KAAKqrB,gBAAgBzrB,KAAKssB,EAAAA;AAAAA,IACvC,OAAO;AACLE,iBAAW3Z,KAAK+G,MAAMsS,YAAU,KAAG,KAAG,MAAK,EAAA;AAAA,IAC3C;AAED,WAAOK,aAAWJ,OAAOK,WAASL,KAAI;AACrC,UAAI1qB,QAAQ1B,WAAUyF,KAAKT,IAAImgB,IAAIllB,IAAI0c,SAAOyP,KAAKnsB,IAAI2c,MAAAA;AACvD,UAAIqL,UAAUA,OAAO9C,EAAI,GAAA;AACxBgH,sBAAczqB,QAAMyjB,MAAIiH;AACxBK,oBAAYL;AAAAA,MACZ;AAEDjH,WAAKzjB;AACL8qB,oBAAYJ;AAAAA,IACZ;AAED,WAAOD;AAAAA,EACR;AAEAnsB,EAAAA,WAAUsgB,oBAAoB,WAAA;AAC7B,WAAOjgB,KAAKmgB,QACb;AAAA,EAAA;AAEAxgB,EAAAA,WAAU0sB,wBAAwB;AACjC,QAAGrsB,KAAKyO,UAAUzO,KAAKyO,OAAOzO,KAAKoV,KAAO,GAAA;AACzC,aAAOpV,KAAKyO,OAAOzO,KAAKoV,KAAAA,EAAOkX;AAAAA,IACjC,WAAUtsB,KAAK2O,UAAU3O,KAAK2O,OAAO3O,KAAKoV,KAAO,GAAA;AAC/C,aAAOpV,KAAK2O,OAAO3O,KAAKoV,KAAAA,EAAOmU;AAAAA,IAC/B;AACD,WAAO;AAAA,EACR;AAEA5pB,EAAAA,WAAU4sB,kBAAkB,WAC3B;AAAA,QAAIC,QAAQxsB,KAAKgG,SACjB;AAAA,WAAQhG,KAAKiP,QAAQud,MAAMpnB,QAAQonB,MAAM/sB;AAAAA,EAC1C;AACAE,EAAAA,WAAU8sB,oBAAoB,WAC7B;AAAA,QAAID,QAAQxsB,KAAKgG,SACjB;AAAA,WAAOwmB,MAAM3W,gBAAgB,QAAQ2W,MAAM3W,gBAAgBjD;AAAAA,EAC5D;AAEA;ACt8DA,MAAe8Z,mBAAA,EACd9mB,OAAO,SAAUgI,KAAIhI,QAAOM,SAAAA;AAC3B,MAAI0H,IAAG5G;AACN4G,IAAAA,IAAG5G,iBAAiBpB,QAAOM,SAAS,KAEhC;AAAA,WAAI0H,IAAGjK;AACXiK,IAAAA,IAAGjK,YAAY,OAAKiC,QAAOM,OAC5B;AAAA,GACDymB,aAAa,SAAU/e,KAAIhI,QAAOM,SACjC;AAAA,MAAI0H,IAAGC;AACND,IAAAA,IAAGC,oBAAoBjI,QAAOM,SAAS,KAAA;AAAA,WAE/B0H,IAAGP;AACXO,IAAAA,IAAGP,YAAY,OAAKzH,QAAOM,OAC5B;AAAA,EAAA;ACZa,SAAA0mB,mBAAAA;AAEd,MAAIC,YAAY,SAAU7gB,UAAUK,aAAAA;AACnCL,eAAWA,YAAY0gB,iBAAiB9mB;AACxCyG,kBAAcA,eAAeqgB,iBAAiBC;AAC9C,QAAIlhB,WAAW,CAAA;AACf,QAAIqhB,aAAa,EAChBjZ,QAAQ,SAASjG,KAAIhI,QAAOmH,UAAUggB,SAAAA;AACrCthB,eAASiD,KAAK,EAACrK,SAASuJ,KAAIhI,OAAMA,QAAOmH,UAAoBggB,QAASA,CAAAA;AACtE/gB,eAAS4B,KAAIhI,QAAOmH,UAAUggB,OAAAA;AAAAA,IAC9B,GACDC,QAAQ,SAASpf,KAAIhI,QAAOmH,UAAUggB,SACrC1gB;AAAAA,kBAAYuB,KAAIhI,QAAOmH,UAAUggB,OAAAA;AACjC,eAAQplB,IAAI,GAAGA,IAAI8D,SAAS7D,QAAQD,KAAI;AACvC,YAAIzB,UAAUuF,SAAS9D,CACvB;AAAA,YAAIzB,QAAQ7B,YAAYuJ,OAAM1H,QAAQN,UAAUA,UAASM,QAAQ6G,aAAaA,YAAY7G,QAAQ6mB,YAAYA,SAAS;AACtHthB,mBAASoe,OAAOliB,GAAG,CAAA;AACnBA;AAAAA,QACA;AAAA,MACD;AAAA,IACD,GACDgM,WAAW,WACV;AAAA,UAAIsZ,cAAcxhB,SAASyhB,MAE3B;AAAA,eAASvlB,IAAI,GAAGA,IAAIslB,YAAYrlB,QAAQD,KAAI;AAC3C,YAAIzB,UAAU+mB,YAAYtlB;AAC1BmlB,mBAAWE,OAAO9mB,QAAQ7B,SAAS6B,QAAQN,OAAOM,QAAQ6G,UAAU7G,QAAQ6mB,OAAAA;AAC5ED,mBAAWE,OAAO9mB,QAAQ7B,SAAS6B,QAAQN,OAAOM,QAAQ6G,UAAU6F,MAAAA;AACpEka,mBAAWE,OAAO9mB,QAAQ7B,SAAS6B,QAAQN,OAAOM,QAAQ6G,UAAU,KAAA;AACpE+f,mBAAWE,OAAO9mB,QAAQ7B,SAAS6B,QAAQN,OAAOM,QAAQ6G,UAAU,IAAA;AAAA,MACpE;AACDtB,eAASoe,OAAO,GAAGpe,SAAS7D,MAAAA;AAAAA,IAC5B,GACD7F,QAAQ,WAAA;AACP,aAAO8qB,UAAU7sB,KAAK4F,OAAO5F,KAAK2sB,WAAAA;AAAAA,IAClC;AAEF,WAAOG;AAAAA,EACT;AAEC,SAAOD,UACR;AAAA;ACzCe,SAAS9qB,SAAOpC;AAG/B,MAAIktB,YAAYD,iBAEhBjtB;AAAAA,EAAAA,WAAUiG,QAAQinB,UAAUhZ;AAC5BlU,EAAAA,WAAUgtB,cAAcE,UAAUG;AAClCrtB,EAAAA,WAAUwtB,kBAAkBN,UAAUlZ;AACtChU,EAAAA,WAAU+T,uBAAuBmZ,UAAU9qB;AAG3CpC,EAAAA,WAAUytB,QAAQ,SAASpH,KAAAA;AAC1B,QAAIqH,OAAOlD,OAAOE,UAAUiD,QAAQ,WAAY;AAAA,aAAOttB,KAAKiX,QAAQ,cAAc,EAAA;AAAA,IAAI;AACtF,WAAOoW,KAAKvhB,MAAMka,GAAAA;AAAAA,EACnB;AAEArmB,EAAAA,WAAUwZ,UAAU,SAASvZ;AAC5B,QAAIA,OAAAA,OAAcA,OAAO,UAAU;AAClC,aAAA,CAAA,EAAUA,IAAIylB,eAAezlB,IAAI0lB,YAAY1lB,IAAIwgB;AAAAA,IACnD,OAAQ;AACN,aAAO;AAAA,IACP;AAAA,EACF;AAEAzgB,EAAAA,WAAUuZ,YAAY,SAAStZ,KAC9B;AAAA,WAAQA,OAAcA,OAAAA,OAAO;AAAA,EAC9B;AAEA;AC9Be,SAASmC,SAAOpC,YAE/B;AAAA,GAAA,WAAA;AAGC,QAAI4tB,WAAW,IAAIC,OAAO,gBAAgB,IAC1C;AAAA,QAAIC,cAAc,IAAID,OAAO,MAAM,IAEnC;AAAA,aAASE,cAAcC,UAAAA;AACtB,cAAQA,WAAW,IACjB1W,QAAQsW,UAAU,GACnBtW,EAAAA,QAAQwW,aAAa,GAAA;AAAA,IACtB;AAED,QAAIG,eAAe,IAAIJ,OAAO,KAAK,IAAA;AACnC,aAASK,aAAalsB,MACrB;AAAA,cAAQA,OAAO,IAAIsV,QAAQ2W,cAAc,OAAA;AAAA,IACzC;AAEDjuB,IAAAA,WAAU4T,WAAW,EACpBua,oBAAoB,SAASC;AAC5B,UAAIC,aAAa,CAAC,GAAA;AAClB,eAAQrmB,MAAKomB,MAAK;AACjB,YAAUA,OAAAA,KAAKpmB,EAAM,KAAA,cAAA,OAAqBomB,KAAKpmB,EAAAA,KAAM,UAAU;AAC9D,cAAIhG,OAAOksB,aAAaH,cAAcK,KAAKpmB,EAC3CqmB,CAAAA,CAAAA;AAAAA,qBAAWtf,KAAK/G,KAAI,OAAOhG,OAAO,GAAA;AAAA,QAClC;AAAA,MACD;AACDqsB,iBAAWtf,KAAK,GAChB;AAAA,aAAOsf,WAAWvqB,KAAK,GACvB;AAAA,IAAA,GACDwqB,eAAe,SAAShrB,KAAKirB,QAAAA;AAC5B,eAAQvmB,MAAKumB,QAAO;AACnBjrB,YAAI8B,aAAa4C,IAAG+lB,cAAcQ,OAAOvmB,EACzC,CAAA,CAAA;AAAA,MAAA;AACD,aAAO1E;AAAAA,IACP,GAEDuQ,WAAW,SAASvQ,KAAKokB;AACxB,aAAOrnB,KAAKiuB,cAAchrB,KAAK,EAAC,cAAcokB,QAC9C,CAAA;AAAA,IAAA,GACDjU,OAAO,SAASA,OAAAA;AACf,aAAOzT,WAAU4T,SAASua,mBAAmB,EAAC,cAAc1a;IAC5D,GAIDmU,eAAe,SAAStkB,KAAKokB,SAC5BrnB;AAAAA,WAAKwT,UAAUvQ,KAAKokB;IAEpB,GACDqB,eAAe,SAASzlB,KAAKmC,MAC5BpF;AAAAA,WAAKwT,UAAUvQ,KAAKtD,WAAU0iB,UAAU8L,SAAS/oB,IACjD,CAAA;AAAA,IAAA,GAEDmhB,gBAAgB,SAAStjB,KAAKokB,SAAAA;AAC7BrnB,WAAKwT,UAAUvQ,KAAKokB,OAAAA;AAAAA,IACpB,GACDxD,eAAe,SAAS5gB,KAAKokB;AAC5BrnB,WAAKwT,UAAUvQ,KAAKokB,OAAAA;AAAAA,IACpB,GAEDxB,eAAe,SAAS5iB,KAAKmC;AAC5BpF,WAAK6jB,cAAc5gB,KAAKtD,WAAU0iB,UAAU8L,SAAS/oB,IACrD,CAAA;AAAA,IAAA,GAEDud,yBAAyB,SAAS1f,KAAKmQ,OACtC;AAAA,aAAOpT,KAAKiuB,cAAchrB,KAAK,EAACmrB,MAAO,UAAU,cAAahb,MAC9D,CAAA;AAAA,IAAA,GAEDkQ,mBAAmB,SAASrgB,KAAKorB,UAAAA;AAChC,aAAOruB,KAAKiuB,cAAchrB,KAAK,EAAC,gBAAgBorB,WAAW,SAAS,QAAA,CAAA;AAAA,IACpE,GAGDC,mBAAkB,SAASC,YAE1B;AAAA,aAAO5uB,WAAU4T,SAASua,mBAAmB,EAAC,cAAcS,WAC5D,CAAA;AAAA,IAAA,GAGDC,WAAW,SAAS5oB,QAAO3C,KAAAA;AAC1BjD,WAAKyuB,iBAAiB7oB,QAAO3C,GAAAA;AAAAA,IAC7B,GAGDwrB,kBAAkB,SAAS7oB,QAAO3C,KACjCA;AAAAA,UAAI8B,aAAa,cAAc2oB,cAAc/tB,WAAU0iB,UAAUqM,WAAW9oB,OAAM2T,YAAY3T,OAAMiU,UAAUjU,MAE9G,CAAA,CAAA;AAAA,UAAGjG,WAAU4B,OAAOoV,UAAS;AAC5B1T,YAAI8B,aAAa,iBAAiB,IAElC;AAAA,MAAA;AAED,UAAGa,OAAM+oB,sBAAqB;AAC7B1rB,YAAI8B,aAAa,aAAa,IAAA;AAAA,MAC9B;AAGD9B,UAAI8B,aAAa,iBACfpF,WAAUqG,SAAAA,EAAWiQ,aAAarQ,OAAM7F,KAAM,SAAS,OAAA;AAAA,IACzD,GAED6uB,iBAAiB,SAAShpB,QAAO3C;AAChCjD,WAAKyuB,iBAAiB7oB,QAAO3C,GAAAA;AAAAA,IAC7B,GAED4rB,gBAAgB,SAASC,iBAAiBC;AACzC,UAAInW,SAAS,EACZ7T,cAAa,SAASiI,MAAMnG,OAC3B7G;AAAAA,aAAKgN,IAAQnG,IAAAA;AAAAA,MACb,EAGFioB;AAAAA,sBAAgBhjB,MAAM9L,MAAM,CAAC+uB,KAAKnW;AAClC,aAAOA;AAAAA,IAEP,GAEDoW,oBAAoB,SAASppB,QAAAA;AAC5B,aAAO5F,KAAK8tB,mBAAmB9tB,KAAK6uB,eAAe7uB,KAAK4uB,iBAAiBhpB,MACzE,CAAA;AAAA,IAAA,GAIDqpB,sBAAsB,WAAA;AACrB,aAAOjvB,KAAK8tB,mBAAmB,EAACM,MAAM,MACtC,CAAA;AAAA,IAAA,GACDc,sBAAsB,SAAS9b;AAC9B,aAAOpT,KAAK8tB,mBAAmB,EAACM,MAAM,gBAAgB,cAAchb,MAAAA,CAAAA;AAAAA,IACpE,GACD+b,6BAA6B,SAAS/b,OACrC;AAAA,aAAOpT,KAAKkvB,qBAAqB9b,KACjC;AAAA,IAAA,GACDgc,sBAAsB,WACrB;AAAA,aAAOpvB,KAAK8tB,mBAAmB,EAACM,MAAM,OACtC,CAAA;AAAA,IAAA,GACDiB,uBAAuB,SAASzpB,QAAAA;AAC/B,UAAI0pB,QAAQtvB,KAAK6uB,eAAe7uB,KAAKyuB,kBAAkB7oB,MAEvD0pB;AAAAA,YAAM,MAAU,IAAA;AAEhB,aAAOtvB,KAAK8tB,mBAAmBwB,KAAAA;AAAAA,IAE/B,GACDC,wBAAwB,WAAA;AACvB,aAAOvvB,KAAK8tB,mBAAmB,EAACM,MAAO,UAAU,cAAazuB,WAAU0T,OAAOC,OAAOkc,aAAAA,CAAAA;AAAAA,IACtF,GAGDC,gBAAgB,WACf;AAAA,aAAOzvB,KAAK8tB,mBAAmB,EAACM,MAAM,OAAA,CAAA;AAAA,IACtC,GAEDsB,mBAAmB,SAAS9pB,QAAAA;AAC3B,aAAO5F,KAAKqvB,sBAAsBzpB,MAAAA;AAAAA,IAClC,GAED+pB,oBAAoB,SAAS/pB,QAAO4U,QAAQ3T,OAC3C;AAAA,aAAO7G,KAAK8tB,mBAAmB,EAACM,MAAO,YAAY,cAAc,CAC/D5T,OAAOpH,UAAUR,SAAY4H,OAAOza,KAAKya,OAAOpH,OACjD,MACAvM;IAED,GAED+oB,eAAe,WACd;AAAA,aAAO5vB,KAAKyvB,eAAAA;AAAAA,IACZ,GACDI,kBAAkB,SAASjqB,QAAAA;AAC1B,aAAO5F,KAAK0vB,kBAAkB9pB,MAAAA;AAAAA,IAC9B,GACDkqB,qBAAqB;AACpB,aAAO9vB,KAAKuvB,uBACZ;AAAA,IAAA,GAEDQ,eAAe,SAAS9sB,KAAK+sB,UAAAA;AAC5BhwB,WAAKiuB,cAAchrB,KAAK,EACvBlD,IAAKiwB,WAAS,IACd,aAAY,aACZ,eAAc,OAGf,CAAA;AAAA,IAAA,GACDC,aAAa,SAAShtB,KAAK+sB,UAAAA;AAC1BhwB,WAAKiuB,cAAchrB,KAAK,EACvB,mBAAkB+sB,WAAS,IAC3B5B,MAAO,OAAA,CAAA;AAAA,IAER,GACD8B,YAAY,SAASjtB,KACpBjD;AAAAA,WAAKiuB,cAAchrB,KAAK,EACvBmrB,MAAO,MAER,CAAA;AAAA,IAAA,GACD+B,gBAAgB,SAASltB,KAAKmC,MAC7B;AAAA,UAAIgrB,WAAYhrB,KAAK8R,QAAYvX,IAAAA,WAAU+V,UAAUwB,QAAa9R,KAAAA,KAAK8R,QAAavX,KAAAA,WAAU6V,UAAU0B,QAAAA;AACxGlX,WAAKiuB,cAAchrB,KAAK,EACvBmrB,MAAO,YACP,cAAczuB,WAAU0iB,UAAU8L,SAAS/oB,OAC3C,iBAAiBgrB,WAAW,SAAS,QAAA,CAAA;AAAA,IAEtC,GACDC,iBAAiB,SAASptB,KAAAA;AACzBjD,WAAKiuB,cAAchrB,KAAK,EACvBmrB,MAAO,eAER,CAAA;AAAA,IAAA,GAGDkC,mBAAmB,SAASrtB,KAAKmC,MAChC;AAAA,UAAI+I,SAASlL,IAAIgF,cAAc,mBAAA;AAC/B,UAAIof,UAAUpkB,IAAIgF,cAAc,kBAChC;AAAA,UAAI+nB,WAAWrwB,WAAUoa,IAAQ,IAAA;AACjC/Z,WAAKiuB,cAAc9f,QAAQ,EAAEpO,IAAMiwB,SACnChwB,CAAAA;AAAAA,WAAKiuB,cAAc5G,SAAS,EAAE,mBAAmB2I,SAAAA,CAAAA;AAAAA,IAEjD,GACDO,iBAAiB,SAASttB,KAAK2C,QAC9B5F;AAAAA,WAAKwuB,UAAU5oB,QAAO3C,GAAAA;AAAAA,IACtB,GAEDutB,oBAAoB,SAASvtB,KAAAA;AAC5BA,UAAI8B,aAAa,eAAe,MAAA;AAAA,IAChC,GAED0rB,qBAAqB,SAASxtB,KAAAA;AAC7BA,UAAI8B,aAAa,eAAe,OAChC;AAAA,IAAA,GAED2rB,iCAAiC,SAAStd,OACzC;AAAA,aAAOpT,KAAK8tB,mBAAmB,EAACM,MAAO,UAAU,cAAahb,OAAOud,UAAW,IAAA,CAAA;AAAA,IAChF,GAEDC,YAAY,SAAS3tB,KAAK+sB,UAAAA;AACzBhwB,WAAKiuB,cAAchrB,KAAK,EACvBlD,IAAKiwB,WAAS;IAEf,GACDa,UAAU,SAAS5tB,KAAK+sB,UACvBhwB;AAAAA,WAAKiwB,YAAYhtB,KAAK+sB;IACtB,GACDc,cAAc,SAAS7tB,KAAAA;AACtB,aAAOjD,KAAKqwB,gBAAgBptB,GAAAA;AAAAA,IAC5B,GACD8tB,SAAS,SAAS9tB,KACjB;AAAA,aAAOjD,KAAKkwB,WAAWjtB,GACvB;AAAA,IAAA,GACD+tB,aAAa,SAAS/tB,KAAAA;AACrBjD,WAAKiuB,cAAchrB,KAAK,EACvBmrB,MAAO,WAAA,CAAA;AAAA,IAER,GAED6C,cAAc,SAAShuB,KAAAA;AACtBA,UAAI8B,aAAa,QAAQ,QAAA;AACzB9B,UAAI8B,aAAa,eAAe,MAChC9B;AAAAA,UAAI5C,WAAW0E,aAAa,QAAQ,SAAA;AAAA,IACpC,GAEDmsB,0BAAyB,SAASC,YACjC;AAAA,aAAOnxB,KAAK8tB,mBAAmB,EAACM,MAAO,UAAU,cAAazuB,WAAU0T,OAAOC,OAAO6d,UAAaR,GAAAA,UAAW,IAC9G,CAAA;AAAA,IAAA,GACDS,qBAAqB,SAASC,UAC7B;AAAA,aAAOrxB,KAAK8tB,mBAAmB,EAACM,MAAO,UAAU,cAAazuB,WAAU0T,OAAOC,OAAO+d,QACtF,EAAA,CAAA;AAAA,IAAA,GACDC,gBAAgB,SAASruB,KAAKsuB,YAC7BtuB;AAAAA,UAAI8B,aAAa,cAAcwsB,UAC/B;AAAA,IAAA,GAEDC,0BAA0B,SAASC;AAClC,UAAIre,QAAQ;AAEZ,cAAQqe,aACP;AAAA,QAAA,KAAK;AACJre,kBAAQzT,WAAU0T,OAAOC,OAAO/Q;AAChC;AAAA,QACD,KAAK;AACJ6Q,kBAAQzT,WAAU0T,OAAOC,OAAOoe;AAChC;AAAA,QACD,KAAK;AACJte,kBAAQzT,WAAU0T,OAAOC,OAAO9T;AAChC;AAAA,QACD,KAAK;AACJ4T,kBAAQzT,WAAU0T,OAAOC,OAAOqe,OAAO,MAAMhyB,WAAU0T,OAAOC,OAAOse;AACrE;AAAA,MAKF;AAAA,aAAOjyB,WAAU4T,SAASua,mBAAmB,EAAC,cAAc1a,MAC5D,CAAA;AAAA,IAAA,GAGDye,yBAAyB,SAASC;AACjC,aAAO,4CAA0CA,cAAY;AAAA,IAC7D,GAEDC,iBAAiB,SAAS9uB,KAAAA;AACzBA,UAAI8B,aAAa,QAAQ,OAEzB;AAAA,IAAA,GAEDitB,kBAAkB,SAAS/uB,KAAK8W,MAAAA;AAC/B9W,UAAI8B,aAAa,QAAQ,QACzB;AAAA,UAAGgV,MAAI;AACN9W,YAAI8B,aAAa,mBAAmBgV,IAAAA;AAAAA,MACpC;AAAA,IAGD,GAEDkY,eAAe,SAAShvB,KACvBA;AAAAA,UAAI8B,aAAa,QAAQ,QAAA;AAAA,IACzB,GAEDmtB,2BAA2B,WAC1B;AAAA,aAAO;AAAA,IACP,GAEDC,iBAAiB,SAASlvB,KAAKkL,QAC9BlL;AAAAA,UAAI8B,aAAa,cAAcoJ,MAC/B;AAAA,IAAA,GAEDikB,2BAA2B,SAAShf,OAAAA;AACnC,aAAOzT,WAAU4T,SAASua,mBAAmB,EAACM,MAAO,UAAU,cAAahb,OAAOud,UAAW,IAC9F,CAAA;AAAA,IAAA,GAED0B,aAAa,SAASpvB;AACrBA,UAAI8B,aAAa,QAAQ,SAAA;AAAA,IACzB,GAEDutB,oBAAoB,SAASrvB,KAAAA;AAC5BA,UAAI8B,aAAa,eAAe,OAChC;AAAA,IAAA,GAEDwtB,mBAAmB,SAAStvB,KAC3BA;AAAAA,UAAI8B,aAAa,eAAe,MAAA;AAAA,IAChC,EAGF;AAAA,aAASytB,aACR;AAAA,aAAA,CAAQ7yB,WAAU4B,OAAOwJ;AAAAA,IACzB;AAED,aAAQpD,KAAKhI,WAAU4T,UAAS;AAC/B5T,MAAAA,WAAU4T,SAAS5L,CAAAA,IAAK,SAAU8qB,SAAAA;AACjC,eAAO,WAAA;AACN,cAAGD,WAAAA,GAAa;AACf,mBAAO;AAAA,UACP;AACD,iBAAOC,QAAQ3mB,MAAM9L,MAAM+L,SAAAA;AAAAA,QAC/B;AAAA,MACG,EAAEpM,WAAU4T,SAAS5L,CACtB,CAAA;AAAA,IAAA;AAAA,EAGD,GAnWD;AAqWA;ACvWA,IAAI+qB,UAAUrd,KAAKsd,IAAAA;AACnB,SAAS5Y,MAAAA;AACR,SAAO2Y;AACR;AAGA,SAAShrB,QAAQ9H,KAChB;AAAA,MAAG6H,MAAMC,SAAQ;AAChB,WAAOD,MAAMC,QAAQ9H,GAAAA;AAAAA,EACvB,OAAM;AAEJ,WAAQA,OAAOA,IAAIgI,WAAWgL,UAAahT,IAAIgzB,OAAOhzB,IAAI8O;AAAAA,EAC1D;AACF;AAGA,SAASmkB,eAAejzB,KACvB;AAAA,SAAOA,OAAcA,OAAAA,QAAQ,YAC5BkzB,SAASzI,UAAU0I,SAAS1Y,KAAKza,IAAIwL,WAAAA,MAAiB;AACxD;AAGA,SAAS4nB,eAAepzB,KACvB;AAAA,SAAOA,cAAcA,QAAQ,YAC5BkzB,SAASzI,UAAU0I,SAAS1Y,KAAKza,IAAIwL,WAAAA,MAAiB;AACxD;AAGA,SAAS6nB,gBAAgBrzB,KAAAA;AACxB,SAAOA,OAAAA,OAAcA,QAAQ,YAC5BkzB,SAASzI,UAAU0I,SAAS1Y,KAAKza,IAAIwL,WAAAA,MAAiB;AACxD;AAEA,SAAS8nB,OAAOtzB,KAAAA;AACf,MAAIA,OAAAA,OAAcA,QAAQ,UAAU;AACnC,WAAA,CAAA,EAAUA,IAAIylB,eAAezlB,IAAI0lB,YAAY1lB,IAAIwgB;AAAAA,EACnD,OAAQ;AACN,WAAO;AAAA,EACP;AACF;AAEA,SAAS+S,QAAQvzB,KAChB;AAAA,SAAA,OAAc,OAAQ;AACvB;AAEA,SAAS4d,MAAOzQ,UAAUqmB,SACzB;AAAA,MAAIC;AAEJ,MAAIza,SAAS,WACZA;AAAAA,WAAO0a,eACP1a;AAAAA,WAAO2a,WAAW;AAClB,QAAIC,OAAO/rB,MAAM4iB,UAAU6C,MAAM7S,KAAKtO,SAAAA;AACtCsnB,YAAQtpB,WAAW,WAClBgD;AAAAA,eAASjB,MAAM9L,MAAMwzB,IAAAA;AACrB5a,aAAO2a,WAAW;AAAA,IAClB,GAAEH,OACL;AAAA,EAAA;AAECxa,SAAO2a,WAAW;AAClB3a,SAAO0a,iBAAiB,WACvBxpB;AAAAA,iBAAaupB,KACbza;AAAAA,WAAO2a,WAAW;AAAA,EACpB;AACC3a,SAAO6a,WAAW,WACjB;AAAA,QAAID,OAAO/rB,MAAM4iB,UAAU6C,MAAM7S,KAAKtO,SACtCgB;AAAAA,aAASjB,MAAM9L,MAAMwzB,IACrB5a;AAAAA,WAAO0a;EACT;AAEC,SAAO1a;AACR;AAEA,MAAe8a,QAAA,EACd3Z,KACA4Z,OAAO,SAASA,MAAOnf,QAAQ+V,QAAQqJ,OACtC;AAAA,WAASC,KAAKtJ;AACb,QAAM/V,OAAOqf,CAAOjhB,MAAAA,UAAcghB;AAAQpf,aAAOqf,KAAGtJ,OAAOsJ,CAAAA;AAC5D,SAAOrf;AACP,GACDsf,MAAM,SAASA,KAAKhjB;AACnB,MAAInJ,GAAGiR;AAEP,MAAI9H,UAAiBA,OAAAA,UAAU,UAAU;AAExC,YAAQ,MAAA;AAAA,MACP,KAAMoiB,OAAOpiB,MACZ8H;AAAAA,iBAAS,IAAIvD,KAAKvE;AAClB;AAAA,MACD,KAAMpJ,QAAQoJ,MAAAA;AACb8H,iBAAS,IAAInR,MAAMqJ,OAAOlJ;AAC1B,aAAID,IAAI,GAAGA,IAAImJ,OAAOlJ,QAAQD,KAAI;AACjCiR,iBAAOjR,CAAKmsB,IAAAA,KAAKhjB,OAAOnJ,CAAAA,CAAAA;AAAAA,QACxB;AACD;AAAA,MACD,KAAMkrB,eAAe/hB,MACpB8H;AAAAA,iBAAS,IAAIuR,OAAOrZ,MACpB;AAAA;AAAA,MACD,KAAMkiB,eAAeliB;AACpB8H,iBAAS,IAAIpG,OAAO1B,MAAAA;AACpB;AAAA,MACD,KAAMmiB,gBAAgBniB,MAAAA;AACrB8H,iBAAS,IAAIwR,QAAQtZ,MACrB;AAAA;AAAA,MACD;AACC8H,iBAAS,CAAA;AACT,aAAKjR,KAAKmJ,QAAQ;AACjB,gBAAMijB,UAAiBjjB,OAAAA,OAAOnJ,CAE9B;AAAA,cAAIosB,YAAY,YAAYA,YAAY,YAAYA,YAAY,WAAY;AAC3Enb,mBAAOjR,CAAAA,IAAKmJ,OAAOnJ,CACnB;AAAA,UAAA,WAASurB,OAAOpiB,OAAOnJ,CAAAA,CAAAA,GAAI;AAC3BiR,mBAAOjR,KAAK,IAAI0N,KAAKvE,OAAOnJ,CAAAA,CAAAA;AAAAA,UACnC,WAAgBsiB,OAAOI,UAAUC,eAAexe,MAAMgF,QAAQ,CAACnJ,CAAAA,CAAAA;AACxDiR,mBAAOjR,CAAAA,IAAKmsB,KAAKhjB,OAAOnJ,CACzB,CAAA;AAAA,QAAA;AACF;AAAA,IAED;AAAA,EAAA;AACD,SAAOiR,UAAU9H;AACjB,GACDqiB,SACAD,QACA1V,MAAAA;ACzHD,SAASwW,gBAAgBC,MACxB;AAAA,MAAIphB,MAAI,GAAGd,OAAK,GAAGC,QAAM,GAAGkiB,SAAO;AACnC,MAAID,KAAKE,uBAAuB;AAC/B,QAAIC,MAAMH,KAAKE,sBAAAA;AACf,QAAIh0B,OAAON,SAASM;AACpB,QAAIk0B,UAAWx0B,SAASwJ,mBACvBxJ,SAASM,KAAK8I,cACdpJ,SAASM;AAEV,QAAIub,YAAYza,OAAOqzB,eAAeD,QAAQ3Y,aAAavb,KAAKub;AAChE,QAAIH,aAAata,OAAOszB,eAAeF,QAAQ9Y,cAAcpb,KAAKob;AAClE,QAAII,YAAY0Y,QAAQ1Y,aAAaxb,KAAKwb,aAAa;AACvD,QAAIH,aAAa6Y,QAAQ7Y,cAAcrb,KAAKqb,cAAc;AAC1D3I,UAAOuhB,IAAIvhB,MAAO6I,YAAYC;AAC9B5J,WAAOqiB,IAAIriB,OAAOwJ,aAAaC;AAE/BxJ,YAAQnS,SAASM,KAAKoK,cAAc6pB,IAAIpiB;AACxCkiB,aAASr0B,SAASM,KAAKkK,eAAe+pB,IAAIF;AAAAA,EAC5C,OAAQ;AACN,WAAMD,MAAM;AACXphB,YAAMA,MAAMmS,SAASiP,KAAKziB,WAAU;AACpCO,aAAOA,OAAOiT,SAASiP,KAAKO,YAAW,EAAA;AACvCP,aAAOA,KAAKQ;AAAAA,IACZ;AAEDziB,YAAQnS,SAASM,KAAKoK,cAAc0pB,KAAK1pB,cAAcwH;AACvDmiB,aAASr0B,SAASM,KAAKkK,eAAe4pB,KAAK5pB,eAAewI;AAAAA,EAC1D;AACD,SAAO,EAAEV,GAAGM,KAAK+G,MAAM3G,GAAAA,GAAMX,GAAGO,KAAK+G,MAAMzH,IAAAA,GAAOnL,OAAMqtB,KAAK1pB,aAAaxD,QAAOktB,KAAK5pB,cAAc2H,OAAOS,KAAK+G,MAAMxH,KAAQkiB,GAAAA,QAAQzhB,KAAK+G,MAAM0a,MAClJ,EAAA;AAAA;AAKA,SAASQ,yBAAyBpgB,IAAIrC,MACrC;AAAA,MAAImH,IAAIvZ,SAASwJ;AACjB,MAAI+qB,MAAMJ,gBAAgB/hB;AAE1B,SAAO,EACNC,GAAGoC,GAAGgH,UAAUlC,EAAEmC,aAAanC,EAAEoC,aAAa4Y,IAAIliB,IAAID,KAAKsJ,YAC3DpJ,GAAGmC,GAAGmH,UAAUrC,EAAEsC,YAAYtC,EAAEuC,YAAYyY,IAAIjiB,IAAIF,KAAKyJ,UAE3D;AAAA;AAEA,SAASiZ,gBAAgBV,MAAAA;AACxB,MAAIphB,MAAI,GAAGd,OAAK,GAAGC,QAAM,GAAGkiB,SAAO;AACnC,MAAID,KAAKE,uBAAuB;AAC/B,QAAIC,MAAMH,KAAKE,sBAAAA;AACf,QAAIh0B,OAAON,SAASM;AACpB,QAAIk0B,UAAWx0B,SAASwJ,mBACvBxJ,SAASM,KAAK8I,cACdpJ,SAASM;AAEV,QAAIub,YAAYza,OAAOqzB,eAAeD,QAAQ3Y,aAAavb,KAAKub;AAChE,QAAIH,aAAata,OAAOszB,eAAeF,QAAQ9Y,cAAcpb,KAAKob;AAClE,QAAII,YAAY0Y,QAAQ1Y,aAAaxb,KAAKwb,aAAa;AACvD,QAAIH,aAAa6Y,QAAQ7Y,cAAcrb,KAAKqb,cAAc;AAC1D3I,UAAOuhB,IAAIvhB,MAAO6I,YAAYC;AAC9B5J,WAAOqiB,IAAIriB,OAAOwJ,aAAaC;AAE/BxJ,YAAQnS,SAASM,KAAKoK,cAAc6pB,IAAIpiB;AACxCkiB,aAASr0B,SAASM,KAAKkK,eAAe+pB,IAAIF;AAAAA,EAC5C,OAAQ;AACN,WAAMD,MAAM;AACXphB,YAAMA,MAAMmS,SAASiP,KAAKziB,WAAU,EACpCO;AAAAA,aAAOA,OAAOiT,SAASiP,KAAKO,YAAW,EAAA;AACvCP,aAAOA,KAAKQ;AAAAA,IACZ;AAEDziB,YAAQnS,SAASM,KAAKoK,cAAc0pB,KAAK1pB,cAAcwH;AACvDmiB,aAASr0B,SAASM,KAAKkK,eAAe4pB,KAAK5pB,eAAewI;AAAAA,EAC1D;AACD,SAAO,EAAEV,GAAGM,KAAK+G,MAAM3G,GAAMX,GAAAA,GAAGO,KAAK+G,MAAMzH,IAAOnL,GAAAA,OAAMqtB,KAAK1pB,aAAaxD,QAAOktB,KAAK5pB,cAAc2H,OAAOS,KAAK+G,MAAMxH,KAAAA,GAAQkiB,QAAQzhB,KAAK+G,MAAM0a,MAClJ,EAAA;AAAA;AAEA,SAASU,aAAa3iB,MACrB;AAAA,MAAA,CAAIA;AAAM,WAAO;AAEjB,MAAI7N,YAAY6N,KAAK7N,aAAa;AAClC,MAAGA,UAAUywB;AACZzwB,gBAAYA,UAAUywB;AAEvB,MAAA,CAAIzwB,UAAU2S;AACb3S,gBAAY;AAEb,SAAOA,aAAa;AACrB;AAEA,SAAS0wB,cAAchhB,GAAAA;AACtB,MAAI2C;AACJ,MAAI3C,EAAEihB;AACLte,UAAM3C;AAAAA,OACF;AACJA,QAAIA,KAAK7S,OAAO2E;AAChB6Q,UAAM3C,EAAEU,UAAUV,EAAEW;AACpB,QAAIgC,IAAIue,cAAclhB,EAAEmhB,cAAc;AACrCxe,YAAM3C,EAAEmhB,aAAe,EAAA,CAAA;AAAA,IACvB;AAAA,EACD;AACD,SAAOxe;AACR;AAEA,SAASye,UAAUphB,GAAG6M,WAAWwU;AAChC,MAAGA,WAAWviB;AACbuiB,aAAS;AAEV,MAAI1e,MAAM3C,EAAEU,UAAUV,EAAEW;AACxB,MAAI9N,MAAM;AAEV,SAAO8P,KAAI;AACV9P,UAAMiuB,aAAane,GAEnB;AAAA,QAAG9P,KAAI;AACN,UAAIyuB,MAAMzuB,IAAIoQ,QAAQ4J,SAAAA;AACtB,UAAIyU,OAAO,GAAE;AACZ,YAAKD,CAAAA;AACJ,iBAAO1e;AAGR,YAAI1E,OAAQqjB,QAAQ,KAAUzuB,EAAAA,IAAI0uB,OAAOD,MAAM,MAAI,IAAI9H,KAAAA;AACvD,YAAItb,QAAUojB,MAAMzU,UAAU/Y,UAAUjB,IAAIiB,UAAgBjB,CAAAA,IAAI0uB,OAAOD,MAAMzU,UAAU/Y,MAAAA,EAAS0lB,KAEhG;AAAA,YAAIvb,QAAQC;AACX,iBAAOyE;AAAAA,MACR;AAAA,IACD;AAEDA,UAAIA,IAAIxN;AAAAA,EACR;AACD,SAAO;AACR;AAIA,SAASqsB,UAAUrjB,MAAAA;AAClB,MAAInJ,UAAU,OACb+d,aAAa;AACd,MAAG5lB,OAAO0J,kBAAiB;AAC1B,QAAI7D,QAAQ7F,OAAO0J,iBAAiBsH,MAAM,IAAA;AAC1CnJ,cAAUhC,MAAM,SAChB+f;AAAAA,iBAAa/f,MAAM,YACrB;AAAA,EAAA,WAAUmL,KAAKsjB,cAAa;AAC1BzsB,cAAUmJ,KAAKsjB,aAAa,SAC5B1O;AAAAA,iBAAa5U,KAAKsjB,aAAa,YAC/B;AAAA,EAAA;AAED,MAAIC,gBAAgB;AACpB,MAAIC,mBAAmBP,UAAU,EAAC1gB,QAAOvC,KAAAA,GAAO,mBAAmB,KAAA;AACnE,MAAGwjB,kBAAiB;AACnBD,oBAAmBC,CAAAA,EAAAA,iBAAiB3uB,MAAMC,UAAU;AAAA,EACpD;AACDyuB,kBAAgBA,iBAAmBvjB,CAAAA,KAAiB;AAEpD,SAAQnJ,WAAW,UAAU+d,cAAc,YAAA,CAAa2O;AACzD;AAEA,SAASE,uBAAuBzjB,MAAAA;AAC/B,SAAQM,CAAAA,MAAMN,KAAKkB,aAAa,gBAAiBlB,KAAKkB,aAAa,UAAY,IAAA,KAAK;AACrF;AAEA,SAASwiB,QAAQ1jB,MAChB;AAAA,MAAI2jB,cAAc,EAAC9xB,GAAK,MAAM+xB,MAAQ,KAAA;AACtC,MAAGD,YAAY3jB,KAAK6jB,SAASC,YAAAA,CAAAA,GAAe;AAC3C,WAAA,CAAA,CAAS9jB,KAAKkB,aAAa;EAC3B;AACD,SAAO;AACR;AAEA,SAAS6iB,UAAU/jB,MAClB;AAAA,MAAIgkB,aAAa,EAACC,OAAQ,MAAMthB,QAAS,MAAMuhB,UAAW,MAAM9wB,QAAS,MAAMyL,QAAS,KAAA;AACxF,MAAGmlB,WAAWhkB,KAAK6jB,SAASppB,YAAe,CAAA,GAAA;AAC1C,YAAQuF,KAAKmkB,aAAa,UAC1B;AAAA,EAAA;AAED,SAAO;AACR;AAGA,SAASC,kBAAkBrtB,MAC1B;AAAA,MAAIstB,QAAQttB,KAAKggB,iBAAiB,CACjC,WACA,cACA,SACA,UACA,YACA,UACA,UACA,UACA,SACA,cACA,mBAAA,EACCvlB,KAAK,IAAA,CAAA;AAEP,MAAI8yB,aAAa9uB,MAAM4iB,UAAU6C,MAAM7S,KAAKic,OAAO,CAEnD;AAAA,WAAQ3uB,IAAI,GAAGA,IAAI4uB,WAAW3uB,QAAQD,KAAI;AACzC4uB,eAAW5uB,CAAG6uB,EAAAA,YAAY7uB;AAAAA,EAI1B;AAED4uB,aAAWE,KAAK,SAAS3yB,GAAGC,GAAAA;AAC3B,QAAGD,EAAEgH,aAAa,KAAK/G,EAAE+G,aAAa,GAAE;AACvC,aAAO;AAAA,IACP;AACD,QAAGhH,EAAEgH,aAAa,KAAK/G,EAAE+G,aAAa,GAAE;AACvC,aAAA;AAAA,IACA;AAED,QAAIhH,EAAEgH,aAAa/G,EAAE+G,UAAS;AAE7B,aAAOhH,EAAE0yB,YAAYzyB,EAAEyyB;AAAAA,IACvB;AACD,QAAI1yB,EAAEgH,WAAW/G,EAAE+G,UAAU;AAC5B,aAAQ;AAAA,IACR;AACD,WAAO;AAAA,EACT,CAAA;AAEC,WAAQnD,IAAI,GAAGA,IAAI4uB,WAAW3uB,QAAQD,KAAI;AACzC,QAAIsK,OAAOskB,WAAW5uB,CAAAA;AACtB,QAAI+uB,WAAWhB,uBAAuBzjB,IAAU+jB,KAAAA,UAAU/jB,IAAS0jB,KAAAA,QAAQ1jB,IAAUqjB,MAAAA,UAAUrjB;AAC/F,QAAIykB,CAAAA,SAAQ;AACXH,iBAAW1M,OAAOliB,GAAG,CACrBA;AAAAA;AAAAA,IACA;AAAA,EACD;AACD,SAAO4uB;AACR;AAGA,SAASI,uBACR;AAAA,SAAO92B,SAAS6jB,KAAKkT,oBAAoB/2B,SAAS6jB,KAAKmT;AACxD;AAOA,SAASC,mBAAAA;AACR,MAAIC,gBAAgBl3B,SAASk3B;AAC7B,MAAIA,cAAc/B,YAAY;AAC7B+B,oBAAgBA,cAAc/B,WAAW+B;AAAAA,EACzC;AACD,MAAIA,kBAAkBl3B,SAASM,QAAQN,SAASm3B,cAAc;AAC7DD,oBAAgBl3B,SAASm3B,aAAeC,EAAAA,aAAap3B,SAASM;AAAAA,EAC9D;AAED,SAAO42B;AACR;AAOA,SAASG,YAAY7yB,SAAAA;AACpB,MAAKA,CAAAA,SAAS;AACb,WAAOxE,SAASM;AAAAA,EAChB;AACD,MAAKw2B,CAAAA,qBAAAA,GAAwB;AAC5B,WAAO92B,SAASM;AAAAA,EAChB;AACD,SAAOkE,QAAQ4E,eAAe5E,UAAUA,QAAQ4E,aAAa;AAC5D,QAAI5E,mBAAmB8yB,YAAY;AAClC,aAAO9yB,QAAQ+yB;AAAAA,IACf;AAAA,EACD;AACD,SAAOv3B,SAASM;AACjB;AAEA,SAASk3B,gBAAgBhzB,SACxB;AAAA,SAAA,CAAA,CAAS6yB,YAAY7yB,OACtB;AAAA;AAEA,MAAeizB,cAAA,EAOdxb,iBAAiB,SAASA,gBAAgByb;AACzC,SAAOv3B,KAAKw3B,UAAUD,UAAAA,EAAYxlB;AAClC,GAODgK,gBAAgB,SAASA,eAAewb,YAAAA;AACvC,SAAOv3B,KAAKw3B,UAAUD,UAAAA,EAAY1kB;AAClC,GAED4kB,cAAc,SAASA,aAAaxD,MACnC;AAAA,MAAIphB,MAAI,GAAGd,OAAK;AAChB,SAAMkiB,MAAM;AACXphB,UAAMA,MAAMmS,SAASiP,KAAKziB,SAC1BO;AAAAA,WAAOA,OAAOiT,SAASiP,KAAKO,UAC5BP;AAAAA,WAAOA,KAAKQ;AAAAA,EACZ;AACD,SAAO,EAAC5hB,KAAUd,KAClB;AAAA,GAED2lB,eAAe,SAASA,cAAczD,MACrC;AAAA,MAAIG,MAAMH,KAAKE,sBAEf;AAAA,MAAIthB,MAAM,GACTd,OAAO;AAGR,MAAA,CAAK,OAAO4lB,KAAKC,UAAUC,SAAAA,GAAY;AACtC,QAAI13B,OAAON,SAASM;AACpB,QAAIk0B,UAAUx0B,SAASwJ;AACvB,QAAIqS,YAAYza,OAAOqzB,eAAeD,QAAQ3Y,aAAavb,KAAKub;AAChE,QAAIH,aAAata,OAAOszB,eAAeF,QAAQ9Y,cAAcpb,KAAKob;AAClE,QAAII,YAAY0Y,QAAQ1Y,aAAaxb,KAAKwb,aAAa;AACvD,QAAIH,aAAa6Y,QAAQ7Y,cAAcrb,KAAKqb,cAAc;AAE1D3I,UAAOuhB,IAAIvhB,MAAO6I,YAAYC;AAC9B5J,WAAOqiB,IAAIriB,OAAOwJ,aAAaC;AAAAA,EAClC,OAAQ;AAIL,QAAInE,QAAQxX,SAASC,cAAc;AACnCuX,UAAMvQ,MAAMf,WAAS;AACrBsR,UAAMvQ,MAAMiL,OAAK;AACjBsF,UAAMvQ,MAAM+L,MAAI;AAChBwE,UAAMvQ,MAAMF,QAAM;AAClByQ,UAAMvQ,MAAMC,SAAS;AAErBlH,aAASM,KAAKC,YAAYiX,KAAAA;AAC1B,QAAIygB,WAAWzgB,MAAM8c,sBAAAA;AACrBthB,UAAOuhB,IAAIvhB,MAAMilB,SAASjlB;AAC1Bd,WAAOqiB,IAAIriB,OAAO+lB,SAAS/lB;AAE3BsF,UAAMpO,WAAWiC,YAAYmM,KAC7B;AAAA,EAAA;AAED,SAAO,EAAExE,KAAKJ,KAAK+G,MAAM3G,GAAMd,GAAAA,MAAMU,KAAK+G,MAAMzH;AAChD,GAEDylB,WAAW,SAASA,UAAUvD,MAC7B;AAAA,MAAIA,KAAKE,uBAAuB;AAC/B,WAAOn0B,KAAK03B,cAAczD,IAC7B;AAAA,EAAA,OAAS;AACN,WAAOj0B,KAAKy3B,aAAaxD,IAAAA;AAAAA,EACzB;AACD,GAEDpd,SAAS,SAASxS,SAAS0zB,UAAAA;AAC1B,OAAI1zB,WAAY0zB,CAAAA,UAAS;AACxB,WAAO;AAAA,EACP;AACD,SAAOlhB,QAAQxS,SAAS0zB,QACxB;AAAA,GACDC,aAAa,SAASC,SAASC,eAAAA;AAC9B,MAAGA,cAAcC,aAAY;AAC5BD,kBAAcjvB,WAAWqI,aAAa2mB,SAASC,cAAcC,WAAAA;AAAAA,EAChE,OAAO;AACJD,kBAAcjvB,WAAW7I,YAAY63B,OACrC;AAAA,EAAA;AACD,GACD1U,QAAQ,SAAStR,MAChB;AAAA,MAAIA,QAAQA,KAAKhJ,YAAY;AAC5BgJ,SAAKhJ,WAAWiC,YAAY+G,IAC5B;AAAA,EAAA;AACD,GACDmmB,WAAW,SAASC,OAAOC,QAC1B;AAAA,SAAOA,OAAOC,SAASF,KAAAA;AACvB,GACDhC,mBACAzB,cACAM,WACAgC,aACAG,iBACAV,sBACAG,kBACApC,0BACAI,eACAH,gBAAAA;AAGD,IAAI9d;AACJ,IAAG2hB,QAAQnO,UAAUxT,SAAQ;AAC5BA,YAAU,SAASxS,SAAS0zB,UAAAA;AAC3B,WAAO1zB,QAAQwS,QAAQkhB,QACzB;AAAA,EAAA;AACA,OAAK;AACJ,MAAIU,UAAUD,QAAQnO,UAAUoO,WAAWD,QAAQnO,UAAUqO,qBAAqBF,QAAQnO,UAAUsO;AACpG9hB,YAAU,SAASxS,SAAS0zB,UAAAA;AAC3B,QAAInqB,MAAKvJ;AACT,OAAG;AACF,UAAIo0B,QAAQpe,KAAKzM,KAAImqB,QAAU,GAAA;AAC9B,eAAOnqB;AAAAA,MACP;AACDA,MAAAA,MAAKA,IAAGgrB,iBAAiBhrB,IAAG3E;AAAAA,IAC5B,SAAQ2E,QAAO,QAAQA,IAAGirB,aAAa;AACxC,WAAO;AAAA,EACT;AACA;ACpZA,IAAIC,oBAAAA,OAA2B73B,WAAW;AAI1C,MAAe83B,MAAA,EACd5d,MAAM2d,sBAAsBlB,UAAUC,UAAU9gB,QAAQ,MAAA,KAAW,KAAK6gB,UAAUC,UAAU9gB,QAAQ,SAAA,KAAc,IAClHiiB,OAAOF,sBAAuBG,CAAAA,kBAAkBrB,UAAUC,UAAU9gB,QAAQ,MAAW,KAAA,IACvFmiB,OAAOJ,sBAAsBlB,UAAUC,UAAU9gB,QAAQ,UAAA,KAAe,KAAK6gB,UAAUC,UAAU9gB,QAAQ,SAAa,IAAA,IACtHoiB,OAAOL,sBAAsBlB,UAAUC,UAAU9gB,QAAQ,UAAe,KAAA,KAAK6gB,UAAUC,UAAU9gB,QAAQ,SAAc,KAAA,IACvHqiB,SAASN,qBAAsBlB,UAAUC,UAAU9gB,QAAQ,OAAA,KAAY,GACvEsiB,UAAUP,qBAAsBlB,UAAUC,UAAU9gB,QAAQ,QAAA,KAAa,GACzEuiB,SAASR,sBAAsBlB,UAAUC,UAAU9gB,QAAQ,QAAA,KAAa,KAAK6gB,UAAUC,UAAU9gB,QAAQ,gBAAgB,IACzHwiB,MAAMT,qBAAsBlB,UAAUC,UAAU9gB,QAAQ,SAAc,KAAA,GACtEyiB,QAAQV,qBAAsBlB,UAAUC,UAAUjgB,OAAO,QAAa,KAAA,GACtE6hB,QAAQX,qBAAsBlB,UAAUC,UAAU9gB,QAAQ,MAAU,KAAA,IACpE2iB,QAAUZ,CAAAA,qBAAAA,OAA4BlB,aAAa,YAAA;AChBrC,SAAS71B,SAAOpC,YAE/BA;AAAAA,EAAAA,WAAUkB,aAAa,WAAA;AACtBlB,IAAAA,WAAU8B,UAAU,aAAa,CACjCzB,CAAAA;AAAAA,SAAK25B,SAEL;AAAA,QAAG35B,KAAKgI,YAAW;AAElBhI,WAAKgI,WAAW9H,YAAY;AAAA,IAE5B;AAED,QAAGF,KAAKmtB,iBAAgB;AACvBntB,WAAKmtB;IACL;AAED,QAAGntB,KAAK8pB,eAAc;AACrB9pB,WAAK8pB,cACL;AAAA,IAAA;AAED,QAAG9pB,KAAK45B,OAAO55B,KAAK45B,IAAI/4B,YAAW;AAClCb,WAAK45B,IAAI/4B,WACT;AAAA,IAAA;AAGDb,SAAKwN,gBAAAA;AAEL,aAAQ7F,KAAK3H,MAAK;AACjB,UAAG2H,EAAEoP,QAAQ,GAAA,MAAS,GAAE;AAAA,eAChB/W,KAAK2H,CAAAA;AAAAA,MACZ;AAAA,IACD;AACDhI,IAAAA,WAAUqK,aAAa;AAAA,EACxB;AAEA;ACnCe,SAAQ6vB,YAACC,MACvB;AAAA,MAAA,OAAWA,SAAS,YAAA,OAAmBA,SAAS,UAAU;AACzD,WAAOA;AAAAA,EACP;AACD,MAAIlhB,SAAS;AACb,WAASwQ,OAAO0Q,MAAM;AACrB,QAAIC,aAAa;AACjB,QAAID,KAAKxP,eAAelB,GAAM,GAAA;AAC7B,iBAAW0Q,KAAK1Q,GAAAA,MAAS,UAAU;AAClC2Q,qBAAaC,mBAAmBF,KAAK1Q,GAAAA,CAAAA;AAAAA,MACrC,WAAiB0Q,OAAAA,KAAK1Q,GAAS,MAAA,UAAU;AACzC2Q,qBAAaD,KAAK1Q,GAAAA;AAAAA,MACtB,OAAU;AACN2Q,qBAAaC,mBAAmB3qB,KAAKC,UAAUwqB,KAAK1Q,GACpD,CAAA,CAAA;AAAA,MAAA;AACD2Q,mBAAa3Q,MAAM,MAAM2Q;AAEzB,UAAInhB,OAAOhR,QAAQ;AAClBmyB,qBAAa,MAAMA;AAAAA,MACnB;AACDnhB,gBAAUmhB;AAAAA,IACV;AAAA,EACD;AACD,SAAOnhB;AACR;ACtBe,SAAS7W,SAAOpC,YAAAA;AAE/BA,EAAAA,WAAUs6B,UAAUh5B,OAAOg5B;AAE3B,WAASC,aAAaC,QAAQ3G,MAC7B;AAAA,QAAI5a,SAAS,EACZuhB,OAAQA;AAGT,QAAI3G,KAAK5rB,WAAW,GAAG;AACtB,YAAM,IAAIzE,MAAM,mCAAA;AAAA,IAChB;AACD,QAAIqwB,KAAK5rB,WAAW,GAAG;AACtB,UAAA,OAAW4rB,KAAK,CAAA,MAAO,UAAU;AAChC5a,eAAOwhB,MAAM5G,KAAK,CAAA;AAClB5a,eAAOyhB,QAAQ;AAAA,MAClB,OAAS;AACNzhB,eAAOwhB,MAAM5G,KAAK,CAAA,EAAG4G;AACrBxhB,eAAOyhB,QAAS7G,KAAK,CAAA,EAAG6G,SAAS;AACjCzhB,eAAO7L,WAAWymB,KAAK,CAAA,EAAGzmB;AAC1B6L,eAAO0hB,UAAU9G,KAAK,CAAA,EAAG8G;AAAAA,MACzB;AACD,UAAIH,WAAW,UAAU,OAAO;AAC/B,YAAI3G,KAAK,CAAA,EAAGsG,MAAM;AACjB,qBAAWtG,KAAK,CAAA,EAAGsG,SAAS,UAAU;AACrClhB,mBAAOkhB,OAAOS,YAAU/G,KAAK,CAAGsG,EAAAA,IAAAA;AAAAA,UACrC,OAAW;AACNlhB,mBAAOkhB,OAAOtG,KAAK,CAAA,EAAGsG;AAAAA,UACtB;AAAA,QACL,OAAU;AACNlhB,iBAAOkhB,OAAO;AAAA,QACd;AAAA,MACD;AACD,aAAOlhB;AAAAA,IACP;AAEDA,WAAOwhB,MAAM5G,KAAK,CAAA;AAClB,YAAO2G,QAAAA;AAAAA,MACN,KAAK;AAAA,MACL,KAAK;AACJvhB,eAAO7L,WAAWymB,KAAK,CACvB5a;AAAAA,eAAO0hB,UAAU9G,KAAK,CAAA;AACvB;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AACJ,YAAIA,KAAK,CAAI,GAAA;AACZ,cAAWA,OAAAA,KAAK,CAAO,MAAA,UAAU;AAChC5a,mBAAOkhB,OAAOS,YAAU/G,KAAK,CAAA,CAAA;AAAA,UAClC,OAAW;AACN5a,mBAAOkhB,OAAOtG,KAAK,CACnB;AAAA,UAAA;AAAA,QACL,OAAU;AACN5a,iBAAOkhB,OAAO;AAAA,QACd;AACDlhB,eAAO7L,WAAWymB,KAAK,CACvB5a;AAAAA,eAAO0hB,UAAU9G,KAAK,CACvB;AAAA;AAAA,IAAA;AAED,WAAO5a;AAAAA,EACR;AACAjZ,EAAAA,WAAU66B,OAAO,EAGhBxQ,OAAO,MAGPmQ,QAAQ,OAERM,wBAAwBF,aACxBG,OAAO,SAASZ,MAAAA;AACf,QAAWA,OAAAA,SAAS;AAAU,aAAOA;AAErC,QAAIl6B;AACJk6B,WAAOA,KAAK7iB,QAAQ,UAAS;AAC7B,QAAW0jB,OAAAA,cAAc,eAAgBh7B,CAAAA,WAAUub,KAAKC,MAAM;AAC7Dvb,YAAM,IAAK+6B,YAAaC,gBAAgBd,MAAM,UAAA;AAAA,IAC9C,WAAM,OAAW74B,OAAO45B,kBAAkB,aAAa;AACvDj7B,YAAM,IAAIqB,OAAO45B,cAAc,kBAC/Bj7B;AAAAA,UAAIy6B,QAAQ;AACZz6B,UAAIk7B,QAAQhB,IAAAA;AAAAA,IACZ;AACD,WAAOl6B;AAAAA,EACP,GACDm7B,QAAQ,SAASC,SAASC,KAAKr7B,KAAAA;AAC9B,QAAWq7B,OAAAA,IAAIC,UAAU,eAAeD,IAAIC,SAAS,KAAK;AACzD,UAAIC,MAAQF,CAAAA,IAAIG,cAAep7B,KAAK06B,MAAMO,IAAIh3B,gBAAgBg3B,GAAQA,IAAAA,IAAIG,eAAeH;AACzF,UAAIE,OAAOA,IAAI9xB,oBAAoB,QAAA,CAAS8xB,IAAIpoB,qBAAqB,aAAenL,EAAAA,QAAQ;AAC3F,eAAOuzB,IAAIpoB,qBAAqBioB,OAAAA,EAAS,CACzC;AAAA,MAAA;AAAA,IACD;AACD,QAAIp7B,QAAS;AAAGD,MAAAA,WAAU8B,UAAU,kBAAiB,CAAC,iBAAiBsK,UAAU,CAAA,GAAInM,GACrF,CAAA;AAAA,WAAOC,SAASC,cAAc,KAC9B;AAAA,EAAA,GACDu7B,OAAO,SAASC,UAAUC,QAAAA;AACzB,SAAKA,OAAOzF;AAAUyF,eAASA,OAAOH,eAAeG;AACrD,QAAI57B,WAAUub,KAAKC,MAAM;AACxB,aAAOogB,OAAOC,YAAYF,QAAAA,KAAW,CACxC;AAAA,IAAA,OAAS;AACN,UAAI90B,OAAO,CACX;AAAA,UAAIi1B;AACJ,UAAIC,OAAOH,OAAOI,iBAAeJ,QAAQK,SAASN,UAAUC,QAAQ,MAAMM,YAAYC,UAAU;AAEhG,aAAO,MAAK;AACXL,gBAAQC,IAAIK,YAAAA;AACZ,YAAGN,OAAM;AACRj1B,eAAKkI,KAAK+sB,KACf;AAAA,QAAA,OAAS;AACJ;AAAA,QACA;AAAA,MACD;AACD,aAAOj1B;AAAAA,IACP;AAAA,EACD,GACDw1B,OAAO,SAASz6B,QAAAA;AACf,WAAOvB,KAAKi8B,MACV16B,OAAO44B,UAAU,OAClB54B,OAAO64B,KACP74B,OAAOu4B,QAAQ,IACdv4B,OAAO84B,SAAS,MACjB94B,OAAOwL,UACPxL,OAAO+4B,OAER;AAAA,EAAA,GACD4B,KAAK,SAAS9B,MAAK+B,QAAQ7B,SAAAA;AAC1B,QAAI/4B,SAAS24B,aAAa,OAAOnuB;AACjC,WAAO/L,KAAKg8B,MAAMz6B,MAAAA;AAAAA,EAClB,GACD66B,SAAS,SAAShC,MAAKE;AACtB,QAAI/4B,SAAS24B,aAAa,OAAOnuB,SACjCxK;AAAAA,WAAO84B,QAAQ;AACf,WAAOr6B,KAAKg8B,MAAMz6B,MAClB;AAAA,EAAA,GACD86B,KAAK,SAASjC,MAAKkC,UAAUH,QAAQ7B,SACpC;AAAA,QAAI/4B,SAAS24B,aAAa,OAAOnuB,SAAAA;AACjC,WAAO/L,KAAKg8B,MAAMz6B,MAClB;AAAA,EAAA,GACDg7B,KAAK,SAASnC,MAAK+B,QAAQ7B,SAO1B;AAAA,QAAI/4B,SAAS24B,aAAa,UAAUnuB,SAAAA;AACpC,WAAO/L,KAAKg8B,MAAMz6B,MAAAA;AAAAA,EAClB,GACDi7B,MAAM,SAASpC,MAAKkC,UAAUH,QAAQ7B,SAAAA;AACrC,QAAIvuB,UAAUnE,UAAU,GAAG;AAC1B00B,iBAAW;AAAA,IACd,WAAavwB,UAAUnE,UAAU,YAAY,YAAa,YAAY;AACnEu0B,eAASG;AACTA,iBAAW;AAAA,IACX;AACD,QAAI/6B,SAAS24B,aAAa,QAAQnuB,SAClC;AAAA,WAAO/L,KAAKg8B,MAAMz6B;EAClB,GACDk7B,UAAU,SAASrC,MAAKkC,UAAUhC,SAAAA;AACjCgC,eAAYA,aAAa,OAAO,KAAKnS,OAAOmS,QAE5C;AAAA,QAAI/6B,SAAS24B,aAAa,QAAQnuB,SAAAA;AAClCxK,WAAO84B,QAAQ;AACf,WAAOr6B,KAAKg8B,MAAMz6B,MAAAA;AAAAA,EAClB,GACD06B,OAAO,SAAS9B,QAAQC,MAAKkC,UAAUjC,OAAO8B,QAAQ7B,SACrD;AAAA,WAAO,IAAI36B,WAAUs6B,SAAS,SAASyC,SAASC,QAC/C;AAAA,UAAIznB,IAAY+jB,OAAAA,mBAAmBrmB,WAAcjT,WAAUub,KAAKC,OAAO,IAAI8d,mBAAmB,IAAIh4B,OAAO45B,cAAc;AACvH,UAAI+B,OAAQhF,UAAUC,UAAUgF,MAAM,aAAA,MAAmB,QAAQjF,UAAUC,UAAUgF,MAAM,IAAA,MAAU,QAAQjF,UAAUC,UAAUgF,MAAM,QAAc,MAAA;AAErJ,YAAMxC,OAAO;AACZnlB,UAAElO,iBAAiB,oBAAoB,WAAA;AACtC,cAAKkO,EAAE4nB,cAAc,KAAOF,QAAQ1nB,EAAE4nB,cAAc,GAAI;AACvD,gBAAI5nB,EAAEgmB,UAAU,OAAOhmB,EAAEjR,iBAAiB;AACzC,kBAAKtE,CAAAA,WAAU8B,UAAU,eAAe,CAACyT,CAAAA,CAAAA;AAAK;AAAA;AAE/CnL,uBAAW,WACV;AAAA,kBAAA,OAAW,UAAW,YAAY;AACjCoyB,uBAAOrwB,MAAM7K,QAAQ,CAAC,EAAC87B,QAAO7nB,GAAG8nB,UAAS5C;cAC1C;AACDsC,sBAAQxnB,CACR;AAAA,kBAAA,OAAW,UAAW,YAAY;AACjCinB,yBAAS;AACTjnB,oBAAI;AAAA,cACJ;AAAA,YACD,GAAE,CACH;AAAA,UAAA;AAAA,QACN,CACI;AAAA,MAAA;AAED,UAAIilB,UAAU,SAAUn6B,CAAAA,KAAKgqB,OAAO;AACnCoQ,QAAAA,SAAQA,KAAIrjB,QAAQ,GAAM,KAAA,IAAE,MAAI,OAAK,UAAO,oBAAI1B,QAAO2V,QAAAA,IAAU;AAAA,MACjE;AAED9V,QAAE+nB,KAAK9C,QAAQC,MAAKC,KAAAA;AAEpB,UAAIC,SAAQ;AACX,iBAASlR,OAAOkR;AACfplB,YAAEgoB,iBAAiB9T,KAAKkR,QAAQlR,GACrC,CAAA;AAAA,MAAA,WAAc+Q,OAAOgD,YAAiB,KAAA,UAAUhD,UAAU,SAASA,UAAU,UAAU;AACnFjlB,UAAEgoB,iBAAiB,gBAAgB,mCAAA;AAAA,MACvC,WAAc/C,UAAU,OAAO;AAC3BmC,mBAAW;AAAA,MACX;AAEDpnB,QAAEgoB,iBAAiB,oBAAoB;AAEvChoB,QAAEkoB,KAAKd,QAEP;AAAA,UAAA,CAAKjC;AAAO,eAAO,EAAC0C,QAAO7nB,GAAG8nB,UAAS5C,KAAAA;AAAAA,IAC1C,GAAIxtB,KAAK5M,IACP,CAAA;AAAA,EAAA,GACDq9B,cAAc,SAASrX;AACtB,QAAIA,IAAIjP,QAAQ,GAAA,KAAA;AACf,aAAO;AAAA;AAEP,aAAO;AAAA,EACR,EAGFpX;AAAAA,EAAAA,WAAU29B,QAAQ39B,WAAU66B;AAE5B;AC9Ne,SAASz4B,SAAOpC;AAE/B,MAAI49B,uBAAuB,SAAUC,QAAQC,KAC5C;AAAA,QAAIC,OAAO;AACX,QAAI5mB,OAAO0mB,OAAOX,MAAM,YACxB;AAAA,aAASl1B,IAAI,GAAGA,IAAImP,KAAKlP,QAAQD,KAAK;AACrC,cAAQmP,KAAKnP,CAAAA,GAAAA;AAAAA,QACZ,KAAK;AAAA,QACL,KAAK;AAAM+1B,kBAAQ,iBAAiB/1B,IAAI;AACvC;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAM+1B,kBAAQ,kBAAkB/1B,IAAI;AACxC;AAAA,QACD,KAAK;AAAM+1B,kBAAQ,iBAAiB/1B,IAAI,eAAeA,IAAI;AAC1D;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ+1B,kBAAQ,iBAAiB/1B,IAAI;AAC7B;AAAA,QACD,KAAK;AACJ+1B,kBAAQ,iBAAiB/1B,IAAI;AAC7B;AAAA,QACD,KAAK;AAAM+1B,kBAAQ,iBAAiB/1B,IAAI;AACvC;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAM+1B,kBAAQ,6BAA6B/1B,IAAI;AACnD;AAAA,QACD,KAAK;AAAM+1B,kBAAQ,iBAAiB/1B,IAAI;AACvC;AAAA,QACD,KAAK;AAAM+1B,kBAAQ,mDAAmD/1B,IAAI;AACzE;AAAA,QACD,KAAK;AAAM+1B,kBAAQ,kDAAkD/1B,IAAI;AACxE;AAAA,MAAA;AAAA,IAIF;AACD,QAAIg2B,OAAO;AACX,QAAIF;AAAKE,aAAO,eAAeA,OAAO;AACtC,WAAO,IAAI7K,SAAS,QAAQ,4BAA4B4K,OAAO,sBAAsBC,OAAO,IAC7F;AAAA,EAAA;AACA,MAAIC,kBAAkB,SAAUJ,QAAQC,KAAAA;AACvC,WAAO,SAASr4B,MACf;AAAA,aAAOo4B,OAAOvmB,QAAQ,cAAc,SAAUnT,GAAAA;AAC7C,gBAAQA,GAAAA;AAAAA,UACP,KAAK;AAAM,mBAAO25B,MAAM99B,WAAUyF,KAAKy4B,SAASz4B,KAAK04B,WAAgBn+B,CAAAA,IAAAA,WAAUyF,KAAKy4B,SAASz4B,KAAKgb,QAClG,CAAA;AAAA,UAAA,KAAK;AAAM,mBAAOqd,MAAM99B,WAAUyF,KAAKy4B,SAAUz4B,KAAK24B,YAAgB,IAAA,CAAA,IAAMp+B,WAAUyF,KAAKy4B,SAAUz4B,KAAKkgB,SAAa,IAAA,CAAA;AAAA,UACvH,KAAK;AAAM,mBAAOmY,MAAMr4B,KAAK04B,WAAe14B,IAAAA,KAAKgb,QACjD;AAAA,UAAA,KAAK;AAAM,mBAAOqd,MAAOr4B,KAAK24B,YAAAA,IAAgB,IAAM34B,KAAKkgB,SAAa,IAAA;AAAA,UACtE,KAAK;AAAM,mBAAOmY,MAAM99B,WAAUyF,KAAKy4B,SAASz4B,KAAK44B,eAAAA,IAAmB,OAAOr+B,WAAUyF,KAAKy4B,SAASz4B,KAAKigB,YAAgB,IAAA,GAAA;AAAA,UAC5H,KAAK;AAAM,mBAAOoY,MAAMr4B,KAAK44B,eAAmB54B,IAAAA,KAAKigB,YACrD;AAAA,UAAA,KAAK;AAAM,mBAAOoY,MAAM99B,WAAU0T,OAAOjO,KAAK64B,UAAU74B,KAAK84B,UAAev+B,CAAAA,IAAAA,WAAU0T,OAAOjO,KAAK64B,UAAU74B,KAAK+4B,OAAAA,CAAAA;AAAAA,UACjH,KAAK;AAAM,mBAAOV,MAAM99B,WAAU0T,OAAOjO,KAAKg5B,SAASh5B,KAAK84B,UAAev+B,CAAAA,IAAAA,WAAU0T,OAAOjO,KAAKg5B,SAASh5B,KAAK+4B,OAAAA,CAAAA;AAAAA,UAC/G,KAAK;AAAM,mBAAOV,MAAM99B,WAAU0T,OAAOjO,KAAKi5B,YAAYj5B,KAAK24B,YAAiBp+B,CAAAA,IAAAA,WAAU0T,OAAOjO,KAAKi5B,YAAYj5B,KAAKkgB;UACvH,KAAK;AAAM,mBAAOmY,MAAM99B,WAAU0T,OAAOjO,KAAKk5B,WAAWl5B,KAAK24B,YAAiBp+B,CAAAA,IAAAA,WAAU0T,OAAOjO,KAAKk5B,WAAWl5B,KAAKkgB,SACrH,CAAA;AAAA,UAAA,KAAK;AAAM,mBAAOmY,MAAM99B,WAAUyF,KAAKy4B,UAAUz4B,KAAKm5B,YAAgB,IAAA,MAAM,KAAK,CAAA,IAAK5+B,WAAUyF,KAAKy4B,UAAUz4B,KAAKuU,SAAa,IAAA,MAAM,KAAK,CAC5I;AAAA,UAAA,KAAK;AAAM,mBAAO8jB,OAAQr4B,KAAKm5B,YAAgB,IAAA,MAAM,KAAK,KAAOn5B,KAAKuU,SAAa,IAAA,MAAM,KAAK;AAAA,UAC9F,KAAK;AAAM,mBAAO8jB,MAAMr4B,KAAKm5B,YAAgBn5B,IAAAA,KAAKuU,SAClD;AAAA,UAAA,KAAK;AAAM,mBAAO8jB,MAAM99B,WAAUyF,KAAKy4B,SAASz4B,KAAKm5B,YAAAA,CAAAA,IAAiB5+B,WAAUyF,KAAKy4B,SAASz4B,KAAKuU,SAAAA,CAAAA;AAAAA,UACnG,KAAK;AAAM,mBAAO8jB,MAAM99B,WAAUyF,KAAKy4B,SAASz4B,KAAKo5B,cAAAA,CAAAA,IAAmB7+B,WAAUyF,KAAKy4B,SAASz4B,KAAK4Y,WACrG,CAAA;AAAA,UAAA,KAAK;AAAM,mBAAOyf,MAAOr4B,KAAKm5B,YAAAA,IAAgB,KAAK,OAAO,OAASn5B,KAAKuU,SAAa,IAAA,KAAK,OAAO;AAAA,UACjG,KAAK;AAAM,mBAAO8jB,MAAOr4B,KAAKm5B,YAAgB,IAAA,KAAK,OAAO,OAASn5B,KAAKuU,SAAAA,IAAa,KAAK,OAAO;AAAA,UACjG,KAAK;AAAM,mBAAO8jB,MAAM99B,WAAUyF,KAAKy4B,SAASz4B,KAAKq5B,mBAAmB9+B,WAAUyF,KAAKy4B,SAASz4B,KAAKs5B,WACrG,CAAA;AAAA,UAAA,KAAK;AAAM,mBAAOjB,MAAM99B,WAAUyF,KAAKy4B,SAASl+B,WAAUyF,KAAKu5B,cAAcv5B,IAASzF,CAAAA,IAAAA,WAAUyF,KAAKy4B,SAASl+B,WAAUyF,KAAKw5B,WAAWx5B,IACxI,CAAA;AAAA,UAAA;AAAS,mBAAOtB;AAAAA,QAAAA;AAAAA,MAEpB;IACA;AAAA,EACA;AACA,MAAI+6B,kBAAkB,SAAUrB,QAAQC,KACvC;AAAA,WAAO,SAAUr4B,MAChB;AAAA,UAAI05B,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAC1B,UAAIC,OAAO35B,KAAKy3B,MAAM,mBACtB;AAAA,UAAI/lB,OAAO0mB,OAAOX,MAAM,YAExB;AAAA,eAASl1B,IAAI,GAAGA,IAAImP,KAAKlP,QAAQD,KAAK;AACrC,gBAAQmP,KAAKnP,CAAAA,GAAAA;AAAAA,UACZ,KAAK;AAAA,UACL,KAAK;AACJm3B,gBAAI,CAAKC,IAAAA,KAAKp3B,CAAM,KAAA;AACpB;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AACJm3B,gBAAI,CAAMC,KAAAA,KAAKp3B,CAAM,KAAA,KAAK;AAC1B;AAAA,UACD,KAAK;AACJm3B,gBAAI,CAAKC,IAAAA,KAAKp3B,CAAK,IAAA,KAAKo3B,KAAKp3B,CAAK,IAAA,KAAK,OAAO;AAC9C;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJm3B,gBAAI,CAAA,IAAKC,KAAKp3B,CAAAA,KAAM;AACpB;AAAA,UACD,KAAK;AACJm3B,gBAAI,CAAA,IAAKC,KAAKp3B,CAAAA,KAAM;AACpB;AAAA,UACD,KAAK;AACJm3B,gBAAI,CAAKC,IAAAA,KAAKp3B,CAAM,KAAA;AACpB;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AACJm3B,gBAAI,CAAA,IAAKA,IAAI,CAAA,IAAK,OAAOC,KAAKp3B,CAAAA,KAAM,IAAI+E,YAAAA,KAAiB,OAAO,IAAI;AACpE;AAAA,UACD,KAAK;AACJoyB,gBAAI,CAAKC,IAAAA,KAAKp3B,CAAM,KAAA;AACpB;AAAA,UACD,KAAK;AACJm3B,gBAAI,CAAA,IAAKn/B,WAAU0T,OAAOjO,KAAK45B,iBAAiBD,KAAKp3B,CAAAA,CAAAA,KAAO;AAC5D;AAAA,UACD,KAAK;AACJm3B,gBAAI,CAAKn/B,IAAAA,WAAU0T,OAAOjO,KAAK65B,gBAAgBF,KAAKp3B,CAAAA,CAAAA,KAAO;AAC3D;AAAA,QAAA;AAAA,MAIF;AAED,UAAI81B,KAAK;AACR,eAAO,IAAIpoB,KAAKA,KAAK6pB,IAAIJ,IAAI,CAAIA,GAAAA,IAAI,IAAIA,IAAI,CAAA,GAAIA,IAAI,CAAA,GAAIA,IAAI,CAAA,GAAIA,IAAI,CAAA,CAAA,CAAA;AAAA,MACrE;AAED,aAAO,IAAIzpB,KAAKypB,IAAI,CAAIA,GAAAA,IAAI,CAAIA,GAAAA,IAAI,IAAIA,IAAI,CAAA,GAAIA,IAAI,CAAA,GAAIA,IAAI,CAAA,CAAA;AAAA,IAC9D;AAAA,EACA;AAEA,MAAIK,YAAY;AAChB,GAAA,WAAA;AACC,QACC;AAAA,UAAIrM,SAAS,oBAAA;AAAA,IACb,SAAOhf,GAAAA;AACPqrB,kBAAY;AAAA,IACZ;AAAA,EACD,GACD;AAAA,WAASC;AACR,QAAIxmB,SAAS;AACb,QAAIjZ,WAAU4B,OAAO89B,QAAQ,QAAQ;AACpCzmB,eAASumB;AAAAA,IACX,OAAQ;AACNvmB,eAASjZ,WAAU4B,OAAO89B;AAAAA,IAC1B;AACD,WAAOzmB;AAAAA,EACR;AACAjZ,EAAAA,WAAUyF,OAAO,EAChBtE,MAAK;AACJ,QAAIw+B,IAAI3/B,WAAU0T,OAAOjO,KAAKi5B;AAC9B,QAAInpB,IAAIvV,WAAU0T,OAAOjO,KAAK45B,mBAAmB,CAAA;AACjD,aAASr3B,IAAI,GAAGA,IAAI23B,EAAE13B,QAAQD;AAC7BuN,QAAEoqB,EAAE33B,CAAIA,CAAAA,IAAAA;AAET,QAAI23B,IAAI3/B,WAAU0T,OAAOjO,KAAKk5B;AAC9B,QAAIppB,IAAIvV,WAAU0T,OAAOjO,KAAK65B,kBAAkB,CAAA;AAChD,aAASt3B,IAAI,GAAGA,IAAI23B,EAAE13B,QAAQD;AAC7BuN,QAAEoqB,EAAE33B,CAAAA,CAAAA,IAAIA;AAAAA,EACT,GACD43B,mBAAoB,SAASpF,QAAAA;AAC5B,QAAGA,OAAOvtB,MAAK;AACd,aAAOutB,OAAOvtB,KAAKjN,UAAAA;AAAAA,IACtB,OAAO;AACJ,aAAO,WAAA;AAAY,eAAOw6B,OAAOruB,MAAMnM,YAAWoM,SAAAA;AAAAA;IAClD;AAAA,EACD,GACDiT,WAAU,SAAS5Z,MAAAA;AAClB,QAAIo6B,MAAM,IAAInqB,KAAKjQ,IAAAA;AACnBA,SAAKwU,SAAS,CACdxU;AAAAA,SAAKq6B,WAAW,CAChBr6B;AAAAA,SAAKs6B,WAAW,CAAA;AAChBt6B,SAAKu6B,gBAAgB,CACrB;AAAA,QAAIv6B,KAAKuU,SACPvU,MAAAA,KAAKgb,QAAYof,IAAAA,IAAIpf,QAAahb,KAAAA,KAAKkgB,SAAaka,IAAAA,IAAIla,cAAclgB,KAAKigB,YAAAA,IAAgBma,IAAIna,YAAAA;AAChGjgB,WAAK0U,QAAQ1U,KAAK4lB,QAAAA,IAAY,KAAK,KAAK,OAAQ,KAAK5lB,KAAKuU,SAC3D,EAAA;AAAA,WAAOvU;AAAAA,EACP,GACDuZ,WAAU,SAASvZ,MAAAA;AAClB,YAAQA,KAAK8R,QAAU,IAAA,MAAO9R,KAAK2X,kBAAAA,IAAoB,MAAI;AAAA,EAC3D,GACDqJ,YAAW,SAAShhB,MAAAA;AACnB,QAAIwa,QAAMxa,KAAK+4B,OACf;AAAA,QAAIx+B,WAAU4B,OAAOq+B,iBAAgB;AACpC,UAAIhgB,UAAQ;AAAGA,gBAAM;AAAA;AAChBA;AAAAA,IACL;AACD,WAAO5f,KAAKgf,UAAUhf,KAAK2E,IAAIS,MAAM,KAAEwa,OAAM,KAAA,CAAA;AAAA,EAC7C,GACDigB,aAAY,SAASz6B,MAAAA;AACpBA,SAAK06B,QAAQ,CAAA;AACb,WAAO9/B,KAAKgf,UAAU5Z,IAAAA;AAAAA,EACtB,GACD26B,YAAW,SAAS36B,MACnBA;AAAAA,SAAK46B,SAAS,CAAA;AACd,WAAOhgC,KAAK6/B,YAAYz6B,IAAAA;AAAAA,EACxB,GACD0gB,WAAU,SAAS1gB,MAClB;AAAA,WAAOpF,KAAKgf,UAAU5Z,IACtB;AAAA,EAAA,GACD66B,WAAU,SAAS76B,MAAM86B,KACxB;AAAA,QAAIC,QAAQ,IAAI9qB,KAAKjQ,KAAK8R,QAE1BipB,CAAAA;AAAAA,UAAML,QAAQK,MAAM/f,QAAY8f,IAAAA,GAAAA;AAGhC,QAAGA,OAAOztB,KAAK+G,MAAM0mB,GAAAA,KAAQA,MAAM,GAAE;AACpC,UAAIE,YAAaD,CAAAA,QAAAA,CAAS/6B,MACzBi7B,OAAOD,aAAa,KAAG,KAAG,KAAG;AAC9B,UAAGC,QAAQj7B,KAAK2X,kBAAuBojB,KAAAA,MAAMpjB,kBAAoB,GAAA;AAChE,YAAIujB,QAAQD,QAAQ,KAAI,KAAK;AAC7BF,cAAMrmB,QAAQqmB,MAAMnV,QAAAA,KAAa,KAAKsV,SAAS,KAAK,KAAK,GAAA;AAAA,MACzD;AAAA,IACD;AAED,QAAIJ,OAAO,MAAO96B,CAAAA,KAAKuU,cAAcwmB,MAAMxmB,SAAAA,OACzCwmB,MAAM/f,QAAAA,IAAYhb,KAAKgb,QAAAA,KAAa+f,MAAM7a,SAAAA,IAAalgB,KAAKkgB,SAAc6a,KAAAA,MAAM9a,YAAgBjgB,IAAAA,KAAKigB,YACtG8a;AAAAA,YAAMrmB,QAAQqmB,MAAMnV,QAAY,IAAA,KAAK,KAAK,OAAQ,KAAKmV,MAAMxmB,SAC9D,EAAA;AAAA,WAAOwmB;AAAAA,EACP,GACDx7B,KAAI,SAASS,MAAK86B,KAAIzgC,MAAAA;AACrB,QAAI0gC,QAAM,IAAI9qB,KAAKjQ,KAAK8R,QACxB,CAAA;AAAA,YAAOzX,MACN;AAAA,MAAA,KAAK;AACJ0gC,gBAAQxgC,WAAUyF,KAAK66B,UAAUE,OAAOD,GAAAA;AACxC;AAAA,MACD,KAAK;AACJC,gBAAQxgC,WAAUyF,KAAK66B,UAAUE,OAAOD,MAAM,CAC9C;AAAA;AAAA,MACD,KAAK;AAASC,cAAMH,SAASG,MAAM7a,SAAW4a,IAAAA,GAAAA;AAAM;AAAA,MACpD,KAAK;AAAQC,cAAMI,QAAQJ,MAAM9a,YAAAA,IAAc6a,GAAM;AAAA;AAAA,MACrD,KAAK;AAKJC,cAAMrmB,QAAQqmB,MAAMnV,QAAYkV,IAAAA,MAAM,KAAK,KAAK,GAChD;AAAA;AAAA,MACD,KAAK;AACJC,cAAMrmB,QAAQqmB,MAAMnV,QAAAA,IAAYkV,MAAM,KAAK,GAC3C;AAAA;AAAA,MACD;AACC,eAAOvgC,WAAUyF,KAAK,SAAO3F,IAAM2F,EAAAA,MAAK86B,KAAIzgC,IAAAA;AAAAA,IAAAA;AAE9C,WAAO0gC;AAAAA,EACP,GACDtC,UAAS,SAAS2C,KACjB;AAAA,QAAIA,MAAI;AAAI,aAAO,MAAIA;AACvB,WAAOA;AAAAA,EACP,GACD1M,MAAK,SAAS1uB,MAAAA;AACb,WAAO,IAAIiQ,KAAKjQ,KAAK8R,QACrB,CAAA;AAAA,EAAA,GACDupB,aAAY,SAASjD,QAAOC,KAC3B;AAAA,QAAI2B,OAAU,GAAA;AACb,aAAOxB,gBAAgBJ,QAAOC,GAAAA;AAAAA,IAC9B;AAEDD,aAAOA,OAAOvmB,QAAQ,cAAa,SAASnT,GAAAA;AAC3C,cAAOA,GAAAA;AAAAA,QACN,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB;AAAS,iBAAOA;AAAAA,MAEpB;AAAA,IAAA,CAAA;AACE,QAAI25B;AAAKD,eAAOA,OAAOvmB,QAAQ,cAAa,aAC5C;AAAA,QAAIoW,OAAO,IAAIyF,SAAS,QAAO,aAAY0K,SAAO,IAAA;AAElD,WAAO79B,WAAUyF,KAAKm6B,kBAAkBlS,IAAAA;AAAAA,EACxC,GACDqT,aAAY,SAASlD,QAAQC,KAAKkD,aAAAA;AACjC,QAAIC,qBAAqBxB,OAAAA,IAAWP,kBAAkBtB;AACtD,QAAIsD,mBAAmBD,mBAAmBpD,QAAQC,GAGlD;AAAA,QAAIqD,iBAAiB;AAIrB,QAAIC,iBAAiB;AAGrB,QAAIC,iBAAiB;AAErB,QAAIC,UAAU;AAEd,QAAIC,YAAY,SAAUC,SAAAA;AACzB,aAAOL,eAAenJ,KAAKxN,OAAOgX,OAAAA,CAAAA;AAAAA,IACrC;AAEE,QAAIC,YAAY,SAAUD;AACzB,aAAOJ,eAAepJ,KAAKxN,OAAOgX,OACrC,CAAA;AAAA,IAAA;AACE,QAAIE,YAAY,SAAUF,SAAAA;AACzB,aAAOH,eAAerJ,KAAKxN,OAAOgX,OACrC,CAAA;AAAA,IAAA;AACE,QAAIG,YAAY,SAAUH,SACzB;AAAA,aAAOF,QAAQtJ,KAAKwJ,OACvB;AAAA,IAAA;AAEE,QAAII,WAAWX,mBAAmB,qBAAqBnD,GAAAA;AACvD,QAAI+D,WAAWZ,mBAAmB,qBAAqBnD;AACvD,QAAIgE,WAAWb,mBAAmB,qBAAqBnD,GAEvD;AAAA,WAAO,SAAUlP,YAAAA;AAEhB,WAAKoS,eAAgBhhC,CAAAA,WAAU4B,OAAOmgC,oBAAoB;AACzD,YAAInT,cAAcA,WAAWqQ,YAAY;AACxC,iBAAO,IAAIvpB,KAAKkZ,UACrB;AAAA,QAAA,WAAsBA,OAAAA,eAAe,UAAU;AAC1C,iBAAO,IAAIlZ,KAAKkZ,UACrB;AAAA,QAAA,WAAe2S,UAAU3S,aAAa;AACjC,iBAAOgT,SAAShT,UAAAA;AAAAA,QACrB,WAAe6S,UAAU7S,UAAAA,GAAa;AACjC,iBAAOiT,SAASjT,UAAAA;AAAAA,QACrB,WAAe8S,UAAU9S,UAAAA,GAAa;AACjC,iBAAOkT,SAASlT,UACrB;AAAA,QAAA,WAAe+S,UAAU/S,UAAa,GAAA;AACjC,iBAAO,IAAIlZ,KAAKkZ,UAChB;AAAA,QAAA;AAAA,MACD;AAED,aAAOsS,iBAAiBxmB,KAAK1a,YAAW4uB,UAC3C;AAAA,IAAA;AAAA,EACE,GACDqQ,YAAY,SAASuB,OAAAA;AACpB,QAAIA,CAAAA;AAAO,aAAO;AAClBA,YAAQngC,KAAKgf,UAAU,IAAI3J,KAAK8qB,KAChC,CAAA;AAAA,QAAIwB,OAAOxB,MAAMhC,OAAAA;AACjB,QAAIwD,SAAS,GAAG;AACfA,aAAO;AAAA,IACP;AACD,QAAIC,iBAAiB,IAAIvsB,KAAK8qB,MAAMjpB,QAAAA,CAAAA;AACpC0qB,mBAAe9B,QAAQK,MAAM/f,QAAa,KAAA,IAAIuhB,KAC9C;AAAA,QAAIE,cAAcD,eAAevc,YACjC;AAAA,QAAIyc,eAAervB,KAAK+G,OAAQooB,eAAe5W,QAAY,IAAA,IAAI3V,KAAKwsB,aAAa,GAAG,CAAG7W,EAAAA,QAAAA,KAAa,KACpG;AAAA,QAAI+W,cAAc,IAAItvB,KAAKkI,MAAOmnB,eAAe,CACjD;AAAA,WAAOC;AAAAA,EACP,GACDpD,eAAe,SAASwB,OACvB;AAAA,WAAOngC,KAAK4+B,WAAW5+B,KAAKgiC,eAAe7B,KAAAA,CAAAA;AAAAA,EAC3C,GACD6B,gBAAgB,SAAS58B,MAAAA;AACxB,WAAO,IAAIiQ,KAAKjQ,KAAK44B,eAAAA,GAAkB54B,KAAK24B,YAAAA,GAAe34B,KAAK04B,WAAAA,GAAc14B,KAAKm5B,YAAen5B,GAAAA,KAAKo5B,cAAiBp5B,GAAAA,KAAKq5B,cAC7H,CAAA;AAAA,EAAA,EAAA;AAGF;ACzWe,SAAS18B,SAAOpC,YAkB/BA;AAAAA,EAAAA,WAAU4B,SAAO,EAChB0gC,cAAc,YACdC,YAAY,SACZC,WAAW,YACXC,WAAW,MACXjU,UAAU,SACVkU,WAAW,SACXzZ,WAAW,MAEX0Z,aAAa,kBACbC,UAAU,kBACVb,oBAAoB,OACpBvlB,iBAAgB,MAChB7C,WAAW,GACXkpB,uBAAuB,WACvBC,4BAA4B,WAC5BC,WAAW,GACXC,oBAAoB,GACpBC,uBAAuB,MACvB59B,kBAAkB,MAClB46B,iBAAiB,MACjBlmB,YAAY,GACZqE,WAAW,IACXpH,UAAU,OACVsP,aAAa,MACbC,WAAW,MACX2c,aAAa,MACbjiB,iBAAiB,MACjB1G,iBAAiB,MACjBC,qBAAqB,MACrBuH,gBAAgB,MAChBC,mBAAmB,MACnBxT,QAAQ,MACR6M,cAAc,IACd8nB,qBAAoB,OACpBC,oBAAmB,OAEnBC,qBAAqB,OACrBC,uBAAuB,MACvB1zB,KAAI,OAEJ2zB,uBAAuB,OACvBC,qBAAqB,GACrBC,sBAAsB,IAEtB1c,WAAU,MACV2c,wBAAwB,GAExBC,eAAe,MACfpgB,iBAAiB,MACjBtO,QAAQ,MAER2uB,YAAY,OACZC,OAAM,MACNC,WAAU,MACVC,YAAW,KACXC,mBAAmB,OACnBC,qBAAoB,MAEpBjnB,kBAAkB,OAElBknB,gBAAgB,MAChB9jB,gBAAgB,OAChB+jB,YAAY,CAAC,aAAa,aAAA,GAC1BC,cAAc,CAAC,gBAAgB,aAAa,aAC5CC,GAAAA,cAAc,CAAC,gBAAgB,gBAAA,GAC/BC,eAAe,CAAC,gBAChB3a,GAAAA,UAAU,EACTD,UAAU,CACT,EAACrc,MAAM,eAAeuc,QAAQ,QAAQ7nB,MAAM,YAAYipB,OAAO,QAC/D,EAAC3d,MAAM,QAAQjG,QAAQ,IAAIrF,MAAM,QAAQ6nB,QAAQ,aAGnD2a,2BAA2B,MAC3BvgB,aAAa,OAEbzf,YAAY,SACZigC,cAAc,GACdC,sBAAsB,MACtBr5B,qBAAqB,MACrBqE,2BAA2B,MAE3BiwB,KAAK,QACLgF,iBAAiB,iBACjB7iC,aAAa,KAGd7B;AAAAA,EAAAA,WAAU4B,OAAOyiC,aAAaM,WAAW3kC,WAAU4B,OAAOyiC,aAAavgC,KAAAA;AACvE9D,EAAAA,WAAU4B,OAAO0iC,cAAcK,WAAW3kC,WAAU4B,OAAO0iC,cAAcxgC,KAEzE9D;AAAAA,EAAAA,WAAU4kC,WAAW,EACpBC,WAAW,SAASA,UAAUp/B,MAAAA;AAC7B,QAAIs1B,QAAQ/6B,WAAU0iB,UAAUoiB,YAAY9kC,WAAU0iB,UAAU4G;AAChE,WAAOyR,MAAMt1B,IAAAA;AAAAA,EACb,GACDs/B,YAAY,SAASA,WAAWt/B,MAC/B;AAAA,QAAIo4B,SAAS79B,WAAU0iB,UAAUsiB,cAAchlC,WAAU0iB,UAAUkD;AACnE,WAAOiY,OAAOp4B;EACd,EAGFzF;AAAAA,EAAAA,WAAU0iB,YAAU,CAAA;AACpB1iB,EAAAA,WAAU+P,iBAAe,WAAA;AAIxB,QAAI0J,IAAEzZ,WAAUyF,KAAKq7B;AACrB,QAAIz8B,IAAErE,WAAU4B;AAChB,QAAIsyB,IAAI,SAAS/vB,GAAEC,GAClB;AAAA,eAASC,MAAKD;AACb,YAAKD,CAAAA,EAAEE,EAAIF;AAAAA,YAAEE,EAAGD,IAAAA,EAAEC,EACrB;AAAA,IAAA;AACC6vB,MAAEl0B,WAAU0iB,WAAU,EACrB8L,UAAS/U,EAAEpV,EAAEi+B,YACbC,GAAAA,YAAW9oB,EAAEpV,EAAEk+B,UAAAA,GACfE,WAAU,SAASwC,IAAGC,IAAAA;AACrB,UAAG7gC,EAAEuL,KAAK;AACT,eAAO5P,WAAU0iB,UAAU8L,SAASxuB,WAAUyF,KAAKT,IAAIkgC,QAAM,KAAA,CAAA,IAAQ,cAAYllC,WAAU0iB,UAAU8L,SAASyW,EAC9G;AAAA,MAAA;AACD,aAAOjlC,WAAU0iB,UAAU8L,SAASyW,EAAAA,IAAI,cAAYjlC,WAAU0iB,UAAU8L,SAASxuB,WAAUyF,KAAKT,IAAIkgC,IAAAA,IAAM,KAAA,CAAA;AAAA,IAC1G,GACDC,gBAAe1rB,EAAEpV,EAAEi+B,YAAAA,GACnBxc,gBAAgB,SAASrgB,MACxB;AAAA,aAAO;AAAA,IACP,GACDsgB,iBAAiB,SAAStgB,MAAAA;AACzB,aAAO;AAAA,IACP,GAED2/B,kBAAiB3rB,EAAEpV,EAAEo+B,YACrB4C,iBAAgB5rB,EAAEpV,EAAEmqB,QAAAA,GACpB7G,YAAWlO,EAAEpV,EAAEq+B,SAAAA,GACf4C,aAAY7rB,EAAEpV,EAAEq+B,SAAAA,GAChB6C,YAAW9rB,EAAEpV,EAAEq+B,SAAAA,GACfzZ,WAAUxP,EAAEpV,EAAE4kB,SAEduc,GAAAA,aAAa/rB,EAAEpV,EAAEm+B,SAGjB5c,GAAAA,aAAanM,EAAEpV,EAAEs+B,aAAat+B,EAAEu/B,UAAAA,GAChCta,YAAWtpB,WAAUyF,KAAKs7B,YAAY18B,EAAEs+B,aAAYt+B,EAAEu/B,UACtDhB,GAAAA,UAAS5iC,WAAUyF,KAAKs7B,YAAY18B,EAAEu+B,UAAU,OAAO,KACvD6C,GAAAA,cAAa,SAASrsB,OAAMC,KAAI1E,IAAAA;AAE/B,UAAGA,GAAGc,UAAU,WAAWd,GAAGc,UAAU,YAAW;AAClD,eAAOzV,WAAU0iB,UAAU6iB,WAAWnsB,KAC1C;AAAA,MAAA,OAAQ;AACJ,eAAOpZ,WAAU0iB,UAAU6iB,WAAWnsB,KAAO,IAAA,QAAMpZ,WAAU0iB,UAAU6iB,WAAWlsB,GAAAA;AAAAA,MAClF;AAAA,IACD,GACD0V,YAAW,SAAS3V,OAAMC,KAAI1E,IAAAA;AAC7B,aAAOA,GAAG3S;AAAAA,IACV,GACD0jC,aAAY,SAAStsB,OAAMC,KAAI1E,IAAAA;AAC9B,aAAO;AAAA,IACP,GACDiU,kBAAiB,SAASnP,IACzB;AAAA,aAAO;AAAA,IACP,GACDwM,iBAAgB,SAASxM,IACxB;AAAA,aAAO;AAAA,IACP,GACDksB,gBAAe,SAASvsB,OAAMC,KAAI1E,IAAAA;AACjC,aAAO3U,WAAU0iB,UAAU6iB,WAAWnsB,KACtC;AAAA,IAAA,GACDwsB,gBAAe,SAASxsB,OAAMC,KAAI1E;AACjC,aAAOA,GAAG3S;AAAAA,IACV,GACD6jC,mBAAoB,SAASpgC,MAAM6e,OAAAA;AAClC,aAAO,kBAAgBA,QAAM;AAAA,IAC7B,GACDwhB,mBAAoB,SAAS1sB,OAAOC,KAAKpT;AACxC,aAAO;AAAA,IACP,GACD8/B,qBAAsB,SAAS3sB,OAAOC,KAAKpT,QAAAA;AAC1C,aAAO;AAAA,IACP,GAED+/B,qBAAqBhmC,WAAUyF,KAAKq7B,YAAY,gBAAA,GAChDmF,cAAc,SAAS7sB,OAAOC,KAAKpT,QAAAA;AAClC,aAAO,mBAAmBA,OAAMjE,OAAO,6BAA6BhC,WAAU0iB,UAAUsjB,oBAAoB5sB,KAAAA,IAAS,2BAA2BpZ,WAAU0iB,UAAUsjB,oBAAoB3sB;IACxL,GAED6sB,gBAAgBzsB,EAAE,OAAA,GAClB0sB,qBAAqB1sB,EAAE,IACvB2sB,GAAAA,eAAe3sB,EAAE,IAAA,GACjB4sB,eAAe5sB,EAAE,UAGlBpZ,EAAAA,CAAAA;AAAAA,SAAKyB,UAAU,oBAAmB;EACnC;AAGA;ACnNe,SAASM,SAAOpC,YAE/BA;AAAAA,EAAAA,WAAUsmC,UAAU,CAAA;AACpBtmC,EAAAA,WAAUg6B,WAAW,WACpB35B;AAAAA,SAAKimC,UAAU;AACfjmC,SAAKkmC,UAAU;AAEflmC,SAAK4V,WAAW;AAChB5V,SAAK6U,aAAa;AAClB7U,SAAKoW,WAAW;AAChBpW,SAAKsW,aAAa;AAClBtW,SAAK4c,YAAY;AACjB5c,SAAKgW,aAAa;AAElBhW,SAAKmmC,WAAAA;AACLnmC,SAAKyB,UAAU,cAAc,CAAA,CAAA;AAAA,EAC9B;AACA9B,EAAAA,WAAUqM,WAAW,SAASuN,YAAYM,UAAUlY,MAAM5B,KAAIqmC,YAAAA;AAC7D,SAAKr6B,UAAUnE;AACd,aAAO5H,KAAK8Y,YACb;AAAA,QAAIxE,KAAKiF;AACT,QAAIxN,UAAUnE,UAAU,GAAG;AAC1B0M,WAAK8xB,cAAc;AACnB9xB,SAAGiF,aAAaA;AAChBjF,SAAGuF,WAAWA;AACdvF,SAAG3S,OAAOA;AACV2S,SAAGvU,KAAKA;AAAAA,IACR;AACDuU,OAAGvU,KAAKuU,GAAGvU,MAAMJ,WAAUoa,IAC3BzF;AAAAA,OAAG3S,OAAO2S,GAAG3S,QAAQ;AAErB,QAAW2S,OAAAA,GAAGiF,cAAc;AAAWjF,SAAGiF,aAAavZ,KAAKqiB,UAAUkgB,SAASjuB,GAAGiF;AAClF,QAAWjF,OAAAA,GAAGuF,YAAY;AAAWvF,SAAGuF,WAAW7Z,KAAKqiB,UAAUkgB,SAASjuB,GAAGuF,QAAAA;AAC9E,QAAIT,KAAKpZ,KAAKuB,OAAO8X,kBAAkBrZ,KAAKuB,OAAO+X,aAAa;AAChE,QAAIhF,GAAGiF,WAAWrC,QAAAA,KAAa5C,GAAGuF,SAAS3C,QAC1C5C;AAAAA,SAAGuF,SAASC,QAAQxF,GAAGuF,SAAS3C,QAAYkC,IAAAA,CAAAA;AAE7C9E,OAAGiF,WAAWomB,gBAAgB,CAC9BrrB;AAAAA,OAAGuF,SAAS8lB,gBAAgB,CAE5BrrB;AAAAA,OAAG8F,SAASpa,KAAK4hB,cAActN,EAE/B;AAAA,QAAIkN,SAAUxhB,CAAAA,KAAKimC,QAAQ3xB,GAAGvU;AAC9BC,SAAKimC,QAAQ3xB,GAAGvU,EAAAA,IAAMuU;AACtBtU,SAAKqmC,cAAc/xB,EAAAA;AACnB,SAAKtU,KAAKga;AACTha,WAAKyB,UAAU+f,SAAS,iBAAiB,kBAAkB,CAAClN,GAAGvU,IAAIuU,EAAAA,CAAAA;AACpE,WAAOA,GAAGvU;AAAAA,EACX;AACAJ,EAAAA,WAAUuY,cAAc,SAASnY,KAAIumC,QAAAA;AACpC,QAAIhyB,KAAKtU,KAAKimC,QAAQlmC,GACtB;AAAA,QAAA,CAAKumC,YAAYtmC,KAAKyB,UAAU,uBAAuB,CAAC1B,KAAIuU,EAAAA,CAAAA,KAAAA,CAAStU,KAAKyB,UAAU,gCAAgC,CAAC1B,KAAIuU,EAAAA,CAAAA;AACxH;AACD,QAAIA,IAAI;AACP,UAAG3U,WAAUqG,SAAAA,EAAWiQ,aAAalW,KAAG;AACvCJ,QAAAA,WAAUqV,SACV;AAAA,MAAA;AAAA,aACMhV,KAAKimC,QAAQlmC,GAAAA;AACpBC,WAAKqmC,cAAc/xB,EAEnB;AAAA,UAAGtU,KAAKoW,YAAY9B,GAAGvU,IAAG;AACzBC,aAAKoW,WAAW;AAChBpW,aAAKsW,aAAW;AAChBtW,aAAK4c,YAAU;AAAA,MACf;AAAA,IACD;AAED5c,SAAKyB,UAAU,kBAAkB,CAAC1B,KAAIuU,EAAAA,CAAAA;AAAAA,EACvC;AACA3U,EAAAA,WAAUwV,WAAW,SAASpV,KAC7B;AAAA,WAAOC,KAAKimC,QAAQlmC,GAAAA;AAAAA,EACrB;AACAJ,EAAAA,WAAU4mC,WAAW,SAASxmC,KAAIymC,MAAAA;AACjC,SAAIA,KAAKzmC;AACRymC,WAAKzmC,KAAKA;AAEXC,SAAKimC,QAAQlmC,GAAAA,IAAMymC;AAAAA,EACpB;AACA7mC,EAAAA,WAAU8gB,eAAe,SAAS1gB,KAAIo6B,QACrC;AAAA,aAASxyB,IAAI3H,KAAKymC,UAAU7+B,SAAS,GAAGD,KAAK,GAAGA;AAC/C,UAAI3H,KAAKymC,UAAU9+B,CAAGwL,EAAAA,aAAanT,KAAKuB,OAAO8iC,eAAoBtkC,KAAAA;AAClEo6B,eAAOn6B,KAAKymC,UAAU9+B,CAAIA,GAAAA,CAAAA;AAAAA,EAC7B;AACAhI,EAAAA,WAAU+mC,gBAAgB,SAAS3mC,KAAI4mC,QACtC;AAAA,QAAI5mC,OAAM4mC;AAAQ;AAClB,QAAIryB,KAAKtU,KAAKimC,QAAQlmC,GACtB;AAAA,QAAIuU,IAAI;AACPA,SAAGvU,KAAK4mC;AACR3mC,WAAKimC,QAAQU,MAAUryB,IAAAA;AAAAA,aAChBtU,KAAKimC,QAAQlmC,GACpB;AAAA,IAAA;AACDC,SAAKygB,aAAa1gB,KAAI,SAAS2gB,GAAAA;AAC9BA,QAAE3b,aAAa,YAAY4hC,MAAAA;AAC3BjmB,QAAE3b,aAAapF,WAAU4B,OAAO8iC,iBAAiBsC,MAAAA;AAAAA,IACnD,CACC;AAAA,QAAI3mC,KAAK6U,cAAc9U;AAAIC,WAAK6U,aAAa8xB;AAC7C,QAAI3mC,KAAK4V,YAAY7V;AAAIC,WAAK4V,WAAW+wB;AAEzC3mC,SAAKyB,UAAU,mBAAmB,CAAC1B,KAAI4mC,MACxC,CAAA;AAAA,EAAA;AAAA,GAEA;AACC,QAAIrX,QAAQ,CAAC,QAAQ,QAAQ,cAAc,aAAa,YAAY,SACpE;AAAA,QAAIsX,gBAAgB,SAAS55B,MAC5B;AAAA,aAAO,SAASjN,KAAAA;AAAM,eAAQJ,WAAUwV,SAASpV,GAAKiN,EAAAA,IAAAA;AAAAA;IACxD;AACC,QAAI65B,gBAAgB,SAAS75B,MAC5B;AAAA,aAAO,SAASjN,KAAI8G,OACnB;AAAA,YAAIyN,KAAK3U,WAAUwV,SAASpV,GAC5BuU;AAAAA,WAAGtH,IAAQnG,IAAAA;AACXyN,WAAGwyB,WAAW;AACdxyB,WAAG8F,SAASpa,KAAK4hB,cAActN,EAAAA;AAC/B3U,QAAAA,WAAU0mC,cAAc/xB,IAAI,IAAA;AAAA,MAC/B;AAAA,IACA;AACC,aAAS3M,IAAI,GAAGA,IAAI2nB,MAAM1nB,QAAQD,KAAK,GAAG;AACzChI,MAAAA,WAAU,aAAa2vB,MAAM3nB,IAAI,CAAMi/B,CAAAA,IAAAA,cAActX,MAAM3nB,CAC3DhI,CAAAA;AAAAA,MAAAA,WAAU,aAAa2vB,MAAM3nB,IAAI,CAAA,CAAA,IAAMk/B,cAAcvX,MAAM3nB;IAC3D;AAAA,EACD,GAEDhI;AAAAA,EAAAA,WAAU0mC,gBAAgB,SAAS/xB,IAAIsf,OAAAA;AACtC,QAAI5zB,KAAK+mC,kBAAkBzyB,EAC1BtU;AAAAA,WAAK6hB,iBAEL7hB;AAAAA;AAAAA,WAAKgnC,YAAY1yB,GAAGvU;EACtB;AACAJ,EAAAA,WAAUonC,oBAAoB,SAASzyB,IACtC;AAAA,QAAA,CAAItU,KAAKwV,aAAAA,CAAcxV,KAAK0V,WAAU;AACrC,aAAO;AAAA,IACP;AAGD,QAAIuxB,mBAAoB3yB,GAAGiF,WAAWrC,QAAAA,IAAYlX,KAAK0V,UAAUwB,QAAalX,KAAAA,KAAKwV,UAAU0B,QAAAA,IAAY5C,GAAGuF,SAAS3C,QAAAA;AAErH,QAAG+vB,kBAAiB;AAGnB,UAAIC,cAAc5yB,GAAGiF,WAAWI,SAC/BwtB,GAAAA,aAAa7yB,GAAGuF,SAASF,SAAcrF,IAAAA,GAAGuF,SAASmE,WAAAA,IAAa,IAChEqB,WAAWrf,KAAKuB,OAAOwc,WACvBqB,YAAYpf,KAAKuB,OAAOmY;AAEzB,UAAI0tB,oBAAqBpnC,KAAKkR,eAAkBi2B,GAAAA,aAAa9nB,YAAY8nB,cAAc/nB,eAAe8nB,eAAe7nB,YAAY6nB,cAAc9nB;AAE/I,UAAGgoB,mBAAkB;AACpB,eAAO;AAAA,MACV,OAAO;AAGJ,YAAI/tB,kBAAkB/E,GAAGuF,SAAS3C,QAAY5C,IAAAA,GAAGiF,WAAWrC,QAAAA,MAAc,MAAK,KAAG,KACjFmwB,kBAAkB,MAAMrnC,KAAKuB,OAAOwc,YAAY/d,KAAKuB,OAAOmY;AAE7D,eAAWL,CAAAA,EAAAA,iBAAiBguB,mBAAqBH,cAAc7nB,YAAY8nB,aAAa/nB;AAAAA,MAExF;AAAA,IACH,OAAM;AACJ,aAAO;AAAA,IACP;AAAA,EACF;AACAzf,EAAAA,WAAUiiB,gBAAgB,SAAStN,IAAAA;AAIlC,QAAIgzB,eAAe,IAAIjyB,KAAKf,GAAGuF,SAAS3C,YAAY,CACpD;AAAA,WACC5C,GAAGiF,WAAW8L,YAAkBiiB,MAAAA,aAAajiB,YAC7C/Q,KAAAA,GAAGiF,WAAW+L,SAAegiB,MAAAA,aAAahiB,SAC1ChR,KAAAA,GAAGiF,WAAW6G,QAAAA,MAAcknB,aAAalnB,QAAAA,KACnC9L,GAAGuF,SAAS3C,QAAAA,IAAY5C,GAAGiF,WAAWrC,QAAc,IAAA,MAAO,KAAK,KAAK;AAAA,EAC7E;AAEAvX,EAAAA,WAAU4nC,qBAAqB,SAASC,YAEvC;AAAA,QAAIC,QAAQ,CAAA;AAEZ,aAAS1nC,OAAMC,KAAKimC;AACnB,UAAIjmC,KAAK+mC,kBAAkB/mC,KAAKimC,QAAQlmC,GAAAA,CAAAA;AACvC,YAAKynC,CAAAA,cAAcxnC,KAAKimC,QAAQlmC,GAAIqa,EAAAA;AACnC,cAAIpa,KAAK0nC,aAAa3nC,KAAIC,KAAKimC,QAAQlmC,GAAAA,CAAAA;AACtC0nC,kBAAM/4B,KAAK1O,KAAKimC,QAAQlmC,GAAAA,CAAAA;AAAAA;AAAAA;AAE5B,WAAO0nC;AAAAA,EACR;AACA9nC,EAAAA,WAAU+nC,eAAe,SAAS3nC,KAAIuU,IACrC;AAAA,QAAIqzB,SAAS3nC,KAAK,YAAYA,KAAKoV,KACnC;AAAA,WAAO,SAAWuyB,OAAO5nC,KAAIuU,EAAAA,IAAM;AAAA,EACpC;AACA3U,EAAAA,WAAUioC,sBAAsB,SAAStzB,IACxC;AAAA,WAAA,CAAA,CAASA,GAAG8F;AAAAA,EACb;AACAza,EAAAA,WAAUkiB,mBAAmB,SAASgmB,KAAKC,MAC1C;AAAA,QAAIC,OAAO;AACX,QAAKF,CAAAA,KAAK;AACTE,aAAO;AACP,UAAI/nC,KAAKgoC,aAAa;AACrBhoC,aAAKiiB,eAAe;AACpB;AAAA,MACA;AACDjiB,WAAKiiB,eAAe;AAEpBjiB,WAAKmmC,WAAAA;AACL0B,YAAM7nC,KAAKunC,qBAAqBvnC,KAAKkR,eAAelR,KAAKuB,OAAOmlB,UAChE;AAAA,IAAA;AACD,aAAQ/e,IAAG,GAAGiW,MAAMiqB,IAAIjgC,QAAQD,IAAIiW,KAAKjW,KAAI;AAC5C3H,WAAKioC,mBAAmBJ,IAAIlgC,CAC5B,CAAA;AAAA,IAAA;AAED,QAAI3H,KAAKuB,OAAOmlB,aAAAA,CAAc1mB,KAAKkR,aAAa;AAE/C,UAAIg3B,MAAM,CACV;AAAA,UAAIC,MAAM,CAAA;AACV,eAASxgC,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,YAAI3H,KAAK4nC,oBAAoBC,IAAIlgC,CAAAA,CAAAA;AAChCugC,cAAIx5B,KAAKm5B,IAAIlgC,CAAAA,CAAAA;AAAAA;AAEbwgC,cAAIz5B,KAAKm5B,IAAIlgC,CACd,CAAA;AAAA,MAAA;AAED,UAAI3H,CAAAA,KAAK2I,KAAK,eAAA,GAAiB;AAC9B,YAAIrH,WAAU3B,WAAUgD,qBAAqBC,YAAY5C,KAAKoV,KAAAA;AAC9D,cAAM,IAAIjS,MAAM7B,QAChB;AAAA,MAAA;AAGDtB,WAAKooC,qBAAqBpoC,KAAK2I,KAAK,iBAAiB,CACrD3I;AAAAA,WAAKkR,cAAc;AACnBlR,WAAKqoC,YAAYF,KAAKL,IAAAA;AACtB9nC,WAAKkR,cAAc;AAGnBlR,WAAKooC,qBAAqBpoC,KAAK2I,KAAK,cAAgB,EAAA,CAAA;AACpD3I,WAAKkR,cAAc;AACnBlR,WAAKqoC,YAAYH,KAAKJ,IAExB;AAAA,IAAA,OAAQ;AACN,UAAIQ,SAASzoC,SAAS0H,uBAAAA;AACtB,UAAIghC,mBAAmBvoC,KAAK2I,KAAK,gBAAgB,CACjD3I;AAAAA,WAAKooC,qBAAqBE;AAC1BtoC,WAAKqoC,YAAYR,KAAKC,IAAAA;AACtBS,uBAAiBnoC,YAAYkoC,MAAAA;AAC7BtoC,WAAKooC,qBAAqBG;AAAAA,IAE1B;AAED,QAAGR,MAAK;AACP/nC,WAAKyB,UAAU,gBAAgB,CAC/B,CAAA;AAAA,IAAA;AAAA,EACF;AAGA9B,EAAAA,WAAU6oC,kBAAkB,SAAS10B,GAAAA;AACpC,QAAI1O,OAAOzF,WAAU+W,cAAc5C,CAAG1O,EAAAA;AACtC,SAAIzF,WAAU8B,UAAU,mBAAmB,CAAC2D,IAC3C,CAAA;AAAA;AACDzF,IAAAA,WAAUyG,eAAehB,MAAM,KAChC;AAAA,EAAA;AAEAzF,EAAAA,WAAU8oC,qBAAqB,SAASn0B,IAAAA;AACvC,QAAIgkB,SAASt4B,KAAKooC;AAClB,QAAIM,WAAW1oC,KAAK8gB,YAAYxM,EAAAA;AAGhC,aAAQ8E,IAAI9E,GAAGq0B,OAAOvvB,IAAI9E,GAAGs0B,OAAOxvB,KAAI;AAEvCsvB,eAASC,QAAQvvB;AACjBsvB,eAASE,QAAQxvB,IAAE;AAEnB,UAAIhU,OAAOzF,WAAUyF;AACrB,UAAIyjC,OAAOlpC,WAAU6V;AACrBqzB,aAAOzjC,KAAKT,IAAIkkC,MAAMH,SAASI,QAAQ,MACvCD;AAAAA,aAAOzjC,KAAKT,IAAIkkC,MAAMH,SAASC,OAAO,KACtC;AAAA,UAAI1kB,QAAQtkB,WAAUopC,UAAUF,MAAMzjC,KAAKT,IAAIkkC,MAAM,GAAG,KAAA,CAAA,EAAQjhC;AAEhE,UAAIiT,MAAM7a,KAAKgpC,mBAAmBN,QAAAA;AAClC,UAAIO,OAAQpuB,IAAIquB,KAAKruB,IAAI3I;AAEzB,UAAItE,MAAK/N,SAASC,cAAc,KAAA;AAChCH,MAAAA,WAAUiG,MAAMgI,KAAI,SAAS,SAASkG,GAAAA;AAAGnU,QAAAA,WAAU6oC,gBAAgB10B,CAAAA;AAAAA,MAAG,CACtElG;AAAAA,MAAAA,IAAGxJ,YAAY;AACfwJ,MAAAA,IAAG9G,MAAM+L,MAAMgI,IAAI1I,IAAI;AACvBvE,MAAAA,IAAG9G,MAAMiL,OAAO8I,IAAI3I,IAAI;AACxBtE,MAAAA,IAAG9G,MAAMF,QAAQqiC,OAAO;AACxBr7B,MAAAA,IAAG1N,YAAYP,WAAU0iB,UAAUmjB,kBAAkBqD,MAAM5kB,KAAAA;AAC3DjkB,WAAKymC,UAAU/3B,KAAKd,GAAAA;AAEpB0qB,aAAOl4B,YAAYwN,GAAAA;AAAAA,IACnB;AAAA,EACF;AAEAjO,EAAAA,WAAUsoC,qBAAqB,SAASloC,KAAAA;AACvC,SAAIA;AAAI;AACR,QAAIuU;AACJ,QAAG,OAAAvU,OAAc;AAChBuU,WAAKtU,KAAKimC,QAAQlmC,GAAAA;AAAAA;AAElBuU,WAAKvU;AACN,QAAIuU,CAAAA;AAAI;AACRA,OAAG8F,SAASza,WAAUiiB,cAActN,EACrC;AAAA,EAAA;AACA3U,EAAAA,WAAUgE,YAAY,kBAAkBhE,WAAUsoC;AAClDtoC,EAAAA,WAAUgE,YAAY,gBAAgBhE,WAAUsoC,kBAEhDtoC;AAAAA,EAAAA,WAAU0oC,cAAc,SAASR,KAAKC,MACrCD;AAAAA,UAAM7nC,KAAKmpC,mBAAmBtB,KAAKC,IAAAA;AACnC,QAAIsB,aAAa,CAAA;AACjB,aAASzhC,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD;AAC/B,UAAI3H,KAAKkR,aAAY;AACpB,YAAGvR,WAAUyV,SAAS,SAAQ;AAC7BpV,eAAKqpC,iBAAiBxB,IAAIlgC,CAC9B,CAAA;AAAA,QAAA,OAAQ;AAEJ,cAAI2hC,UAAU3pC,WAAU4B,OAAOgoC;AAC/B,cAAGD,YAAYA,UAAQ,KAAKzB,IAAIlgC,GAAG6hC,UAAUF,SAAQ;AAEpDtpC,iBAAKqpC,iBAAiBxB,IAAIlgC,CAC/B,CAAA;AAAA,UAAA,WAAa2hC,YAAY12B,UAAai1B,IAAIlgC,CAAAA,EAAG6hC,WAAWF,SAAQ;AAE3D3pC,YAAAA,WAAU8oC,mBAAmBZ,IAAIlgC,CAAAA,CAAAA;AAAAA,UACtC;AAGI;AAAA,QAAA;AAAA,MAIJ,OAAO;AACJ,YAAI2M,KAAKuzB,IAAIlgC,CACb;AAAA,YAAI2wB,SAAS34B,WAAU8pC,cAAcn1B,GAAGq0B,KACxC;AAAA,YAAA,CAAKrQ;AAAQ;AAEb,YAAA,CAAI8Q,WAAW90B,GAAGq0B,KAAO,GAAA;AACxBS,qBAAW90B,GAAGq0B,KAAS,IAAA,EACtBe,MAAMpR,QACNgQ,QAAQzoC,SAAS0H,uBACjBX,GAAAA,OAAO0xB,OAAOhvB,YAEf;AAAA,QAAA;AAED,YAAIlB,YAAYghC,WAAW90B,GAAGq0B,KAC9B3oC;AAAAA,aAAK2pC,aAAar1B,IAAIlM,UAAUkgC,QAAQlgC,UAAUxB,KAClD;AAAA,MAAA;AAED,aAAQe,KAAKyhC,YAAW;AACvB,UAAIhhC,YAAYghC,WAAWzhC,CAAAA;AAC3B,UAAGS,UAAUshC,QAAQthC,UAAUkgC,QAAO;AACrClgC,kBAAUshC,KAAKtpC,YAAYgI,UAAUkgC,MAAAA;AAAAA,MACrC;AAAA,IACD;AAAA,EACH;AAEA3oC,EAAAA,WAAUiqC,0BAA0B,SAAS7gB,OAAAA;AAC5C,aAASphB,IAAI,GAAGA,IAAIohB,MAAMnhB,QAAQD,KAAK;AACtC,WAAKohB,MAAMphB,GAAGvD,aAAa,IAAI2S,QAAQ,kBAAA,KAAA,IAA2B;AACjE,eAAOgS,MAAMphB,CACb;AAAA,MAAA;AAAA,IACD;AAED,WAAOohB,MAAM,CAAA;AAAA,EACd;AAEAppB,EAAAA,WAAUwpC,qBAAqB,SAAStB,KAAKC,MAC5C;AAAA,QAAI+B,KAAK7pC,KAAKwI,GAAGuH;AACjB,QAAI+5B,QAAQ9pC,KAAK4b,OAAOK;AACxB,QAAI1S,IAAIvJ,KAAK4b,OAAOK,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AACjD,QAAI6d,OAAO95B,KAAK2I,KAAK,cAAgB,EAAA,CAAA;AAErC,QAAK3I,CAAAA,KAAKkR,aAAa;AACtB22B,YAAM7nC,KAAK+pC,wBAAwBlC,KAAKC,IAAAA;AAAAA,IACxC,OACI;AACJD,YAAM7nC,KAAKgqC,yBAAyBnC,KAAKC,IAAAA;AAAAA,IACzC;AACD,QAAI9nC,KAAKkR,aAAa;AACrB,UAAI42B;AACH9nC,aAAK4b,OAAOK,UAAU6tB;AAAAA,WAClB;AACJ,YAAIG,YAAYnQ,KAAK9Q,iBAAiB,oBAAA;AACtC,YAAIihB,UAAUriC,QAAQ;AACrB,mBAASD,IAAI,GAAGA,IAAIsiC,UAAUriC,QAAQD,KAAK;AAC1C4B,cAAE5B,CACF;AAAA,gBAAIohB,QAAQkhB,UAAUtiC,CAAGqhB,EAAAA,iBAAiB,qBAC1C;AAAA,gBAAIkhB,aAAalqC,KAAK4b,OAAO7U,SAAS/G,KAAKwI,GAAGgI;AAC9C,gBAAKjH,EAAE5B,KAAMkiC,KAAKK,YAAY;AAG7B,kBAAIC,UAAUD;AACd,kBAAGlqC,KAAKuB,OAAOgoC,mBAAiB,MAAMvpC,KAAKuB,OAAOgoC,oBAAoBhgC,EAAE5B,CAAM3H,KAAAA,KAAKuB,OAAOgoC,kBAAiB;AAC1GY,0BAAU5gC,EAAE5B,CAAKkiC,IAAAA;AAAAA,cACxB,YAAiB7pC,KAAKuB,OAAOgoC,mBAAmB,KAAKM,KAAKK,YAAW;AAC9DC,2BAAWnqC,KAAKuB,OAAOgoC,mBAAmB,KAAKM;AAAAA,cAC/C;AAEDI,wBAAUtiC,CAAGb,EAAAA,MAAMC,SAAUojC,UAAUnqC,KAAKwI,GAAGgI,oBAAqB;AAAA,YACpE;AAEDjH,cAAE5B,CAAAA,KAAM4B,EAAE5B,IAAI,CAAA,KAAM,KAAKhI,WAAUiqC,wBAAwB7gB,KAAAA,EAAO1e;AAAAA,UAClE;AACDd,YAAE6gC,QAAQ,CAAA;AACV,gBAAMh8B,WAAWpO,KAAKgI,WAAWC,cAAc,eAAA;AAC/C,cAAImG,SAAS/D,eAAe+D,SAASi8B,gBAAiB1qC,CAAAA,WAAUic,OAAO0uB,cAAc3qC,WAAU6I,GAAGyH,cAAc;AAE/G,gBAAIs6B,iBAAiB5qC,WAAUic,QAC9B4uB,YAAYD,eAAeA,eAAexjB,UAAAA,GAC1C0jB,cAAcF,eAAetuB,QAAQiR,MAAAA;AAEtCsd,yBAAc7qC,WAAU6I,GAAGyH,gBAAgB;AAC3CjQ,iBAAKukB,kBAAkBimB,WAAWxqC,KAAKwV,WAAWxV,KAAK0V,SACvD/V;AAAAA,YAAAA,WAAUic,OAAOK,UAAUwuB;AAE3BzqC,iBAAKuR,OAAOvR,KAAK2I,KAAK,gBAAkB,EAAA,CAAA,GAAI6hC,SAC5C7qC;AAAAA,YAAAA,WAAUilB,eAAe5kB,KAAK2I,KAAK,gBAAA,EAAkB;AACrDhJ,YAAAA,WAAUmoB,oBAAoB9nB,KAAK2I,KAAK,cAAgB,EAAA,CAAA,GAAI3I,KAAKmkB,oBAAAA,GAAuBnkB,KAAKwV,SAE7F+0B;AAAAA,2BAAeD,aAAa;AAAA,UAC5B;AAAA,QACL,OAAU;AACN,cAAA,CAAKzC,IAAIjgC,UAAU5H,KAAK2I,KAAK,eAAA,EAAiB,CAAG7B,EAAAA,MAAM+f,cAAc;AACpEtd,cAAE,CAAM,IAAA;AACT,cAAIs+B,IAAIjgC,UAAU2B,EAAE,CAAO,KAAA,IAAG;AAK7B,gBAAImhC,yBAAyBnhC,EAAE,CAAA,IAAK,KAAKsgC,KAAK;AAE9C,gBAAIc,wBAAwBD;AAC5B,gBAAIE,4BAA4BF,wBAAwB;AACxD,gBAAI1qC,KAAKuB,OAAO8hC,wBAAwB;AACvCsH,sCAAwBl4B,KAAKqI,IAAI4vB,uBAAuB1qC,KAAKuB,OAAO8hC;AACpEuH,0CAA4BD,wBAAwB;AAAA,YACpD;AAED,gBAAIhrC,CAAAA,WAAUiS,aAAe,GAAA;AAC5BkoB,mBAAKhzB,MAAM+L,MAAO7S,KAAK2I,KAAK,iBAAmB,EAAA,CAAA,EAAG0B,eAAerK,KAAK2I,KAAK,gBAAkB,EAAA,CAAA,EAAG0B,eAAesgC,wBAA0B;AACzI7Q,mBAAKhzB,MAAMC,SAAU/G,KAAKiP,KAAK5E,eAAe2a,SAAS8U,KAAKhzB,MAAM+L,KAAK,EAAA,KAAO7S,KAAKwI,GAAG6H,cAAc,KAAM;AAAA,YAC1G;AAED,gBAAIw6B,oBAAoB7qC,KAAK2I,KAAK,eAAiB,EAAA,CAAA;AACnDkiC,8BAAkB/jC,MAAMC,SAAS6jC;AACjCC,8BAAkB/jC,MAAM+f,aAActd,EAAE,CAAA,KAAA,KAAW,WAAW;AAC9DshC,8BAAkB/jC,MAAMgC,UAAWS,EAAE,CAAA,KAAA,KAAW,SAAS;AAGzD,gBAAIuhC,iBAAiB9qC,KAAK2I,KAAK,eAAiB,EAAA,CAAA;AAChDmiC,2BAAehkC,MAAMC,SAAS6jC;AAC9BE,2BAAehkC,MAAM+f,aAActd,EAAE,CAAA,KAAA,KAAW,WAAW;AAC3DuhC,2BAAehkC,MAAMgC,UAAWS,EAAE,CAAO,KAAA,KAAI,SAAS;AACtDuhC,2BAAe1mC,YAAYmF,EAAE,CAAA,IAAK,uBAAuB;AACzDvJ,iBAAKojB,aAAa7Z,EAAE,CAAK,IAAA,KAAKsgC;AAC9B,gBAAG7pC,KAAKuB,OAAO8hC,wBAAuB;AACrCrjC,mBAAKojB,YAAY3Q,KAAKqI,IAAI9a,KAAKuB,OAAO8hC,wBAAwBrjC,KAAKojB,SACnE;AAAA,YAAA;AACD7Z,cAAE,CAAA,IAAK;AAEP,gBAAIohC,yBAAyBD,uBAAuB;AACnD,kBAAI/qC,CAAAA,WAAUiS,aAAe,GAAA;AAC5BkoB,qBAAKhzB,MAAM+L,MAAOmS,SAAS8U,KAAKhzB,MAAM+L,GAAO,IAAA,IAAK;AAAA,cAClD;AAGDg4B,gCAAkB/jC,MAAMikC,YAAY;AAGpCD,6BAAehkC,MAAMf,WAAW;AAChC+kC,6BAAehkC,MAAM+L,MAAM;AAC3Bi4B,6BAAehkC,MAAMiL,OAAO;AAAA,YAC5B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACD,WAAO81B;AAAAA,EACR;AACAloC,EAAAA,WAAUugB,kBAAkB,SAAS5L;AAGpC,QAAI02B,WAAWhrC,KAAKoF,KAAK0gB,UAAU,IAAIzQ,KAAKf,GAAGiF;AAC/C,WAAO9G,KAAK+G,OAAOwxB,SAAS9zB,QAAYlX,IAAAA,KAAKwV,UAAU0B,QAAAA,MAAc,KAAK,KAAK,KAAK,IACrF;AAAA,EAAA;AACAvX,EAAAA,WAAUsrC,6BAA6B,SAAS32B,IAAAA;AAC/C,QAAIuF,WAAWvF,GAAGuF;AAClB,QAAI7Z,KAAKuB,OAAO0hC,uBAAuB;AACtC,UAAIiI,eAAe52B,GAAGuF,WAAWvF,GAAGiF,cAAc;AAClD,UAAI2xB,cAAclrC,KAAKmrC,sBAAsB;AAC5CtxB,mBAAW7Z,KAAKoF,KAAKT,IAAIkV,UAAU7Z,KAAKmrC,uBAAuBD,aAAa,QAC5E;AAAA,MAAA;AAAA,IACD;AACD,WAAOrxB;AAAAA,EACR;AACAla,EAAAA,WAAUoqC,0BAA0B,SAASlC,KAAKC,MAAAA;AACjDD,QAAIpR,KAAK,SAAS3yB,GAAGC;AACpB,UAAID,EAAEyV,WAAWrC,QAAAA,KAAanT,EAAEwV,WAAWrC,QAC1C;AAAA,eAAOpT,EAAE/D,KAAKgE,EAAEhE,KAAK,IAAA;AACtB,aAAO+D,EAAEyV,aAAaxV,EAAEwV,aAAa,IAAA;AAAA,IACvC,CAAA;AACC,QAAI0S,OAAO,CACX;AAAA,QAAImf,gBAAgB,CAEpBprC;AAAAA,SAAKmrC,uBAAuB14B,KAAKkI,MAAM3a,KAAKwI,GAAGsH,mBAAmB,KAAK9P,KAAKuB,OAAOyZ,YAAAA;AAEnF,aAASrT,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,UAAI2M,KAAKuzB,IAAIlgC,CAAAA;AAGb,UAAImd,KAAKxQ,GAAGiF;AACZ,UAAI+K,KAAKhQ,GAAGuF;AAEZ,UAAIwxB,KAAKvmB,GAAGnL,SAAAA;AACZ,UAAI2xB,KAAKhnB,GAAG3K,SAAAA;AACZrF,SAAGq0B,QAAQ3oC,KAAKkgB,gBAAgB5L,EAChC;AAAA,UAAItU,KAAK0a,SAASpG,GAAGq0B,KAAAA,GAAO;AAE3Bd,YAAIhe,OAAOliB,GAAE,CAAA;AACbA;AACA;AAAA,MACA;AAED,UAAA,CAAKskB,KAAK3X,GAAGq0B,KAAAA;AAAQ1c,aAAK3X,GAAGq0B,KAAS,IAAA,CAAA;AAEtC,UAAKb,CAAAA,MAAM;AACVxzB,WAAGi3B,SAAS;AAEZ,YAAI9D,QAAQxb,KAAK3X,GAAGq0B,KAAAA;AAEpB,eAAOlB,MAAM7/B,QAAQ;AACpB,cAAI4jC,OAAO/D,MAAMA,MAAM7/B,SAAS,CAChC;AAAA,cAAI6jC,aAAazrC,KAAKirC,2BAA2BO,IAAAA;AACjD,cAAIC,WAAWv0B,aAAa5C,GAAGiF,WAAWrC,QAAW,GAAA;AACpDuwB,kBAAM5d,OAAO4d,MAAM7/B,SAAS,GAAG,CACpC;AAAA,UAAA,OAAW;AACN;AAAA,UACA;AAAA,QACD;AACD,YAAI8jC,aAAajE,MAAM7/B;AACvB,YAAI+jC,YAAY;AAChB,iBAASlpB,IAAI,GAAGA,IAAIglB,MAAM7/B,QAAQ6a,KAAK;AACtC,cAAI+oB,OAAO/D,MAAMhlB,CAAAA;AACjB,cAAIgpB,aAAazrC,KAAKirC,2BAA2BO,IAAAA;AACjD,cAAIC,WAAWv0B,QAAa5C,KAAAA,GAAGiF,WAAWrC,QAAW,GAAA;AACpDy0B,wBAAY;AACZr3B,eAAGk1B,UAAUgC,KAAKhC;AAClBkC,yBAAajpB;AACbnO,eAAGi3B,SAAS;AACZ;AAAA,UACA;AAAA,QACD;AAED,YAAI9D,MAAM7/B;AACT6/B,gBAAMA,MAAM7/B,SAAS,CAAA,EAAG2jC,SAAS;AAElC,aAAKI,WAAW;AACf,cAAIlE,MAAM7/B,QAAQ;AACjB,gBAAI6/B,MAAM7/B,UAAU6/B,MAAMA,MAAM7/B,SAAS,CAAA,EAAG4hC,SAAS;AACpD,kBAAK/B,CAAAA,MAAMA,MAAM7/B,SAAS,CAAG4hC,EAAAA;AAC5Bl1B,mBAAGk1B,UAAU;AAAA;AAEb,qBAAK/mB,IAAI,GAAGA,IAAIglB,MAAM7/B,QAAQ6a,KAAK;AAClC,sBAAImpB,aAAa;AACjB,2BAASC,IAAI,GAAGA,IAAIpE,MAAM7/B,QAAQikC,KAAK;AACtC,wBAAIpE,MAAMoE,CAAGrC,EAAAA,WAAW/mB,GAAG;AAC1BmpB,mCAAa;AACb;AAAA,oBACA;AAAA,kBACD;AACD,sBAAA,CAAKA,YAAY;AAChBt3B,uBAAGk1B,UAAU/mB;AACb;AAAA,kBACA;AAAA,gBACD;AACFnO,iBAAGi3B,SAAS;AAAA,YAClB,OAAY;AACN,kBAAIO,cAAcrE,MAAM,CAAG+B,EAAAA;AAC3B,mBAAK/mB,IAAI,GAAGA,IAAIglB,MAAM7/B,QAAQ6a,KAAK;AAClC,oBAAIglB,MAAMhlB,CAAAA,EAAG+mB,UAAUsC;AACtBA,gCAAcrE,MAAMhlB,CAAAA,EAAG+mB;AAAAA,cACxB;AACDl1B,iBAAGk1B,UAAUsC,cAAc;AAC3Bx3B,iBAAGi3B,SAAS;AAAA,YACZ;AAAA,UAED;AACAj3B,eAAGk1B,UAAU;AAAA,QACd;AAED/B,cAAM5d,OAAO6hB,YAAYA,cAAcjE,MAAM7/B,SAAS,IAAI,GAAG0M,EAAAA;AAE7D,YAAImzB,MAAM7/B,UAAU6/B,MAAMsE,aAAa,IAAI;AAC1CtE,gBAAMsE,YAAYtE,MAAM7/B;AACxB0M,aAAG03B,SAASvE,MAAM7/B;AAAAA,QACtB,OAAU;AACN0M,aAAG03B,SAAU13B,GAAS,SAAIA,GAAG03B,SAAS;AAAA,QACtC;AAAA,MACD;AAED,UAAIX,KAAKrrC,KAAKuB,OAAOmY,cAAc4xB,MAAMtrC,KAAKuB,OAAOwc,WAAW;AAG/DqtB,sBAAc18B,KAAK4F,EACnBuzB;AAAAA,YAAIlgC,CAAK2M,IAAAA,KAAKtU,KAAKisC,YAAY33B,EAE/B;AAAA,YAAI+2B,KAAKrrC,KAAKuB,OAAOmY,YAAY;AAChCpF,aAAGiF,WAAWK,SAAS5Z,KAAKuB,OAAOmY,UAAAA;AACnCpF,aAAGiF,WAAWkmB,WAAW,CAAA;AAAA,QACzB;AACD,YAAI6L,MAAMtrC,KAAKuB,OAAOwc,WAAW;AAChCzJ,aAAGuF,SAAS4lB,WAAW,CACvBnrB;AAAAA,aAAGuF,SAASD,SAAS5Z,KAAKuB,OAAOwc,SACjC;AAAA,QAAA;AAED,YAAIzJ,GAAGiF,aAAajF,GAAGuF,YAAYwxB,MAAMrrC,KAAKuB,OAAOwc,WAAW;AAC/D8pB,cAAIhe,OAAOliB,GAAG,CACdA;AAAAA;AACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AACD,QAAA,CAAKmgC,MAAM;AACV,eAASngC,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpCkgC,YAAIlgC,CAAAA,EAAGqkC,SAAS/f,KAAK4b,IAAIlgC,CAAGghC,EAAAA,KAAAA,EAAOoD;AAAAA,MACnC;AACD,eAASpkC,IAAI,GAAGA,IAAIyjC,cAAcxjC,QAAQD;AACzCyjC,sBAAczjC,CAAGqkC,EAAAA,SAAS/f,KAAKmf,cAAczjC,GAAGghC,KAAOoD,EAAAA;AAAAA,IACxD;AAED,WAAOlE;AAAAA,EACR;AACAloC,EAAAA,WAAUusC,cAAc,SAASrE,KAChCA;AAAAA,QAAIpR,KAAK,SAAS3yB,GAAGC,GAAAA;AACpB,UAAID,EAAEyV,WAAWrC,QAAAA,KAAanT,EAAEwV,WAAWrC,QAAW,GAAA;AACrD,YAAIpT,EAAEsW,WAAWrW,EAAEqW;AAAQ,iBAAO;AAClC,YAAKtW,CAAAA,EAAEsW,UAAUrW,EAAEqW;AAAQ,iBAAQ;AACnC,eAAOtW,EAAE/D,KAAKgE,EAAEhE,KAAK,IAAA;AAAA,MACrB;AACD,aAAO+D,EAAEyV,aAAaxV,EAAEwV,aAAa,IAAK;AAAA,IAC5C,CACA;AAAA,EAAA;AAEA5Z,EAAAA,WAAUwsC,gCAAgC,SAASpoB,MAAMC,IAAIpe,QAAAA;AAC5D,QAAIa,OAAOzG,KAAKya,MAAM7S;AACtB,QAAIwkC,mBAAmB;AACvB,QAAIC,YAAYtoB;AAChB,QAAIuoB,UAAU;AACd,QAAIC,aAAa,IAAIl3B,KAAK2O;AAC1B,QAAGrkB,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK2O,EAAK9M,CAAAA,EAAAA,QAAAA,KAAa8M,GAAG9M,QAAAA,GAAU;AACnEq1B,mBAAa5sC,WAAUyF,KAAK0gB,UAAUymB,UAAAA;AACtCA,mBAAa5sC,WAAUyF,KAAKT,IAAI4nC,YAAY,GAAG,KAAA;AAAA,IAC/C;AACD,WAAMF,YAAYE,YAAW;AAC5BD,gBAAU;AACV,UAAIE,YAAYxsC,KAAKysC,kBAAkBJ,WAAW,OAAOzmC,MAAAA;AACzD,UAAI8mC,gBAAgBF,YAAY/lC;AAChC,UAAIzG,CAAAA,KAAK0a,SAASgyB,aAAe,GAAA;AAChCN,2BAAmB;AACnB;AAAA,MACA;AACDC,kBAAY1sC,WAAUyF,KAAKT,IAAI0nC,WAAW,GAAG,KAAA;AAAA,IAC7C;AACD,WAAOC,WAAWF;AAAAA,EACnB;AAEAzsC,EAAAA,WAAUqqC,2BAA2B,SAASnC,KAAKC,MAClD9nC;AAAAA,SAAKksC,YAAYrE,GAAAA;AACjB,QAAI8E,MAAM,CAAA;AACV,QAAIC,QAAQ,CACX,CAAA,GACA,CACA,GAAA,CAAA,GACA,CACA,GAAA,CAAA,GACA,CACA,GAAA,CAAA,CAAA;AAED,QAAIl6B,MAAM1S,KAAK4b,OAAOK;AACtB,QAAI1C;AACJ,QAAI9S,OAAOzG,KAAKya,MAAM7S;AACtB,QAAIilC,cAAc,CAAA;AAElB,aAASllC,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,UAAI2M,KAAKuzB,IAAIlgC,CAAAA;AACb,UAAI5H,MAAKuU,GAAGvU;AACZ,UAAK8sC,CAAAA,YAAY9sC,GAAK,GAAA;AACrB8sC,oBAAY9sC,GAAAA,IAAM,EACjB+sC,aAAa,MACbC,YAAY,KAAA;AAAA,MAEb;AACD,UAAIC,aAAaH,YAAY9sC;AAC7B,UAAI+kB,KAAMvL,cAAcjF,GAAGiF;AAC3B,UAAI+K,KAAKhQ,GAAGuF;AAEZ,UAAIiL,KAAK9kB,KAAKwV,WAAW;AACxBw3B,mBAAWF,cAAc;AACzBhoB,aAAK9kB,KAAKwV;AAAAA,MACV;AACD,UAAI8O,KAAKtkB,KAAK0V,WAAW;AACxBs3B,mBAAWD,aAAa;AACxBzoB,aAAKtkB,KAAK0V;AAAAA,MACV;AAED,UAAIu3B,WAAWjtC,KAAKysC,kBAAkB3nB,IAAI,OAAOxQ,EACjDA;AAAAA,SAAGq0B,QAAQsE,WAAWxmC;AAEtB,UAAIzG,KAAK0a,SAASpG,GAAGq0B,KAAUr0B,KAAAA,GAAG8F;AAAQ;AAE1C,UAAI8yB,WAAWltC,KAAKysC,kBAAkBnoB,IAAI,MAAMhQ,EAAAA,KAAO7N;AACvD6N,SAAGs0B,QAASsE,WAAWzmC,QAASA;AAChC6N,SAAG64B,UAAUD,WAAWD;AAExB34B,SAAGw0B,SAASr2B,KAAKkI,OAAO3a,KAAK6c,eAAeiI,GAAG5N,QAAAA,GAAW,CAAKlX,IAAAA,KAAKwV,UAAU0B,QAAc,MAAA,KAAK,KAAK,MAAO,KAAKzQ,KAAAA;AAElH,UAAI2lC,mBAAmBzsC,WAAUwsC,8BAA8BrnB,IAAIR,IAAIhQ,EAEvE;AAAA,UAAA,CAAI83B,kBAAiB;AACpB;AAAA,MACA;AAGD,UAAI3E,QAAQmF,MAAMt4B,GAAGw0B,MAAAA;AAErB,UAAIsE;AAEJ,WAAKA,aAAa,GAAGA,aAAa3F,MAAM7/B,QAAQwlC;AAC/C,YAAI3F,MAAM2F,YAAYxE,SAASt0B,GAAGq0B;AACjC;AAEF,UAAKr0B,CAAAA,GAAGk1B,WAAY1B,CAAAA,MAAM;AACzBxzB,WAAGk1B,UAAU4D;AAAAA,MACb;AAED,UAAI94B,GAAGq0B,QAAQr0B,GAAG64B,WAAW1mC,MAAM;AAClC8S,qBAAa;AACbozB,YAAIj+B,KAAK4F,EAAAA;AACTmzB,cAAM2F,UAAc94B,IAAAA;AAEpB5B,YAAI4B,GAAGw0B,MAAUrB,IAAAA,MAAM7/B,SAAS;AAChC0M,WAAG+4B,eAAeL,WAAWF;AAC7Bx4B,WAAGg5B,cAAcN,WAAWD;AAAAA,MAC/B,OAAS;AACN,YAAIjZ,QAAO9zB,KAAKisC,YAAY33B,EAAAA;AAC5Bwf,QAAAA,MAAK/zB,KAAKuU,GAAGvU;AACb+zB,QAAAA,MAAKqZ,UAAU1mC,OAAO6N,GAAGq0B;AACzB7U,QAAAA,MAAK8U,QAAQniC;AACbqtB,QAAAA,MAAK6U,QAAQr0B,GAAGq0B;AAChB7U,QAAAA,MAAKgV,SAASx0B,GAAGw0B;AACjBhV,QAAAA,MAAK0V,UAAUl1B,GAAGk1B;AAClB1V,QAAAA,MAAKja,WAAW7Z,KAAKoF,KAAKT,IAAImgB,IAAIgP,MAAKqZ,SAAS,KAChDrZ;AAAAA,QAAAA,MAAKuZ,eAAeL,WAAWF;AAC/B,YAAIE,WAAWF,aAAa;AAC3BE,qBAAWF,cAAc;AAAA,QACzB;AAEDH,YAAIj+B,KAAKolB;AACT2T,cAAM2F,UAAAA,IAActZ;AACpBva,qBAAaua,MAAKja;AAElBnH,YAAI4B,GAAGw0B,UAAUrB,MAAM7/B,SAAS;AAChCD;AACA;AAAA,MACA;AAAA,IACD;AACD,WAAOglC;AAAAA,EACR;AACAhtC,EAAAA,WAAU4tC,cAAc,WACvB;AAAA,QAAIzpC,IAAI,IAAIuR,KAAKrV,KAAKuZ,UAAAA;AACtB,QAAIxV,IAAI,IAAIsR,KAAKrV,KAAK6Z,QAAAA;AACtB7Z,SAAKuZ,aAAazV;AAClB9D,SAAK6Z,WAAW9V;AAAAA,EACjB;AACApE,EAAAA,WAAUssC,cAAc,SAAS33B,IAChCtU;AAAAA,SAAKutC,YAAYljB,YAAY/V;AAC7B,WAAO,IAAItU,KAAKutC;AAAAA,EAEjB;AACA5tC,EAAAA,WAAU8mC,YAAY,CACtB9mC;AAAAA,EAAAA,WAAUwmC,aAAa,WAAA;AACtB,aAASx+B,IAAI,GAAGA,IAAI3H,KAAKymC,UAAU7+B,QAAQD,KAAK;AAC/C,UAAI/H,MAAMI,KAAKymC,UAAU9+B,CACzB;AAAA,UAAI/H,IAAIqJ;AAAYrJ,YAAIqJ,WAAWiC,YAAYtL,GAC/C;AAAA,IAAA;AACDI,SAAKymC,YAAY,CAClB;AAAA,EAAA;AACA9mC,EAAAA,WAAUsV,cAAc,SAASlV,KAAAA;AAChC,QAAIuU,KAAKtU,KAAKmV,SAASpV;AACvBC,SAAKgnC,YAAYjnC,GAEjB;AAAA,QAAIuU,MAAMtU,KAAK+mC,kBAAkBzyB,EAAAA,KAAOtU,KAAK0nC,aAAa3nC,KAAIuU,EAAQtU,MAAAA,KAAKkR,eAAelR,KAAKuB,OAAOmlB,aAAapS,GAAG8F,SAAS;AAC9H,UAAIpa,KAAKuB,OAAO+e,eAAc;AAC7BtgB,aAAK6hB;MACR,OAAO;AACJ,YAAG7hB,KAAKgG,SAAWvG,EAAAA,QAAQ,WAAYO,CAAAA,KAAKgG,WAAWmQ,WAAYnW,CAAAA,KAAK4hB,cAActN,EAAAA,GAAI;AACzFtU,eAAK6hB,iBACT;AAAA,QAAA,OAAQ;AACJ7hB,eAAK6hB,iBAAiB,CAACvN,EAAAA,GAAK,IAC5B;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACF;AACA3U,EAAAA,WAAUqnC,cAAc,SAASjnC,KAAAA;AAChCC,SAAKygB,aAAa1gB,KAAI,SAASkS,MAAMtK,GAAAA;AACpC,UAAIsK,KAAKhJ;AACRgJ,aAAKhJ,WAAWiC,YAAY+G;AAC7BtS,MAAAA,WAAU8mC,UAAU5c,OAAOliB,GAAG,CAChC;AAAA,IAAA,CAAA;AAAA,EACA;AACAhI,EAAAA,WAAU6tC,eAAe,SAASpoC,MAAAA;AACjC,QAAIqoC,KAAKroC,KAAKuU,SAAAA,IAAa,KAAKvU,KAAK4Y;AACrC,WAASvL,KAAK+G,OAAOi0B,KAAK,KAAK,MAAOztC,KAAKuB,OAAOmY,aAAa,KAAK,KAAK,OAAQ1Z,KAAKuB,OAAOyZ,gBAAgB,KAAK,KAAK,SAAWhb,KAAKuB,OAAOyZ,eAAe;AAAA,EAC9J;AACArb,EAAAA,WAAU+tC,gBAAgB,SAASp5B,IAAIq5B,YACtCA;AAAAA,iBAAaA,cAAc;AAC3B,QAAIF,KAAKn5B,GAAGiF,WAAWI,aAAa,KAAKrF,GAAGiF,WAAWyE,WAAAA;AACvD,QAAI4vB,KAAMt5B,GAAGuF,SAASF,SAAa,IAAA,KAAKrF,GAAGuF,SAASmE,WAAkBre,KAAAA,WAAU4B,OAAOwc,YAAY;AACnG,QAAIlL,MAAM7S,KAAKwtC,aAAal5B,GAAGiF,UAAAA;AAE/B,QAAIxS,SAAS0L,KAAKC,IAAIi7B,aAAaC,KAAKH,MAAMztC,KAAKuB,OAAOyZ,eAAe,EAAA;AACzE,WAAO,EACNnI,KACA9L,OAEF;AAAA,EAAA;AACApH,EAAAA,WAAUgqC,eAAe,SAASr1B,IAAIg0B,QAAQuF,aAC7C;AAAA,QAAIC,OAAOnuC,WAAU6I,GAAG4H;AACxB,QAAI29B,cAAe/tC,KAAKuB,OAA4B,wBAAI,IAAIusC;AAC5D,QAAIx5B,GAAGq0B,QAAQ;AAAG;AAElB,QAAIrQ,SAAS34B,WAAU8pC,cAAcn1B,GAAGq0B,KAAAA;AACxC,SAAKrQ;AAAQ;AAEbgQ,aAASA,UAAUhQ;AAEnB,QAAI0V,QAAQhuC,KAAK0tC,cAAcp5B,IAAI3U,WAAU6I,GAAGsH,gBAChD;AAAA,QAAI+C,MAAMm7B,MAAMn7B,KACf9L,SAASinC,MAAMjnC;AAEhB,QAAIknC,WAAW35B,GAAG03B,UAAU;AAC5B,QAAIkC,YAAY55B,GAAGk1B,WAAW;AAE9BqE,kBAAcA,eAAevV,OAAOhvB;AACpC,QAAGtJ,KAAKuB,OAAOohC,oBAAmB;AACjCkL,qBAAe7tC,KAAKuB,OAAOohC;AAAAA,IAC3B;AAED,QAAI/7B,QAAQ6L,KAAKkI,OAAOkzB,cAAcE,eAAeE,QAAAA;AACrD,QAAIl8B,OAAOm8B,YAAYtnC,SAASsnC,YAAY,IAAI,IAAI;AACpD,QAAA,CAAK55B,GAAGi3B;AAAQ3kC,cAAQA,SAASqnC,WAAWC;AAC5C,QAAIluC,KAAKuB,OAAO2hC,uBAAuB;AACtC,UAAIxgC,SAAQ1C,KAAKuB,OAAO4hC;AACxB,UAAIgL,SAASnuC,KAAKuB,OAAO6hC;AACzBrxB,aAAOm8B,YAAYxrC,SAAQyrC;AAC3B,UAAIn8B,QAASsC,GAAS,UAAK25B,WAAWC,YAAY,KAAKxrC,SAAQyrC,SAAS,IAAI;AAC5EvnC,cAAQ6L,KAAKkI,MAAMkzB,cAAcE,cAAch8B,OAAOC,KACtD;AAAA,IAAA;AAED,QAAGjL,SAAS,IAAG;AACduN,SAAGc,QAAQ;AAAA,IACb,WAAUrO,SAAS,IAAG;AACpBuN,SAAGc,QAAQ;AAAA,IACb,OAAM;AACJd,SAAGc,QAAQ;AAAA,IACX;AAED,QAAIgE,IAAIpZ,KAAKouC,cAAc95B,IAAIy5B,cAAch8B,MAAMc,KAAKjM,OAAOG,QAAQuN,GAAG+5B,aAAa1uC,WAAU0iB,UAAU+iB,aAAa9wB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,GAAK3U,WAAU0iB,UAAUqM,WAAWpa,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,CAAAA;AAEpN,QAAGA,GAAGc,UAAU,YAAW;AAC1BgE,QAAE1U,UAAUC,IAAI,uBAAA;AAAA,IAClB,WAAW2P,GAAGc,UAAU,SAAQ;AAC9BgE,QAAE1U,UAAUC,IAAI,sBAChB;AAAA,IAAA;AAED3E,SAAKuT,SAASib,UAAUla,IAAI8E,CAAAA;AAC5BpZ,SAAKymC,UAAU/3B,KAAK0K,CAAAA;AACpBkvB,WAAOloC,YAAYgZ,CAEnB;AAAA,QAAIk1B,iBAAiBtpB,SAAUhlB,KAAKuB,OAAOgO,MAAM+oB,OAAOxxB,MAAMkL,QAAQsmB,OAAOxxB,MAAMiL,MAAM,EAEzFA;AAAAA,WAAOA,OAAOu8B,iBAAiBP;AAE/B,QAAI/tC,KAAK4V,YAAYtB,GAAGvU,IAAI;AAE3BqZ,QAAEtS,MAAMynC,SAAS;AACjB3nC,cAAQ6L,KAAKC,IAAI9L,OAAOjH,WAAU6I,GAAG+H,YAAAA;AACrC6I,UAAIvZ,SAASC,cAAc,KAAA;AAC3BsZ,QAAErU,aAAa,YAAYuP,GAAGvU;AAC9BqZ,QAAErU,aAAa/E,KAAKuB,OAAO8iC,iBAAiB/vB,GAAGvU,EAE/CC;AAAAA,WAAKuT,SAASib,UAAUla,IAAI8E,CAE5BA;AAAAA,QAAEhV,YAAY;AACd,UAAIpE,KAAKuB,OAAOgO;AAAKwC;AACrB/R,WAAKuR,OAAO6H,GAAGxS,OAAOG,QAAQgL,MAAMc;AAGpC,UAAGyB,GAAGk6B,OAAM;AACXp1B,UAAEtS,MAAM2nC,YAAY,oCAAoCn6B,GAAGk6B,KAC3D;AAAA,MAAA;AACD,UAAIE,WAAW/uC,WAAU0iB,UAAUgjB,YAAY/wB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAE3E;AAAA,UAAGo6B,UAAS;AACXt1B,UAAEhV,aAAa,MAAMsqC;AAAAA,MACrB;AACD,UAAI7J,KAAKhlC,SAASC,cAAc,KAChC+kC;AAAAA,SAAG/9B,MAAM6nC,WAAW;AAEpBv1B,QAAEhZ,YAAYykC,EAAAA;AACd7kC,WAAK2I,KAAK,gBAAgB,CAAGvI,EAAAA,YAAYgZ,CACzCpZ;AAAAA,WAAKymC,UAAU/3B,KAAK0K,CAEpByrB;AAAAA,SAAG3kC,YAAY,sCAAsCoU,GAAG3S,OAAO;AAC/D3B,WAAK4uC,UAAU/J,GAAG58B,cAAc;AAEhCtI,MAAAA,WAAUiG,MAAM5F,KAAK4uC,SAAS,WAAW,SAAS96B,GACjD;AAAA,YAAIA,EAAE+6B;AAAU,iBAAO;AACvB,YAAIlR,OAAO7pB,EAAEg7B;AACb,YAAInR,QAAQh+B,WAAU+Q,KAAKC;AAAWhR,UAAAA,WAAUoV,SAAS,IACzD;AAAA,YAAI4oB,QAAQh+B,WAAU+Q,KAAKE;AAAajR,UAAAA,WAAUoV,SAAS,KAAA;AAE3D,YAAG4oB,QAAQh+B,WAAU+Q,KAAKC,aAAagtB,QAAQh+B,WAAU+Q,KAAKE,aAAY;AACzE,cAAGkD,EAAEC;AAAgBD,cAAEC,eAAAA;AAAAA,QACvB;AAAA,MACJ,CAAA;AACEpU,MAAAA,WAAUiG,MAAM5F,KAAK4uC,SAAS,eAAe,SAAU96B,GAAAA;AACtDA,UAAE0C,eAAe;AACjB,eAAO;AAAA,MACV,CACE7W;AAAAA,MAAAA,WAAU+qB,OAAO1qB,KAAK4uC,SAAS,IAAA;AAE/B5uC,WAAK2I,KAAK,gBAAgB,CAAG4S,EAAAA,aAAa;AAAA,IAC1C;AACD,QAAIvb,KAAKwI,GAAG4H,eAAe,KAAKpQ,KAAK6U,cAAcP,GAAGvU,IAAI;AAEzD,UAAIC,KAAKuB,OAAO2hC,yBAAyBljC,KAAKsW;AAC7C8C,UAAEtS,MAAMynC,SAAS;AAClB,UAAIQ,QAAQ/uC,KAAKuB,OAAO,YAAavB,KAAK4V,YAAYtB,GAAGvU,KAAM,SAAS,SAAA;AACxE,UAAIivC,YAAY;AAEhB,UAAIC;AAEJ,eAAStnC,IAAI,GAAGA,IAAIonC,MAAMnnC,QAAQD,KAAK;AACtC,cAAMunC,cAAcH,MAAMpnC;AAC1BsnC,mBAAWjvC,KAAKuT,SAAS6d,oBAAoB8d,WAC7CF;AAAAA,qBAAa,6BAA6BE,WAAAA,YAAuBlvC,KAAKqT,OAAOC,OAAO47B,WAAiBD,CAAAA,KAAAA,QAAAA;AAAAA,MACrG;AACD,UAAIrvC,MAAMI,KAAKouC,cAAc95B,IAAIvC,OAAO+7B,OAAO,GAAGj7B,KAAKi7B,MAAM,MAAM,IAAI,qCAAqCkB,WAAW,IAAA;AAEvH,UAAG16B,GAAGk6B,OAAM;AACX5uC,YAAIkH,MAAM2nC,YAAY,oCAAoCn6B,GAAGk6B,KAC7D;AAAA,MAAA;AACD,UAAGl6B,GAAG66B,WAAU;AACfvvC,YAAIkH,MAAM2nC,YAAY,+BAA+Bn6B,GAAG66B,SACxD;AAAA,MAAA;AAGDnvC,WAAK2I,KAAK,gBAAgB,CAAGvI,EAAAA,YAAYR,GACzCI;AAAAA,WAAKymC,UAAU/3B,KAAK9O,GACpB;AAAA,IAAA;AACD,QAAGI,KAAKuB,OAAOsiC,kBAAkB7jC,KAAKoW,YAAY9B,GAAGvU,IAAG;AACvDC,WAAKovC,uBAAuB96B,EAC5B;AAAA,IAAA;AAAA,EACF;AACA3U,EAAAA,WAAUyuC,gBAAgB,SAAU95B,IAAIpC,GAAGC,GAAGhJ,GAAGI,GAAGzC,OAAOuoC,UAAUC,UAAUpb,QAAAA;AAC9E,QAAI9a,IAAIvZ,SAASC,cAAc,KAAA;AAC/B,QAAIC,MAAKuU,GAAGvU;AACZ,QAAIwvC,MAAK,SAAW,sCAAsC;AAE1D,QAAI/iB,QAAQ7sB,WAAUqG,SAAAA;AACtB,QAAGwmB,MAAMrW,WAAW7B,GAAGvU,IAAG;AACzBwvC,MAAAA,OAAM;AAAA,IACN;AAED,QAAG/iB,MAAMvW,aAAa3B,GAAGvU,IAAG;AAC3BwvC,MAAAA,OAAM;AAAA,IACN;AAED,QAAIC,MAAM7vC,WAAU0iB,UAAUgjB,YAAY/wB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EACtE;AAAA,QAAIk7B;AAAKD,MAAAA,MAAKA,MAAK,MAAMC;AAEzB,QAAGxvC,KAAKuB,OAAO2hC,uBAAuB;AACrCqM,MAAAA,OAAM;AAAA,IACN;AAED,QAAIE,WAAWtmC;AAEf,QAAIlC,OAAO,oBAAoBlH,MAAK,OAAOC,KAAKuB,OAAO8iC,kBAAkB,OAAOtkC,MAAK,cAAcwvC,MAChG,qCAAqCp9B,IAAI,UACvCnS,KAAKuB,OAAU,MAAI,WAAS,WAAW2Q,IAAI,eAAeu9B,WAAW,gBAAgBlmC,IAAI,SAC1FzC,SAAS,MAAM;AACnBsS,MAAElZ,YAAY+G;AAEd,QAAImB,YAAYgR,EAAE+N,UAAU,IAAA,EAAM9mB;AAElC,QAAA,CAAK6zB,UAAUv0B,WAAU+vC,YAAYtnC,WAAWkM,IAAInL,GAAGI,GAAG8lC,UAAUC,QAAAA,GAAW;AAC9E,UAAGh7B,GAAGk6B,OAAM;AACXpmC,kBAAUtB,MAAM2nC,YAAY,oCAAoCn6B,GAAGk6B,KACnE;AAAA,MAAA;AACD,UAAGl6B,GAAG66B,WAAU;AACf/mC,kBAAUtB,MAAM2nC,YAAY,+BAA+Bn6B,GAAG66B;MAC9D;AAED,aAAO/mC;AAAAA,IACT,OAAQ;AACNA,kBAAYgR,EAAE/Y;AACd,UAAGiU,GAAGk6B,OAAM;AACXpmC,kBAAUtB,MAAM2nC,YAAY,oCAAoCn6B,GAAGk6B;MACnE;AACD,UAAGl6B,GAAG66B,WAAU;AACf/mC,kBAAUtB,MAAM2nC,YAAY,+BAA+Bn6B,GAAG66B,SAAAA;AAAAA,MAC9D;AAED,UAAIQ,aAAa;AACjBA,oBAAc,2CAA2CN,WAAW;AACpEM,oBAAc,2BAA2BL,WAAW;AAEpD,UAAIM,eAAe;AACnB,UAAI1b,UAAU5f,GAAGu7B,iBAAiB;AACjCD,uBAAe,uBAAuBA;AAEvCD,oBAAc,iBAAiBC,eAAe,sBAAsB1b,SAAS,sBAAsB,MAAM;AAEzG9rB,gBAAUlI,YAAYyvC;AAAAA,IACtB;AAED,WAAOvnC;AAAAA,EACR;AACAzI,EAAAA,WAAU+vC,cAAc,WAAA;AACvB,WAAO;AAAA,EACR;AACA/vC,EAAAA,WAAU8pC,gBAAgB,SAASjqC,KAAAA;AAClC,QAAIQ,KAAKoV,SAAS;AAAO,aAAOpV,KAAK2I,KAAK,cAAgB,EAAA,CAAA,EAAGtI;AAC7D,WAAOL,KAAK2I,KAAK,cAAgB,EAAA,CAAA,EAAGmnC,WAAWtwC,GAAAA;AAAAA,EAChD;AACAG,EAAAA,WAAU8sC,oBAAoB,SAASrnC,MAAM2qC,MAC5C;AAAA,QAAIvwC,MAAMiT,KAAKkI,OAAO3a,KAAK6c,eAAezX,MAAM,CAAA,IAAKpF,KAAKwV,cAAc,KAAK,KAAK,KAAK,IAAA;AAEvF,QAAIu6B,QAAQ/vC,KAAKoF,KAAKuZ,UAAUvZ,IAAO5F;AAAAA;AACvC,WAAOA;AAAAA,EACR;AAIAG,EAAAA,WAAUqwC,iBAAiB,SAASC,OAAOC,WAAWC,YACrD;AAAA,QAAA,CAAInwC,KAAKia;AACR,aAAOg2B;AACR,QAAA,CAAIjwC,KAAKia,YAAYm2B;AACpBpwC,WAAKia,YAAYm2B,eAAeH;AAAAA;AAEhCA,cAAQjwC,KAAKia,YAAYm2B;AAE1B,QAAIC,QAAQH,YAAYD;AACxB,WAAOI,QAAQH,YAAaC,YAAW;AACtCF;AACAI,eAASH;AAAAA,IACT;AACDD,YAAQx9B,KAAKC,IAAIu9B,OAAO,CAAA;AACxB,WAAOA;AAAAA,EACR;AAEAtwC,EAAAA,WAAUqpC,qBAAqB,SAAS10B,IAAAA;AACvC,QAAI/E,MAAMvP,KAAKuB,OAAOgO;AACtB,QAAI+gC,UAAUtwC,KAAK4b;AACnB,QAAI1J,IAAIo+B,QAAQh8B,GAAGq0B;AACnB,QAAIO,KAAKoH,QAAQh8B,GAAGs0B,KACpB;AAAA,QAAIr5B,KAAK;AACR2C,UAAIo+B,QAAQA,QAAQvpB,UAAAA,IAAcupB,QAAQh8B,GAAGs0B,KAAS0H,IAAAA,QAAQ;AAC9DpH,WAAKoH,QAAQA,QAAQvpB,UAAAA,IAAcupB,QAAQh8B,GAAGq0B,KAAS2H,IAAAA,QAAQ;IAC/D;AAED,QAAIpH,MAAMh3B;AAAGg3B,WAAKoH,QAAQh8B,GAAGs0B,QAAQ;AACrC,QAAIiB,KAAK7pC,KAAKwI,GAAGuH;AAEjB,QAAIkgC,QAAQ37B,GAAGk1B;AACf,QAAGl1B,GAAGvU,MAAMC,KAAKoW,UAAS;AACzB,UAAI8zB,aAAaoG,QAAQr0B,QAAQ3H,GAAGw0B,SAAS,CAAKwH,IAAAA,QAAQr0B,QAAQ3H,GAAGw0B,UAAS9oC,KAAKwI,GAAGgI;AACtFy/B,cAAQtwC,WAAUqwC,eAAeC,OAAOpG,IAAIK;IAC5C;AACD,QAAIqG,iBAAkBN,QAAQpG;AAC9B,QAAI13B,IAAIm+B,QAAQr0B,QAAQ3H,GAAGw0B,MAAWwH,KAAAA,QAAQvpC,SAAU/G,KAAKwI,GAAG2H,qBAAqB,IAAK,KAAMogC;AAChG,WAAO,EAACr+B,GAAKg3B,IAAO/2B,EACrB;AAAA,EAAA;AAEAxS,EAAAA,WAAU0pC,mBAAmB,SAAU/0B,IAAAA;AACtC,QAAIgkB,SAASt4B,KAAKooC;AAClB,QAAIvtB,MAAM7a,KAAKgpC,mBAAmB10B,EAAAA;AAClC,QAAInC,IAAI0I,IAAI1I;AACZ,QAAID,IAAI2I,IAAI3I;AACZ,QAAIg3B,KAAKruB,IAAIquB;AAEb,QAAIsH,gBAAgB;AAIpB,QAAA,CAAKtH;AAAI;AAET,QAAIuH,YAAY9wC,WAAU4B,OAAOuhC,uBAAuB9iC,KAAKoV,SAAS,YACnEd,CAAAA,GAAG8F,UAAUza,WAAU4B,OAAOwhC;AAEjC,QAAI3pB,IAAIvZ,SAASC,cAAc,KAAA;AAC/B,QAAI4wC,aAAcp8B,GAAGgW,eAAe,cAAmBhW,KAAAA,GAAG+4B,cACzDsD,cAAer8B,GAAGgW,eAAe,kBAAkBhW,GAAGg5B;AAEvD,QAAIsD,cAAcH,cAAcn8B,GAAG8F,UAAUs2B;AAC7C,QAAIG,eAAeJ,cAAcn8B,GAAG8F,UAAUu2B;AAE9C,QAAIG,QAAQ;AACZ,QAAIvB,MAAK;AACT,QAAKj7B,CAAAA,GAAG8F,UAAUq2B,WAAW;AAC5BK,cAAQ;AACRvB,MAAAA,MAAK;AAAA,IACL;AACD,QAAGmB,YAAW;AACbnB,MAAAA,OAAM;AAAA,IACN;AACD,QAAGoB,aAAY;AACdpB,MAAAA,OAAM;AAAA,IACN;AACD,QAAGqB,aAAY;AACdJ,uBAAiB;AAAA,IACjB;AACD,QAAGK,cAAa;AACfL,uBAAiB;AAAA,IACjB;AAED,QAAIhB,MAAM7vC,WAAU0iB,UAAUgjB,YAAY/wB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA;AACtE,QAAIk7B,KAAI;AACPD,MAAAA,OAAM,MAAMC;AAAAA,IACZ;AAED,QAAIuB,WAAYz8B,GAAGk6B,QAAS,sCAAsCl6B,GAAGk6B,QAAQ,MAAO;AACpF,QAAIA,QAASl6B,GAAG66B,YAAa,gCAAgC76B,GAAG66B,YAAY,MAAO;AAEnF,QAAI6B,aAAa,CAChB,qBACA,SAAS7+B,IAAI,MACb,UAAUD,IAAI,MACd,YAAYg3B,KAAKh3B,KAAK4+B,QAAQ,IAAI,MAAM,MACxC,aAAa9wC,KAAKwI,GAAGuH,aAAa,KAAK,MACvCy+B,OACAuC,UACCz8B,GAAG+5B,eAAe,EAClB5qC,EAAAA,KAAK,GAEP;AAAA,QAAIwD,OAAO,oBAAoBqN,GAAGvU,KAAK,OAAOC,KAAKuB,OAAO8iC,kBAAkB,OAAO/vB,GAAGvU,KAAK,cAAawvC,MAAK,cAAYyB,aAAW,MAAIhxC,KAAKuT,SAASyb,mBAAmB1a,EAAI,IAAA;AAC7K,QAAIm8B,WAAW;AACdxpC,cAAQupC;AAAAA,IACR;AACD,QAAG7wC,WAAUqG,SAAAA,EAAWvG,QAAQ,SAAQ;AACvC6U,WAAK3U,WAAUwV,SAASb,GAAGvU,EAC3B;AAAA,IAAA;AAED,QAAIuU,GAAG8F,QAAO;AACbnT,cAAQ,0CAA0CtH,WAAU0iB,UAAUijB,eAAehxB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EACjH,CAAA;AAAA,IAAA;AAEDrN,YAAQ;AACRA,YAAQtH,WAAU0iB,UAAUkjB,eAAejxB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,IAAM;AAC7ErN,YAAQ;AACRA,YAAQ;AAERmS,MAAElZ,YAAY+G;AAEdjH,SAAKymC,UAAU/3B,KAAK0K,EAAE/Y,UACtBi4B;AAAAA,WAAOl4B,YAAYgZ,EAAE/Y,UACtB;AAAA,EAAA;AAEAV,EAAAA,WAAUgV,gBAAgB,SAAS1C,MAAAA;AAClC,QAAIlS,MAAK;AACT,WAAOkS,SAASlS,OAAMkS,KAAKkB,cAAc;AACxCpT,MAAAA,MAAKkS,KAAKkB,aAAanT,KAAKuB,OAAO8iC,eACnCpyB;AAAAA,aAAOA,KAAKhJ;AAAAA,IACZ;AACD,WAAOlJ;AAAAA,EACR;AAEAJ,EAAAA,WAAU0Y,OAAO,SAAStY,KACzB;AAAA,QAAIC,KAAK4V,YAAY7V;AAAI;AACzBC,SAAK+U,SAAS,OAAOhV,GACrBC;AAAAA,SAAK4V,WAAW7V;AAChBC,SAAKiV,YAAYlV;EAClB;AACAJ,EAAAA,WAAUoV,WAAW,SAAStV,MAAMM,KAAAA;AACnC,QAAIA,OAAMC,KAAK4V,YAAY7V;AAAI;AAC/B,QAAIuU,KAAKtU,KAAKmV,SAASnV,KAAK4V;AAC5B,QAAItB,IAAI;AACP,UAAI7U;AAAM6U,WAAG3S,OAAO3B,KAAK4uC,QAAQ/nC;AACjC7G,WAAK4V,WAAW;AAChB5V,WAAK4uC,UAAU;AACf5uC,WAAKiV,YAAYX,GAAGvU,EACpBC;AAAAA,WAAKixC,iBAAiB38B,IAAI7U,IAC1B;AAAA,IAAA;AAAA,EACF;AACAE,EAAAA,WAAUsxC,mBAAmB,SAAS38B,IAAI7U,MACzC;AAAA,QAAIO,KAAKgW,YAAY;AACpB,UAAKvW,CAAAA,MAAM;AACV,YAAI6U;AACHtU,eAAKkY,YAAY5D,GAAGvU,IAAI,IAAA;AAAA,MAC5B,OAAS;AACNC,aAAKyB,UAAU,gBAAgB,CAAC6S,GAAGvU,IAAIuU,EAAAA,CAAAA;AAAAA,MACvC;AACDtU,WAAKgW,aAAa;AAAA,IACpB,OAAQ;AACN,UAAIvW,MAAK;AACRO,aAAKyB,UAAU,kBAAkB,CAAC6S,GAAGvU,IAAIuU;MACzC;AAAA,IACD;AAAA,EACF;AAEA3U,EAAAA,WAAUopC,YAAY,SAAShlB,MAAMC,IAAAA;AACpC,QAAIpL,SAAS,CACb;AAAA,aAAS9U,KAAK9D,KAAKimC,SAAS;AAC3B,UAAI3xB,KAAKtU,KAAKimC,QAAQniC,CACtB;AAAA,UAAIwQ,OAAUyP,CAAAA,QAAAA,CAASC,MAAQ1P,GAAGiF,aAAayK,MAAM1P,GAAGuF,WAAWkK;AAClEnL,eAAOlK,KAAK4F;IACb;AACD,WAAOsE;AAAAA,EACR;AACAjZ,EAAAA,WAAUuxC,mBAAmB,SAASnxC,KAAAA;AACrC,SAAKA;AACJ;AACD,QAAIoxC,kBAAkBxxC,WAAU8mC;AAChC,aAAS9+B,IAAE,GAAGA,IAAEwpC,gBAAgBvpC,QAAQD,KAAK;AAC5C,UAAIypC,iBAAiBD,gBAAgBxpC,CACrC;AAAA,UAAIypC,eAAej+B,aAAaxT,WAAU4B,OAAO8iC,eAAoBtkC,KAAAA,KAAI;AACxE,eAAOqxC;AAAAA,MACP;AAAA,IACD;AACD,WAAO;AAAA,EACR;AACAzxC,EAAAA,WAAU0xC,YAAY,SAAStxC,KAAIN,MAAAA;AAClC,QAAIgrB;AACJ,QAAG1qB,OAAAA,OAAaA,QAAO,UAAS;AAC/BN,aAAOM,IAAGN;AACVgrB,gBAAU1qB,IAAG0qB;AACb1qB,MAAAA,MAAKA,IAAG0qB;AAAAA,IACR;AACD,QAAInW,KAAavU,OAAAA,OAAM,YAAmBA,OAAAA,OAAM,WAAYJ,WAAUwV,SAASpV,GAAMA,IAAAA;AACrFN,WAAOA,QAAME,WAAUyV;AAEvB,QAAKd,CAAAA,MAAOtU,KAAKoN,WAAW,sBAA4BpN,KAAAA,CAAAA,KAAKyB,UAAU,wBAAwB,CAAC6S,IAAI7U,IAAAA,CAAAA;AACnG;AAED,QAAI+nB,cAAc7nB,WAAU4B,OAAOimB;AACnC7nB,IAAAA,WAAU4B,OAAOimB,cAAclT,GAAGiF,WAAWI,SAC7C;AAAA,QAAIuJ,kBAAkBvjB,WAAU4B,OAAO2hB;AACvCvjB,IAAAA,WAAU4B,OAAO2hB,kBAAkB;AAEnC,QAAIouB,iBAAiBh9B,GAAGk6B;AACxB,QAAI+C,sBAAsBj9B,GAAG66B;AAC7B,QAAIxvC,WAAU4B,OAAO2iC,2BAA2B;AAC/C5vB,SAAGk6B,QAAQ7uC,WAAU4B,OAAOihC;AAC5BluB,SAAG66B,YAAYxvC,WAAU4B,OAAOkhC;AAAAA,IAChC;AAED9iC,IAAAA,WAAUyG,eAAe,IAAIiP,KAAKf,GAAGiF,aAAa9Z,IAElD;AAAA,aAAS+xC,wBACRl9B;AAAAA,SAAGk6B,QAAQ8C;AACXh9B,SAAG66B,YAAYoC;AAAAA,IACf;AAED5xC,IAAAA,WAAU4B,OAAOimB,cAAcA;AAC/B7nB,IAAAA,WAAU4B,OAAO2hB,kBAAkBA;AAEnC,QAAIvjB,WAAU8O,UAAU9O,WAAU8O,OAAOhP,IAAAA,GAAO;AAC/C,UAAI4C,WAAW1C,WAAUwgB,QAAAA;AACzB,UAAIgJ,WAAW9mB,SAASiqB;AAExB,UAAI1mB,SAAQjG,WAAUwV,SAASb,GAAGvU,EAElC;AAAA,UAAG6F,QAAM;AACR,YAAI6kB,CAAAA,SAAQ;AACX,cAAIA,UAAU7kB,OAAMujB,QACpB;AAAA,cAAG1hB,MAAMC,QAAQ+iB,UAAS;AACzBA,sBAAUA,QAAQ,CAAA;AAAA,UAClB,WAAK,OAAUA,YAAY,YAAY9qB,WAAU4B,OAAOkwC,qBAAqBhnB,QAAQ1T,QAAQpX,WAAU4B,OAAOkwC,iBAAsB,IAAA,IAAE;AACtIhnB,sBAAUA,QAAQlmB,MAAM5E,WAAU4B,OAAOkwC,iBAAAA,EAAmB,CAC5D;AAAA,UAAA;AAAA,QACD;AACD,YAAI5+B,MAAMxQ,SAASqvC,cAAcjnB,OAAAA;AACjC,YAAI1Y,OAAO1P,SAASsvC,YAAY/rC,OAAM2T,UACtC;AAAA,YAAInR,YAAYzI,WAAUqI,WAAWC,cAAc;AACnD8J,eAAOA,QAAQ3J,UAAUmC,cAAclI,SAASuvC,MAAM;AACtD/+B,cAAMA,MAAMzK,UAAUiC,eAAe,IAAIhI,SAAS2Z,KAAG;AAErD,YAAI3Z,SAASwvC,uBAA0B,GAAA;AACtC,cAAI3lC,YAAY7J,SAASsB,YAAY,YAAY,WAAA;AAChD6tC;AACAnvC,qBAASgL,YAAYnB,SAC1B;AAAA,UAAA,CAAA;AAAA,QACI;AAED7J,iBAASyvC,SAAS,EACjB//B,MACAc,IAED,CAAA;AAAA,YAAA,CAAKxQ,SAASwvC,uBAAAA,GAA0B;AACvCL,gCAAAA;AAAAA,QACA;AAAA,MACD;AAAA,IACH,OAAM;AACJA,4BAAAA;AAAAA,IACA;AAED7xC,IAAAA,WAAU8B,UAAU,uBAAuB,CAAC6S,IAAI7U,IAAAA,CAAAA;AAAAA,EACjD;AAGA;AC1xCe,SAASsC,SAAOpC,YAG/BA;AAAAA,EAAAA,WAAUoyC,sBAAsB,SAASC,GAAAA;AACxC,QAAGA,EAAE/oC;AAAY;AACjB,QAAIgpC,OAAOtyC,WAAUgJ,KAAK,cAAA,EAAgB,CAE1C;AAAA,QAAIupC,QAAQD,KAAKE;AACjB,QAAI/tC,YAAYzE,WAAUsT,cAAci/B,KACxC;AAAA,QAAG9tC,UAAU2S,QAAQ,kBAAsB,IAAA,KAAKm7B,MAAME,iBAAgB;AACrEF,cAAQA,MAAME;AAAAA,IACd;AAEDhuC,gBAAYzE,WAAUsT,cAAci/B,KAAAA;AACpC,QAAIA,SAAS9tC,UAAU2S,QAAQ,kBAAwB,MAAA,GAAG;AACzDm7B,YAAM9xC,YAAY4xC,CAClB;AAAA,IAAA;AAAA,EACF;AAEAryC,EAAAA,WAAU0yC,0BAA0B,SAASL,GAAGpsC,QAC/C;AAAA,QAAI0sC,OAAO3yC,WAAU+tC,cAAc9nC,QAAO,CAC1CosC;AAAAA,MAAElrC,MAAM+L,MAAMy/B,KAAKz/B,MAAM;AACzBm/B,MAAElrC,MAAMC,SAASurC,KAAKvrC,SAAS;AAAA,EAChC;AAEApH,EAAAA,WAAUyvC,yBAAyB,SAASxpC,QAC3C;AAAA,QAAIosC,IAAInyC,SAASC,cAAc,KAE/BkyC;AAAAA,MAAEjtC,aAAa,YAAYa,OAAM7F,EAAAA;AACjCiyC,MAAEjtC,aAAa/E,KAAKuB,OAAO8iC,iBAAiBz+B,OAAM7F,EAAAA;AAClDC,SAAKymC,UAAU/3B,KAAKsjC,CAAAA;AACpBhyC,SAAKqyC,wBAAwBL,GAAGpsC,MAAAA;AAEhC,QAAIe,MAAM3G,KAAKqiB,UAAUojB,kBAAkB7/B,OAAM2T,YAAY3T,OAAMiU,UAAUjU,MAC7E;AAAA,QAAIqB,OAAOjH,KAAKqiB,UAAUqjB,oBAAoB9/B,OAAM2T,YAAY3T,OAAMiU,UAAUjU,MAAAA;AAChFosC,MAAE5tC,YAAY;AACd,QAAGuC;AACFqrC,QAAE5tC,aAAa,MAAMuC;AACtB,QAAGM;AACF+qC,QAAE9xC,YAAY+G;AACfjH,SAAK+xC,oBAAoBC,CAC1B;AAAA,EAAA;AAEA;AC3Ce,SAASjwC,SAAOpC,YAG/BA;AAAAA,EAAAA,WAAU4yC,SAASpX,MAAM,EACxBqX,UAAU,SAAS1Y,MAAMmB,KAAAA;AAExB,QAAGA,IAAIG,eAAeH,IAAIG,YAAY/6B,YAAW;AAChD,aAAO;AAAA,IACP;AAED,QAAA;AACC,UAAI08B,SAASp9B,WAAU66B,KAAKE,MAAMO,IAAIh3B,YACtC;AAAA,UAAIwuC,aAAa9yC,WAAU66B,KAAKO,OAAO,QAAQgC,MAC/C;AAAA,UAAG0V,cAAcA,WAAW1d,YAAY,QAAO;AAC9C,eAAO;AAAA,MACP;AAAA,IACD,SAAOjhB,GAAAA;AAAAA,IACP;AACD,WAAO;AAAA,EACP,GACD4mB,OAAO,SAASgY,QAAAA;AACf,QAAIvX;AAEJ,QAAKuX,CAAAA,OAAO3V,OAAO3B,aAAa;AAC/BsX,aAAO3V,OAAO3B,cAAcz7B,WAAU66B,KAAKE,MAAMgY,OAAO3V,OAAO94B,YAC/D;AAAA,IAAA;AAEDk3B,UAAMx7B,WAAU66B,KAAKO,OAAO,QAAQ2X,OAAO3V;AAC3C,QAAI5B,IAAIpG,WAAW;AAAQ,aAAO;AAClC,QAAI4d,YAAYxX,IAAIhoB,aAAa,cAAA;AACjC,QAAIw/B,WAAW;AACd,UAAI1xC,OAAO5B,QAAQ;AAClB4B,eAAO5B,OAAOuzC,eAAeD;AAAAA,MAC7B;AACDhzC,MAAAA,WAAUizC,eAAeD;AAAAA,IACzB;AAED,QAAIh6B,OAAOhZ,WAAU66B,KAAKa,MAAM,kBAAkBqX,OAAO3V;AACzD,aAASp1B,IAAI,GAAGA,IAAIgR,KAAK/Q,QAAQD,KAAK;AACrC,UAAIiF,OAAO+L,KAAKhR,CAAAA,EAAGwL,aAAa,KAAA;AAChC,UAAI0/B,MAAMlzC,WAAUiqB,WAAWhd,IAAAA;AAC/B,UAAKimC,CAAAA,KAAK;AACTlzC,QAAAA,WAAUiqB,WAAWhd,IAAAA,IAAQimC,MAAM,CACnC;AAAA,MAAA;AACDA,UAAIhpB,OAAO,GAAGgpB,IAAIjrC,MAClB;AAAA,UAAIkrC,OAAOnzC,WAAU66B,KAAKa,MAAM,WAAW1iB,KAAKhR,CAAAA,CAAAA;AAChD,eAAS8a,IAAI,GAAGA,IAAIqwB,KAAKlrC,QAAQ6a,KAAK;AACrC,YAAIswB,MAAMD,KAAKrwB,CAAAA;AACf,YAAI6M,QAAQyjB,IAAI/kB;AAChB,YAAIpuB,MAAM,EAAEwpB,KAAK0pB,KAAKrwB,CAAGtP,EAAAA,aAAa,OAAUC,GAAAA,OAAO0/B,KAAKrwB,CAAAA,EAAGtP,aAAa,OAC5E,EAAA;AAAA,iBAAS04B,IAAI,GAAGA,IAAIvc,MAAM1nB,QAAQikC,KAAK;AACtC,cAAI9d,OAAOuB,MAAMuc,CACjB;AAAA,cAAI9d,KAAK+H,YAAY,WAAW/H,KAAK+H,YAAY;AAChD;AACDl2B,cAAImuB,KAAK+H,QAAAA,IAAY/H,KAAKilB;AAAAA,QAC1B;AACDH,YAAInkC,KAAK9O,GACT;AAAA,MAAA;AAAA,IACD;AACD,QAAI+Y,KAAK/Q;AACRjI,MAAAA,WAAU8B,UAAU,iBAAiB,CAEtC,CAAA;AAAA,QAAIwxC,KAAKtzC,WAAU66B,KAAKa,MAAM,cAAcqX,OAAO3V,MAAAA;AACnD,aAASp1B,IAAI,GAAGA,IAAIsrC,GAAGrrC,QAAQD,KAAK;AACnC,UAAIurC,MAAMvzC,WAAUwzC,eAAeF,GAAGtrC,CAAAA,CAAAA;AACtChI,MAAAA,WAAUyzC,UAAUF,IAAIlmC,IAAAA,IAAQkmC,IAAIvxC;AAAAA,IACpC;AAED,QAAIkmC,MAAM,CACV1M;AAAAA,UAAMx7B,WAAU66B,KAAKa,MAAM,WAAWqX,OAAO3V,MAE7C;AAAA,aAASp1B,IAAI,GAAGA,IAAIwzB,IAAIvzB,QAAQD,KAAK;AACpC,UAAI2M,KAAKuzB,IAAIlgC,CAAKhI,IAAAA,WAAUwzC,eAAehY,IAAIxzB;AAC/ChI,MAAAA,WAAU0zC,YAAY/+B,EACtB;AAAA,IAAA;AACD,WAAOuzB;AAAAA,EACP,EAGF;AAAA;AC/Ee,SAAS9lC,SAAOpC,YAAAA;AAG/BA,EAAAA,WAAU2zC,OAAO3zC,WAAU4yC,SAASe,OAAO,EAC1Cd,UAAU,SAAS1Y,MAAAA;AAClB,QAAGA,QAAAA,OAAeA,SAAS,UAAS;AACnC,aAAO;AAAA,IACV,WAAmBA,OAAAA,SAAS,UAAS;AAClC,UACC;AAAA,YAAIlhB,SAASvJ,KAAKqrB,MAAMZ,IACxB;AAAA,eAAO7P,OAAOI,UAAU0I,SAAS1Y,KAAKzB,YAAY,qBAChDqR,OAAOI,UAAU0I,SAAS1Y,KAAKzB,MAAAA,MAAY;AAAA,MAC7C,SAAQ26B,KACR;AAAA,eAAO;AAAA,MACP;AAAA,IACD;AACD,WAAO;AAAA,EACP,GACD7Y,OAAO,SAASZ,MAAAA;AACf,QAAI0Z,SAAS,CAEb;AAAA,QAAA,OAAW1Z,QAAQ,UAAU;AAC5BA,aAAOzqB,KAAKqrB,MAAMZ,IAAAA;AAAAA,IAClB;AACD,QAAI7P,OAAOI,UAAU0I,SAAS1Y,KAAKyf,IAAAA,MAAU,kBAAkB;AAC9D0Z,eAAS1Z;AAAAA,IACZ,OAAS;AACN,UAAGA,MAAK;AACP,YAAGA,KAAK0Z,QAAO;AACdA,mBAAS1Z,KAAK0Z;AAAAA,QACnB,WAAa1Z,KAAKA,MAAK;AAClB0Z,mBAAS1Z,KAAKA;AAAAA,QACd;AAAA,MACD;AAAA,IACD;AACD0Z,aAASA,UAAU,CAAA;AAEnB,QAAI1Z,KAAK2Z,cAAc;AACtB,UAAIxyC,OAAO5B,QAAQ;AAClB4B,eAAO5B,OAAOuzC,eAAe9Y,KAAK2Z;AAAAA,MAClC;AACD9zC,MAAAA,WAAUizC,eAAe9Y,KAAK2Z;AAAAA,IAC9B;AAED,QAAIC,cAAe5Z,QAAQA,KAAK4Z,cAAe5Z,KAAK4Z,cAAc;AAClE,QAAIC,qBAAqB;AACzB,aAASvqB,OAAOsqB,aAAa;AAC5B,UAAIA,YAAYppB,eAAelB,GAAM,GAAA;AACpCuqB,6BAAqB;AACrB,YAAIhqB,aAAa+pB,YAAYtqB,GAAAA;AAC7B,YAAIypB,MAAMlzC,WAAUiqB,WAAWR,GAAAA;AAC/B,YAAKypB,CAAAA,KAAK;AACTlzC,UAAAA,WAAUiqB,WAAWR,GAAAA,IAAOypB,MAAM,CAAA;AAAA,QAClC;AACDA,YAAIhpB,OAAO,GAAGgpB,IAAIjrC,MAClB;AAAA,iBAAS6a,IAAI,GAAGA,IAAIkH,WAAW/hB,QAAQ6a,KAAK;AAC3C,cAAImxB,SAASjqB,WAAWlH,CACxB;AAAA,cAAI7iB,MAAM,EAAEwpB,KAAKwqB,OAAO/sC,OAAOuM,OAAOwgC,OAAOxgC,MAC7C;AAAA,mBAASygC,cAAcD,QAAQ;AAC9B,gBAAIA,OAAOtpB,eAAeupB,UAAAA,GAAa;AACtC,kBAAIA,cAAc,WAAWA,cAAc;AAC1C;AACDj0C,kBAAIi0C,UAAAA,IAAcD,OAAOC,UAAAA;AAAAA,YACzB;AAAA,UACD;AACDhB,cAAInkC,KAAK9O,GAAAA;AAAAA,QACT;AAAA,MACD;AAAA,IACD;AACD,QAAI+zC;AACHh0C,MAAAA,WAAU8B,UAAU,iBAAiB,CAAA,CAAA;AAEtC,QAAIomC,MAAM,CACV;AAAA,aAASlgC,IAAI,GAAGA,IAAI6rC,OAAO5rC,QAAQD,KAAK;AACvC,UAAI/B,SAAQ4tC,OAAO7rC,CACnBhI;AAAAA,MAAAA,WAAU0zC,YAAYztC,MAAAA;AACtBiiC,UAAIn5B,KAAK9I;IACT;AACD,WAAOiiC;AAAAA,EACP,EAAA;AAGF;AClFe,SAAS9lC,SAAOpC,YAAAA;AAG/BA,EAAAA,WAAUm0C,OAAOn0C,WAAU4yC,SAASuB,OAAO,EAC1CtB,UAAU,SAAS1Y,MAAAA;AAClB,eAAUA,SAAS,UAAS;AAC3B,aAAO,IAAItM,OAAO,kBAAoBmK,EAAAA,KAAKmC;IAC3C;AAED,WAAO;AAAA,EACP,GACDY,OAAM,SAAS1U,KACd;AAAA,QAAI8T,OAAO9T,IAAI6W,MAAMrP,OAAOxtB,KAAK+zC,UAAQ,WAAS/zC,KAAKg0C,OAAM;AAC7D,QAAKla,CAAAA,KAAKlyB;AAAQ;AAGlBkyB,SAAK,CAAA,IAAGA,KAAK,CAAA,EAAG7iB,QAAQ,aAAY,EAGpC6iB;AAAAA,SAAK,CAAGA,IAAAA,KAAK,CAAG7iB,EAAAA,QAAQ,wBAAuB,GAE/C6iB;AAAAA,SAAK,CAAGA,IAAAA,KAAK,CAAG7iB,EAAAA,QAAQ,gBAAe,GAAA;AAGvC,QAAIg9B,WAAS,CAAA;AACb,QAAIpX;AACJ,QAAIqX,UAAU1mB,OAAO,QAAMxtB,KAAKm0C,UAAQ,kBAAgBn0C,KAAKo0C,QAAM,KAAI,GAAA;AACvE,YAAQvX,QAAMqX,QAAQG,KAAKva,IAAW,OAAA,MAAK;AAC1C,UAAIhmB,IAAE,CAAA;AACN,UAAIwgC;AACJ,UAAIC,UAAU;AACd,cAAQD,QAAMC,QAAQF,KAAKxX,MAAM,CAAA,CAAA,OAAS;AACzC78B,aAAKw0C,YAAYF,MAAMvhB,SAAWjf,GAAAA,CAAAA;AACnC,UAAIA,EAAEiG,OAAAA,CAAQjG,EAAE/T;AAAI+T,UAAE/T,KAAK+T,EAAEiG;AAC7Bk6B,eAASvlC,KAAKoF,CACd;AAAA,IAAA;AACD,WAAOmgC;AAAAA,EACP,GACDO,aAAY,SAASxuB,KAAIpmB,KAAAA;AACxB,QAAIwZ,IAAI4M,IAAIjP,QAAQ,GACnB;AAAA,QAAIqC;AAAO;AAEZ,QAAIpM,OAAOgZ,IAAIyuB,OAAO,GAAEr7B,CAAAA,EAAG1M;AAC3B,QAAI7F,QAAQmf,IAAIyuB,OAAOr7B,IAAE,CAAA,EAAGnC,QAAQ,QAAO,KAAKA,QAAQ,YAAW,EACnE;AAAA,QAAIjK,QAAM;AACTA,aAAK;AAAA,aACGA,QAAM,WAAU;AACxBA,aAAO;AACPnG,cAAQ7G,KAAKipB,WAAWpiB,OAAM,GAAE,CAAA;AAAA,IAChC,WACQmG,QAAM,SAAQ;AACtBA,aAAO;AACPnG,cAAQ7G,KAAKipB,WAAWpiB,OAAM,GAAE,CAAA;AAAA,IAChC;AACDjH,QAAIoN,IAAMnG,IAAAA;AAAAA,EACV,GACDoiB,YAAW,SAASpiB,OAAM6tC,IAAGC,IAAAA;AAC5B,QAAIz/B,IAAIrO,MAAMtC,MAAM,GAAA;AAEpB,QAAIqwC,UAAU;AACd,QAAI1/B,EAAE,CAAG,GAAA;AACRw/B,WAAGx/B,EAAE,CAAGu/B,EAAAA,OAAO,GAAE,CAAA;AACjBE,WAAGz/B,EAAE,CAAA,EAAGu/B,OAAO,GAAE,CACjBG;AAAAA,gBAAAA,CAAAA,EAAa1/B,EAAE,CAAA,EAAG,CAAM,KAAA;AAAA,IACxB;AACD,QAAI8G,KAAK9G,EAAE,CAAGu/B,EAAAA,OAAO,GAAE,CACvB;AAAA,QAAII,KAAK7vB,SAAS9P,EAAE,CAAA,EAAGu/B,OAAO,GAAE,IAAG,EAAI,IAAA;AACvC,QAAIpwB,KAAKnP,EAAE,CAAA,EAAGu/B,OAAO,GAAE;AAEvB,QAAG90C,WAAU4B,OAAOgiC,cAAcqR,SAAQ;AACzC,aAAO,IAAIv/B,KAAKA,KAAK6pB,IAAIljB,IAAG64B,IAAGxwB,IAAGqwB,IAAGC,EAAAA,CAAAA;AAAAA,IACxC,OAAO;AACJ,aAAO,IAAIt/B,KAAK2G,IAAG64B,IAAGxwB,IAAGqwB,IAAGC;IAC5B;AAAA,EACD,GACDZ,SAAQ,mBACRI,SAAQ,gBACRC,OAAM,cACNJ,OAAM,gBAGP;AAAA;ACjFe,SAAQc,gBAACn1C,YACvB;AAAA,UAAO,WACN;AAAA,QAAI4e,MAAM,CAAA;AACV,aAASza,KAAK9D,KAAKimC,SAAQ;AAC1B,UAAI3xB,KAAKtU,KAAKimC,QAAQniC,CAAAA;AACtB,UAAIwQ,GAAGvU,GAAGgzB,SAAAA,EAAWhc,QAAQ,GAAS,KAAA,IAAE;AACvCwH,YAAIjK,GAAGvU,EAAAA,IAAMuU;AAAAA,MACb;AAAA,IACD;AACD,WAAOiK;AAAAA,EACP,GAAE3R,KAAKjN,UACT;AAAA;ACNe,SAASoC,SAAOpC,YAE/BA;AAAAA,EAAAA,WAAUumC,UAAU,CAAA;AACpBvmC,EAAAA,WAAUqiB,QAAQ,SAASoY,MAAKrW,MAC/BqW;AAAAA,IAAAA,OAAMA,QAAOp6B,KAAK+0C;AAElB,QAAA,CAAI3a,MAAI;AAEP;AAAA,IACA;AAEDA,IAAAA,SAAQA,KAAIrjB,QAAQ,GAAS,KAAA,KAAI,MAAM,OAAO,gBAAe,oBAAK1B,QAAQ0H,kBAC1E;AAAA,QAAI/c,KAAKuB,OAAOyzC;AAAkB5a,MAAAA,QAAO,UAAUp6B,KAAK+Z,IAAAA;AACxD,QAAIiK;AACJD,WAAOA,QAAQ/jB,KAAKsV;AACpB,aAAS2/B,aAAaC,UAAAA;AACrBv1C,MAAAA,WAAUw1C,QAAQD,QAClBv1C;AAAAA,MAAAA,WAAU8B,UAAU,aAAa;IACjC;AACD,QAAIzB,KAAK+hB,YAAY;AACpB,UAAIqzB,KAAKp1C,KAAKqiB,UAAU8iB;AAExBphB,aAAO/jB,KAAKoF,KAAKpF,KAAK+hB,aAAa,QAAU,EAAA,IAAI1M,KAAK0O,KAAK7M,QAC3D,CAAA,CAAA;AAAA,aAAO6M,OAAO/jB,KAAKwV;AAAWuO,eAAO/jB,KAAKoF,KAAKT,IAAIof,MAAO,IAAG/jB,KAAK+hB,UAAAA;AAClEiC,WAAKD;AAEL,UAAIsxB,aAAa;AACjB,aAAOrxB,KAAKhkB,KAAK0V,WAAW;AAC3BsO,aAAKhkB,KAAKoF,KAAKT,IAAIqf,IAAI,GAAGhkB,KAAK+hB,UAAAA;AAC/B,YAAI/hB,KAAKkmC,QAAQkP,GAAGrxB,IAAAA,CAAAA,KAAUsxB;AAC7BtxB,iBAAO/jB,KAAKoF,KAAKT,IAAIof,MAAM,GAAG/jB,KAAK+hB,UAAAA;AAAAA;AAAkBszB,uBAAa;AAAA,MACnE;AAED,UAAIC,UAAUtxB;AACd,SAAG;AACFA,aAAKsxB;AACLA,kBAAUt1C,KAAKoF,KAAKT,IAAIqf,IAAAA,IAAQhkB,KAAK+hB,UAAAA;AAAAA,MACxC,SAAWuzB,UAAUvxB,QAAQ/jB,KAAKkmC,QAAQkP,GAAGE,OAE3C,CAAA;AAAA,UAAItxB,MAAMD;AACT,eAAO;AAERpkB,MAAAA,WAAU66B,KAAK0B,IAAI9B,OAAM,WAAWgb,GAAGrxB,IAAAA,IAAQ,SAASqxB,GAAGpxB,EAAKixB,GAAAA,YAAAA;AAEhE,aAAOlxB,OAAOC,IAAI;AACjBhkB,aAAKkmC,QAAQkP,GAAGrxB,IAAS,CAAA,IAAA;AACzBA,eAAO/jB,KAAKoF,KAAKT,IAAIof,MAAM,GAAG/jB,KAAK+hB,UACnC;AAAA,MAAA;AAAA,IACH,OAAQ;AACNpiB,MAAAA,WAAU66B,KAAK0B,IAAI9B,MAAK6a,YACxB;AAAA,IAAA;AAGDj1C,SAAKyB,UAAU,SAAS,CACxBzB,CAAAA;AAAAA,SAAKyB,UAAU,eAAe,CAC9B,CAAA;AAAA,WAAO;AAAA,EACR;AAEA9B,EAAAA,WAAU4yC,WAAW,CAAA;AAGrBgD,WAAU51C,UACV61C;AAAAA,WAAW71C;AACX81C,WAAW91C,UAAAA;AAEXA,EAAAA,WAAUw1C,UAAU,SAAUzC,QAAAA;AAC7B1yC,SAAKyB,UAAU,iBAAiB,CAAA,CAAA;AAEhC,QAAIomC;AACJ,QAAI14B,QAAQ;AAEZ,QAAIumC,cAAc;AAClB,aAAQ/tC,KAAK3H,KAAKuyC,UAAS;AAC1B,UAAIoD,SAAS31C,KAAKuyC,SAAS5qC,CAC3B;AAAA,UAAGguC,OAAOnD,SAASE,OAAO3V,OAAO94B,cAAcyuC,OAAO3V,MAAAA,GAAQ;AAC7D,YAAA;AACC,cAAIuX,QAAQ5B,OAAO3V,OAAO94B;AAC1B,cAAG0D,MAAM,OAAM;AACd2sC,oBAAQ5B;AAAAA,UACR;AACD7K,gBAAM8N,OAAOjb,MAAM4Z,KAAAA;AACnB,cAAIzM,CAAAA,KAAI;AACP14B,oBAAQ;AAAA,UACR;AAAA,QACD,SAAM2E,GAAAA;AACN3E,kBAAQ;AAAA,QACR;AACDumC,sBAAc;AACd;AAAA,MACA;AAAA,IACD;AAED,QAAA,CAAIA,aAAY;AACf,UAAG11C,KAAK41C,YAAY51C,KAAKA,KAAK41C,QAAAA,GAAU;AACvC,YAAA;AACC/N,gBAAM7nC,KAAKA,KAAK41C,QAAAA,EAAUlb,MAAMgY,OAAO3V,OAAO94B,YAC9C;AAAA,QAAA,SAAO6P,GAAAA;AACP3E,kBAAQ;AAAA,QACR;AAAA,MACJ,OAAO;AACJA,gBAAQ;AAAA,MACR;AAAA,IACD;AAED,QAAGA,SAAUujC,OAAO3V,OAAO7B,UAAUwX,OAAO3V,OAAO7B,UAAU,KAAK;AACjEl7B,WAAKyB,UAAU,eAAe,CAACixC,OAAO3V,MACtC8K,CAAAA;AAAAA,YAAM,CACN;AAAA,IAAA;AAED7nC,SAAK61C,iBAAiBhO,GAAAA;AAGtB7nC,SAAKyB,UAAU,SAAS,CAAA,CAAA;AACxBzB,SAAKyB,UAAU,WAAW,CAC3B,CAAA;AAAA,EAAA;AACA9B,EAAAA,WAAUk2C,mBAAmB,SAAShO,KAAAA;AACrC7nC,SAAKga,WAAW;AAChBha,SAAKgoC,cAAc;AACnB,aAASrgC,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,UAAK3H,CAAAA,KAAKyB,UAAU,kBAAkB,CAAComC,IAAIlgC,CAAAA,CAAAA,CAAAA;AAAM;AACjD3H,WAAKgM,SAAS67B,IAAIlgC,CAClB,CAAA;AAAA,IAAA;AACD3H,SAAKgoC,cAAc;AACnB,QAAIhoC,KAAKiiB;AAAcjiB,WAAK6hB,iBAE5B7hB;AAAAA,SAAKga,WAAW;AAChB,QAAIha,KAAK81C;AAAa91C,WAAK81C,YAAAA;AAC3B91C,SAAK81C,cAAc;AAAA,EACpB;AACAn2C,EAAAA,WAAU0zC,cAAc,SAASztC,QAChCA;AAAAA,IAAAA,OAAMjE,OAAQiE,OAAMjE,QAAQiE,OAAMmwC,aAAc;AAChDnwC,IAAAA,OAAM2T,aAAa5Z,WAAUq2C,WAAWpwC,OAAM2T;AAC9C3T,IAAAA,OAAMiU,WAAWla,WAAUq2C,WAAWpwC,OAAMiU,QAAAA;AAAAA,EAC7C;AAEAla,EAAAA,WAAUq2C,aAAa,SAAS5wC,MAAAA;AAC/B,QAAIA,CAAAA;AACH,aAAO;AACR,QAAWA,OAAAA,QAAQ,UAAU;AAC5B,aAAOzF,WAAU4kC,SAASC,UAAUp/B,IACpC;AAAA,IAAA;AACI,aAAO,IAAIiQ,KAAKjQ,IACtB;AAAA,EAAA;AAEA,QAAM6wC,sBAAsBC,gBAAmBv2C,UAAAA;AAC/CA,EAAAA,WAAU46B,YAAY,WAAA;AACrB,UAAM4b,UAAU,CAChB;AAAA,UAAMC,YAAYH,oBAAAA;AAClB,aAASnyC,KAAKsyC,WAAU;AAEvB,YAAMC,gBAAgB,CAAA;AACtB,UAAI/hC,KAAK8hC,UAAUtyC,CAAAA;AAEnB,eAAQslB,OAAO9U,IAAG;AACjB,YAAI8U,IAAIiM,OAAO,CAAA,KAAM,OAAOjM,IAAIiM,OAAO,CAAA,KAAM,KAAI;AAChD;AAAA,QACA;AAED,YAAIihB;AACJ,cAAMC,WAAWjiC,GAAG8U;AACpB,YAAGzpB,WAAU+zB,MAAMR,OAAOqjB,QAAU,GAAA;AACnCD,wBAAc32C,WAAUwzB,QAAQxzB,WAAU0iB,UAAUsiB,UAAAA,IAAchlC,WAAU0iB,UAAUsiB,WAAW4R,QAAAA,IAAY52C,WAAU0iB,UAAUkD,YAAYgxB,QACjJ;AAAA,QAAA,OAAQ;AACJD,wBAAcC;AAAAA,QACd;AAEDF,sBAAcjtB,GAAOktB,IAAAA;AAAAA,MACrB;AAEDH,cAAQznC,KAAK2nC,aAAAA;AAAAA,IACb;AACD,WAAOF;AAAAA,EACR;AAmEAx2C,EAAAA,WAAU+6B,QAAQ,SAASZ,MAAMp4B,MAAAA;AAChC1B,SAAK41C,WAAWl0C;AAChB1B,SAAKm1C,QAAQ,EAACpY,QAAQ,EAAC94B,cAAc61B,KACtC,EAAA,CAAA;AAAA,EAAA;AACAn6B,EAAAA,WAAU62C,OAAO,SAASpc,MAAK/f,MAAAA;AAC9B,QAAWA,OAAAA,QAAQ,UAAU;AAC5Bra,WAAK41C,WAAWv7B;AAChBA,aAAOtO,UAAU,CACjB;AAAA,IAAA;AAED/L,SAAK+0C,YAAY3a;AACjBp6B,SAAK81C,cAAcz7B;AACnBra,SAAKgiB,MAAMoY,MAAKp6B,KAAKsV,KAAAA;AAAAA,EACtB;AAEA3V,EAAAA,WAAU82C,cAAc,SAASh3C,MAChC;AAAA,QAAIA,QAAQ;AAAOA,aAAO;AAC1BO,SAAK+hB,aAAatiB;AAAAA,EACnB;AAEAE,EAAAA,WAAUiqB,aAAa,SAAS5c,MAAM0pC,OACrC;AAAA,QAAIA,OAAO;AACV12C,WAAK4pB,WAAW5c,IAAQ0pC,IAAAA,MAAMxpB,MAAM,CACpC;AAAA,aAAOltB,KAAK4pB,WAAW5c,IACvB;AAAA,IAAA;AACDhN,SAAK4pB,WAAW5c,QAAShN,KAAK4pB,WAAW5c,IAAS,KAAA,CAAA;AAClD,WAAOhN,KAAK4pB,WAAW5c,IAAAA;AAAAA,EACxB;AACArN,EAAAA,WAAUyzC,YAAY,CAAA;AAEtBzzC,EAAAA,WAAUwzC,iBAAiB,SAASlhC,MAAAA;AACnC,QAAIiD,IAAI,CAAA;AACR,aAASvN,IAAI,GAAGA,IAAIsK,KAAK+b,WAAWpmB,QAAQD;AAC3CuN,QAAEjD,KAAK+b,WAAWrmB,CAAGqF,EAAAA,IAAAA,IAAQiF,KAAK+b,WAAWrmB,CAAGd,EAAAA;AAEjD,aAASc,IAAI,GAAGA,IAAIsK,KAAK69B,WAAWloC,QAAQD,KAAK;AAChD,UAAI0wB,QAAQpmB,KAAK69B,WAAWnoC,CAC5B;AAAA,UAAI0wB,MAAMQ,YAAY;AACrB3jB,UAAEmjB,MAAMtD,OAAAA,IAAWsD,MAAMh4B,aAAag4B,MAAMh4B,WAAW2yC,YAAY;AAAA,IACpE;AAED,QAAK99B,CAAAA,EAAEvT;AAAMuT,QAAEvT,OAAOsQ,KAAK5R,aAAa4R,KAAK5R,WAAW2yC,YAAY;AAEpE,WAAO99B;AAAAA,EACR;AACAvV,EAAAA,WAAUgE,YAAY,SAAS,WAAA;AAC9B,QAAI3D,KAAKuB,OAAOo1C,iBAAiB,MAAM;AACtC,UAAIzhC;AACJA,UAAIlV,KAAKuB,OAAOo1C,eAAe92C,SAASC,cAAc,KACtDoV;AAAAA,QAAE9Q,YAAY;AACd8Q,QAAEpO,MAAMiL,OAAOU,KAAK+G,OAAOxZ,KAAK+Q,KAAK,OAAO,CAAK,IAAA;AACjDmE,QAAEpO,MAAM+L,MAAMJ,KAAK+G,OAAOxZ,KAAKgR,KAAK,MAAM,CAAA,IAAK;AAC/ChR,WAAKiP,KAAK7O,YAAY8U,CAAAA;AAAAA,IACtB;AAAA,EACF,CAAA;AACAvV,EAAAA,WAAUgE,YAAY,SAAS,WAC9B;AAAA,QAAIuR,IAAIlV,KAAKuB,OAAOo1C;AACpB,QAAIzhC,KAAAA,OAAYA,KAAK,UAAU;AAC9B,UAAGA,EAAEjM,YAAY;AAChBiM,UAAEjM,WAAWiC,YAAYgK,CAAAA;AAAAA,MACzB;AACDlV,WAAKuB,OAAOo1C,eAAe;AAAA,IAC3B;AAAA,EACF;AAGA;ACtTe,SAAS50C,SAAOpC,YAAAA;AAE/BA,EAAAA,WAAUi3C,qBAAqB,CAAA;AAC/Bj3C,EAAAA,WAAUk3C,cAAc,SAAS7pC,MAChC;AAAA,QAAIzL,SAASvB,KAAKuB,OAAO+nB,SAASD;AAClC,QAAI1hB,IAAI;AACR,SAAKA,GAAGA,IAAIpG,OAAOqG,QAAQD,KAAK;AAC/B,UAAIpG,OAAOoG,CAAGqF,EAAAA,QAAQA,MAAM;AAC3B;AAAA,MACA;AAAA,IACD;AAED,QAAIrF,MAAMpG,OAAOqG,QAAQ;AAExB,aAAO;AAAA,IACP;AAED,QAAI6iB,UAAUlpB,OAAOoG,CACrB;AAAA,QAAA,CAAKhI,WAAU8R,WAAW;AACzB9R,MAAAA,WAAUm3C,YAAAA;AAAAA,IACV;AACD,QAAI3oC,SAASxO,WAAU8R,UAAUxJ,cAAc,IAAIwiB,QAAQ1qB,EAAAA,EAAAA;AAC3D,QAAIkS,OAAO9D,OAAOgqB;AAElB,QAAIvf,SAAS,EACZ6R,SACAtc,QACA8D,MACA8kC,UAAS,SAASziC;AACjB,aAAO3U,WAAUq3C,YAAYvsB,QAAQ/oB,IAAMu1C,EAAAA,UAAUhlC,MAAOqC,MAAI,IAAKmW,OACrE;AAAA,IAAA,GACDysB,UAAS,SAASrwC,OAAOyN,IAAAA;AACxB,aAAO3U,WAAUq3C,YAAYvsB,QAAQ/oB,IAAAA,EAAMy1C,UAAUllC,MAAMpL,OAAQyN,MAAI,CAAE,GAAGmW,OAAAA;AAAAA,IAC5E,EAGF;AAAA,QAAIvkB,UAAUvG,WAAUi3C,mBAAmB,SAAOnsB,QAAQ/oB,OAAK,UAAA;AAC/D,WAAOwE,UAAQA,QAAQ0S,MAAAA,IAAQA;AAAAA,EAChC;AACAjZ,EAAAA,WAAUi3C,mBAAmBQ,uBAAuB,SAASx+B,QAC5DA;AAAAA,WAAOy+B,UAAUz+B,OAAO3G;AACxB,WAAO2G;AAAAA,EACR;AACAjZ,EAAAA,WAAUi3C,mBAAmBU,qBAAqB,SAAS1+B,QAAAA;AAC1DA,WAAOy+B,UAAUz+B,OAAO3G,KAAKc,qBAAqB,QAAU,EAAA,CAAA;AAC5D,WAAO6F;AAAAA,EACR;AACAjZ,EAAAA,WAAUi3C,mBAAmBW,uBAAuB,SAAS3+B,QAC5DA;AAAAA,WAAOy+B,UAAUz+B,OAAO3G,KAAKc,qBAAqB,UAAY,EAAA,CAAA;AAC9D,WAAO6F;AAAAA,EACR;AACAjZ,EAAAA,WAAUi3C,mBAAmBY,mBAAmB,SAAS5+B,QACxDA;AAAAA,WAAOy+B,UAAUz+B,OAAO3G,KAAKc,qBAAqB;AAClD,WAAO6F;AAAAA,EACR;AAEAjZ,EAAAA,WAAUi3C,mBAAmBa,WAAW,EACvCC,UAAU,EACT3wC,QAAO,GAAA,GAERovB,UAAU,EACTpvB,QAAQ,IAAA,GAET6N,QAAQ,EACP7N,QAAQ,GAET4wC,GAAAA,MAAM,EACL5wC,QAAQ,GAKVpH,EAAAA;AAAAA,EAAAA,WAAUq3C,cAAY,EACrBU,UAAS,EACRxpC,QAAQ,SAAS0pC,KAAAA;AAChB,WAAO;AAAA,EACP,GACDT,WAAU,SAASllC,MAAKpL,OAAMyN,IAAG/S,QAAAA;AAChC0Q,SAAK/R,YAAY2G,SAAO;AAAA,EACxB,GACDowC,WAAU,SAAShlC,MAAKqC,IAAG/S,QAC1B;AAAA,WAAO0Q,KAAK/R,aAAW;AAAA,EACvB,GACDyqB,OAAO,SAAS1Y,MACf;AAAA,EAAA,EAAA,GAEFkkB,UAAS,EACRjoB,QAAO,SAAS0pC,KAAAA;AACf,WAAO;AAAA,EACP,GACDT,WAAU,SAASllC,MAAKpL,OAAMyN,IAC7B3U;AAAAA,IAAAA,WAAUq3C,YAAY7gB,SAAS0hB,WAAW5lC,IAAAA,EAAMpL,QAAMA,SAAO;AAAA,EAC7D,GACDowC,WAAU,SAAShlC,MAAKqC,IACvB;AAAA,WAAO3U,WAAUq3C,YAAY7gB,SAAS0hB,WAAW5lC,IAAMpL,EAAAA;AAAAA,EACvD,GACD8jB,OAAM,SAAS1Y,MAAAA;AACd,QAAInO,IAAInE,WAAUq3C,YAAY7gB,SAAS0hB,WAAW5lC,IAAAA;AAClDtS,IAAAA,WAAU+qB,OAAO5mB,GAAG,IACpB;AAAA,EAAA,GACD+zC,YAAY,SAAS5lC,MACpB;AAAA,WAAOA,KAAKc,qBAAqB,YAAY,CAC7C;AAAA,EAAA,EAAA,GAEF6B,QAAO,EACN1G,QAAO,SAAS0pC,KAEf;AAAA,QAAI3wC,OAAK;AACT,aAASU,IAAE,GAAGA,IAAIiwC,IAAIpuB,QAAQ5hB,QAAQD;AACrCV,cAAM,oBAAkB2wC,IAAIpuB,QAAQ7hB,CAAGyhB,EAAAA,MAAI,OAAKwuB,IAAIpuB,QAAQ7hB,CAAGyL,EAAAA,QAAM;AACtEnM,YAAM;AACN,WAAOA;AAAAA,EACP,GACDkwC,WAAU,SAASllC,MAAKpL,OAAMyN,IAAGsjC,KAChC;AAAA,QAAIhjC,SAAS3C,KAAK5R;AAClB,QAAKuU,CAAAA,OAAOkjC,iBAAiBF,IAAIG,UAAU;AAC1Cp4C,MAAAA,WAAUiG,MAAMgP,QAAQ,UAAUgjC,IAAIG,QACtCnjC;AAAAA,aAAOkjC,gBAAgB;AAAA,IACvB;AACD,QAAWjxC,OAAAA,SAAS;AACnBA,eAAS+N,OAAO4U,QAAQ,CAAI,KAAA,CAAE,GAAE3iB;AACjC+N,WAAO/N,QAAMA,SAAO;AAAA,EACpB,GACDowC,WAAU,SAAShlC,MAAKqC,IAAAA;AACvB,WAAOrC,KAAK5R,WAAWwG;AAAAA,EACvB,GACD8jB,OAAM,SAAS1Y,MACd;AAAA,QAAInO,IAAEmO,KAAK5R;AAAYV,IAAAA,WAAU+qB,OAAO5mB,GAAG;EAC3C,EAEF6zC,GAAAA,MAAK,EACJzpC,QAAO,SAAS0pC,KAAAA;AACf,QAAKA,CAAAA,IAAII,aAAa;AAErBJ,UAAII,cAAc,CAAC,SAAS,MAAM,MAAM,IAAA;AAAA,IACxC;AAEDJ,QAAIK,qBAAqB;AACzB,QAAID,cAAcJ,IAAII;AAEtB,QAAIE,MAAMv4C,WAAU4B;AACpB,QAAI42C,KAAKx4C,WAAUyF,KAAK4Z,UAAUrf,WAAUqP,aAAAA,CAAAA;AAC5C,QAAIopC,OAAO,KAAG,IAAI3c,QAAQ;AAC1B,QAAG97B,WAAU4B,OAAO82C,mBAAkB;AACrCD,aAAO,KAAGF,IAAIn6B,YAAU;AACxB0d,cAAQ,KAAGyc,IAAIx+B;AACfy+B,SAAGv+B,SAASs+B,IAAIx+B;IAChB;AACD,QAAIzS,OAAO;AAEX,aAASqxC,IAAI,GAAGA,IAAIN,YAAYpwC,QAAQ0wC,KAAK;AAC5C,UAAI7mB,cAAcumB,YAAYM,CAAAA;AAG9B,UAAIA,IAAI,GAAG;AACVrxC,gBAAQ;AAAA,MACR;AACD,UAAIsxC,iBAAiB;AACrB,UAAI/uB,UAAU;AACd,cAAQiI,aACP;AAAA,QAAA,KAAK;AACJ8mB,2BAAiB;AACjBX,cAAIK,mBAAmB,CAAKK,IAAAA;AAE5B,cAAIE;AACJ,cAAIC;AACJ,cAAIC;AACJ,cAAGd,IAAIe,YAAW;AACjB,gBAAA,CAAKpmC,MAAMqlC,IAAIe,aAAa;AAC3BH,sBAAQZ,IAAIe;AAAAA,YACpB,WAAkBf,IAAIe,WAAWjqC,MAAM;AAE/B+pC,2BAAab,IAAIe,WAAW,CAAA;AAC5BD,yBAAWd,IAAIe,WAAW,CAC1B;AAAA,YAAA;AAAA,UACD;AAEDH,kBAAQA,SAAS;AACjB,cAAIxxB,SAASA,UAAUvU,KAAKkI,MAAM69B,QAAQ,CAAA;AAC1CC,uBAAaA,cAAcN,GAAG9yB,YAAAA,IAAgB2B;AAC9C0xB,qBAAWA,YAAYD,aAAaD;AAEpC,mBAAS7wC,IAAI8wC,YAAY9wC,IAAI+wC,UAAU/wC;AACtC6hB,uBAAW,oBAAiB,IAAS,OAAQ,IAAK;AACnD;AAAA,QACD,KAAK;AACJ+uB,2BAAiB;AACjBX,cAAIK,mBAAmB,CAAA,IAAKK;AAE5B,mBAAS3wC,IAAE,GAAGA,IAAI,IAAIA;AACrB6hB,uBAAS,oBAAkB7hB,IAAE,OAAK3H,KAAKqT,OAAOjO,KAAKk5B,WAAW32B,CAAG,IAAA;AAClE;AAAA,QACD,KAAK;AACJ4wC,2BAAiB;AACjBX,cAAIK,mBAAmB,CAAA,IAAKK;AAE5B,mBAAS3wC,IAAE,GAAGA,IAAI,IAAIA;AACrB6hB,uBAAS,oBAAkB7hB,IAAE,OAAKA,IAAE;AACrC;AAAA,QACD,KAAK;AACJ4wC,2BAAiB;AACjBX,cAAIK,mBAAmB,CAAKK,IAAAA;AAE5B,cAAI3wC,IAAI8zB;AACR,cAAImd,QAAQT,GAAG/3B,QAAAA;AACfw3B,cAAIiB,eAAe,CAEnB;AAAA,iBAAMlxC,IAAEywC,MAAK;AACZ,gBAAIT,OAAK33C,KAAKqiB,UAAU4iB,YAAYkT,EAAAA;AACpC3uB,uBAAS,oBAAkB7hB,IAAE,OAAKgwC,OAAK;AACvCC,gBAAIiB,aAAanqC,KAAK/G,CACtBwwC;AAAAA,eAAGr+B,QAAQq+B,GAAGjhC,QAAAA,IAAUlX,KAAKuB,OAAO+X,YAAU,KAAG,GACjD;AAAA,gBAAI6D,OAAQg7B,GAAG/3B,QAAWw4B,KAAAA,QAAO,IAAE;AACnCjxC,gBAAEwV,OAAK,KAAG,KAAGg7B,GAAGx+B,SAAW,IAAA,KAAGw+B,GAAGn6B,WAAAA;AAAAA,UACjC;AACD;AAAA,MAAA;AAGF,UAAGwL,SAAQ;AAEV,YAAIsvB,YAAYn5C,WAAU4T,SAASie,yBAAyBC,WAAAA;AAC5D,YAAI9a,YAAWihC,IAAIjhC,WAAW,wBAAwB;AACtD1P,gBAAQ,oBAAkBsxC,iBAAe,OAAK5hC,YAAWmiC,YAAU,MAAItvB,UAAQ;AAAA,MAC/E;AAAA,IACD;AAGD,WAAO,mCAAiCviB,OAAK,mHAAiHA,OAAK;AAAA,EACnK,GACDkwC,WAAU,SAASllC,MAAKpL,OAAMyN,IAAG/S,QAChC;AAAA,QAAI22C,MAAMv4C,WAAU4B;AACpB,QAAI+9B,IAAErtB,KAAKc,qBAAqB,QAChC;AAAA,QAAI5Q,MAAMZ,OAAO02C;AACjB,QAAI1+B,YAAYM;AAEhB,QAAGq+B,IAAIa,UAAU;AAChB,UAAK9mC,CAAAA,KAAK+mC,WAAU;AACnB,YAAI/xC,OAAO,qFAAmFtH,WAAU0T,OAAOC,OAAOylC,WAAS;AAC/H,YAAKp5C,CAAAA,WAAU4B,OAAOmhC;AACrBz7B,iBAAOgL,KAAKmgC,gBAAgBlyC,YAAU+G;AACvCgL,aAAKmgC,gBAAgBlyC,YAAU+G;AAC/BgL,aAAK+mC,YAAU;AAAA,MACf;AACD,UAAI9iB,QAAMjkB,KAAKmgC,gBAAgBr/B,qBAAqB,OAAS,EAAA,CAAA;AAC7DmjB,YAAM+iB,UAAWt5C,WAAUyF,KAAKuZ,UAAUrK,GAAGiF,UAAAA,MAAc,KAAK5Z,WAAUyF,KAAKuZ,UAAUrK,GAAGuF,QAAY,MAAA;AAExGylB,QAAEn9B,IAAI,CAAI+2C,CAAAA,EAAAA,WAAShjB,MAAM+iB;AACzB3Z,QAAGn9B,IAAI,CAAA,IAAKm9B,EAAE13B,SAAO,CAAIsxC,EAAAA,WAAShjB,MAAM+iB;AAExC,UAAI/iB,CAAAA,MAAMvwB,iBAAgB;AACzBuwB,cAAMvwB,kBAAkB;AAEvBhG,QAAAA,WAAUiG,MAAMswB,OAAO,SAAS,WAChC;AAAA,cAAGA,MAAM+iB,SAAS;AACjB,gBAAIr5C,MAAM,CAAA;AACVD,YAAAA,WAAUq3C,YAAYW,KAAKV,UAAUhlC,MAAKrS,KAAI2B;AAE9CgY,yBAAa5Z,WAAUyF,KAAK4Z,UAAUpf,IAAI2Z,UAAAA;AAC1CM,uBAAWla,WAAUyF,KAAK4Z,UAAUpf,IAAIia,QAAAA;AAExC,gBAAKA,CAAAA,YAAAA,CAAaN,cAAgBM,CAAAA,YAAAA,CAAaN,eAAejF,GAAGuF,SAASF,SAAe,MAAA,KAAKrF,GAAGuF,SAASmE,WAAiB,MAAA;AAC1HnE,yBAAWla,WAAUyF,KAAKT,IAAIkV,UAAU,GAAG,KAAA;AAAA,UACnD,OAAW;AACJN,yBAAa;AACbM,uBAAW;AAAA,UACX;AAEDylB,YAAEn9B,IAAI,CAAI+2C,CAAAA,EAAAA,WAAShjB,MAAM+iB;AACzB3Z,YAAGn9B,IAAI,CAAKm9B,IAAAA,EAAE13B,SAAO,CAAA,EAAIsxC,WAAShjB,MAAM+iB;AAExCE,gCAAsB7Z,GAAE,GAAE/lB,cAAYjF,GAAGiF,UAAAA;AACzC4/B,gCAAsB7Z,GAAE,GAAEzlB,YAAUvF,GAAGuF,QAC7C;AAAA,QAAA,CAAA;AAAA,MACK;AAAA,IACD;AAED,QAAGq+B,IAAIkB,iBAAiBlB,IAAI7+B,gBAAgB;AAC3C,UAAIggC,0BAA0B,WAAA;AAE7B,cAAMnB,IAAIkB,iBAAiBlB,IAAI7+B,iBAAgB;AAE9C;AAAA,QACA;AACDE,qBAAa,IAAIlE,KAAKiqB,EAAEn9B,IAAI,CAAA,CAAA,EAAI0E,OAAMy4B,EAAEn9B,IAAI,CAAA,CAAA,EAAI0E,OAAMy4B,EAAEn9B,IAAI,CAAI0E,CAAAA,EAAAA,OAAM,GAAEy4B,EAAEn9B,IAAI,CAAA,CAAA,EAAI0E;AAClFgT,mBAAW,IAAIxE,KAAKkE,WAAWyR,QAAarrB,IAAAA,WAAU4B,OAAO8X,iBAAiB,KAAK,GAAA;AACnF8/B,8BAAsB7Z,GAAG,GAAGzlB,QAAAA;AAAAA,MACjC;AACI,eAAQlS,IAAE,GAAGA,IAAE,GAAGA,KAAK;AACtB,YAAI23B,CAAAA,EAAE33B,GAAGhC,iBAAiB;AACzB25B,YAAE33B,CAAAA,EAAGhC,kBAAkB;AACvBhG,UAAAA,WAAUiG,MAAM05B,EAAE33B,CAAI,GAAA,UAAU0xC,uBAChC;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAED,aAASF,sBAAsB7Z,IAAE33B,IAAEyR,GAAAA;AAClC,UAAIkgC,cAAc/3C,OAAOs3C;AACzB,UAAIU,eAAengC,EAAEO,SAAW,IAAA,KAAGP,EAAE4E,WAAAA;AACrC,UAAIw7B,cAAcD;AAClB,UAAIE,cAAc;AAClB,eAAS5N,IAAE,GAAGA,IAAEyN,YAAY1xC,QAAQikC,KAAK;AACxC,YAAI6N,MAAMJ,YAAYzN,CACtB;AAAA,YAAI6N,QAAQH,cAAc;AACzBE,wBAAc;AACd;AAAA,QACA;AACD,YAAIC,MAAMH;AACTC,wBAAcE;AAAAA,MACf;AAEDpa,MAAAA,GAAE33B,KAAExF,IAAI,CAAA,CAAA,EAAI0E,QAAM,cAAc0yC,eAAaC;AAC7C,UAAA,EAAKC,eAAeD,cAAa;AAChCla,QAAAA,GAAE33B,KAAExF,IAAI,IAAIw3C,gBAAiB;AAAA,MAC7B;AACDra,MAAAA,GAAE33B,KAAExF,IAAI,CAAI0E,CAAAA,EAAAA,QAAMuS,EAAEgH,QACpBkf;AAAAA,MAAAA,GAAE33B,KAAExF,IAAI,CAAI0E,CAAAA,EAAAA,QAAMuS,EAAEkM,SAAAA;AACpBga,MAAAA,GAAE33B,KAAExF,IAAI,CAAI0E,CAAAA,EAAAA,QAAMuS,EAAEiM,YAAAA;AAAAA,IACpB;AAED8zB,0BAAsB7Z,GAAE,GAAEhrB,GAAGiF,UAC7B4/B;AAAAA,0BAAsB7Z,GAAE,GAAEhrB,GAAGuF,QAAAA;AAAAA,EAC7B,GACDo9B,WAAU,SAAShlC,MAAMqC,IAAI/S,QAC5B;AAAA,QAAI+9B,IAAIrtB,KAAKc,qBAAqB,QAAA;AAClC,QAAI5Q,MAAMZ,OAAO02C;AAEjB3jC,OAAGiF,aAAW,IAAIlE,KAAKiqB,EAAEn9B,IAAI,CAAA,CAAA,EAAI0E,OAAMy4B,EAAEn9B,IAAI,CAAA,CAAA,EAAI0E,OAAMy4B,EAAEn9B,IAAI,CAAI0E,CAAAA,EAAAA,OAAM,GAAEy4B,EAAEn9B,IAAI,CAAA,CAAA,EAAI0E;AACnFyN,OAAGuF,WAAS,IAAIxE,KAAKiqB,EAAEn9B,IAAI,CAAG,IAAA,CAAA,EAAG0E,OAAMy4B,EAAEn9B,IAAI,CAAA,IAAG,CAAG0E,EAAAA,OAAMy4B,EAAEn9B,IAAI,KAAG,CAAG0E,EAAAA,OAAM,GAAEy4B,EAAEn9B,IAAI,CAAA,IAAG,CAAG0E,EAAAA,KAAAA;AAEzF,UAAKy4B,EAAEn9B,IAAI,CAAI0E,CAAAA,EAAAA,SAASy4B,EAAEn9B,IAAI,CAAG,IAAA,CAAA,EAAG0E,QAAO;AAE1C,UAAI+yC,WAAWj6C,WAAUwV,SAASxV,WAAUmW,YAC5C;AAAA,UAAG8jC,UAAS;AACXtlC,WAAGiF,aAAaqgC,SAASrgC;AACzBjF,WAAGuF,WAAW+/B,SAAS//B;AAAAA,MACvB;AAAA,IACD;AAED,QAAIvF,GAAGuF,YAAUvF,GAAGiF;AACnBjF,SAAGuF,WAASla,WAAUyF,KAAKT,IAAI2P,GAAGiF,YAAW5Z,WAAU4B,OAAO+X,WAAU,QACzE;AAAA,WAAO,EACNC,YAAY,IAAIlE,KAAKf,GAAGiF,UAAAA,GACxBM,UAAU,IAAIxE,KAAKf,GAAGuF,QAAAA,EAAAA;AAAAA,EAEvB,GACD8Q,OAAM,SAAS1Y,MAAAA;AACdtS,IAAAA,WAAU+qB,OAAOzY,KAAKc,qBAAqB,QAAA,EAAU,CACrD,CAAA;AAAA,EAAA,EAAA,EAAA;AAOF,WAAS8mC,kBAAAA;AACR,UAAMC,iBAAiBn6C,WAAU4B,OAAO89B,QAAQ;AAChD,UAAM0a,wBAA0B94C,CAAAA,CAAAA,OAAO,aAAaA,OAAO,IAAA,KAASA,OAAO,MAAA,KAAY,sBAAsBpB,SAASM;AACtH,QAAI25C,kBAAkBC,uBAAuB;AAC5C,aAAOp6C,WAAUwK;AAAAA,IACpB,OAAS;AACN,aAAOtK,SAASM;AAAAA,IAChB;AAAA,EACD;AAEFR,EAAAA,WAAU+R,iBAAiB,SAAS0iB,KAAAA;AACnC,SAAIA,KAAI;AACP;AAAA,IACA;AAEDA,QAAIttB,MAAM+L,MAAMJ,KAAKC,IAAImnC,gBAAkBxvC,EAAAA,eAAe,IAAI+pB,IAAI/pB,eAAa,GAAG,CAAK,IAAA;AACvF+pB,QAAIttB,MAAMiL,OAAOU,KAAKC,IAAImnC,gBAAAA,EAAkBtvC,cAAc,IAAI6pB,IAAI7pB,cAAY,GAAG,CAAK,IAAA;AAAA,EAEvF;AAEA5K,EAAAA,WAAUq6C,YAAU,SAAS5lB;AAC5B,QAAIA,KAAI;AACPA,UAAIttB,MAAMgC,UAAQ;AAElB9I,WAAK0R,eAAe0iB,GACpB;AAAA,IAAA;AACD,QAAGz0B,WAAU4B,OAAOyhC,qBAAoB;AACvCnjC,eAASwJ,gBAAgB3E,UAAUC,IAAI,4BAAA;AACvCk1C,sBAAkBn1C,EAAAA,UAAUC,IAAI,4BAAA;AAAA,IAChC;AACD3E,SAAKi6C,WAAAA;AACLj6C,SAAKk6C,OAAOpzC,MAAMgC,UAAU;AAAA,EAC7B;AACAnJ,EAAAA,WAAU6Y,eAAa,SAASzY,KAC/B;AAAA,QAAA,CAAKA;AAAI;AACT,QAAKC,CAAAA,KAAKyB,UAAU,oBAAmB,CAAC1B,GAAM,CAAA,GAAA;AAC7C,UAAIC,KAAKgW;AACRhW,aAAKgW,aAAa;AACnB;AAAA,IACA;AACDhW,SAAKg6C,UAAU5lB,GAAAA;AACf,QAAIA,MAAMp0B,KAAK82C,YACf92C;AAAAA,SAAK0R,eAAe0iB,GAAAA;AACpBp0B,SAAKm6C,eAAep6C,KAAGq0B,GAAAA;AACvBp0B,SAAKuT,SAASkd,oBAAoB2D,GAElCp0B;AAAAA,SAAKyB,UAAU,cAAa,CAAC1B,GAAAA,CAAAA;AAAAA,EAC9B;AACAJ,EAAAA,WAAUw6C,iBAAiB,SAASp6C,KAAIq0B,KACvC;AAAA,QAAI9f,KAAKtU,KAAKmV,SAASpV,GAAAA;AACvB,QAAIu/B,IAAIlL,IAAIrhB,qBAAqB,MACjC;AAAA,QAAIue,iBAAiB,CAErB;AAAA,QAAI3xB,WAAU0iB,UAAU+3B,iBAAiB;AACxC9oB,qBAAe5iB,KAAK;AACpB,UAAI2rC,gBAAgB16C,WAAU0iB,UAAU+3B,gBAAgB9lC,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EACpFgd;AAAAA,qBAAe5iB,KAAK2rC,aAAAA;AACpB/a,QAAE,CAAA,EAAGp/B,YAAY;AACjBo/B,QAAE,CAAA,EAAGp/B,YAAYm6C;AAAAA,IACnB,OAAQ;AACN,UAAIC,aAAat6C,KAAKqiB,UAAU+iB,aAAa9wB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EACzE;AAAA,UAAIimC,eAAev6C,KAAKqiB,UAAUkjB,eAAejxB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,KAAO,IAAImgC,OAAO,GAAG,EAElGnjB;AAAAA,qBAAe5iB,KAAK4rC,UAAAA;AACpBhpB,qBAAe5iB,KAAK6rC,WACpBjb;AAAAA,QAAE,CAAGp/B,EAAAA,YAAYo6C;AACjBhb,QAAE,CAAGp/B,EAAAA,YAAYq6C;AAAAA,IACjB;AAEDv6C,SAAKuT,SAAS+d,eAAe8C,KAAM9C,eAAe7tB,KAAK,GAAA,CAAA;AAEvD,QAAIm0C,MAAM53C,KAAKuB,OAAO+nB,SAASD;AAC/B,aAAS1hB,IAAI,GAAGA,IAAIiwC,IAAIhwC,QAAQD,KAAK;AACpC,UAAI6yC,cAAc5C,IAAIjwC;AACtB,UAAIsK,OAAOtS,WAAU86C,2BAA2BD,WAChD;AAAA,UAAIE,QAAQ16C,KAAKg3C,YAAYwD,YAAY94C,IAAAA;AACzC,UAAImF,QAASyN,GAAGkmC,YAAYjxB,MAAY3W,MAAAA,SAAa0B,GAAGkmC,YAAYjxB,MAAAA,IAAUixB,YAAYG;AAC1FD,YAAMvD,UAAU98B,KAAKra,MAAMiS,MAAMpL,OAAOyN,IAAIkmC,WAC5C;AAAA,UAAI5C,IAAIjwC,CAAAA,EAAGgjB;AACV+vB,cAAM/vB,MAAMtQ,KAAKra,MAAMiS,IAAAA;AAAAA,IACxB;AAEDtS,IAAAA,WAAUmW,eAAe/V;AAAAA,EAC1B;AAEAJ,EAAAA,WAAU86C,6BAA6B,SAAShwB,SAAAA;AAC/C,WAAO9qB,WAAU8R,UAAUxJ,cAAc,IAAIwiB,QAAQ1qB,EAAAA,EAAAA,EAAMo4B;AAAAA,EAC5D;AAEAx4B,EAAAA,WAAUi7C,gBAAc,SAAStmC,IAAAA;AAChC,QAAIsjC,MAAM53C,KAAKuB,OAAO+nB,SAASD;AAC/B,aAAS1hB,IAAE,GAAGA,IAAIiwC,IAAIhwC,QAAQD,KAAK;AAClC,UAAIsK,OAAOtS,WAAU8R,UAAUxJ,cAAc,IAAI2vC,IAAIjwC,CAAAA,EAAG5H,EACxDkS,EAAAA;AAAAA,aAAMA,OAAKA,KAAKkmB,cAAYlmB;AAC5B,UAAIyoC,QAAM16C,KAAKg3C,YAAYY,IAAIjwC,CAAGjG,EAAAA,IAAAA;AAClC,UAAI6c,MAAIm8B,MAAMzD,UAAU58B,KAAKra,MAAKiS,MAAKqC,IAAIsjC,IAAIjwC,CAC/C,CAAA;AAAA,UAAIiwC,IAAIjwC,CAAAA,EAAG4hB,UAAQ;AAClBjV,WAAGsjC,IAAIjwC,GAAG4hB,MAAQhL,IAAAA;AAAAA,IACnB;AACD,WAAOjK;AAAAA,EACR;AACA3U,EAAAA,WAAUk7C,kBAAgB,SAAS/gB,MAClC;AAAA,QAAI/5B,MAAGJ,WAAUmW;AACjB,QAAIxB,KAAGtU,KAAKmV,SAASpV,GAGrBC;AAAAA,SAAKyhB,WAAWnN,IAAIwlB,IAEpB95B;AAAAA,SAAKumC,SAASjyB,GAAGvU,IAAGuU,EACpBtU;AAAAA,SAAKixC,iBAAiB38B,IAAG,IACzBtU;AAAAA,SAAK6hB,iBACN;AAAA,EAAA;AACAliB,EAAAA,WAAUm7C,gBAAc,SAAS/6C,KAChCJ;AAAAA,IAAAA,WAAUo7C,YAAY,OAAO/6C,KAAK82C,YAAAA,CAAAA;AAAAA,EACnC;AAEAn3C,EAAAA,WAAUoqB,YAAU,SAASqK,KAAAA;AAC5B,QAAIA;AAAKA,UAAIttB,MAAMgC,UAAQ;AAC3B9I,SAAKg7C,WACL;AAAA,QAAGr7C,WAAU4B,OAAOyhC,qBAAoB;AACvCnjC,eAASwJ,gBAAgB3E,UAAU6e,OAAO,4BAC1Cs2B;AAAAA,sBAAAA,EAAkBn1C,UAAU6e,OAAO;IACnC;AAAA,EACF;AACA5jB,EAAAA,WAAUq7C,aAAW,WACpB;AAAA,QAAIh7C,KAAKk6C;AACRl6C,WAAKk6C,OAAOjxC,WAAWiC,YAAYlL,KAAKk6C,MACzCl6C;AAAAA,SAAKk6C,SAAO;AAAA,EACb;AAEAv6C,EAAAA,WAAUs6C,aAAW,WACpB;AAAA,QAAGj6C,KAAKk6C,QAAQ;AACf;AAAA,IACA;AAEDl6C,SAAKk6C,SAAOr6C,SAASC,cAAc,KAAA;AACnCE,SAAKk6C,OAAO91C,YAAU;AACtBpE,SAAKk6C,OAAOpzC,MAAMgC,UAAU;AAE5BnJ,IAAAA,WAAUiG,MAAM5F,KAAKk6C,QAAQ,aAAav6C,WAAUs7C,eAAAA;AACpDt7C,IAAAA,WAAUiG,MAAM5F,KAAKk6C,QAAQ,WAAWv6C,WAAUu7C,WAAAA;AAElDrB,oBAAkBz5C,EAAAA,YAAYJ,KAAKk6C,MAAAA;AAAAA,EACpC;AACAv6C,EAAAA,WAAUw7C,gBAAc,WAAA;AACvB,QAAIrhB,OAAO95B,KAAK46C,cAAc,CAAE,GAAE56C,KAAKyhB,WAAWzhB,KAAKmV,SAASnV,KAAK8V,YACrE,CAAA,CAAA;AAAA,QAAI9V,KAAKoN,WAAW,mBAAmBpN,KAAKyB,UAAU,eAAc,CAACzB,KAAK8V,cAAcgkB,MAAM95B,KAAKgW;AAClG;AACDhW,SAAK66C,gBAAgB/gB,IAAAA;AACrB95B,SAAK86C,cAAAA;AAAAA,EACN;AACAn7C,EAAAA,WAAUy7C,gBAAgB,SAASr7C,KAAIq0B,KACtCp0B;AAAAA,SAAK8V,eAAe/V;AACpBC,SAAKq7C,mBAAmB;AAExBr7C,SAAKs7C,iBAAiBt7C,KAAKyR;AAC3BzR,SAAKyR,YAAY2iB;AACjBp0B,SAAKg6C,UAAU5lB,GAChB;AAAA,EAAA;AACAz0B,EAAAA,WAAUo7C,cAAc,SAASt7C,MAAM20B,KACtC;AAAA,QAAIA,MAAMA,OAAOz0B,WAAUm3C,YAE3B;AAAA,QAAIlxC,SAAQjG,WAAUwV,SAASnV,KAAK8V,YACpC;AAAA,QAAGlQ;AACF5F,WAAKixC,iBAAiBrrC,QAAOnG,IAC9B;AAAA,QAAIA;AACHE,MAAAA,WAAUkiB,iBAAAA;AACX7hB,SAAK+pB,UAAUqK,GAEf;AAAA,QAAIp0B,KAAKq7C,kBAAiB;AACzBr7C,WAAKyR,YAAYzR,KAAKs7C;AACtBt7C,WAAKq7C,mBAAmB;AAAA,IACxB;AACDr7C,SAAKs7C,iBAAiBt7C,KAAK8V,eAAe;AAC1C9V,SAAKuT,SAASid,mBAAmB4D,GAAAA;AACjCp0B,SAAK8pB,cAAAA;AACL9pB,SAAKyB,UAAU,mBAAkB,CAAA,CAAA;AAAA,EAClC;AACA9B,EAAAA,WAAUmqB,gBAAgB,WACzB;AAAA,QAAInqB,WAAU8R,aAAAA,CAAc9R,WAAU07C;AACrC17C,MAAAA,WAAU8R,UAAUxI,WAAWiC,YAAYvL,WAAU8R,SACtD9R;AAAAA,IAAAA,WAAU8R,YAAY;AAAA,EACvB;AACA9R,EAAAA,WAAU47C,kBAAgB,WACzB;AAAA,QAAGv7C,KAAK8V,cAAa;AACpB9V,WAAKyB,UAAU,iBAAgB,CAACzB,KAAK8V,cAAgB9V,CAAAA,CAAAA,KAAKgW,UAC1D,CAAA;AAAA,IAAA;AAEDhW,SAAK86C,cAAAA;AAAAA,EACN;AACAn7C,EAAAA,WAAU67C,eAAe77C,WAAU47C;AAEnC57C,EAAAA,WAAU87C,wBAAsB,WAC/B;AAAA,QAAGz7C,KAAK82C,YAAcnxC,EAAAA,iBAAgB;AACrC;AAAA,IACA;AACD,UAAM2jB,WAAWtpB,KAAK82C;AACtBxtB,aAAS3jB,kBAAkB;AAE3BhG,IAAAA,WAAUiG,MAAM0jB,UAAU,SAAS,SAASxV;AAE3C,UAAGA,EAAEU,OAAOqC,QAAQ,2BAA6B,GAAA;AAChDlX,QAAAA,WAAU47C,gBAAAA;AAAAA,MACV;AAED,YAAMG,eAAe/7C,WAAUkc,YAAYhF,QAAQ/C,EAAEU,QAAQ,cAAA;AAC7D,WAAIknC,cAAc;AACjB,cAAMC,gBAAgBh8C,WAAUkc,YAAYhF,QAAQ/C,EAAEU,QAAQ,wCAC9D;AAAA,YAAGmnC,eAAc;AAChB,gBAAMjwC,QAAQ8G,OAAOmpC,cAAcxoC,aAAa,oBAAA,CAAA;AAChD,gBAAMunC,QAAQ/6C,WAAUq3C,YAAYr3C,WAAU4B,OAAO+nB,SAASD,SAAS3d,KAAAA,EAAOhK,IAC9Eg5C;AAAAA,gBAAMkB,aAAaj8C,WAAUkc,YAAYhF,QAAQ8kC,eAAe,mBAAsBA,GAAAA,eAAe7nC,CACrG;AAAA,QAAA;AACD;AAAA,MACA;AAED,YAAM+nC,SAASH,eAAeA,aAAavoC,aAAa,aAAiB,IAAA;AAEzE,cAAO0oC,QAAAA;AAAAA,QACN,KAAK;AAAA,QACL,KAAK;AACJ,cAAGl8C,WAAU4B,OAAOu6C,iBAAgB;AACnC;AAAA,UACA;AACDn8C,UAAAA,WAAUw7C,cAAAA;AACV;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJ,cAAGx7C,WAAU4B,OAAOu6C,iBAAgB;AACnC;AAAA,UACA;AACD,cAAI93C,IAAErE,WAAU0T,OAAOC,OAAOwE;AAE9BnY,UAAAA,WAAUoY,gBAAgB,EAACzW,SAAS0C,GAAGgU,OAAOrY,WAAU0T,OAAOC,OAAO2E,wBAAwBlL,UAAU,WAAA;AACvGpN,YAAAA,WAAUuY,YAAYvY,WAAUmW,YAChCnW;AAAAA,YAAAA,WAAUqW,aAAa;AACvBrW,YAAAA,WAAUm7C,cAAAA;AAAAA,UACV,GACDv5C,QAAQ,EAAC4W,IAAIxY,WAAU0T,OAAOC,OAAO8E,YAErC,EAAA,CAAA;AAAA;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJzY,UAAAA,WAAU47C,gBACV;AAAA;AAAA,QAED;AACC57C,UAAAA,WAAU8B,UAAU,oBAAoB,CAACo6C,QAAQH,cAAc5nC,CAEnE,CAAA;AAAA,MAAA;AAAA,IAAA,CAAA;AACCnU,IAAAA,WAAUiG,MAAM0jB,UAAU,WAAW,SAASxV,GAC7C;AAAA,UAAIlO,SAAQkO,KAAK7S,OAAO2E;AACxB,UAAI4O,SAASV,EAAEU,UAAUV,EAAEW;AAC3B,UAAIinC,eAAelnC,OAAOvM,cAAc,cAAA;AAExC,WAAIyzC,cAAa;AAChBA,uBAAelnC,OAAOvL,WAAWhB,cAAc,mCAC/C;AAAA,MAAA;AAED,eAAQ6L,KAAGlO,QAAOkpC,SAAAA;AAAAA,QACjB,KAAK,IAAG;AACP,eAAKh7B,KAAGlO,QAAOipC;AAAU;AACzB,cAAG6M,gBAAgBA,aAAah2C,OAAM;AACrCg2C,yBAAah2C,MACb;AAAA,UAAA;AACD;AAAA,QACA;AAAA,QACD,KAAK/F,WAAU+Q,KAAKC;AACnB,eAAKmD,KAAGlO,QAAOipC;AAAU;AACzB,cAAG6M,gBAAgBA,aAAah2C,OAAM;AACrCg2C,yBAAah2C,MAAAA;AAAAA,UAClB,OAAS;AACJ,gBAAG/F,WAAU4B,OAAOu6C,iBAAgB;AACnC;AAAA,YACA;AACDn8C,YAAAA,WAAUw7C,cAAAA;AAAAA,UACV;AACD;AAAA,QACD,KAAKx7C,WAAU+Q,KAAKE;AACnBjR,UAAAA,WAAU47C,gBACV;AAAA;AAAA,MAAA;AAAA,IAKJ,CACA;AAAA,EAAA;AACA57C,EAAAA,WAAUo8C,kBAAgB;AACzB;AAAA,EAUD;AAEAp8C,EAAAA,WAAUq8C,mBAAmB,WAC5Br8C;AAAAA,IAAAA,WAAUiG,MAAMi0C,gBAAAA,GAAmB,aAAal6C,WAAUs7C,eAC1Dt7C;AAAAA,IAAAA,WAAUiG,MAAMi0C,gBAAAA,GAAmB,WAAWl6C,WAAUu7C;AACxDv7C,IAAAA,WAAUq8C,mBAAmB;;EAC9B;AACAr8C,EAAAA,WAAUs7C,kBAAkB,SAASnnC;AACpC,QAAInU,WAAUs8C,eAAc;AAC3B,UAAKp8C,CAAAA,SAASq8C,kBAAiB;AAC9BrC,0BAAkBn1C,UAAUC,IAAI,kBAChC9E;AAAAA,iBAASq8C,mBAAmB;AAAA,MAC5B;AACD,UAAIC,KAAKx8C,WAAUm3C,YAAAA;AACnB,UAAInkB,MAAM,CAAC7e,EAAEsH,OAAOtH,EAAEuH;AACtB8gC,SAAGr1C,MAAM+L,MAAMlT,WAAUy8C,UAAU,CAAA,IAAGzpB,IAAI,CAAA,IAAGhzB,WAAUs8C,cAAc,CAAA,IAAG;AACxEE,SAAGr1C,MAAMiL,OAAOpS,WAAUy8C,UAAU,KAAGzpB,IAAI,CAAA,IAAGhzB,WAAUs8C,cAAc,CAAG,IAAA;AAAA,IACzE;AAAA,EACF;AACAt8C,EAAAA,WAAU08C,gBAAgB,SAASvoC,GAAAA;AAClC,QAAIqoC,KAAKx8C,WAAUm3C,YAAAA;AACnBn3C,IAAAA,WAAUy8C,YAAY,CAACD,GAAG3nB,YAAY2nB,GAAG3qC,SAAAA;AACzC7R,IAAAA,WAAUs8C,gBAAgB,CAACnoC,EAAEsH,OAAOtH,EAAEuH,KAAAA;AAAAA,EACvC;AACA1b,EAAAA,WAAUu7C,cAAc,WAAA;AACvB,QAAIv7C,WAAUy8C,WAAU;AACvBz8C,MAAAA,WAAUy8C,YAAYz8C,WAAUs8C,gBAAgB;AAChDpC,sBAAkBn1C,EAAAA,UAAU6e,OAAO,kBAAA;AACnC1jB,eAASq8C,mBAAmB;AAAA,IAC5B;AAAA,EACF;AACAv8C,EAAAA,WAAUm3C,cAAY,WACrB;AAAA,QAAA,CAAK92C,KAAKyR,WAAU;AACnB,UAAI2H,IAAEvZ,SAASC,cAAc,KAC7BsZ;AAAAA,QAAEhV,YAAU;AACZ,UAAIzE,WAAU4B,OAAOmhC;AACpBtpB,UAAEhV,aAAW;AACd,UAAIzE,WAAUq3C,YAAYsF;AACzBljC,UAAEhV,aAAW;AACd,UAAIzE,WAAU4B,OAAOgO;AACpB6J,UAAEhV,aAAW;AACd,UAAIzE,WAAU4B,OAAOyhC;AACpB5pB,UAAEhV,aAAa;AAEhBgV,QAAEtS,MAAM+f,aAAW;AACnB,UAAI5f,OAAOjH,KAAKu8C;AAEhB,UAAIvlC,UAAUhX,KAAKuB,OAAOyiC;AAG1B/8B,cAAQ;AACR,UAAIgoC,WAAW;AACf,eAAStnC,IAAI,GAAGA,IAAIqP,QAAQpP,QAAQD,KAAK;AACxCsnC,mBAAWjvC,KAAKuT,SAAS2d,yBAAyBla,QAAQrP,CAC1DV,CAAAA;AAAAA,gBAAQ,UAAQgoC,WAAS,mBAAkBj4B,QAAQrP,CAAAA,IAAG,+BAA6BhI,WAAU4B,OAAOgO,MAAI,UAAQ,UAAQ,cAAcyH,QAAQrP,CAAAA,IAAK,qCAAqCqP,QAAQrP,CAAK,IAAA,kBAAkBhI,WAAU0T,OAAOC,OAAO0D,QAAQrP,CAAM,CAAA,IAAA;AAAA,MAC7P;AAEDqP,gBAAUhX,KAAKuB,OAAO0iC;AACtB,UAAI10B,MAAM5P,WAAU4B,OAAOgO;AAC3B,eAAS5H,IAAI,GAAGA,IAAIqP,QAAQpP,QAAQD,KAAK;AACxCsnC,mBAAWjvC,KAAKuT,SAAS2d,yBAAyBla,QAAQrP,CAAAA,CAAAA;AAC1D,YAAGhI,WAAUiS,aAAe,GAAA;AAC3B3K,kBAAQ;AAAA,QACR;AACDA,gBAAQ,UAAQgoC,WAAS,mBAAkBj4B,QAAQrP,CAAG,IAAA,+BAA6B4H,MAAI,SAAO,WAAS,cACpGyH,QAAQrP,CAAK,IAAA,qCACbqP,QAAQrP,CAAAA,IAAK,kBAAkBhI,WAAU0T,OAAOC,OAAO0D,QAAQrP,CAAM,CAAA,IAAA;AAAA,MACxE;AACDV,cAAQ;AACRA,cAAM;AACNmS,QAAElZ,YAAU+G;AACZ,UAAItH,WAAU4B,OAAO+hC,eAAc;AAClC3jC,QAAAA,WAAUiG,MAAMwT,EAAE/Y,YAAY,aAAaV,WAAU08C;AACrD18C,QAAAA,WAAUiG,MAAMwT,EAAE/Y,YAAY,eAAe,SAASyT,GACrDA;AAAAA,YAAEC;AACF,iBAAO;AAAA,QACX,CACGqF;AAAAA,UAAE/Y,WAAWyG,MAAM6Y,SAAS;AAC5BhgB,QAAAA,WAAUq8C,iBAEV;AAAA,MAAA;AAEDh8C,WAAKuT,SAAS0d,aAAa7X,CAAAA;AAE3BpZ,WAAKi6C,WAAAA;AACLj6C,WAAKk6C,OAAO5oC,aAAa8H,GAAEpZ,KAAKk6C,OAAO75C,UAAAA;AAEvCL,WAAKyR,YAAU2H;AAEf,UAAIw+B,MAAI53C,KAAKuB,OAAO+nB,SAASD;AAC7BpiB,aAAK;AACL,eAASU,IAAE,GAAGA,IAAIiwC,IAAIhwC,QAAQD,KAAK;AAClC,YAAI+yC,QAAM16C,KAAKg3C,YAAYY,IAAIjwC,CAAGjG,EAAAA,IAAAA;AAClC,YAAKg5C,CAAAA;AAAO;AACZ9C,YAAIjwC,CAAG5H,EAAAA,KAAG,UAAQC,KAAK+Z,IACvB;AAAA,YAAI1U,SAAS;AACb,YAAIuyC,IAAIjwC,CAAAA,EAAGtC,QAAO;AACjB,cAAI4pC,WAAWtvC,WAAU4T,SAASmd,gCAAgC1wB,KAAKqT,OAAOC,OAAO,YAAUskC,IAAIjwC,CAAAA,EAAGtC;AACtGA,mBAAS,UAAQ4pC,WAAS,oDAAkDtnC,IAAE,cAAYA,IAAE,qCAAmCiwC,IAAIjwC,CAAAA,EAAGtC,SAAO,kBAAgBrF,KAAKqT,OAAOC,OAAO,YAAUskC,IAAIjwC,CAAGtC,EAAAA,MAAAA,IAAQ;AAAA,QACzM;AAED,YAAIrF,KAAKuB,OAAOmhC,WAAU;AACzBz7B,kBAAM;AAAA,QACN;AAED,YAAIu1C,aAAax8C,KAAKqT,OAAOC,OAAO,aAAWskC,IAAIjwC,CAAAA,EAAGqF,IACtD;AAAA,YAAA,OAAUwvC,eAAe,UAAS;AACjCA,uBAAa5E,IAAIjwC,CAAAA,EAAGqF;AAAAA,QACpB;AACD/F,gBAAM,cAAY2wC,IAAIjwC,CAAAA,EAAG5H,KAAG,gCAA8BsF,SAAQ,YAAUm3C,aAAW,mBAAiB9B,MAAMxsC,OAAOmM,KAAKra,MAAK43C,IAAIjwC,CAAAA,CAAAA;AACnIV,gBAAM;AAAA,MACN;AAED,UAAIw1C,KAAGrjC,EAAErG,qBAAqB,KAC9B;AAAA,eAASpL,IAAE,GAAGA,IAAE80C,GAAG70C,QAAQD,KAAK;AAC/B,YAAI+0C,OAAOD,GAAG90C,CACd;AAAA,YAAIvD,YAAYzE,WAAUsT,cAAcypC,IACxC;AAAA,YAAIt4C,aAAa,iBAAiB;AACjCs4C,eAAKx8C,YAAY+G;AACjB;AAAA,QACA;AAAA,MACD;AAGDtH,MAAAA,WAAUg9C,oBAAoB/E,GAG9B53C;AAAAA,WAAK+7C,gBAEL/7C;AAAAA,WAAKy7C,sBAAsBz7C,IAE3BoZ;AAAAA,QAAEtS,MAAM+f,aAAW;AAAA,IACnB;AAGD,WAAO7mB,KAAKyR;AAAAA,EACb;AAEA9R,EAAAA,WAAUg9C,sBAAsB,SAAStzB,UAAAA;AAIxC,aAAQ1hB,IAAI,GAAGA,IAAI0hB,SAASzhB,QAAQD,KAAI;AACvC,UAAI8iB,UAAUpB,SAAS1hB,CACvB;AAAA,UAAA,CAAI8iB,QAAQ1qB,MAAAA,CAAOJ,WAAU8R,UAAUxJ,cAAc,IAAIwiB,QAAQ1qB,EAChE,EAAA;AAAA;AAED,UAAI68C,aAAaj9C,WAAU8R,UAAUxJ,cAAc,IAAIwiB,QAAQ1qB,EAAAA,EAAAA;AAC/D,UAAIqT,QAAQwpC,WAAW30C,cAAc,OAErC;AAAA,UAAI40C,aAAal9C,WAAU86C,2BAA2BhwB,OACtD;AAAA,aAAMoyB,cAAeA,CAAAA,WAAW50C,eAAc;AAC7C40C,qBAAaA,WAAW1kB;AAAAA,MACxB;AAED,UAAI2kB,WAAW;AAEf,UAAGD,YAAY;AACd,YAAI3mB,QAAQ2mB,WAAW50C,cAAc,yBACrC;AAAA,YAAGiuB,OAAM;AACRzL,kBAAQsyB,UAAU7mB,MAAMn2B,MAAM,WAAWJ,WAAUoa,IACnD;AAAA,cAAA,CAAImc,MAAMn2B;AACTm2B,kBAAMn2B,KAAK0qB,QAAQsyB;AACpB3pC,gBAAMrO,aAAa,OAAO0lB,QAAQsyB,OAClCD;AAAAA,qBAAW;AAAA,QACX;AAAA,MACD;AAGD,UAAGA,UAAS;AACX,YAAIzF,UAAU13C,WAAUq3C,YAAYvsB,QAAQ/oB,IAC5C;AAAA,YAAG21C,QAAQ1sB,OAAM;AAChBhrB,UAAAA,WAAUiG,MAAMwN,OAAO,SAAS,SAAUqX,UAAAA;AACzC,mBAAO,WAAA;AAEN,kBAAIiwB,QAAQ/6C,WAAUq3C,YAAYvsB,SAAQ/oB,IAC1C;AAAA,kBAAIuQ,OAAOtS,WAAU86C,2BAA2BhwB,QAEhD;AAAA,kBAAGiwB,SAASA,MAAM/vB;AACjB+vB,sBAAM/vB,MAAMtQ,KAAK1a,YAAWsS,IACnC;AAAA,YAAA;AAAA,UACK,EAAEwY,OACH,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACF;AAEA9qB,EAAAA,WAAUgE,YAAY,mBAAmB,SAASq5C,QAAQrW,QACzD;AAAA,QAAG3mC,KAAK8V,gBAAgBknC;AACvBh9C,WAAK8V,eAAe6wB;AAAAA,EACtB,CAAA;AAEAhnC,EAAAA,WAAU48C,qBAAoB;AAAA;AAAA;AAAA;AAAA;AAO9B;ACn1Be,SAASx6C,SAAOpC,YAAAA;AAG/BA,EAAAA,WAAUgQ,qBAAqB,WAC9B;AAAA,QAAIstC,SAASj9C,KAAKuB,OAAOiiC,WACpB5L,UAAUC,UAAU9gB,QAAQ,QAAY,KAAA,MAC1C6gB,UAAUC,UAAU9gB,QAAQ,MAAA,KAAA,MAC5B6gB,UAAUC,UAAU9gB,QAAQ,oBAC5B6gB,UAAUC,UAAU9gB,QAAQ,OAAW,KAAA,OAAA,CAAQ9V,OAAOi8C,aACrDtlB,UAAUulB,aAAa,cAAcvlB,UAAUwlB,iBAAiB;AAEpE,QAAGH,QAAO;AACTj9C,WAAKwI,GAAGyH,eAAe;AACvBjQ,WAAKqhB,UAAU;AAAA,IACf;AAED,QAAGrhB,KAAKuB,OAAOiiC,OAAM;AAEpB,UAAI6Z,uBAAuB;AAC3B,UAAA;AACCx9C,iBAASy9C,YAAY,YAAA;AAAA,MACrB,SAAQxpC,GACRupC;AAAAA,+BAAuB;AAAA,MACvB;AAED,UAAIA,sBAAsB;AACzBr9C,aAAKu9C,cAAc,CAAC,aAAa,cAAc,UAAA,GAAa,SAAUjpC,IACrE;AAAA,cAAIA,GAAGkpC,WAAWlpC,GAAGkpC,QAAQ51C,SAAS;AAAG,mBAAO;AAChD,cAAI0M,GAAGkpC,QAAQ,CACd;AAAA,mBAAO,EACNhpC,QAAQF,GAAGE,QACX4G,OAAO9G,GAAGkpC,QAAQ,CAAGpiC,EAAAA,OACrBC,OAAO/G,GAAGkpC,QAAQ,CAAGniC,EAAAA,OACrBC,SAAShH,GAAGkpC,QAAQ,CAAA,EAAGliC,SACvBG,SAASnH,GAAGkpC,QAAQ,CAAA,EAAG/hC,QAGxB;AAAA;AAAA,mBAAOnH;AAAAA,QACZ,GAAM,WACF;AAAA,iBAAO;AAAA,QACX,CAAA;AAAA,MACG,WAAUrT,OAAOw8C,gBAAgBx8C,OAAO22B,UAAU8lB,gBAAgB;AAClE19C,aAAKu9C,cAAc,CAAC,eAAe,eAAe,WAAc,GAAA,SAAUjpC;AACzE,cAAIA,GAAGqpC,eAAe;AAAS,mBAAO;AACtC,iBAAOrpC;AAAAA,QACP,GAAE,SAAUA,IAAAA;AACZ,iBAASA,CAAAA,MAAOA,GAAGqpC,eAAe;AAAA,QACtC,CAAA;AAAA,MACA,WAAa18C,OAAO22B,UAAUgmB,kBAAkB;AAC7C59C,aAAKu9C,cAAc,CAAC,iBAAiB,iBAAiB,aAAgB,GAAA,SAAUjpC,IAC/E;AAAA,cAAIA,GAAGqpC,eAAerpC,GAAGupC;AAAsB,mBAAO;AACtD,iBAAOvpC;AAAAA,QACP,GAAE,SAAUA,IAAAA;AACZ,kBAASA,MAAMA,GAAGqpC,eAAerpC,GAAGupC;AAAAA,QACxC,CAAA;AAAA,MACG;AAAA,IACD;AAAA,EACF;AAEAl+C,EAAAA,WAAU49C,gBAAgB,SAAS1uC,OAAOivC,UAAUl2B,QAGnD;AAAA,QAAI2C,QAAQwzB,SAAS1qB,OAAOhd,WAAW2nC,aAAaC;AACpD,QAAIC,eAAe;AAEnB,aAASC,iBAAiB95C,SAAS2I,MAAMD,UAAAA;AAExC1I,cAAQ2C,iBAAiBgG,MAAM,SAAS8G;AACvC,YAAGnU,WAAU8sB,kBAAoB,GAAA;AAChC,iBAAO;AAAA,QACX,OAAQ;AACJ,cAAI7E,OAAO9T,CAAAA;AAAI;AACf,iBAAO/G,SAAS+G,CAAAA;AAAAA,QAChB;AAAA,MACJ,GAAK,EAAEsqC,SAAS,MAAA,CAAA;AAAA,IACd;AAED,aAASC,sBAAsBC,MAAMC,MAAMjnC,MAAMknC;AAChD,UAAKF,CAAAA,QAAAA,CAASC;AAAM,eAAO;AAE3B,UAAIrpC,IAAIopC,KAAK9pC;AACb,aAAMU,KAAKA,KAAKvV,WAAUsP,MAAK;AAC9BiG,YAAIA,EAAEjM;AAAAA,MACN;AACD,UAAGiM,KAAKvV,WAAUsP,MAAK;AAEtB,eAAO;AAAA,MACP;AAGD,UAAGtP,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUqG,SAAAA,EAAWvG,OAAM;AAClE,YAAI4C,WAAW1C,WAAU8O,OAAO9O,WAAUqG,SAAWvG,EAAAA,IAAAA;AACrD,YAAG4C,SAASo8C,YAAW;AACtB,iBAAO;AAAA,QACP;AAAA,MACD;AAED,UAAIziC,KAAKvJ,KAAK8K,IAAI+gC,KAAKjjC,QAAQkjC,KAAKljC,KACpC;AAAA,UAAIu2B,KAAKn/B,KAAK8K,IAAI+gC,KAAKljC,QAAQmjC,KAAKnjC,KAAAA;AACpC,UAAIY,KAAKwiC,UAAU5M,KAAGt6B,SAAAA,CAAU0E,MAAO41B,KAAG51B,KAAK,IAAI;AAClD,YAAIsiC,KAAKljC,QAAQmjC,KAAKnjC,OAAO;AAC5Bzb,UAAAA,WAAUiU,OAAOwD,oBACrB;AAAA,QAAA,OAAS;AACLzX,UAAAA,WAAUiU,OAAOuD,oBAAAA;AAAAA,QACjB;AACD,eAAO;AAAA,MACP;AACD,aAAO;AAAA,IACP;AAED,aAASunC,YAAY5qC,GACpB;AAAA,UAAI8T,OAAO9T,CAAAA;AAAI;AACf,UAAI6qC,MAAMh/C,WAAUqG,SAAAA,EAAWqQ,WAC9BhU,WAAW1C,WAAU8O,SAAS9O,WAAU8O,OAAO9O,WAAUyV,KAAS,IAAA;AAEnE,UAAIwpC,kBAAkBj/C,WAAUkiB;AAChC,UAAG88B,OAAO,YAAYt8C,UAAS;AAE9B1C,QAAAA,WAAUkiB,mBAAmB,WAC5B;AAAA,cAAI9hB,MAAKJ,WAAUqG,SAAAA,EAAWmQ;AAC9B,cAAI7B,KAAK3U,WAAUwV,SAASpV,GAAAA;AAC5B,cAAIopB,WAAW9mB,SAASiqB;AAExB,cAAIub,MAAMloC,WAAUopC,UAAUz0B,GAAGiF,YAAYjF,GAAGuF,QAAAA;AAChD,mBAAQlS,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAI;AAClC,gBAAGkgC,IAAIlgC,CAAAA,EAAGwhB,QAAa7U,KAAAA,GAAG6U,WAAU;AACnC0e,kBAAIhe,OAAOliB,GAAG,CACdA;AAAAA;AAAAA,YACA;AAAA,UACD;AACD2M,aAAGk1B,UAAU3B,IAAIjgC,SAAS;AAC1B0M,aAAG03B,SAASnE,IAAIjgC;AAEhB5H,eAAKqoC,YAAY,CAAC/zB,EAAK3U,GAAAA,WAAUqG,SAAWvG,EAAAA,IAAAA;AAAAA,QAEhD;AAAA,MACG;AAEDE,MAAAA,WAAUsU,eAAeH,CAAAA;AAEzB,UAAG6qC,OAAO,YAAYt8C,UAAS;AAC9B1C,QAAAA,WAAUkiB,mBAAmB+8B;AAAAA,MAC7B;AAED,UAAI9qC,EAAEC;AACLD,UAAEC,eACHD;AAAAA,QAAE0C,eAAe;AACjB,aAAO;AAAA,IACP;AAGD2nC,qBAAiBt+C,SAASM,MAAM0O,MAAM,IAAI,SAASiF,GAAAA;AAClD,UAAI8T,OAAO9T,CAAI;AAAA;AAEf,UAAIwJ,MAAMwgC,SAAShqC,CAAAA;AACnB,UAAIwJ,CAAAA;AAAK;AACT,UAAIjH,WAAU;AACbqoC,oBAAYphC,GAEZ;AAAA,YAAIxJ,EAAEC;AACLD,YAAEC,eAAAA;AACHD,UAAE0C,eAAe;AACjB7W,QAAAA,WAAUk/C,mBAAAA;AACV,eAAO;AAAA,MACP;AAKDd,gBAAUD,SAAShqC,CAAAA;AAEnB,WAAKmqC;AAAa;AAGlB,UAAKF,CAAAA,SAAQ;AACZC,sBAAc;AACd;AAAA,MACA;AAID,UAAIzzB,OAAO/V,UAAUupC,QAAQvpC,UAAW/B,KAAK8K,IAAIgN,OAAOnP,QAAQ2iC,QAAQ3iC,KAAAA,IAAS,KAAO3I,KAAK8K,IAAIgN,OAAOlP,QAAQ0iC,QAAQ1iC,SAAS,GAAG;AACnI2iC,sBAAc;AACdl0C,qBAAaupB,KAAAA;AAAAA,MACb;AAAA,IAEH,CAAA;AAGC8qB,qBAAiBn+C,KAAK2I,KAAK,cAAgB,EAAA,CAAA,GAAI,eAAem2C,WAAAA;AAC9DX,qBAAiBn+C,KAAK2I,KAAK,cAAA,EAAgB,CAAI,GAAA,eAAe,SAASmL,GAAAA;AACtE,UAAI8T,OAAO9T;AAAI;AACf,UAAImqC,aAAY;AACf,YAAInqC,KAAKA,EAAEC;AACVD,YAAEC,eACHD;AAAAA,UAAE0C,eAAe;AACjB,eAAO;AAAA,MACP;AAAA,IACH,CAAA;AAGC2nC,qBAAiBn+C,KAAKiP,MAAMJ,MAAM,CAAA,GAAI,SAASiF,GAAAA;AAE9C,UAAGjU,YAAYA,SAASM,MAAK;AAC5BN,iBAASM,KAAKuE,UAAUC,IAAI,sBAAA;AAAA,MAC5B;AAED,UAAIijB,OAAO9T,CAAI;AAAA;AACfnU,MAAAA,WAAUo/C,iBAAiBjrC,EAAEkrC;AAE7B,UAAIC;AACJ5oC,kBAAY2nC,cAAc;AAC1BC,oBAAc;AACdgB,mBAAalB,UAAUD,SAAShqC,CAEhC;AAAA,UAAA,CAAKmrC,YAAW;AACfjB,sBAAc;AACd;AAAA,MACA;AAGD,UAAIrrB,MAAM,oBAAItd;AAEd,UAAK2oC,CAAAA,eAAAA,CAAgB3nC,aAAasc,MAAMurB,eAAe,KAAI;AAC1Dv+C,QAAAA,WAAUiU,OAAO2C,aAAa0oC,UAAAA;AAC9Bh+C,eAAO8I,WAAW;AACjB,cAAGpK,WAAUqK,YAAW;AACvB;AAAA,UACA;AAEDrK,UAAAA,WAAU0U,cAAc4qC;QACxB,GAAE,EAAA;AAEH,YAAInrC,EAAEC;AACLD,YAAEC,eACHD;AAAAA,UAAE0C,eAAe;AACjB7W,QAAAA,WAAUu/C,mBAAmB;AAC7B,eAAO;AAAA,MACP;AACDhB,qBAAevrB;AAIf,UAAIqrB,eAAe3nC,aAAc1W,CAAAA,WAAU4B,OAAOmiC;AACjD;AAED,UAAIyb,UAAUx/C,WAAUgV,cAAc9U,SAASk3B,aAAAA;AAC/C,UAAIqoB,WAAWz/C,WAAUgV,cAAcsqC,WAAWzqC,MAClD;AAAA,UAAI6qC,aAAa90B,SAAQ5qB,WAAUgV,cAAc4V,OAAO/V,MAAAA,IAAU;AAElE,UAAG2qC,WAAWC,YAAYD,WAAWC,YAAYD,WAAWE,YAC5D;AACC,YAAGvrC,EAAEC,gBAAgB;AACpBD,YAAEC,eAAAA;AAAAA,QACF;AACDD,UAAE0C,eAAe;AACjB7W,QAAAA,WAAUuU,qBAAqB;AAC/BvU,QAAAA,WAAUiU,OAAO2C,aAAa0oC,UAAAA;AAC9B10B,iBAAS00B;AACT,eAAO;AAAA,MACP;AAED5rB,cAAQtpB,WAAW,WAClB;AAAA,YAAGpK,WAAUqK,YAAW;AACvB;AAAA,QACA;AACDqM,oBAAY;AACZ,YAAI7B,SAAS+V,OAAO/V;AACpB,YAAIpQ,YAAYzE,WAAUsT,cAAcuB,MACxC;AAAA,YAAIA,UAAUpQ,UAAU2S,QAAQ,UAAgB,KAAA;AAC/CvC,mBAASA,OAAO49B;AAEjBzyC,QAAAA,WAAUwU,eAAeoW,QAAQ/V,MAAAA;AACjC,YAAI7U,WAAU2W,cAAc3W,WAAU2W,cAAc,UAAS;AAC5D3W,UAAAA,WAAU8gB,aAAa9gB,WAAUyW,UAAU,SAASnE,MAAMtK,GAAAA;AACzDsK,iBAAKnL,MAAMgC,UAAQ;AACnBnJ,YAAAA,WAAU8mC,UAAU5c,OAAOliB,GAAG,CAAA;AAAA,UACnC;QACI;AAED,YAAIhI,WAAU4B,OAAOkiC,WAAW;AAC/B9jC,UAAAA,WAAU2/C,iBAAAA;AAAAA,QACV;AACD3/C,QAAAA,WAAUsV,YAAYtV,WAAUyW,QAAAA;AAAAA,MACnC,GAAIzW,WAAU4B,OAAOmiC,UAAAA;AAEnBnZ,eAAS00B;AAAAA,IACX,CAAA;AACC,aAASH,YAAYhrC,GACpB;AAAA,UAAI8T,OAAO9T,CAAAA;AAAI;AACfnU,MAAAA,WAAU4/C,iBAAAA;AACV,UAAIlpC,WAAU;AACb1W,QAAAA,WAAUyU,aAAc0pC,SAAShqC;AACjCnU,QAAAA,WAAUqU,oBAAoB;AAAA,MAC9B;AACDrU,MAAAA,WAAUyW,WAAW;AACrBzW,MAAAA,WAAU2W,aAAW;AACrB3W,MAAAA,WAAUid,YAAU;AACpBjd,MAAAA,WAAUo/C,iBAAiB;AAC3Bj1C,mBAAaupB,KACbhd;AAAAA,kBAAY4nC,cAAc;AAC1BD,oBAAc;AAAA,IACd;AAGDG,qBAAiBn+C,KAAK2I,KAAK,cAAA,EAAgB,CAAIkG,GAAAA,MAAM,CAAI,GAAA,SAASiF,GACjE;AAAA,UAAGjU,YAAYA,SAASM,MAAK;AAC5BN,iBAASM,KAAKuE,UAAU6e,OAAO,sBAAA;AAAA,MAC/B;AAED,UAAIqE,OAAO9T,CAAI;AAAA;AAEf,UAAGnU,WAAU4B,OAAOoiC,mBAAkB;AACrC,YAAA,CAAKttB,aAAagoC,sBAAsB9zB,QAAQwzB,SAAS,KAAK,GAAA,GAAM;AACnEp+C,UAAAA,WAAUu/C,mBAAmB;AAAA,QAC7B;AAAA,MACD;AAED,UAAI7oC,WAAW;AACd1W,QAAAA,WAAUuU,qBAAqB;AAC/BnK,mBAAW,WAAA;AACVpK,UAAAA,WAAUuU,qBAAqB;AAAA,QAC/B,GAAE;MACH;AAED4qC,kBAAYhrC,CACZ;AAAA,UAAInU,WAAUu/C,kBAAiB;AAC9Bv/C,QAAAA,WAAUu/C,mBAAmB;AAC7B,YAAIprC,EAAEC;AACLD,YAAEC,eACHD;AAAAA,UAAE0C,eAAe;AACjB,eAAO;AAAA,MACP;AAAA,IACH,CAEC7W;AAAAA,IAAAA,WAAUiG,MAAM/F,SAASM,MAAM0O,MAAM,CAAA,GAAIiwC,WAC1C;AAAA,EAAA;AAEAn/C,EAAAA,WAAU2/C,mBAAmB,WAC5B3/C;AAAAA,IAAAA,WAAU4/C;AAEV,QAAIC,SAAS7/C,WAAU8/C,cAAc5/C,SAASC,cAAc,KAC5D0/C;AAAAA,WAAOp7C,YAAU;AAEjBzE,IAAAA,WAAUk/C,mBAAmB,CAAA;AAE7Bh/C,aAASM,KAAKC,YAAYo/C,MAAAA;AAAAA,EAC3B;AACA7/C,EAAAA,WAAUk/C,qBAAqB,SAAS/9C,MAAAA;AACvC,QAAI0+C,SAAS7/C,WAAU8/C;AACvB,QAAID,QAAO;AACV,UAAI7H,OAAO;AACX,UAAIh4C,WAAUyW,YAAAA,CAAatV,MAAK;AAC/B,YAAIwT,KAAK3U,WAAUwV,SAASxV,WAAUyW,QACtC;AAAA,YAAI9B;AACHqjC,iBAAO,WAAWrjC,GAAG8F,SAASza,WAAU0iB,UAAU+iB,aAAa9wB,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,IAAI3U,WAAU0iB,UAAU8L,SAAS7Z,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAO,KAAA;AAAA,MAChK;AAED,UAAI3U,WAAU2W,cAAc,YAAY3W,WAAU2W,cAAc;AAC/DkpC,eAAOt/C,aAAaP,WAAU0T,OAAOC,OAAOosC,kBAAkB,oBAAkB/H;AAAAA;AAEhF6H,eAAOt/C,aAAaP,WAAU0T,OAAOC,OAAOqsC,gBAAgB,kBAAgBhI;AAAAA,IAC7E;AAAA,EACF;AACAh4C,EAAAA,WAAU4/C,mBAAmB,WAAA;AAC5B,QAAIC,SAAS7/C,WAAU8/C;AACvB,QAAID,UAAUA,OAAOv2C,YAAW;AAC/Bu2C,aAAOv2C,WAAWiC,YAAYs0C,MAC9B7/C;AAAAA,MAAAA,WAAU8/C,cAAc;AAAA,IACxB;AAAA,EACF;AAGA;ACrXe,SAAS19C,SAAOpC,YAAAA;AAE/BA,EAAAA,WAAUigD,cAAc,WACvB;AAAA,WAAO,EACN/8C,MAAM,EACLqL,QAAQ,WAAA;AACP,aAAO,EACN2xC,KAAK,OACLn+C,MAAM,GACN4tB,OAAO,EACNxoB,OAAO,0BAERg5C,GAAAA,OAAO,EACNC,WAAa,WACZpgD;AAAAA,QAAAA,WAAUyG;MACV,EAEFjG,GAAAA,MAAM,CACL,EACCyN,IAAI5N,KAAK4N,IACTlM,MAAM;IAIT,GACDZ,MAAM,WACL;AAAA,UAAIsH,YAAYvI,SAASC,cAAc,KAAA;AACvCsI,gBAAUrI,KAAK,eAAcJ,WAAUoa,IAAAA;AACvC3R,gBAAUtB,MAAMF,QAAQ;AACxBwB,gBAAUtB,MAAMC,SAAS;AACzBqB,gBAAU1D,UAAUC,IAAI,mBACxByD;AAAAA,gBAAU43C,MAAM;AAChB53C,gBAAUlI,YAAY;AAatBP,MAAAA,WAAUmB,KAAKsH,SAAAA;AAEfpI,WAAK4N,KAAKxF;AAAAA,IACV,EAAA,GAEF1G,MAAM,EAAA;AAAA,EAER;AAEA;ACtDe,SAASK,SAAOpC,YAAAA;AAG/BA,EAAAA,WAAUsgD,iBAAiB,WAC1BpgD;AAAAA,aAASwJ,gBAAgBtE,aAAa,wBAAwBpF,WAAUugD,IAAAA;AAAAA,EACzE;AAEAvgD,EAAAA,WAAUwgD,iBAAiB,EAC1Bn7C,kBAAkB,CAAC,GAAE,CAAA,GACrB49B,uBAAuB,CAAC,GAAE,CAAA,GAC1BF,WAAW,CAAC,GAAE,CAEd1nB,GAAAA,cAAc,CAAC,IAAG,EAClBwnB,GAAAA,uBAAuB,CAAC,WAAW,QAAA,GACnCC,4BAA4B,CAAC,WAAW,QAAA,EAAA;AAGzC9iC,EAAAA,WAAUygD,WAAW,EACpBC,4BAA4B,CAAC,IAAG,EAAA,GAChC53C,YAAY,CAAC,IAAG,EAAA,GAChBsH,YAAY,CAAC,IAAG,EAAA,EAAA;AAOjBpQ,EAAAA,WAAU0R,oBAAoB,WAC7B;AAAA,QAAA,CAAI1R,WAAUugD,MAAK;AAClB,aAAOI,oBAAAA;AAAAA,IACT,OAAM;AACJ,cAAS3gD,WAAUugD,OAAO,IAAInpC,QAAQ,UAAe,IAAA;AAAA,IACrD;AAAA,EACF;AAEA,WAASwpC,oBAAAA;AACR,QAAIC,QAAQ3gD,SAASkT,qBAAqB,MAAA;AAC1C,aAASpL,IAAI,GAAGA,IAAI64C,MAAM54C,QAAQD,KAAK;AACtC,UAAI4W,MAAMiiC,MAAM74C,CAAAA,EAAG84C,KAAK5jB,MAAM,8BAAA;AAC9B,UAAIte,KAAI;AACP,eAAOA,IAAI,CAAA;AAAA,MACX;AAAA,IACD;AAAA,EACF;AAEA5e,EAAAA,WAAU+gD,mBAAmB,WAC5B;AAAA,UAAMC,SAASh2C,iBAAiB3K,KAAKgI,UACrC;AAAA,UAAM44C,WAAWD,OAAO/1C,iBAAiB,uBAAA;AAEzC,QAAIi2C,gBAAAA,CAAAA,CAAkBD;AACtB,QAAIE;AACJ,QAAIC,YAAY,CAAA;AAChB,QAAIC,mBAAmB;AAEvB,QAAGH,eAAc;AAChBC,kBAAYF;AACZ,eAAQj5C,KAAKhI,WAAU6I,IAAG;AACzBu4C,kBAAUp5C,CAAKg5C,IAAAA,OAAO/1C,iBAAiB,sBAAsBjD;MAC7D;AAEDo5C,gBAAU/lC,eAAe2lC,OAAO/1C,iBAAiB,qCAAA;AACjDm2C,gBAAUre,YAAYie,OAAO/1C,iBAAiB,kCAEhD;AAAA,IAAA,OAAM;AACJk2C,kBAAYP,kBACZS;AAAAA,yBAAmBrhD,WAAU0R,kBAC7B;AAAA,IAAA;AAGD1R,IAAAA,WAAUshD,cAAc,EACvBC,OAAOJ,WACPK,aAAaN,eACbG,kBACA9yB,QAAQ6yB,UAAAA;AAGT,QAAGphD,WAAUshD,YAAYE,aAAY;AACpC,YAAMC,iBAAiBphD,KAAKihD,YAAY/yB;AACxC,eAAQvmB,KAAKhI,WAAU6I,IAAG;AACzB,YAAA,CAAI+J,MAAMyS,SAASo8B,eAAez5C,CAAAA,CAAAA,CAAAA,GAAK;AACtChI,UAAAA,WAAU6I,GAAGb,CAAKqd,IAAAA,SAASo8B,eAAez5C,CAAAA,CAAAA;AAAAA,QAC1C;AAAA,MACD;AAAA,IACD;AAAA,EACF;AAEAhI,EAAAA,WAAUiS,eAAe,WAAA;AACxB,WAAOjS,WAAUshD,YAAYE;AAAAA,EAC9B;AAEA,MAAIE;AACJ,WAASf,sBAAAA;AACR,QAAGe,uBAAuBzuC,QAAU;AACnC,UAAI0uC,QAAQzhD,SAASC,cAAc,KAAA;AACnCwhD,YAAMx6C,MAAMf,WAAW;AACvBu7C,YAAMx6C,MAAMiL,OAAO;AACnBuvC,YAAMx6C,MAAM+L,MAAM;AAClByuC,YAAMphD,YAAY;AAIlBL,eAASM,KAAKC,YAAYkhD,KAAAA;AAC1B,UAAIX,SAAS1/C,OAAO0J,iBAAiB22C,MAAMr5C,cAAc,4BAAA,CAAA;AACzD,UAAIlC,WAAW46C,OAAO/1C,iBAAiB,UACvC;AAAA,UAAG7E,aAAa,YAAW;AAE1Bs7C,6BAAqB;AAAA,MACxB,OAAO;AACJA,6BAAqB;AAAA,MACrB;AAEDt3C,iBAAW,WACVs3C;AAAAA,6BAAqB;AACrB,YAAGC,SAASA,MAAMr4C,YAAW;AAC5Bq4C,gBAAMr4C,WAAWiC,YAAYo2C;QAC7B;AAAA,MACD,GAAE,GACH;AAAA,IAAA;AACD,WAAOD;AAAAA,EACR;AAEA,MAAIE;AACJ,WAASC,0BACR;AAAA,QAAG7hD,WAAU0R,kBAAAA,GAAoB;AAChC,aAAO;AAAA,IACT,OAAM;AACJ,UAAGkwC,yBAAyB3uC,QAAU;AACrC,YAAI0uC,QAAQzhD,SAASC,cAAc,KAAA;AACnCwhD,cAAMx6C,MAAMf,WAAW;AACvBu7C,cAAMx6C,MAAMiL,OAAO;AACnBuvC,cAAMx6C,MAAM+L,MAAM;AAClByuC,cAAMphD,YAAY;AAMlBL,iBAASM,KAAKC,YAAYkhD,KAAAA;AAC1B,YAAIX,SAAS1/C,OAAO0J,iBAAiB22C,MAAMr5C,cAAc,WAAA,CAAA;AACzD,YAAIw5C,YAAYd,OAAO/1C,iBAAiB,YAAA;AACxC/K,iBAASM,KAAK+K,YAAYo2C,KAAAA;AAC1BC,+BAA0BE,CAAAA,EAAAA,cAAc;AAExC,YAAIF,CAAAA,sBAAqB;AACxBx3C,qBAAW,WACVw3C;AAAAA,mCAAuB3uC;AAAAA,UACvB,GAAE;QACH;AAAA,MACJ,OAAO;AACJ,eAAO2uC;AAAAA,MACP;AAAA,IACD;AAAA,EACF;AAEA,WAASG,mBACR;AAAA,QAAG/hD,WAAU0R,kBAAAA,KAAuB1R,WAAUgiD,mBAAAA,GAAqB;AAClE;AAAA,IACA;AAED,QAAIC,aAAaL;AACjBA,2BAAuB3uC;AACvByuC,yBAAqBzuC;AACrB,QAAIivC,aAAaL,wBAIjB;AAAA,QAAGI,eAAeC,cAAcliD,WAAUqI,cAAcrI,WAAUqG,SAAAA,EAAWvG,MAAK;AACjFE,MAAAA,WAAUyG,eAAAA;AAAAA,IACV;AAAA,EACF;AACAnF,SAAO+F,iBAAiB,oBAAoB06C,gBAC5CzgD;AAAAA,SAAO+F,iBAAiB,QAAQ06C,gBAEhC/hD;AAAAA,EAAAA,WAAUgiD,qBAAqB,WAAA;AAC9B,WAAOH,wBACR;AAAA,EAAA;AAEA7hD,EAAAA,WAAUmiD,aAAa,SAASpmB,KAAK5B,MAAMomB,MAAAA;AAC1C,aAAS92B,OAAO0Q;AACf,UAAA,OAAW4B,IAAItS,GAAAA,KAAQ;AACtBsS,YAAItS,OAAO0Q,KAAK1Q,GAAAA,EAAK82B,IACxB;AAAA,EAAA;AAEAvgD,EAAAA,WAAUoiD,UAAU,SAASl7C,OAAAA;AAC5B7G,SAAKkgD,OAAOr5C;AACZlH,IAAAA,WAAUsgD,eAAAA;AACV,QAAGtgD,WAAUqI,YAAW;AACvBhI,WAAKwP,WACLxP;AAAAA,WAAKkO,OACL;AAAA,IAAA;AAAA,EAGF;AAEA,WAAS8zC,kBAAkB58C,MAAAA;AAC1B,QAAI0V,MAAM1V,KAAK4Y,WACflD;AAAAA,UAAMA,MAAM,KAAK,MAAIA,MAAMA;AAC3B,QAAI7T,OAAO,+BAA8B7B,KAAKuU,SAAAA,IAAY,4CACrBmB,MAAK;AAC1C,WAAO7T;AAAAA,EACR;AAEAtH,EAAAA,WAAU6P,aAAa,WACtBxP;AAAAA,SAAK0gD;AAEL,QAAK1gD,CAAAA,KAAKkgD,MAAK;AACdlgD,WAAKkgD,OAAOlgD,KAAKihD,YAAYC;AAAAA,IAC7B;AACDvhD,IAAAA,WAAUsgD,eACV;AAAA,QAAItgD,WAAUugD,SAAS,QAAO;AAE7BvgD,MAAAA,WAAU0iB,UAAUiF,aAAa06B;AAAAA,IACjC,WAASriD,WAAU0iB,UAAUiF,eAAe06B,mBAAkB;AAC9DriD,MAAAA,WAAU0iB,UAAUiF,aAAa3nB,WAAUyF,KAAKq7B,YAAY9gC,WAAU4B,OAAO8gC,SAC7E;AAAA,IAAA;AAUD,QAAIriC,CAAAA,KAAKihD,YAAYE,aAAY;AAChC,UAAIriB,MAAM;AACV,UAAIn/B,WAAUugD,SAASvgD,WAAUugD,SAAS,aAAavgD,WAAUugD,SAAS;AAAWphB,cAAM;AAG3F,UAAGn/B,WAAU0R,kBAAoB,GAAA;AAChC,YAAI4wC,qBAAqBtiD,WAAU4B,OAAOyiC,aAAaM;AACvD,YAAI4d,sBAAsBviD,WAAU4B,OAAO0iC,cAAcK;AACzD,YAAG2d,sBAAsBtiD,WAAU4B,OAAOyiC,aAAa9W,MAAAA,EAAQzpB,UAAUw+C,sBACxEC,uBAAuBviD,WAAU4B,OAAO0iC,cAAc/W,MAAAA,EAAQzpB,KAAUy+C,KAAAA,qBAAoB;AAC5F,cAAIC,MAAMxiD,WAAU4B,OAAOyiC,aAAa9W,MACxCvtB;AAAAA,UAAAA,WAAU4B,OAAOyiC,eAAerkC,WAAU4B,OAAO0iC,cAAc/W,MAC/DvtB;AAAAA,UAAAA,WAAU4B,OAAO0iC,gBAAgBke;AAAAA,QACjC;AACDxiD,QAAAA,WAAU6I,GAAGiI,sBAAsB;AAEnC9Q,QAAAA,WAAU6I,GAAG45C,2BAA2B;AACxCziD,QAAAA,WAAU6I,GAAG65C,iBAAiB;AAC9B1iD,QAAAA,WAAUi3C,mBAAmBa,SAASthB,SAASpvB,SAAS;AACxDpH,QAAAA,WAAUi3C,mBAAmBa,SAASE,KAAK5wC,SAAS;AAAA,MACpD;AAMD/G,WAAK8hD,WAAWniD,WAAU4B,QAAQ5B,WAAUwgD,gBAAgBrhB,GAC5D9+B;AAAAA,WAAK8hD,WAAWniD,WAAU6I,IAAI7I,WAAUygD,UAAUthB,GAElD;AAAA,UAAIn/B,WAAUugD,SAAS,QAAO;AAC7BvgD,QAAAA,WAAU6I,GAAG0H,eAAe;AAC5BvQ,QAAAA,WAAU0iB,UAAUiF,aAAa,SAASliB,MACzC;AAAA,cAAI0V,MAAM1V,KAAK4Y,WACflD;AAAAA,gBAAMA,MAAM,KAAK,MAAIA,MAAMA;AAC3B,cAAI7T,OAAO,+BAA8B7B,KAAKuU,SAAY,IAAA,4CACrBmB,MAAK;AAC1C,iBAAO7T;AAAAA,QACX;AAAA,MACG;AAGD,UAAI63B;AAAK;AAAA,IAET;AAED,QAAA,CAAI9+B,KAAKihD,YAAYE,aAAY;AAChC,UAAImB,QAAQ3iD,WAAU4B,OAAOghD;AAC7B,UAAID;AAAOA,cAAME,UAAU;AAAA,IAC3B;AAGD7iD,IAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AAEzC,UAAI88B,cAAc9gC,WAAUyF,KAAKq7B,YAAY,IAC7C;AAAA,UAAA,CAAI9gC,WAAU0iB,UAAUogC,gBAAe;AACtC9iD,QAAAA,WAAU0iB,UAAUogC,iBAAiB9iD,WAAU0iB,UAAUuG;AAAAA,MACzD;AACD,UAAI85B,gBAAgB/iD,WAAU0iB,UAAUogC;AACxC9iD,MAAAA,WAAU0iB,UAAUuG,YAAY,SAASxjB,MAAAA;AACxC,YAAIpF,KAAKoV,SAAS,SAAS;AAC1B,cAAIhC,QAAQqtB,YAAYr7B,IAAAA;AACxB,cAAIA,KAAKgb,aAAa,GAAG;AACxBhN,oBAAQzT,WAAU0T,OAAOjO,KAAKk5B,WAAWl5B,KAAKkgB,cAAc,MAAMlS;AAAAA,UAClE;AACD,cAAA,CAAKhO,QAASzF,CAAAA,WAAUyF,KAAK4Z,UAAUhf,KAAKgP,aAAAA,CAAAA,GAAiB;AAC5DoE,oBAAQzT,WAAU0T,OAAOC,OAAOkE,uBAAuB,MAAMpE;AAAAA,UAC7D;AACD,iBAAOA;AAAAA,QACX,OAAU;AACN,iBAAOsvC,cAAcroC,KAAKra,MAAMoF,IAAAA;AAAAA,QAChC;AAAA,MACJ;AAGE,UAAGzF,WAAU4B,OAAOyD,kBAAiB;AACpC,cAAMtF,OAAOC,WAAUgJ,KAAK,iBAAmB,EAAA,CAAA,EAAGqgB,iBAAiB,YAAA;AACnEtpB,aAAK8E,QAAS6e,SAAAA;AACb,gBAAMxgB,OAAOwgB,IAAIlQ,aAAa,UAAekQ,KAAAA,IAAIlQ,aAAa,MAE9D;AAAA,kBAAQtQ,MACP;AAAA,YAAA,KAAK;AAAA,YACL,KAAK;AACJwgB,kBAAI3e,UAAUC,IAAI,mBAAA;AAClB0e,kBAAI3e,UAAUC,IAAI,uBAAA;AAClB;AAAA,YACD,KAAK;AAAA,YACL,KAAK;AACJ0e,kBAAI3e,UAAUC,IAAI,uBAAA;AAClB;AAAA,YACD,KAAK;AAAA,YACL,KAAK;AACJ0e,kBAAI3e,UAAUC,IAAI,kBAClB0e;AAAAA,kBAAI3e,UAAUC,IAAI,uBAAA;AAClB;AAAA,YACD;AACC0e,kBAAI3e,UAAUC,IAAI,wBAAA;AAClB;AAAA;QACD,CAGFg+C;AAAAA,oBAAYhjD,WAAUgJ,KAAK,iBAAmB,EAAA,CAAA,CAAA;AAAA,MAE9C;AAAA,IACH,GAAI,EAACwD,MAAM,KAAA,CAAA;AAEV,aAASw2C,YAAYv6C,WAGpB;AAAA,UAAGzI,WAAU4B,OAAO4M,QAAO;AAC1B;AAAA,MAEA;AACD,YAAMzO,OAAO+H,MAAMsc,KAAK3b,UAAU4gB,iBAAiB,cAAA,CAAA;AAGnD,YAAMinB,QAAQ,CAAC,OAAO,QAAQ,OAAA;AAE9B,YAAM2S,cAAc3S,MAAM9tC,IAAI0gD,aAC7BnjD,KAAKojD,KAAKz/B,SAAOA,IAAIlQ,aAAa,UAAgB0vC,MAAAA,OAAAA,CAAAA,EACjDlb,OAAOtkB,SAAOA,QAAQzQ,MAAAA;AAExB,UAAImwC,WAAWrjD,KAAKkI,SAAS,IAAIlI,KAAK,CAAK,IAAA;AAE3CkjD,kBAAYI,QAAAA,EAAUx+C,QAAQ6e,SAC7Bjb;AAAAA,kBAAUkJ,aAAa+R,KAAK0/B,QAC5BA;AAAAA,mBAAW1/B;AAAAA,MAAG,CAAA;AAAA,IAEf;AAAA,EAMF;AAIA;ACzWe,SAASthB,SAAOpC,YAE/B;AAAA,MAAIsB,OAAOgiD,QAAO;KAElB,SAAWC,GAAAA;AACV,UAAIC,UAAU;AACd,UAAIC,UAAU,CAAA;AACdF,QAAEG,GAAGC,gBAAgB,SAAS/hD,QAAAA;AAC7B,YAAW,OAAA,WAAY,UAAU;AAChC,cAAI6hD,QAAQ7hD,MAAAA,GAAU;AACrB,mBAAO6hD,QAAQ7hD,MAAAA,EAAQuK,MAAM9L,MAAM;UACvC,OAAS;AACLkjD,cAAE/zC,MAAM,YAAa5N,SAAS,yCAC9B;AAAA,UAAA;AAAA,QACJ,OAAS;AACN,cAAIgN,QAAQ,CAAA;AACZvO,eAAKujD,KAAK,WACT;AAAA,gBAAIvjD,QAAQA,KAAKmT,cAAa;AAC7B,kBAAKnT,CAAAA,KAAKmT,aAAa,cAAA,GAAgB;AACtC,oBAAInG,OAAO;AACX,oBAAIm2C,SAAQ;AACXn2C,yBAAO,eAAem2C,UAAQ;AAC9BliD,yBAAO+L,IAAQw2C,IAAAA,UAAUC,qBACzB;AAAA,gBAAA;AACD,oBAAIC,OAAQziD,OAAO+L,IAEnBhN;AAAAA,qBAAK+E,aAAa,gBAAgBiI,IAClC;AAAA,yBAASoc,OAAO7nB;AACf,sBAAI6nB,OAAK;AACRs6B,yBAAKniD,OAAO6nB,GAAO7nB,IAAAA,OAAO6nB;AAE5B,oBAAKppB,CAAAA,KAAK+S,qBAAqB,KAAA,EAAOnL,QAAO;AAC5C5H,uBAAKE,YAAY;AACjBF,uBAAKoE,aAAa;AAAA,gBAClB;AACDs/C,qBAAK5iD,KAAKd,MAAM0jD,KAAKniD,OAAO6D,MAAMs+C,KAAKniD,OAAO9B,IAAAA;AAC9C,oBAAI8B,OAAOu4B;AACV4pB,uBAAKhpB,MAAMn5B,OAAOu4B,IAEnBvrB;AAAAA,sBAAMG,KAAKg1C,IAAAA;AACXP;AAAAA,cACA;AACA50C,sBAAMG,KAAKzN,OAAOjB,KAAKmT,aAAa,cACrC,CAAA,CAAA;AAAA,YAAA;AAAA,UACL,CAEG;AAAA,cAAI5E,MAAM3G,WAAW;AAAG,mBAAO2G,MAAM,CACrC;AAAA,iBAAOA;AAAAA,QACP;AAAA,MACH;AAAA,IAKC,GAAEtN,OAAOgiD,MAAAA;AAAAA,EAEV;AAEA;ACxDe,SAASlhD,SAAOpC;GAE/B,WAEC;AAAA,QAAIyG,iBAAiBzG,WAAUyG,gBAC9BxF,aAAajB,WAAUiB;AACxB,QAAI+iD,oBAAoB,MACvBC,kBAAkB;AAEnB,QAAIC,sBAAsB,SAASz+C,MAAM3F;AACxC,UAAIqkD,OAAO9jD;AACXkB,eAAO4I,aAAa85C,eAAAA;AACpB1iD,eAAO4I,aAAa65C;AAEpB,UAAII,UAAUD,KAAKxuC,OAClB0uC,UAAUF,KAAK1uC;AAChB6uC,kBAAYjkD,MAAMoF,MAAM3F,IAExBmkD;AAAAA,wBAAkB75C,WAAW,WAAA;AAE5B,YAAGpK,WAAUqK,YAAW;AACvB;AAAA,QACA;AAED,YAAA,CAAK85C,KAAKriD,UAAU,sBAAsB,CAACuiD,SAASD,SAAStkD,QAAQqkD,KAAK1uC,OAAOhQ,QAAQ0+C,KAAKxuC,KAAQ,CAAA,GAAA;AACrG2uC,sBAAYH,MAAMC,SAASC,OAC3B;AAAA;AAAA,QACA;AAEDpjD,mBAAWyZ,KAAKypC,MAAM1+C,MAAM3F,IAAAA;AAC5BqkD,aAAKriD,UAAU,gBAAgB,CAACqiD,KAAK1uC,OAAO0uC,KAAKxuC,KAEjDpU,CAAAA;AAAAA,iBAAO4I,aAAa65C,iBAAAA;AACpBC,0BAAkB;AAAA,MACrB,GAAKjkD,WAAU4B,OAAO4iC,YACtB;AAAA,IAAA;AACC,QAAI+f,kBAAkB,SAAS9+C,MAAM3F,MACpC;AAAA,UAAIqkD,OAAO9jD,MACVmkD,MAAMp4C;AAEPk4C,kBAAYjkD,MAAMoF,MAAM3F,IAExByB;AAAAA,eAAO4I,aAAa65C,iBAAAA;AACpBA,0BAAoB55C,WAAW,WAC9B;AAAA,YAAGpK,WAAUqK,YAAW;AACvB;AAAA,QACA;AAED,YAAG45C;AACF;AAEDhjD,mBAAWkL,MAAMg4C,MAAMK;MAC1B,GAAKxkD,WAAU4B,OAAO4iC,YAAAA;AAAAA,IACtB;AACC,aAAS8f,YAAYtkD,YAAWyF,MAAM3F,MACrC;AAAA,UAAG2F;AACFzF,QAAAA,WAAU2V,QAAQlQ;AACnB,UAAG3F;AACFE,QAAAA,WAAUyV,QAAQ3V;AAAAA,IAEnB;AACDE,IAAAA,WAAUgE,YAAY,oBAAoB,WACzC;AAAA,UAAGhE,WAAU4B,OAAO4iC,cAAa;AAChCxkC,QAAAA,WAAUyG,iBAAiBy9C;AAC3BlkD,QAAAA,WAAUiB,aAAasjD;AAAAA,MAC1B,OAAO;AACJvkD,QAAAA,WAAUyG,iBAAiBA;AAC3BzG,QAAAA,WAAUiB,aAAaA;AAAAA,MACvB;AAAA,IACH,CAEC;AAAA,EAAA,GAED;AAAA;AC3Ee,SAASwjD,oBAAoBzkD,YAAW0kD,IAAAA;AACtDrkD,OAAKskD,aAAa3kD;AAClBK,OAAKukD,MAAMF;AACXrkD,OAAKwkD,yBAAyB;AAE9BxkD,OAAK6T,SAAS,WACb;AAAA,QAAIwwC,MAAKrkD,KAAKukD;AACd,QAAI5kD,aAAYK,KAAKskD;AAErBtkD,SAAKwkD,uBAAuB91C,KAAK/O,WAAUgE,YAAY,gBAAgB,SAAS5D,KAC/E;AAAA,UAAA,CAAKC,KAAKga,YAAYha,KAAKykD,SAAS1kD,GACpCskD;AAAAA,QAAAA,IAAGK,WAAW3kD,KAAG,MAAK,UAAA;AAAA,IACtB,CAEDC,CAAAA;AAAAA,SAAKwkD,uBAAuB91C,KAAK/O,WAAUgE,YAAY,gCAAgC,SAAS5D,KAAAA;AAC/F,UAAKC,CAAAA,KAAKykD,SAAS1kD,GAAAA;AAAK;AACxB,UAAI4kD,IAAEN,IAAGr+C,SAASjG,GAElB;AAAA,UAAI4kD,KAAG,cAAc3kD,KAAKgW,YAAY;AAAEquC,QAAAA,IAAGK,WAAW3kD,KAAG,KAAA;AAAQ,eAAO;AAAA,MAAO;AAC/E,UAAI4kD,KAAG;AAAW,eAAO;AACzB,UAAIA,KAAG;AAAgB,eAAO;AAE9BN,MAAAA,IAAGK,WAAW3kD,KAAG,MAAK,SACtB;AAAA,aAAO;AAAA,IACP,CAEDC,CAAAA;AAAAA,SAAKwkD,uBAAuB91C,KAAK/O,WAAUgE,YAAY,kBAAkB,SAAS5D;AACjF,UAAKC,CAAAA,KAAKga,YAAYha,KAAKykD,SAAS1kD,GAAAA;AACpCskD,QAAAA,IAAGK,WAAW3kD,KAAG,MAAK,SAAA;AAAA,IACtB,CAEDC,CAAAA;AAAAA,SAAKwkD,uBAAuB91C,KAAK/O,WAAUgE,YAAY,cAAc,WAEpE0gD;AAAAA,MAAAA,IAAGO,eAAa;AAChBP,MAAAA,IAAGQ,WAAS;AACZR,MAAAA,IAAGS,cAAc,CACjBT;AAAAA,MAAAA,IAAGU,YAAY;AAAA,IACf,CAEDV,CAAAA;AAAAA,IAAAA,IAAG1gD,YAAY,kBAAkBhE,WAAUqlD,gBAC3CX;AAAAA,IAAAA,IAAG1gD,YAAY,kBAAkBhE,WAAUqlD,gBAAAA;AAC3CX,IAAAA,IAAG1gD,YAAY,kBAAkB,SAASshD,KAAKllD,KAAAA;AAC9C,UAAIJ,WAAUwV,SAASpV,GAAI,GAAA;AAC1BJ,QAAAA,WAAUulD,YAAYnlD,KAAIC,KAAKmlD,cAAc,cAAA;AAC7CxlD,QAAAA,WAAUuY,YAAYnY,GAAAA;AAAAA,MAC1B,WAAcJ,WAAUylD;AACpBzlD,QAAAA,WAAUqlD,iBAAiBC,KAAKllD,GACpC;AAAA,IAAA,CAAA;AAAA,EACA;AAECC,OAAKgtB,SAAS,WAAA;AACb,aAAS5D,OAAOppB,KAAKwkD,wBAAwB;AAC5C,UAAIt+C,UAAUlG,KAAKwkD,uBAAuBp7B;AAC1CppB,WAAKskD,WAAWj3C,YAAYnH,OAAAA;AAAAA,IAC5B;AACDlG,SAAKwkD,yBAAyB,CAAA;AAAA,EAChC;AACA;AAEO,SAASa,gBAAgB1lD,YAAW0kD,IAC1C1kD;AAAAA,EAAAA,WAAU8kD,WAAS,SAAS1kD;AAC3B,QAAGC,KAAKslD,mBAAkB;AACzB,aAAQtlD,CAAAA,KAAKslD,kBAAkBvlD,GAAAA;AAAAA,IAC/B;AACD,WAAO;AAAA,EACT;AACCJ,EAAAA,WAAUulD,cAAY,SAASnlD,KAAGiN,MAAKnG,OACtC;AAAA,QAAI9G,KAAG;AACN,UAAIuU,KAAKtU,KAAKmV,SAASpV;AACvB,UAAGuU;AAAIA,WAAGtH,IAAAA,IAAMnG;AAAAA,IACnB,OAAO;AACJ7G,WAAKozC,UAAUpmC,IAAMnG,IAAAA;AAAAA,IACrB;AAAA,EACH;AACClH,EAAAA,WAAU4lD,cAAY,SAASxlD,KAAGiN;AACjC,QAAIjN,KAAG;AACN,UAAIuU,KAAKtU,KAAKmV,SAASpV,GAAAA;AACvB,UAAGuU;AACF,eAAOA,GAAGtH,IAAAA;AAAAA;AAEV,eAAO;AAAA,IACX,OAAO;AACJ,aAAOhN,KAAKozC,UAAUpmC,IACtB;AAAA,IAAA;AAAA,EACH;AACCrN,EAAAA,WAAU6lD,wBAAsB,SAASzlD,KAAG+G,OAC3C;AAAA,QAAA,CAAInH,WAAUwV,SAASpV,GACtB;AAAA;AACDC,SAAKygB,aAAa1gB,KAAG,SAAS2gB,GAC7BA;AAAAA,QAAE5Z,MAAM6nC,WAAS,MAAI7nC;AAAAA,IACxB;AACE,QAAIwN,KAAKtU,KAAKmV,SAASpV,GACvBuU;AAAAA,OAAG,aAAexN,IAAAA;AAClB9G,SAAKqmC,cAAc/xB,EAAAA;AAAAA,EACrB;AACC3U,EAAAA,WAAUqlD,mBAAmB,SAASC,KAAIllD,KAAAA;AACzC,QAAI+5B,OAAOn6B,WAAUwzC,eAAe8R,IAAI5kD,UAExC;AAAA,QAAIy5B,KAAK2rB,YAAY;AAAQ3rB,WAAK4rB,cAAc;AAChD5rB,SAAKn4B,OAAOm4B,KAAKn4B,QAAMm4B,KAAKic;AAC5Bjc,SAAKvgB,aAAa5Z,WAAU4kC,SAASC,UAAU1K,KAAKvgB,UACpDugB;AAAAA,SAAKjgB,WAAWla,WAAU4kC,SAASC,UAAU1K,KAAKjgB,QAClDla;AAAAA,IAAAA,WAAUqM,SAAS8tB,IAAAA;AACnB,QAAIn6B,WAAUylD;AACbzlD,MAAAA,WAAUyG,eAAAA;AAAAA,EACb;AACCzG,EAAAA,WAAUgmD,sBAAsB,SAAS5lD,KAAI4mC,QAAAA;AAC5C,QAAIhnC,CAAAA,WAAUwV,SAASpV,GAAAA;AACtB;AACDJ,IAAAA,WAAU+mC,cAAc3mC,KAAI4mC,MAAAA;AAAAA,EAC9B;AACChnC,EAAAA,WAAUimD,kBAAkB,SAAS7lD,KAAI4mC,QAAAA;AACxC,SAAIhnC,WAAUwV,SAASpV,GACtB;AAAA;AAED,QAAG4mC,UAAU5mC,OAAM4mC,QAAO;AACzB,UAAG3mC,KAAKulD,YAAYxlD,KAAIskD,GAAGc,YAAAA,KAAiB;AAC3CnlD,aAAKklD,YAAYnlD,KAAIskD,GAAGc,cAAc,SAAA;AAEvCnlD,WAAK0mC,cAAc3mC,KAAI4mC,MAAAA;AAAAA,IACvB;AACD,WAAO3mC,KAAKkY,YAAYyuB,QAAQ,IAClC;AAAA,EAAA;AAEChnC,EAAAA,WAAUkmD,QAAQ;AACjB7lD,SAAK45B,MAAMyqB;AAAAA,EACb;AACC1kD,EAAAA,WAAUkmD,MAAAA;AACX;ACtHO,SAASC,cAAcC,oBAC7B/lD;AAAAA,OAAKgmD,kBAAkBD;AACvB/lD,OAAKmlD,eAAe;AAEpBnlD,OAAK8Q,SAAS;AACd9Q,OAAK8kD,cAAc,CAEnB9kD;AAAAA,OAAKimD,aAAa;AAClBjmD,OAAKkmD,aAAa;AAClBlmD,OAAKmmD,SAAS;AACdnmD,OAAKomD,WAAW;AAChBpmD,OAAKqmD,WAAW;AAChBrmD,OAAKsmD,aAAa;AAElBtmD,OAAK+kD,YAAY;AACjB/kD,OAAK4kD,eAAe;AACpB5kD,OAAK6kD,WAAW;AAChB7kD,OAAKumD,WAAW,CAAA;AAEhBvmD,OAAK2gD,SAAS,EACb6F,SAAS,qBACTC,UAAU,qBACVC,SAAS,mCACTC,SAAS,4BACTC,cAAc,gCACdz3C,OAAO,cACP7C,OAAO,2CAERtM;AAAAA,OAAK6mD,kBAAkB,IAAA;AACvBp5C,gBAAUzN,IAAAA;AAEV,SAAOA;AACR;AACA8lD,cAAcz7B,YAAY,EACzBy8B,oBAAoB,SAAUrnD,MAAMsnD,OACnC;AAAA,MAAA,OAAWtnD,QAAQ,UAAU;AAC5BO,SAAKmmD,SAAS1mD,KAAKA,QAAQO,KAAKmmD;AAEhC,QAAI1mD,KAAK66B,YAAY1nB,QAAW;AAC/B5S,WAAKomD,WAAW3mD,KAAK66B;AAAAA,IACrB;AAED,QAAI76B,KAAKgzB,YAAY7f,QAAW;AAC/B5S,WAAKqmD,WAAW5mD,KAAKgzB;AAAAA,IACrB;AACDzyB,SAAKgnD,SAAAA,CAAAA,CAAWD;AAAAA,EACnB,OAAS;AACN/mD,SAAKmmD,SAAS1mD;AACdO,SAAKgnD,SAASD;AAAAA,EACd;AAED,MAAI/mD,KAAKmmD,UAAU,QAAQ;AAC1BnmD,SAAKgnD,SAAS;AACdhnD,SAAKinD,SAAS;AAAA,EACd;AAED,MAAIjnD,KAAKmmD,WAAW,UAAUnmD,KAAKmmD,WAAW,aAAa;AAC1DnmD,SAAKgnD,SAAS;AACdhnD,SAAKinD,SAAS;AACdjnD,SAAKknD,mBAAmB;AACxBlnD,SAAKomD,WAAWpmD,KAAKomD,YAAY,CAAA;AACjCpmD,SAAKomD,SAAS,cAAA,IAAkB;AAAA,EACnC,OAAO;AACJ,QAAGpmD,KAAKomD,YAAapmD,CAAAA,KAAKomD,SAAS,cAAA,GAAgB;AAClDpmD,WAAKomD,SAAS,cAAkB,IAAA;AAAA,IAChC;AAAA,EACD;AAED,MAAIpmD,KAAKmmD,WAAW,UAAU;AAC7BnmD,SAAKgnD,SAAS;AACdhnD,SAAKinD,SAAS;AACdjnD,SAAKmnD,UAAU1nD,KAAK2nD;AAAAA,EACpB;AACD,GACDC,QAAQ,SAAUvtB;AACjB,MAAI95B,KAAKsnD;AACR,WAAOttB,mBAAmBF,IAAAA;AAAAA;AAE1B,WAAOutB,OAAOvtB;AACf,GAMD+sB,mBAAmB,SAAUpnD,MAAAA;AAC5BO,OAAKsnD,OAAAA,CAAAA,CAAS7nD;AACd,GAMD8nD,gBAAgB,SAAUl1C,KAAAA;AACzBrS,OAAKwnD,WAAAA,OAAmBn1C,OAAO,WAAYA,IAAI9N,MAAM,GAAO8N,IAAAA;AAC5D,GAMDo1C,cAAc,WACb;AAAA,SAAA,CAAQznD,KAAK8kD,YAAYl9C;AACzB,GAMD8/C,iBAAiB,SAAUjoD,MAAAA;AAC1BO,OAAKinD,SAAAA,CAAAA,CAAWxnD;AAChB,GAMDkoD,uBAAuB,SAAUloD,MAAAA;AAChCO,OAAK8mC,WAAAA,CAAAA,CAAarnC;AAClB,GAMDmoD,eAAe,SAAUnoD,MAAMk/C,KAC9B3+C;AAAAA,OAAKimD,aAAcxmD,QAAQ;AAC3BO,OAAKkmD,aAAazmD;AAClBO,OAAK2+C,MAAMA;AACX,GACD/2B,QAAQ,SAAU+V,MAAMkqB,QACvB7nD;AAAAA,OAAKqL,eAAe;AACpBsyB,OAAKtjB,KAAKwtC,UAAU5mD,MACpBjB;AAAAA,OAAKqL,eAAe;AACpB,GAQDq5C,YAAY,SAAUoD,OAAOt7B,OAAO/sB,MACnC;AAAA,MAAIO,KAAKqL;AAAc;AACvB,MAAI+pB,MAAMp1B,KAAK+nD,QAAQD,KAEvBroD;AAAAA,SAAOA,QAAQ;AACf,MAAIuoD,WAAWhoD,KAAKskD,WAAWiB,YAAYuC,OAAO9nD,KAAKmlD,YAAAA;AACvD,MAAI6C,YAAYvoD,QAAQ;AAAWA,WAAOuoD;AAC1C,MAAIx7B,OAAO;AACVxsB,SAAKioD,YAAYH,OAAO,KACxB9nD;AAAAA,SAAK8kD,YAAY1vB,GAAAA,IAAO0yB;AACxB9nD,SAAKskD,WAAWY,YAAY4C,OAAO9nD,KAAKmlD,cAAc1lD,IACtD;AAAA,QAAIO,KAAK4kD,aAAakD,KACrB9nD;AAAAA,WAAK4kD,aAAakD,KAAAA,IAAS;AAAA,EAC/B,OAAS;AACN,QAAA,CAAK9nD,KAAKkoD,WAAWJ,KAAAA,GAAQ;AAC5B9nD,WAAK8kD,YAAYj7B,OAAOuL,KAAK,CAAA;AAC7Bp1B,WAAKskD,WAAWY,YAAY4C,OAAO9nD,KAAKmlD,cAAc,EAAA;AAAA,IACtD;AAAA,EACD;AAEDnlD,OAAKmoD,QAAQL,OAAOt7B,OAAO/sB,IAAAA;AAC3B,MAAI+sB,SAASxsB,KAAKimD;AAAYjmD,SAAKooD,SAASN,KAC5C;AAAA,GAEDK,SAAS,SAAUpoD,KAAIysB,OAAO/sB;AAC7B,MAAIumB,MAAM;AACV,MAAI2gC,UAAU3mD,KAAKkoD,WAAWnoD,GAAAA;AAC9B,MAAI4mD,SAAS;AACZ3gC,UAAMhmB,KAAK2gD,OAAOgG,OAAAA;AAClBn6B,YAAQ;AAAA,EACR;AACD,MAAIxsB,KAAKyB,UAAU,aAAa,CAAC1B,KAAIysB,OAAO/sB,MAAMknD,WAAW;AAE5D3gC,UAAMhmB,KAAK2gD,OAAOn0B,QAAQ/sB,OAAO,OAAWumB,IAAAA;AAE5ChmB,SAAKskD,WAAWtkD,KAAKqoD,SAAS,CAAA,CAAA,EAAItoD,KAAIimB,GAAAA;AAEtC,QAAI2gC,WAAWA,QAAQpuC,SAAS;AAC/ByN,aAAOhmB,KAAK2gD,OAAOgG,UAAU,OAC7B;AAAA,eAASh/C,IAAI,GAAGA,IAAIg/C,QAAQpuC,QAAQ3Q,QAAQD;AAC3C,YAAIg/C,QAAQpuC,QAAQ5Q,CACnB3H;AAAAA,eAAKskD,WAAWtkD,KAAKqoD,SAAS,CAAA,CAAA,EAAItoD,KAAI4H,GAAGqe,GAAAA;AAAAA,IAC3C;AAAA,EACD;AACD,GACDsiC,kBAAkB,SAAS97B,OAAAA;AAC1B,MAAIA,UAAU,YAAY;AACzB,WAAO;AAAA,EACP;AACD,MAAIA,UAAU,WAAW;AACxB,WAAO;AAAA,EACP;AACD,MAAIA,UAAU,WAAW;AACxB,WAAO;AAAA,EACP;AACD,SAAO;AACP,GAEDxmB,UAAU,SAAUjG,KAAAA;AACnB,SAAOC,KAAKskD,WAAWiB,YAAYxlD,KAAIC,KAAKmlD,YAAAA;AAC5C,GACD+C,YAAY,SAAUnoD,KACrB;AAAA,SAAOC,KAAK6kD,SAAS9kD,GACrB;AAAA,GACDkoD,aAAa,SAAUloD,KAAIN,MAAM8Y,SAAAA;AAChC,MAAIA;AAAS9Y,WAAO,EACnBoH,OAAOpH,MAAM8Y,SAAkBwa,UAAU,WAAA;AACxC,aAAO/yB,KAAK6G,MAAMksB,SAAAA;AAAAA,IAClB;AAEF/yB,OAAK6kD,SAAS9kD,GAAMN,IAAAA;AACpB,GAMD8oD,mBAAmB,SAAUT,OAAAA;AAC5B,SAAO;AACP,GAMDM,UAAU,SAAUN,OACnB;AAAA,MAAI9nD,KAAKskD,WAAWvvC;AAAU/U,SAAKskD,WAAWvvC,SAE9C;AAAA,MAAA,OAAW+yC,SAAS,eAAe9nD,KAAKgnD;AAAQ,WAAOhnD,KAAKwoD,YAAAA;AAC5D,MAAIxoD,KAAK4kD,aAAakD,KAAAA;AAAQ,WAAO;AAErC9nD,OAAKumD,WAAW,CAAA;AAChB,MAAKvmD,CAAAA,KAAKuoD,kBAAkBT,KAAAA,KAAU9nD,KAAKyB,UAAU,qBAAqB,CAACqmD,OAAO9nD,KAAKumD,QAAAA,CAAAA;AAAY,WAAO;AAC1GvmD,OAAKyoD,gBAAgBzoD,KAAK0oD,YAAYZ,KAAAA,GAAQA,KAC9C;AAAA,GACDW,iBAAiB,SAAU3uB,MAAMguB,OAAAA;AAChC,MAAK9nD,CAAAA,KAAKyB,UAAU,kBAAkB,CAACqmD,OAAO9nD,KAAKgG,SAAS8hD,QAAQhuB,IAAQ,CAAA;AAAA,WAAO;AACnF95B,OAAK2oD,UAAU7uB,MAAMguB,KACrB;AAAA,GACDvtB,WAAW,SAAUT,MAAM/5B,KAC1B;AAAA,MAAIC,KAAKknD,kBAAkB;AAC1B,WAAQlnD,KAAK4oD,iBAAiB9uB,IAAAA;AAAAA,EAC9B;AAED,MAAA,OAAWA,QAAQ;AAClB,WAAOA;AACR,MAAW/5B,OAAAA,OAAM;AAChB,WAAOC,KAAK6oD,cAAc/uB,MAAM,EAAA;AAAA,OAC5B;AACJ,QAAI2N,QAAQ,CACZ;AAAA,QAAI/2B,OAAO,CAAA;AACX,aAAS0Y,OAAO0Q;AACf,UAAIA,KAAKxP,eAAelB,GAAM,GAAA;AAC7Bqe,cAAM/4B,KAAK1O,KAAK6oD,cAAc/uB,KAAK1Q,GAAMA,GAAAA,MAAMppB,KAAKsmD,UAAAA,CAAAA;AACpD51C,aAAKhC,KAAK0a,GACV;AAAA,MAAA;AACFqe,UAAM/4B,KAAK,SAAS1O,KAAKqnD,OAAO32C,KAAKjN,KAAK,GAC1C,CAAA,CAAA;AAAA,QAAIzD,KAAKskD,WAAW1R;AACnBnL,YAAM/4B,KAAK,kBAAmB1O,KAAKskD,WAAuB,YAAA;AAC3D,WAAO7c,MAAMhkC,KAAK,GAAA;AAAA,EAClB;AACD,GACDolD,eAAe,SAAU/uB,MAAMgvB,MAC9B;AAAA,MAAA,OAAWhvB,QAAQ;AAClB,WAAOA;AACR,MAAI2N,QAAQ,CAAA;AACZ,MAAI1N,aAAa;AACjB,WAAS3Q,OAAO0Q;AACf,QAAIA,KAAKxP,eAAelB,GAAAA,GAAM;AAC7B,WAAKA,OAAO,QAAQA,OAAOppB,KAAKmlD,iBAAiBnlD,KAAKmmD,UAAU;AAAQ;AACxE,UAAWrsB,OAAAA,KAAK1Q,SAAS,YAAmB0Q,OAAAA,KAAK1Q,GAAS,MAAA,UAAU;AACnE2Q,qBAAaD,KAAK1Q,GAAAA;AAAAA,MACvB,OAAW;AACN2Q,qBAAa1qB,KAAKC,UAAUwqB,KAAK1Q,GACjC,CAAA;AAAA,MAAA;AACDqe,YAAM/4B,KAAK1O,KAAKqnD,QAAQyB,QAAQ,MAAM1/B,GAAAA,IAAO,MAAMppB,KAAKqnD,OAAOttB,UAC/D,CAAA;AAAA,IAAA;AACF,SAAO0N,MAAMhkC,KAAK,GAAA;AAClB,GACDslD,eAAe,SAAU3uB,MACxB;AAAA,MAAII,OAAOx6B,KAAKskD,WAAW9pB;AAC3B,MAAIx6B,KAAKqmD;AACR,aAASj9B,OAAOppB,KAAKqmD;AACpBjsB,MAAAA,OAAMA,OAAMI,KAAK6C,aAAajD,IAAAA,IAAOp6B,KAAKqnD,OAAOj+B,GAAO,IAAA,MAAMppB,KAAKqnD,OAAOrnD,KAAKqmD,SAASj9B,GAAAA,CAAAA;AAC1F,SAAOgR;AACP,GACDuuB,WAAW,SAAUK,YAAYlB;AAChC,MAAKkB,CAAAA,YAAY;AAChB;AAAA,EACA;AACD,MAAA,CAAKhpD,KAAKyB,UAAU,uBAAuBqmD,QAAQ,CAACA,OAAO9nD,KAAKgG,SAAS8hD,KAAQkB,GAAAA,UAAAA,IAAc,CAAC,MAAM,MAAMA,UAAc,CAAA,GAAA;AACzH,WAAO;AAAA,EACP;AAED,MAAIlB,OAAO;AACV9nD,SAAK4kD,aAAakD,KAAAA,KAAS,oBAAKzyC,QAAQ6B,QACxC;AAAA,EAAA;AAED,MAAI4sC,OAAO9jD;AACX,MAAIw6B,OAAOx6B,KAAKskD,WAAW9pB;AAE3B,MAAIx6B,KAAKmmD,WAAW,UAAU;AAC7B,QAAI35B,QAAQxsB,KAAKgG,SAAS8hD,KAAAA;AAC1B,QAAIjM,SAAS77C,KAAKsoD,iBAAiB97B,KAAAA;AACnC,QAAIy8B,0BAA0B,SAAUpJ,KAAAA;AACvC,UAAIqJ,cAAc18B;AAClB,UAAGqzB,OAAOA,IAAI57C,gBAAgB47C,IAAI3iB,kBAAiB;AAClD,YAAG2iB,IAAI3kB,WAAW,KAAI;AACrBguB,wBAAc;AAAA,QACd;AACD,YACCrJ;AAAAA,gBAAMxwC,KAAKqrB,MAAMmlB,IAAI57C,YAAAA;AAAAA,QAC3B,SAAc6P;QAAI;AAAA,MACb;AAEDo1C,oBAAcA,eAAe;AAC7B,UAAIC,MAAMrB;AACV,UAAIsB,MAAMtB;AAEV,UAAIjI,KAAK;AACRqJ,sBAAcrJ,IAAIhE,UAAUqN;AAC5BC,cAAMtJ,IAAIsJ,OAAOA;AACjBC,cAAMvJ,IAAI9/C,MAAM8/C,IAAIuJ,OAAOA;AAAAA,MAC3B;AACDtF,WAAKuF,oBAAoBF,KAAKC,KAAKF,aAAarJ;IACpD;AAEG,UAAMyJ,aAAa;AACnB,QAAIC;AACJ,QAAIvpD,KAAKmnD,mBAAmBr0B,UAAU;AACrCy2B,sBAAgBvpD,KAAKmnD,QAAQmC,YAAYzN,QAAQmN,YAAYlB;IACjE,OAAU;AACN,cAAQt7B,OAAAA;AAAAA,QACP,KAAK;AACJ+8B,0BAAgBvpD,KAAKmnD,QAAQmC,UAAAA,EAAYp/B,OAAO8+B,UAAAA;AAChD;AAAA,QACD,KAAK;AACJO,0BAAgBvpD,KAAKmnD,QAAQmC,UAAAA,EAAYzxC,OAAOiwC,KAAAA;AAChD;AAAA,QACD;AACCyB,0BAAgBvpD,KAAKmnD,QAAQmC,UAAYE,EAAAA,OAAOR,YAAYlB,KAAAA;AAC5D;AAAA,MAEF;AAAA,IAAA;AAED,QAAGyB,eAAc;AAEhB,UAAIA,CAAAA,cAAcE,SAChBF,cAAcxpD,OAAO6S,UAAa22C,cAAcH,QAAQx2C,UAAa22C,cAAc1N,WAAWjpC,SAAW;AAC1G,cAAM,IAAIzP,MAAM,2EAAA;AAAA,MAChB;AAED,UAAGomD,cAAcE,MAAK;AACrBF,sBAAcE,KAAKR,uBAAyBS,EAAAA,MAAM,SAASv6C,OAC1D;AAAA,cAAGA,SAASA,MAAM0sC,QAAO;AACxBoN,oCAAwB95C,KAAAA;AAAAA,UAC/B,OAAW;AACJ85C,oCAAwB,EAAEpN,QAAQ,SAASh1C,OAAOsI,MAClD,CAAA;AAAA,UAAA;AAAA,QACP,CACA;AAAA,MAAA,OAAS;AAEJ85C,gCAAwBM,aACxB;AAAA,MAAA;AAAA,IACL,OAAQ;AACJN,8BAAwB,IACxB;AAAA,IAAA;AACD;AAAA,EACA;AAED,MAAIU,cAAc,EACjB58C,UAAU,SAASouB,KAClB;AAAA,QAAIyuB,MAAM,CAAA;AAEV,QAAI9B,OAAO;AACV8B,UAAIl7C,KAAKo5C,KACT;AAAA,IAAA,WAAUkB,YAAY;AACtB,eAAS5/B,QAAO4/B,YAAY;AAC3BY,YAAIl7C,KAAK0a,IAAAA;AAAAA,MACT;AAAA,IACD;AAED,WAAO06B,KAAK+F,YAAY/F,MAAM3oB,KAAKyuB,GACnC;AAAA,EAAA,GACDtvB,SAASwpB,KAAKsC,SAGf;AAAA,MAAI0D,YAAY9pD,KAAKgmD,mBAAmBhmD,KAAK+pD,QAASvvB,KAAK6C,aAAar9B,KAAKgmD,eAAAA,IAAmB,CAAC,cAAchmD,KAAK+pD,OAAO,iBAAiB/pD,KAAKskD,WAAWiB,YAAY,GAAG,SAAY9hD,CAAAA,EAAAA,KAAK,GAAQ,IAAA;AACpM,MAAI22B,OAAMp6B,KAAK+oD,cAAce;AAC7B,MAAIhwB;AAEJ,UAAQ95B,KAAKmmD,QACZ;AAAA,IAAA,KAAK;AACJrsB,aAAO95B,KAAKgqD,4BAA4BhB,UAAAA;AACxCW,kBAAYvvB,MAAMA,OAAMI,KAAK6C,aAAajD,IAAAA,IAAOp6B,KAAKu6B,UAAUT,MAAMguB,KACtE6B;AAAAA,kBAAYxvB,SAAS;AACrB;AAAA,IACD,KAAK;AACJL,aAAO95B,KAAKgqD,4BAA4BhB,UAAAA;AACxCW,kBAAYvvB,MAAMA;AAClBuvB,kBAAYxvB,SAAS;AACrBwvB,kBAAY7vB,OAAO95B,KAAKu6B,UAAUT,MAAMguB,KACxC;AAAA;AAAA,IACD,KAAK;AACJhuB,aAAO,CAAA;AACP,UAAImwB,mBAAmBjqD,KAAKkqD,uBAAuBlB;AACnD,eAAS5/B,OAAO6gC,kBAAkB;AACjC,YAAI7gC,QAAQppB,KAAKmlD,gBAAgB/7B,QAAQ,QAAQA,QAAQ,SAAS;AACjE;AAAA,QACA;AACD0Q,aAAK1Q,GAAO6gC,IAAAA,iBAAiB7gC,GAC7B;AAAA,MAAA;AAEDugC,kBAAYvvB,MAAMA;AAClBuvB,kBAAYxvB,SAAS;AACrBwvB,kBAAY7vB,OAAOzqB,KAAKC,UAAU,EACjCvP,IAAI+nD,OACJjM,QAAQmN,WAAWhpD,KAAKmlD,YACxBrrB,GAAAA,KAED,CAAA;AAAA;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJM,MAAAA,OAAM0vB,UAAU7yC,QAAQ,sBAAsB,EAC9C6iB;AAAAA,aAAO;AAEP,cAAQ95B,KAAKgG,SAAS8hD,KAAAA,GAAAA;AAAAA,QACrB,KAAK;AACJ6B,sBAAYxvB,SAAS;AACrBwvB,sBAAY7vB,OAAO95B,KAAKu6B,UAAUyuB,YAAYlB,KAAAA;AAC9C;AAAA,QACD,KAAK;AACJ6B,sBAAYxvB,SAAS;AACrBC,UAAAA,OAAMA,QAAOA,KAAIlN,MAAO,EAAA,MAAO,MAAM,KAAK,OAAO46B;AACjD;AAAA,QACD;AACC6B,sBAAYxvB,SAAS;AACrBwvB,sBAAY7vB,OAAO95B,KAAKu6B,UAAUyuB,YAAYlB,KAAAA;AAC9C1tB,UAAAA,OAAMA,QAAOA,KAAIlN,MAAO,EAAA,MAAO,MAAM,KAAK,OAAO46B;AACjD;AAAA,MAEF6B;AAAAA,kBAAYvvB,MAAMp6B,KAAK+oD,cAAc3uB,IACrC;AAAA;AAAA,EAAA;AAGFp6B,OAAK+kD;AACL,SAAOvqB,KAAKwB,MAAM2tB,WAClB;AAAA,GACDnB,aAAa,WAAA;AACZ,MAAKxoD,CAAAA,KAAK8kD,YAAYl9C,UAAU5H,KAAKkmD,eAAe,OAAO;AAC1D;AAAA,EACA;AAEDlmD,OAAKumD,WAAW,CAAA;AAChB,MAAI4D,QAAQ;AAEZnqD,OAAKoqD,mBAAmB,SAAStC,OAAAA;AAChCqC,YAAQA,SAASnqD,KAAKuoD,kBAAkBT,KAAAA;AAAAA,EAC3C,CAEE;AAAA,MAAA,CAAKqC,SAAUnqD,CAAAA,KAAKyB,UAAU,qBAAqB,CAAC,IAAIzB,KAAKumD,QAAAA,CAAAA,GAAY;AACxE,WAAO;AAAA,EACP;AAED,MAAIvmD,KAAKgnD,QAAQ;AAChBhnD,SAAK2oD,UAAU3oD,KAAKqqD,YACvB,CAAA;AAAA,EAAA,OAAS;AACNrqD,SAAKoqD,mBAAmB,SAAStC,OAAAA;AAChC,UAAK9nD,CAAAA,KAAK4kD,aAAakD,KAAAA,GAAQ;AAC9B,YAAI9nD,KAAKkoD,WAAWJ,KAAAA,GAAQ;AAC3B;AAAA,QACA;AACD9nD,aAAKyoD,gBAAgBzoD,KAAK0oD,YAAYZ,KAAAA,GAAQA,KAC9C;AAAA,MAAA;AAAA,IACL,CACG;AAAA,EAAA;AACD,GAEDuC,aAAa,SAAUvC,OACtB;AAAA,MAAInb,MAAM,CAAA;AACV,MAAI2d,UAAU;AACdtqD,OAAKoqD,mBAAmB,SAASrqD,KAChC;AAAA,QAAIC,KAAK4kD,aAAa7kD,QAAOC,KAAKkoD,WAAWnoD,GAAI,GAAA;AAChD;AAAA,IACA;AACD,QAAI+E,MAAM9E,KAAK0oD,YAAY3oD,GAC3B;AAAA,QAAA,CAAKC,KAAKyB,UAAU,kBAAkB,CAAC1B,KAAIC,KAAKgG,SAASjG,GAAK+E,GAAAA,GAAAA,CAAAA,GAAO;AACpE;AAAA,IACA;AACD6nC,QAAI5sC,OAAM+E;AACVwlD,cAAU;AACVtqD,SAAK4kD,aAAa7kD,GAAAA,KAAM,oBAAKsV,QAAQ6B;EACxC,CACE;AAAA,SAAOozC,UAAU3d,MAAM;AACvB,GAEDob,SAAS,SAAUwC;AAClB,MAAI5iD,IAAI;AACR,OAAKA,IAAI,GAAGA,IAAI3H,KAAK8kD,YAAYl9C,QAAQD;AACxC,QAAI4iD,WAAWvqD,KAAK8kD,YAAYn9C,CAAI;AAAA;AACrC,SAAOA;AACP,GAQD6iD,cAAc,SAAUx9C,MAAM9G,SAAAA;AAC7B,MAAKlG,CAAAA,KAAKyqD;AAAWzqD,SAAKyqD,YAAY,CAAA;AACtCzqD,OAAKyqD,UAAUz9C,IAAQ9G,IAAAA;AACvB,GAUDmjD,qBAAqB,SAAUF,KAAKC,KAAKvN,QAAQ6O,MAChD;AAAA,MAAA,CAAI1qD,KAAKskD,YAAW;AAEnB;AAAA,EACA;AAED,MAAIqG,UAASxB;AACb,MAAIyB,UAAW/O,WAAW,WAAWA,WAAW;AAChD,MAAK+O,CAAAA,SAAS;AACb5qD,SAAKioD,YAAYkB,KAAKtN,MAAAA;AAAAA,EACtB;AACD,MAAK77C,KAAc,aAAMA,KAAKyqD,UAAU5O,MAAc77C,KAAAA,CAAAA,KAAKyqD,UAAU5O,MAAAA,EAAQ6O,IAAQ,GAAA;AACpF,WAAe1qD,OAAAA,KAAK4kD,aAAa+F,OACjC;AAAA,EAAA;AAED,MAAI3qD,KAAK4kD,aAAa+F,OAAAA,MAAY,QAAQ;AACzC3qD,SAAK0kD,WAAWyE,KAAK,KACrB;AAAA,EAAA;AAED,MAAI0B,cAAc1B;AAElB,UAAQtN;IACP,KAAK;AAAA,IACL,KAAK;AACJ,UAAIuN,OAAOD,KAAK;AACfnpD,aAAK0kD,WAAWyE,KAAK,KAAA;AACrBnpD,aAAKskD,WAAWtkD,KAAKqoD,SAAS,IAAIc,KAAKC,GAAAA;AACvCD,cAAMC;AAAAA,MACN;AACD;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJppD,WAAKskD,WAAWY,YAAYiE,KAAKnpD,KAAKmlD,cAAc,cAAA;AACpDnlD,WAAKskD,WAAWtkD,KAAKqoD,SAAS,CAAA,CAAA,EAAIc,KAAKC,GAAAA;AAAAA,aAChCppD,KAAK4kD,aAAa+F;AACzB,aAAO3qD,KAAKyB,UAAU,iBAAiB,CAAC0nD,KAAKtN,QAAQuN,KAAKsB;;AAG5D,MAAI1qD,KAAK4kD,aAAa+F,OAAAA,MAAY,QAAQ;AACzC,QAAIC,SAAS;AACZ5qD,WAAKskD,WAAWY,YAAYiE,KAAKnpD,KAAKmlD,cAAc,EACpD;AAAA,IAAA;AAAA,WACMnlD,KAAK4kD,aAAa+F,OAAAA;AAAAA,EAC5B,OAAS;AAAA,WACC3qD,KAAK4kD,aAAa+F,OACzB3qD;AAAAA,SAAK0kD,WAAW0E,KAAK,MAAMppD,KAAKskD,WAAWiB,YAAY4D,KAAKnpD,KAAKmlD;EACjE;AAEDnlD,OAAKyB,UAAU,iBAAiB,CAACopD,aAAahP,QAAQuN,KAAKsB;AAC3D,GAEDI,gBAAgB,SAAU3vB,KAAKp7B,KAC9B;AAAA,MAAGC,KAAKskD,cAActkD,KAAKskD,WAAW7iD,WAAU;AAC/CzB,SAAKskD,WAAW7iD,UAAU,eAAe,CAAC1B,KAAIo7B,IAAI4B,MAClD,CAAA;AAAA,EAAA;AACD,SAAO/8B,KAAK+qD,YAAYhrD,GAAAA;AACxB,GAEDirD,4BAA4B,WAAA;AAC3B,MAAIhrD,KAAKgmD,iBAAiB;AACzBhmD,SAAK8mD,mBAAmB,QAAQ,IAChC9mD;AAAAA,SAAKgmD,oBAAoBhmD,KAAKgmD,gBAAgBjvC,QAAQ,GAAU,MAAA,KAAI,MAAM,OAAO;AACjF/W,SAAKirD,mBAAmBjrD,KAAKgmD;AAAAA,EAC7B;AACD,GAOD6D,aAAa,SAAUqB,MAAM/vB,KAAKp7B,KACjC;AAAA,MAAIy6B,OAAOx6B,KAAKskD,WAAW9pB;AAE3B,MAAIW,IAAI4B,OAAO7B,WAAW,KAAI;AAC7Bl7B,SAAK8qD,eAAe3vB,KAAKp7B,GAAAA;AACzB;AAAA,EACA;AAGD,MAAI8/C;AACJ,MACCA;AAAAA,UAAMxwC,KAAKqrB,MAAMS,IAAI4B,OAAO94B,YAAAA;AAAAA,EAC5B,SAAQ6P,GAER;AAAA,QAAA,CAAKqnB,IAAI4B,OAAO94B,aAAa2D,QAAQ;AACpCi4C,YAAM,CAAA;AAAA,IACN;AAAA,EACD;AAED,MAAIA,KAAK;AACR,QAAIhE,SAASgE,IAAIhE,UAAU77C,KAAKgG,SAASjG,GAAO,KAAA;AAChD,QAAIopD,MAAMtJ,IAAIsJ,OAAOppD,IAAG,CAAA;AACxB,QAAIqpD,MAAMvJ,IAAIuJ,OAAOrpD,IAAG,CACxBmrD;AAAAA,SAAK7B,oBAAoBF,KAAKC,KAAKvN,QAAQgE,GAC3CqL;AAAAA,SAAKC,eACL;AAAA;AAAA,EACA;AAGD,MAAIt4C,MAAM2nB,KAAKO,OAAO,QAAQI,IAAI4B,MAClC;AAAA,MAAA,CAAKlqB,KAAK;AACT,WAAO7S,KAAK8qD,eAAe3vB,KAAKp7B,GAAAA;AAAAA,EAChC;AACD,MAAIqrD,OAAO5wB,KAAKa,MAAM,iBAAiBxoB,GAAAA;AACvC,MAAKu4C,CAAAA,KAAKxjD,QAAQ;AACjB,WAAO5H,KAAK8qD,eAAe3vB,KAAKp7B,GAChC;AAAA,EAAA;AAED,WAAS4H,IAAI,GAAGA,IAAIyjD,KAAKxjD,QAAQD,KAAK;AACrC,QAAI+iD,OAAOU,KAAKzjD,CAAAA;AAChB,QAAIk0C,SAAS6O,KAAKv3C,aAAa,MAAA;AAC/B,QAAIg2C,MAAMuB,KAAKv3C,aAAa;AAC5B,QAAIi2C,MAAMsB,KAAKv3C,aAAa,KAE5B+3C;AAAAA,SAAK7B,oBAAoBF,KAAKC,KAAKvN,QAAQ6O,IAC3C;AAAA,EAAA;AACDQ,OAAKC,eAAAA;AACL,GACDJ,aAAa,SAAUhrD,KACtB;AAAA,MAAIA;AACH,aAAS4H,IAAI,GAAGA,IAAI5H,IAAG6H,QAAQD;AAAAA,aACvB3H,KAAK4kD,aAAa7kD,IAAG4H,CAAAA,CAAAA;AAC9B,GACDwjD,gBAAgB;AACf,MAAInrD,KAAK+kD;AAAW/kD,SAAK+kD;AAEzB/kD,OAAKyB,UAAU,uBAAuB;AACtC,MAAKzB,CAAAA,KAAK8kD,YAAYl9C;AACrB5H,SAAKyB,UAAU,cAAc,CAAA,CAAA;AAC9B,GAODX,MAAM,SAAUnB,YACf;AAAA,MAAIK,KAAKqrD,cAAc;AACtB;AAAA,EACA;AACDrrD,OAAKskD,aAAa3kD;AAClB,MAAIK,KAAKskD,WAAWgH,UAAU;AAC7BtrD,SAAKskD,WAAWgH,SAAStrD,IACzB;AAAA,EAAA;AAEDA,OAAKgrD,2BAAAA;AAELhrD,OAAKqoD,WAASroD,KAAKqoD,YAAU,CAAC,yBAAwB,IAAG,uBAAsB,iBAC/EhD;AAAAA,kBAAgBrlD,KAAKskD,YAAYtkD,IAAAA;AACjC,MAAIurD,sBAAsB,IAAInH,oBAAoBpkD,KAAKskD,YAAYtkD;AACnEurD,sBAAoB13C,OAAAA;AACpB7T,OAAK2D,YAAY,aAAa,WAAA;AAAA,WACtB3D,KAAK0oD;AAAAA,WAEL1oD,KAAKskD,WAAW1qB;AAAAA,WAChB55B,KAAKskD,WAAWkH;AAChBxrD,WAAAA,KAAKskD,WAAWkB;AAAAA,WAChBxlD,KAAKskD,WAAWqB;AAChB3lD,WAAAA,KAAKskD,WAAWsB;AAAAA,WAChB5lD,KAAKskD;AACZiH,wBAAoBv+B,OACvB;AAAA,EAAA,CAAA;AACEhtB,OAAKskD,WAAW7iD,UAAU,wBAAwB,CAACzB,IAAAA,CAAAA;AACnDA,OAAKqrD,eAAe;AAEpB1rD,EAAAA,WAAU6rD,iBAAexrD;AACzB,GAEDyrD,kBAAkB,SAAUn3C;AAC3BtU,OAAK2D,YAAY,iBAAiB2Q,EAAAA;AAClC,GACDo3C,0BAA0B,SAAUr+B,MAAAA;AACnCrtB,OAAK2D,YAAY,uBAAuB0pB,IAAAA;AACxC,GAKDs+B,eAAe,SAAUC,UAAUC;AAClCD,aAAWA,YAAY;AAEvB5rD,OAAK+pD,QAAQ8B,SAAQ,oBAAKx2C,QAAQ6B;AAClClX,OAAK8rD,eAAe;AAEpB9rD,OAAK+rD,eAAe;AAEpB/rD,OAAK2D,YAAY,iBAAiB,SAAUwlD,KAAKtN,QAAQuN,KAAK4C,UAC7DhsD;AAAAA,SAAKisD,gBAAgB9C,KAAKtN,QAAQuN,KAAK4C,QAAAA;AAAAA,EAC1C,CACEhsD;AAAAA,OAAK2D,YAAY,cAAc,WAC9B3D;AAAAA,SAAKksD;EACR,CAEE;AAAA,MAAIpI,OAAO9jD;AACXkB,WAAOirD,YAAY,WAClBrI;AAAAA,SAAKsI;EACL,GAAER,QAAAA;AACH,GAMDK,iBAAiB,SAAU9C,KAAKtN,QAAQuN,KAAK4C;AAC5C,MAAInQ,UAAU,aAAa;AAC1B77C,SAAK8rD,eAAe;AACpB,WAAO;AAAA,EACV,OAAS;AACN,WAAO;AAAA,EACP;AACD,GAKDI,UAAU;AACT,MAAIlsD,KAAK8rD,cAAc;AACtB9rD,SAAK8rD,eAAe;AACpB9rD,SAAKosD;EACL;AACD,SAAO;AACP,GAIDC,YAAY,SAAUjyB,MAAKrtB,UAAAA;AAC1B,MAAIytB,OAAOx6B,KAAKskD,WAAW9pB;AAC3B,MAAIx6B,KAAK+rD;AACR,WAAO;AAAA;AAEP/rD,SAAK+rD,eAAe;AAErBvxB,OAAK0B,IAAI9B,MAAKrtB,QAAAA;AACd,GAMDu/C,kBAAkB,SAASr6C,MAC1B;AAAA,MAAIA,KAAK5R,YAAY;AACpB,WAAO4R,KAAK5R,WAAW2yC;AAAAA,EACvB;AACD,SAAO;AACP,GAIDoZ,YAAY,WAAA;AACX,MAAItI,OAAO9jD;AACX,MAAIw6B,OAAOx6B,KAAKskD,WAAW9pB;AAC3B,MAAI+xB,UAAUvsD,KAAKskD,WAAWiB,YAAY,GAAG,SAAA;AAC7C,MAAInrB,OAAMp6B,KAAKgmD,kBAAkBxrB,KAAK6C,aAAar9B,KAAKgmD,eAAmB,IAAA,CAAC,cAAchmD,KAAK+pD,OAAO,iBAAiBwC,OAAAA,EAAS9oD,KAAK,GAAA;AACrI22B,EAAAA,OAAMA,KAAInjB,QAAQ,iBAAiB;AACnCjX,OAAKqsD,WAAWjyB,MAAK,SAAUe,KAC9B;AAAA,QAAIqxB,OAAOhyB,KAAKa,MAAM,cAAcF,GAAAA;AACpC2oB,SAAKQ,WAAWY,YAAY,GAAG,WAAWpB,KAAKwI,iBAAiBE,KAAK,CAAA,CAAA,CAAA;AAErE,QAAIC,UAAUjyB,KAAKa,MAAM,YAAYF,GAAAA;AACrC,QAAIsxB,QAAQ7kD,QAAQ;AACnBk8C,WAAKz4C,eAAe;AAEpB,eAAS1D,IAAI,GAAGA,IAAI8kD,QAAQ7kD,QAAQD,KAAK;AACxC,YAAIuzB,SAASuxB,QAAQ9kD,CAAAA,EAAGwL,aAAa,QAAA;AACrC,YAAIpT,MAAK0sD,QAAQ9kD,CAAAA,EAAGwL,aAAa,IACjC;AAAA,YAAImlB,SAASm0B,QAAQ9kD,CAAGwL,EAAAA,aAAa,QACrC;AAAA,gBAAQ+nB;UACP,KAAK;AACJl7B,iBAAKyB,UAAU,kBAAkB,CAACgrD,QAAQ9kD,CAAAA,GAAI5H,KAAIu4B,MAClD,CAAA;AAAA;AAAA,UACD,KAAK;AACJt4B,iBAAKyB,UAAU,kBAAkB,CAACgrD,QAAQ9kD,CAAI5H,GAAAA,KAAIu4B,MAClD,CAAA;AAAA;AAAA,UACD,KAAK;AACJt4B,iBAAKyB,UAAU,kBAAkB,CAACgrD,QAAQ9kD,CAAI5H,GAAAA,KAAIu4B,MAClD,CAAA;AAAA;AAAA,QAAA;AAAA,MAEF;AACDwrB,WAAKz4C,eAAe;AAAA,IACpB;AACDy4C,SAAKiI,eAAe;AACpBjI,WAAO;AAAA,EACV,CAAA;AACE,GAEDjjD,YAAY,WAAA;AACXb,OAAKyB,UAAU,aAAa,CAAA,CAAA;AAC5BzB,OAAKwN,gBAAAA;AAELxN,OAAK8kD,cAAc,CACnB9kD;AAAAA,OAAK4kD,eAAe;AACpB5kD,OAAK6kD,WAAW;AAChB7kD,OAAKomD,WAAW;AAChBpmD,OAAKqmD,WAAW;AAAA,SACTrmD,KAAKqrD;AACZ,GAEDjxB,KAAK,SAASA,MACbp6B;AAAAA,OAAKgmD,kBAAkBhmD,KAAKirD,mBAAmB7wB;AAC/C,GAEDwuB,kBAAkB,SAAS9uB,MAC1B;AAAA,MAAA,OAAWA,SAAS,UAAU;AAC7B,WAAOA;AAAAA,EACP;AAED,MAAIhG,QAAO9zB,KAAKskD,WAAW5wB,MAAMI,KAAKgG,IACtC;AAAA,MAAI95B,KAAKmmD,WAAW,aAAa;AAAA,WACzBryB,MAAK/zB;AAAAA,WACL+zB,MAAK9zB,KAAKmlD,YAAAA;AAAAA,EACjB;AAED,SAAO91C,KAAKC,UAAUwkB,KACtB;AAAA,GAIDk2B,6BAA6B,SAAShB,YAAAA;AACrC,MAAI0D;AACJ,MAAG1D,WAAWhpD,KAAKmlD,YAAAA,MAAkBvyC,QAAU;AAC9C85C,oBAAgB,CAAA;AAChB,aAAQ/kD,KAAKqhD,YAAY;AACxB0D,oBAAc/kD,CAAK3H,IAAAA,KAAKgqD,4BAA4BhB,WAAWrhD,CAC/D,CAAA;AAAA,IAAA;AAAA,EACJ,OAAS;AACN+kD,oBAAgB1sD,KAAKkqD,uBAAuBlB,UAC5C;AAAA,EAAA;AACD,SAAO0D;AACP,GACDxC,wBAAwB,SAASyC,aAChC;AAAA,MAAIC,SAAS;AACb,MAAGD,aAAY;AACd,QAAGA,YAAY3sD,KAAKmlD,YAAkB,MAAA,WAAU;AAC/CyH,eAAS,CAAA;AACTA,aAAO7sD,KAAK4sD,YAAY5sD;AACxB6sD,aAAO5sD,KAAKmlD,YAAAA,IAAgBwH,YAAY3sD,KAAKmlD,YAAAA;AAAAA,IACjD,OAAQ;AACJyH,eAASD;AAAAA,IACT;AAAA,EACD;AACD,SAAOC;AACP,GAEDxC,oBAAoB,SAASzsB,MAC5B;AAAA,MAAImnB,cAAc9kD,KAAK8kD,YAAY53B,MAAAA;AACnC,WAASvlB,IAAI,GAAGA,IAAIm9C,YAAYl9C,QAAQD,KAAK;AAC5C,QAAImgD,QAAQhD,YAAYn9C,CAAAA;AACxB,QAAI3H,KAAKskD,WAAWiB,YAAYuC,OAAO9nD,KAAKmlD,YAAAA,GAAe;AAC1DxnB,WAAKtjB,KAAKra,MAAM8nD;IAChB;AAAA,EACD;AACD,GAED+E,kBAAkB,SAASC,MAAAA;AAC1B,MAAIC,gBAAgB,CAAA;AACpB,MAAIptD,aAAYK,KAAKskD;AACrB,MAAIxwB,QAAOn0B,WAAU+zB,MAAMI,KAAKg5B,IAAAA;AAChC,WAASnlD,KAAKmsB,OAAM;AACnB,QAAInsB,EAAEoP,QAAQ,GAAA,MAAS,GAAG;AACzB;AAAA,IACJ,WAAc+c,MAAKnsB,IAAI;AACnB,UAAGmsB,MAAKnsB,CAAAA,EAAGq2B,gBAAe;AACzB+uB,sBAAcplD,CAAAA,IAAKhI,WAAU4kC,SAASG,WAAW5Q,MAAKnsB,CACtD,CAAA;AAAA,MAAA,WAAgBmsB,OAAAA,MAAKnsB,MAAM,UAAU;AACrColD,sBAAcplD,CAAAA,IAAK3H,KAAK6sD,iBAAiB/4B,MAAKnsB,CAAAA,CAAAA;AAAAA,MAC9C,WAASmsB,MAAKnsB,CAAO,MAAA,MAAM;AAC3BolD,sBAAcplD,CAAK,IAAA;AAAA,MACxB,OAAW;AACNolD,sBAAcplD,CAAKmsB,IAAAA,MAAKnsB,CACxB;AAAA,MAAA;AAAA,IACD;AAAA,EACD;AACDolD,gBAAc/sD,KAAKmlD,YAAgBxlD,IAAAA,WAAU4lD,YAAYuH,KAAK/sD,IAAIC,KAAKmlD;AACvE,SAAO4H;AACP,GACDrE,aAAa,SAAS3oD,KAAAA;AACrB,MAAIitD,WAAWhtD,KAAKskD,WAAWnvC,SAASpV,GACxC;AAAA,MAAA,CAAKitD,UAAU;AACdA,eAAW,EAAEjtD,IAAIA,IACjB;AAAA,EAAA;AACD,SAAOC,KAAK6sD,iBAAiBG,QAAAA;AAC7B,EAIa;AAAA,SAASjrD,OAAOpC,YAAAA;AAE/BA,EAAAA,WAAUstD,sBAAsB,SAAS1rD,QAAAA;AACxC,QAAI6lD;AACJ,QAAI8F;AACJ,QAAI3rD,kBAAkBuxB,UAAU;AAC/Bs0B,eAAS7lD;AAAAA,IACT,WAAUA,OAAO+oB,eAAe,QAAW,GAAA;AAC3C88B,eAAS7lD,OAAO6lD;AAAAA,IAChB,WAAS7lD,OAAO+oB,eAAe,OAAS,GAAA;AACxC88B,eAAS7lD;AAAAA,IACT;AAED,QAAI6lD,QAAQ;AACX8F,cAAQ;AAAA,IACV,OAAQ;AACNA,cAAQ3rD,OAAO9B,QAAQ;AAAA,IACvB;AAED,QAAI4kD,KAAK,IAAIyB,cAAcvkD,OAAO64B,GAClCiqB;AAAAA,OAAGvjD,KAAKnB,UACR0kD;AAAAA,OAAGyC,mBAAmB,EACrBrnD,MAAMytD,OACN9F,OAAQA,GACN7lD,OAAO4rD,WACV;AAAA,WAAO9I;AAAAA,EACR;AAEA1kD,EAAAA,WAAUmmD,gBAAgBA;AAE1B;ACl7Be,SAAQxkD,QAAC3B,YAEvB;AAAA,MAAIytD,eAAe;AAEnB,MAAIC,eAAe;AAEnB,WAAStgD,SAASxL,QAAQqX,QAAAA;AACzB,QAAI00C,WAAW/rD,OAAOwL;AACtBwgD,aAASC,KAAKjsD,OAAO6yB,GAErBi5B;AAAAA,mBAAe9rD,OAAO6yB,MAAM;AAC7B,QAAIk5B;AACFA,eAAS10C,MAAAA;AAAAA,EACV;AAED,WAAS60C,UAAU7nD,QAAAA;AAClB,QAAIynD,cAAc;AAEjB,UAAI1vB,OAAO/3B,OAAM8nD,SAAS9nD,OAAMkpC;AAChC,UAAI/6B,iBAAiB;AAErB,UAAI45C,WAAWC,UAAU;AACxB,YAAIjwB,QAAQ,MAAMA,QAAQ,IAAI;AAG7B,cAAInpB,SAAS5O,OAAM4O,UAAU5O,OAAM6O;AACnC,cAAIo5C,YAAWj5B,aAAapgB,MAAQuC,EAAAA,QAAQ,wBAA6B,IAAA,MAAKvC,OAAO9O,OAAO;AAC3F8O,mBAAO9O,MACb;AAAA,UAAA,OAAY;AACNqH,qBAASsgD,cAAc,IAAA;AACvBt5C,6BAAiB;AAAA,UACjB;AAAA,QACD;AAED,YAAI4pB,QAAQ,IAAI;AACf5wB,mBAASsgD,cAAc,KACvBt5C;AAAAA,2BAAiB;AAAA,QACjB;AAAA,MACD;AAED,UAAIA,gBAAgB;AACnB,YAAInO,OAAMmO,gBAAe;AACxBnO,UAAAA,OAAMmO,eACN;AAAA,QAAA;AACD,eAASnO,EAAAA,OAAM4Q,eAAe;AAAA,MAC9B;AACD;AAAA,IACA;AAAA,EACD;AAED7W,EAAAA,WAAUiG,MAAM/F,UAAU,WAAW4tD,WAAW,IAAA;AAEhD,WAASK,SAASruD,MACjB;AAAA,QAAA,CAAKquD,SAASC,OAAO;AACpBD,eAASC,QAAQluD,SAASC,cAAc,KAExCH;AAAAA,MAAAA,WAAUiG,MAAMkoD,SAASC,OAAO,WAAWN,SAAAA;AAC3CK,eAASC,MAAM3pD,YAAY;AAC3BvE,eAASM,KAAKC,YAAY0tD,SAASC,KACnC;AAAA,IAAA;AAEDD,aAASC,MAAMjnD,MAAMgC,UAAUrJ,OAAO,iBAAiB;AAAA,EACvD;AAED,WAAS4F,OAAO1D,MAAMqsD,YAAYp1C,QAAAA;AACjC,QAAIq1C,kBAAkBtuD,WAAU4T,SAASse,wBAAwBlwB,IACjE;AAAA,QAAIqL,QAAQghD,cAAc,IAAIthD,YAAcuK,EAAAA,QAAQ,MAAM,GAAA;AAC1D,QAAIi3C,YAAY,aAAalhD,IAAAA,kBAAsBA;AACnD,WAAO,QAAQihD,eAAqEC,sDAAAA,SAAAA,kBAA2Bt1C,MAAmBA,aAAAA,MAAAA,WAAiBjX,IACnJ;AAAA,EAAA;AAED,WAASwsD,KAAKxsD,MAAAA;AACb,QAAKgsD,CAAAA,WAAW93B,MAAM;AACrB83B,iBAAW93B,OAAOh2B,SAASC,cAAc,KAAA;AACzC6tD,iBAAW93B,KAAKzxB,YAAY;AAC5BupD,iBAAW93B,KAAK/uB,MAAM6mD,WAAW5nD,QAAAA,IAAY;AAC7ClG,eAASM,KAAKC,YAAYutD,WAAW93B,IAAAA;AAAAA,IACrC;AAED83B,eAAWH,KAAK7rD,KAAK5B,EACrB;AAAA,QAAIuB,WAAUzB,SAASC,cAAc,KACrCwB;AAAAA,IAAAA,SAAQpB,YAAY,UAAUyB,KAAKA,OAAO;AAC1CL,IAAAA,SAAQ8C,YAAY,0CAA0CzC,KAAKD,OAAO,aAAaC,KAAKD;AAC5F/B,IAAAA,WAAUiG,MAAMtE,UAAS,SAAQ,WAAA;AAChCqsD,iBAAWH,KAAK7rD,KAAK5B,EAAAA;AACrB4B,aAAO;AAAA,IACV;AAEEhC,IAAAA,WAAU4T,SAASwe,gBAAgBzwB,QAAAA;AAEnC,QAAIqsD,WAAW5nD,YAAY,YAAY4nD,WAAW93B,KAAKx1B;AACtDstD,iBAAW93B,KAAKvkB,aAAahQ,UAASqsD,WAAW93B,KAAKx1B;;AAEtDstD,iBAAW93B,KAAKz1B,YAAYkB,QAAAA;AAE7B,QAAIK,KAAKC,SAAS;AACjB+rD,iBAAWS,OAAOzsD,KAAK5B,EAAMkB,IAAAA,OAAO8I,WAAW,WAAA;AAE9C,YAAI4jD;AAAYA,qBAAWH,KAAK7rD,KAAK5B,EAAAA;AAAAA,MACzC,GAAM4B,KAAKC,MAET+rD;AAAAA,eAAWU,KAAK1sD,KAAK5B,EAAAA,IAAMuB;AAC3BA,IAAAA,WAAU;AAEV,WAAOK,KAAK5B;AAAAA,EACZ;AAED,WAASuuD,kBAAAA;AACR,QAAIpgC,SAAS,CAAGhB,EAAAA,MAAMphB,MAAMC,WAAW,CAAC,CAExC,CAAA;AAAA,aAASpE,IAAI,GAAGA,IAAIumB,OAAOtmB,QAAQD,KAAK;AACvC,UAAIumB,OAAOvmB,CAAI,GAAA;AACd,eAAOumB,OAAOvmB;MACd;AAAA,IACD;AAAA,EAED;AAED,WAAS4mD,cAAchtD,QAAQ4W,IAAIO,QAAAA;AAClC,QAAI0b,MAAMv0B,SAASC,cAAc,KAAA;AAEjC,QAAI0uD,YAAY96B,MAAM3Z,IAAAA;AACtBpa,IAAAA,WAAU4T,SAASye,iBAAiBoC,KAAKo6B,SAAAA;AAGzCp6B,QAAIhwB,YAAY,qDAAqD7C,OAAOG,OAAO,aAAaH,OAAOG;AACvG0yB,QAAIrvB,aAAaqoD,cAAc,CAAA;AAE/B,QAAIqB,QAAQ;AAEZ,QAAIltD,OAAOqF;AACVwtB,UAAIttB,MAAMF,QAAQrF,OAAOqF;AAC1B,QAAIrF,OAAOwF;AACVqtB,UAAIttB,MAAMC,SAASxF,OAAOwF;AAC3B,QAAIxF,OAAOyW;AACVy2C,eAAS,2DAA2DltD,OAAOyW,QAAQ;AACpFy2C,aAAS,6DAA6DD,YAAY,cAAcjtD,OAAO8lB,UAAU,KAAK9lB,OAAOI,QAAQ;AACrI,QAAIwW;AACHs2C,eAASppD,OAAOipD,gBAAgB/sD,OAAO4W,IAAIxY,WAAU0T,OAAOC,OAAOo7C,YAAY,IAAO,GAAA,MAAM,IAC7F;AAAA,QAAIh2C;AACH+1C,eAASppD,OAAOipD,gBAAgB/sD,OAAOmX,QAAQ/Y,WAAU0T,OAAOC,OAAOq7C,gBAAgB,QAAA,GAAW,UAAU,KAAA;AAE7G,QAAIptD,OAAOyV,SAAS;AACnB,eAASrP,IAAI,GAAGA,IAAIpG,OAAOyV,QAAQpP,QAAQD,KAAK;AAC/C,YAAIinD,MAAMrtD,OAAOyV,QAAQrP,CACzB;AAAA,YAAA,OAAWinD,OAAO,UAAU;AAE3B,cAAIx7C,QAAQw7C,IAAIx7C;AAChB,cAAIzM,MAAMioD,IAAIjoD,OAAQ,eAAeioD,IAAIx7C,MAAM1G,YAAAA,IAAgB,oBAAoBkiD,IAAIx7C,MAAM1G,YAAAA,IAAgB;AAC7G,cAAI7F,QAAQ+nD,IAAI/nD,SAASc;AACzB8mD,mBAASppD,OAAO+N,OAAOzM,KAAKE,KAAAA;AAAAA,QACjC,OAAW;AACN4nD,mBAASppD,OAAOupD,KAAKA,KAAKjnD,CAAAA;AAAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAED8mD,aAAS;AACTr6B,QAAIl0B,YAAYuuD;AAEhB,QAAIltD,OAAO8lB,SAAS;AACnB,UAAIpV,OAAO1Q,OAAO8lB;AAClB,UAAA,OAAWpV,QAAQ;AAClBA,eAAOpS,SAASqP,eAAe+C,IAChC;AAAA,UAAIA,KAAKnL,MAAMgC,WAAW;AACzBmJ,aAAKnL,MAAMgC,UAAU;AACtBsrB,UAAI0b,WAAWvuC,OAAOyW,QAAQ,IAAI,GAAG5X,YAAY6R,IAAAA;AAAAA,IACjD;AAEDtS,IAAAA,WAAUiG,MAAMwuB,KAAK,SAAS,SAAUxuB;AACvC,UAAI2kB,SAAS3kB,OAAM4O,UAAU5O,OAAM6O;AACnC,UAAK8V,CAAAA,OAAOnmB;AAAWmmB,iBAASA,OAAOthB;AACvC,UAAI4kD,YAAWh3C,QAAQ0T,QAAQ,yBAAA,GAA4B;AAC1D,YAAI3R,SAAS2R,OAAOpX,aAAa,aACjCyF;AAAAA,iBAAUA,UAAU,WAAYA,UAAU,UAAU,QAAQA;AAC5D7L,iBAASxL,QAAQqX,MAAAA;AAAAA,MACjB;AAAA,IACJ,CAAA;AACErX,WAAO6yB,MAAMA;AACb,QAAIjc,MAAMO;AACT20C,qBAAe9rD;AAEhB,WAAO6yB;AAAAA,EACP;AAED,WAASy6B,WAAWttD,QAAQ4W,IAAIO,QAC/B;AAAA,QAAI0b,MAAM7yB,OAAOwzB,UAAUxzB,SAASgtD,cAAchtD,QAAQ4W,IAAIO,MAE9D;AAAA,QAAA,CAAKnX,OAAOutD;AACXhB,eAAS,IACVjuD;AAAAA,aAASM,KAAKC,YAAYg0B,GAC1B;AAAA,QAAIliB,IAAIO,KAAK8K,IAAI9K,KAAKkI,QAAQ1Z,OAAOmI,cAAcvJ,SAASwJ,gBAAgBkB,eAAe6pB,IAAI7pB,eAAe,CAAA,CAAA;AAC9G,QAAI4H,IAAIM,KAAK8K,IAAI9K,KAAKkI,QAAQ1Z,OAAOuI,eAAe3J,SAASwJ,gBAAgBgB,gBAAgB+pB,IAAI/pB,gBAAgB;AACjH,QAAI9I,OAAOwE,YAAY;AACtBquB,UAAIttB,MAAM+L,MAAM;AAAA;AAEhBuhB,UAAIttB,MAAM+L,MAAMV,IAAI;AACrBiiB,QAAIttB,MAAMiL,OAAOG,IAAI;AAErBvS,IAAAA,WAAUiG,MAAMwuB,KAAK,WAAWq5B,SAAAA;AAEhCF,aAAS5iC,MAAMyJ;AAEf,QAAI7yB,OAAOutD;AACVvB,eAASC,KAAKp5B,GAAAA;AAEfz0B,IAAAA,WAAU8B,UAAU,kBAAkB,CAAC2yB,GAAAA,CAAAA;AACvC,WAAOA;AAAAA,EACP;AAED,WAAS26B,WAAWxtD,QAAAA;AACnB,WAAOstD,WAAWttD,QAAQ,MAAM,KAAA;AAAA,EAChC;AAED,WAASytD,aAAaztD,QAAAA;AACrB,WAAOstD,WAAWttD,QAAQ,MAAM,IAAA;AAAA,EAChC;AAED,WAAS0tD,SAAS1tD,QAAAA;AACjB,WAAOstD,WAAWttD,MAAAA;AAAAA,EAClB;AAED,WAAS2tD,WAAWvtD,MAAMD,MAAMqL,WAAAA;AAC/B,eAAWpL,QAAQ,UAAU;AAC5B,UAAA,OAAWD,QAAQ,YAAY;AAC9BqL,QAAAA,YAAWrL;AACXA,eAAO;AAAA,MACP;AACDC,aAAO,EAACA,MAAYD,MAAYqL,UAAUA,UAC1C;AAAA,IAAA;AACD,WAAOpL;AAAAA,EACP;AAED,WAASwtD,OAAOxtD,MAAMD,MAAME,QAAQ7B,KAAAA;AACnC,QAAW4B,OAAAA,QAAQ;AAClBA,aAAO,EAACA,MAAYD,MAAYE,QAAgB7B,IAAIA,IAAAA;AACrD4B,SAAK5B,KAAK4B,KAAK5B,MAAM2zB,MAAM3Z,IAC3BpY;AAAAA,SAAKC,SAASD,KAAKC,UAAU+rD,WAAW/rD;AACxC,WAAOD;AAAAA,EACP;AAED,MAAIytD,WAAW,WAAA;AACd,QAAIztD,OAAOutD,WAAWpjD,MAAM9L,MAAM+L,SAClCpK;AAAAA,SAAKD,OAAOC,KAAKD,QAAQ;AACzB,WAAOqtD,WAAWptD,IAAAA;AAAAA,EACpB;AACC,MAAI0tD,aAAa,WAAA;AAChB,QAAI1tD,OAAOutD,WAAWpjD,MAAM9L,MAAM+L,SAAAA;AAClCpK,SAAKD,OAAOC,KAAKD,QAAQ;AACzB,WAAOstD,aAAartD,IACtB;AAAA,EAAA;AACC,MAAI4rD,WAAW;AACd,QAAI5rD,OAAOutD,WAAWpjD,MAAM9L,MAAM+L,SAAAA;AAClCpK,SAAKD,OAAOC,KAAKD,QAAQ;AACzB,WAAOutD,SAASttD,IAClB;AAAA,EAAA;AACC4rD,WAASC,OAAO,SAAUv7C,MACzB;AAAA,WAAOA,QAAQA,KAAKkB,gBAAiBlB,CAAAA,KAAKkB,aAAai6C,YAAAA;AACtDn7C,aAAOA,KAAKhJ;AACb,QAAIgJ,MAAM;AACTA,WAAKhJ,WAAWiC,YAAY+G;AAC5B67C,eAAS,KAAA;AAETnuD,MAAAA,WAAU8B,UAAU,uBAAuB,CAACwQ,IAC5C,CAAA;AAAA,IAAA;AAAA,EACH;AAECs7C,WAAS5iC,QAAQ,SAAU1Y,MAAAA;AAC1BlI,eAAW,WAAA;AACV,UAAIulD,YAAYzB,YAAWx3B,kBAAkBpkB,IAC7C;AAAA,UAAIq9C,UAAU1nD,QAAQ;AACrB,YAAI0nD,UAAU,CAAG3kC,EAAAA;AAAO2kC,oBAAU,CAAA,EAAG3kC,MACrC;AAAA,MAAA;AAAA,IACD,GAAE,CAAA;AAAA,EACL;AAEC,MAAIgjC,aAAa,SAAUhsD,MAAMD,MAAME,QAAQ7B,KAC9C4B;AAAAA,WAAOwtD,OAAOrjD,MAAM9L,MAAM+L,SAC1BpK;AAAAA,SAAKD,OAAOC,KAAKD,QAAQ;AAEzB,QAAI6tD,UAAU5tD,KAAKD,KAAK6C,MAAM,GAAA,EAAK,CACnC;AAAA,YAAQgrD;MACP,KAAK;AACJ,eAAOR,WAAWptD,IACnB;AAAA,MAAA,KAAK;AACJ,eAAOqtD,aAAartD,IACrB;AAAA,MAAA,KAAK;AACJ,eAAOstD,SAASttD,IAAAA;AAAAA,MACjB;AACC,eAAOwsD,KAAKxsD,IAEhB;AAAA,IAAA;AAAA,EAAA;AAECgsD,aAAW6B,QAAO,oBAAKn6C,QAAQ6B,QAC/By2C;AAAAA,aAAW5zC,MAAM2Z,MAAM3Z;AACvB4zC,aAAW/rD,SAAS;AACpB+rD,aAAWC,WAAW;AACtBD,aAAW5nD,WAAW;AACtB4nD,aAAWU,OAAO;AAClBV,aAAWS,SAAS;AAEpBT,aAAW8B,UAAU,WACpB;AAAA,aAASrmC,OAAOukC,WAAWU;AAC1BV,iBAAWH,KAAKpkC,GAAAA;AAAAA,EACnB;AACCukC,aAAWH,OAAO,SAAUztD;AAC3B,QAAIH,MAAM+tD,WAAWU,KAAKtuD,GAC1B;AAAA,QAAIH,OAAOA,IAAIqJ,YAAY;AAC1BhI,aAAO8I,WAAW,WAAA;AACjBnK,YAAIqJ,WAAWiC,YAAYtL,GAAAA;AAC3BA,cAAM;AAAA,MACN,GAAE,GACHA;AAAAA,UAAIwE,aAAa;AAEjB,UAAIupD,WAAWS,OAAOruD,GACrBkB;AAAAA,eAAO6I,aAAa6jD,WAAWS,OAAOruD,GAAAA,CAAAA;AAAAA,aAChC4tD,WAAWU,KAAKtuD,GACvB;AAAA,IAAA;AAAA,EACH;AAEC,MAAI2vD,SAAS,CAAA;AACb/vD,EAAAA,WAAUgE,YAAY,kBAAkB,SAASywB,KAAAA;AAChDs7B,WAAOhhD,KAAK0lB,GACd;AAAA,EAAA,CAAA;AACCz0B,EAAAA,WAAUgE,YAAY,uBAAuB,SAASywB,KAAAA;AACrD,aAAQzsB,IAAI,GAAGA,IAAI+nD,OAAO9nD,QAAQD,KAAI;AACrC,UAAG+nD,OAAO/nD,CAAOysB,MAAAA,KAAI;AACpBs7B,eAAO7lC,OAAOliB,GAAG,CACjBA;AAAAA;AAAAA,MACA;AAAA,IACD;AAAA,EACH,CAEChI;AAAAA,EAAAA,WAAUgE,YAAY,aAAa,WAAA;AAClC,QAAGmqD,SAASC,SAASD,SAASC,MAAM9kD,YAAW;AAC9C6kD,eAASC,MAAM9kD,WAAWiC,YAAY4iD,SAASC,KAAAA;AAAAA,IAC/C;AAED,aAAQpmD,IAAI,GAAGA,IAAI+nD,OAAO9nD,QAAQD,KAAI;AACrC,UAAG+nD,OAAO/nD,CAAAA,EAAGsB,YAAW;AACvBymD,eAAO/nD,CAAAA,EAAGsB,WAAWiC,YAAYwkD,OAAO/nD,CACxC,CAAA;AAAA,MAAA;AAAA,IACD;AACD+nD,aAAS;AAET,QAAG/B,WAAW93B,QAAQ83B,WAAW93B,KAAK5sB,YAAW;AAChD0kD,iBAAW93B,KAAK5sB,WAAWiC,YAAYyiD,WAAW93B;IAClD;AACD83B,iBAAa;AAAA,EACf,CAAA;AAEC,SAAO,EACNxpD,OAAOirD,UACPv2C,SAASw2C,YACT/tD,SAASqsD,YACTgC,UAAUpC,SAEZ;AAAA;ACzWA,MAAeqC,KAAA,EACdxqD,MAAM,EACLk5B,YAAY,CAAC,gBAAgB,QAAQ,QAAQ,SAAS,QAAQ,UAAU,QAAQ,MAAM,SAAS,eAAe,gBAAgB,aAC9HD,GAAAA,aAAa,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,QAAA,GACnHD,UAAU,CAAC,SAAS,WAAW,YAAY,YAAY,UAAU,UAAU,OAAA,GAC3EH,WAAW,CAAC,OAAO,SAAS,UAAU,UAAU,QAAQ,QAAQ,KAAA,EAAA,GAEjE3qB,QAAQ,EACPkE,sBAAsB,SACtBq4C,SAAS,OACTC,UAAU,SACVC,WAAW,OACXh6C,WAAW,YACXi6C,WAAW,QACXC,aAAa,SACbzgC,cAAc,UACd3M,WAAW,SACXzK,aAAa,OACbqE,iBAAiB,qCACjB3E,kBAAkB,2CAClBo4C,qBAAqB,SACrBC,cAAc,kBACdpX,UAAU,cAEVqX,mBAAmB,mDACnBC,mBAAmB,eACnBC,kBAAkB,SAClBC,uBAAuB,SACvBC,oBAAoB,eACpBC,wBAAwB,cAGxBC,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SAAA,EAAA;AC9CV,MAAe++B,KAAA,EACdvrD,MAAM,EACLk5B,YAAY,CAAC,YAAY,QAAQ,WAAW,YAAY,OAAO,WAAW,UAAU,WAAW,YAAY,cAAc,YAAY,SACrID,GAAAA,aAAa,CAAC,SAAS,OAAO,OAAO,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,QAAQ,QAAQ,MAAA,GACjGD,UAAU,CAAE,WAAW,cAAc,WAAW,UAAU,UAAU,WAAW,QAAA,GAC/EH,WAAW,CAAC,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,IAAA,EAAA,GAEnD3qB,QAAQ,EACPkE,sBAAsB,SACtBq4C,SAAS,SACTC,UAAU,WACVC,WAAW,SACXh6C,WAAW,gBACXi6C,WAAW,YACXC,aAAa,YACbzgC,cAAc,UACd3M,WAAW,WACXzK,aAAa,YACbqE,iBAAiB,IACjB3E,kBAAkB,iDAClBo4C,qBAAqB,YACrBC,cAAc,eACdpX,UAAU,eAEVqX,mBAAmB,oDACnBC,mBAAmB,cACnBC,kBAAkB,aAClBC,uBAAuB,YACvBC,oBAAoB,oBACpBC,wBAAwB,sBAGxBG,YAAY,QACZxrD,MAAM,QACNyrD,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,QAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,SAClBC,mBAAmB,WACnBC,oBAAoB,SACpBC,mBAAmB,OACnBC,uBAAuB,SACvBC,uBAAuB,SACvBC,wBAAwB,wBACxBC,aAAa,oBACbC,wBAAwB,WACxBC,yBAAyB,aACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,UACzBC,iCAAiC,UACjCC,gCAAgC,SAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,uBAClBC,8BAA8B,YAC9BC,mBAAmB,IACnBC,mBAAmB,OACnBC,qBAAqB,CAAC,YAAY,UAAU,YAAY,aAAa,OAAO,WAAW,UAAU,UAAU,WAAW,eAAe,aAAa,QAClJC,GAAAA,mBAAmB,CAAC,WAAW,cAAc,WAAW,UAAU,UAAU,WAAW,QAAA,EAAA,EAAA;ACvFzF,MAAeC,KAAA,EACdrtD,MAAM,EACLk5B,YAAY,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,QAAQ,UAAU,SAAS,YAAY,WAAW,YAAY,UACvHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU,aAAa,UAAA,GAChFH,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD3qB,QAAQ,EACPkE,sBAAsB,OACtBq4C,SAAS,OACTC,UAAU,WACVC,WAAW,OACXh6C,WAAW,oBACXi6C,WAAW,WACXC,aAAa,cACbzgC,cAAc,WACd3M,WAAW,UACXzK,aAAa,YACbqE,iBAAiB,IACjB3E,kBAAkB,0DAClBo4C,qBAAqB,cACrBC,cAAc,oBACdpX,UAAU,cAEVqX,mBAAmB,2DACnBC,mBAAmB,6BACnBC,kBAAkB,WAClBC,uBAAuB,UACvBC,oBAAoB,cACpBC,wBAAwB,mBAGxBG,YAAY,UACZxrD,MAAM,QACNyrD,aAAa,cAGbC,UAAU,OAGVC,iBAAiB,UAGjBL,UAAU,SAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SAAA,EAAA;ACxDV,MAAe8gC,KAAA,EACdttD,MAAM,EACLk5B,YAAY,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,KAAA,GAChFD,aAAa,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,QAClFD,UAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KACrDH,GAAAA,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAE3C3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,MACtBq4C,SAAS,KACTC,UAAU,KACVC,WAAW,KACXh6C,WAAW,QACXi6C,WAAW,MACXC,aAAa,MACbzgC,cAAc,MACd3M,WAAW,MACXzK,aAAa,MACbqE,iBAAiB,cACjB3E,kBAAkB,WAClBo4C,qBAAqB,MACrBC,cAAc,QACdpX,UAAU,MAEVqX,mBAAkB,mBAClBC,mBAAkB,QAClBC,kBAAiB,MACjBC,uBAAsB,MACtBC,oBAAoB,QACpBC,wBAAwB,QAGxBG,YAAW,MACXxrD,MAAK,MACLyrD,aAAY,MAGZC,UAAS,MAGTC,iBAAiB,MAGjBL,UAAS,MAGThR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,MAClBC,mBAAmB,MACnBC,oBAAoB,MACpBC,mBAAmB,MACnBC,uBAAuB,KACvBC,uBAAuB,KACvBC,wBAAwB,SACxBC,aAAa,SACbC,wBAAwB,QACxBC,yBAAyB,MACzBC,0BAA0B,KAC1BC,uBAAuB,OACvBC,yBAAyB,KACzBC,iCAAiC,KACjCC,gCAAgC,KAChCC,mBAAmB,KACnBC,kBAAkB,KAClBC,sBAAsB,KACtBC,mBAAmB,KACnBC,kBAAkB,SAClBC,8BAA8B,OAC9BC,mBAAmB,MACnBC,mBAAmB,OACnBC,qBAAqB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,KACzFC,GAAAA,mBAAmB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KC9FhE,EAAA,EAAA;AAAA,MAAejjB,KAAA,EACdnqC,MAAM,EACLk5B,YAAY,CAAC,SAAS,QAAQ,UAAU,SAAS,UAAU,UAAU,YAAY,SAAS,QAAQ,SAAS,YAAY,UAAA,GACvHD,aAAa,CAAC,OAAO,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,QAAQ,KAC5FD,GAAAA,UAAU,CAAC,UAAU,WAAW,SAAS,UAAU,WAAW,SAAS,QACvEH,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,OACTC,UAAU,SACVC,WAAW,SACXh6C,WAAW,gBACXi6C,WAAW,UACXC,aAAa,QACbzgC,cAAc,UACd3M,WAAW,UACXzK,aAAa,UACbqE,iBAAiB,IACjB3E,kBAAkB,yCAClBo4C,qBAAqB,YACrBC,cAAc,kBAGdC,mBAAmB,uDACnBC,mBAAmB,sBACnBC,kBAAkB,WAClBC,uBAAuB,WACvBC,oBAAoB,eACpBC,wBAAwB,oBAGxBG,YAAY,WACZxrD,MAAM,SACNyrD,aAAa,YAGbC,UAAU,OACV/X,UAAU,YAGVgY,iBAAiB,WAGjBL,UAAU,UAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,SAClBC,mBAAmB,SACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,gBACxBC,aAAa,mBACbC,wBAAwB,aACxBC,yBAAyB,aACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,SACzBC,iCAAiC,SACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,qBAClBC,8BAA8B,YAC9BC,mBAAmB,MACnBC,mBAAmB,SACnBC,qBAAqB,CAAC,SAAS,QAAQ,UAAU,SAAS,UAAU,UAAU,YAAY,SAAS,QAAQ,SAAS,YAAY,UAChIC,GAAAA,mBAAmB,CAAC,WAAW,WAAW,SAAS,UAAU,WAAW,SAAS,QCxFnF,EAAA,EAAA;AAAA,MAAeG,KAAA,EACdvtD,MAAM,EACLk5B,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACzHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QAAA,GACzEH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD3qB,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,OACTC,UAAU,OACVC,WAAW,SACXh6C,WAAW,iBACXi6C,WAAW,OACXC,aAAa,WACbzgC,cAAc,YACd3M,WAAW,UACXzK,aAAa,QACbqE,iBAAiB,8CACjB3E,kBAAkB,2DAClBo4C,qBAAqB,eACrBC,cAAc,eAGdC,mBAAmB,yDACnBC,mBAAmB,qBACnBC,kBAAkB,aAClBC,uBAAuB,aACvBC,oBAAoB,kBACpBC,wBAAwB,mBAGxBG,YAAY,aACZxrD,MAAM,QACNyrD,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,aAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,UAClBC,mBAAmB,WACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,sBACxBC,aAAa,sBACbC,wBAAwB,yBACxBC,yBAAyB,YACzBC,0BAA0B,OAC1BC,uBAAuB,WACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,OACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,kBAClBC,8BAA8B,cAC9BC,mBAAmB,SACnBC,mBAAmB,QACnBC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UACjIC,GAAAA,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QCvFpF,EAAA,EAAA;AAAA,MAAeI,KAAA,EACdxtD,MAAM,EACLk5B,YAAY,CAAC,WAAW,YAAY,UAAU,UAAU,QAAQ,SAAS,SAAS,WAAW,eAAe,YAAY,cAAc,WACtID,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAE,WAAW,UAAU,YAAY,aAAa,eAAe,WAAW,SACpFH,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD3qB,QAAQ,EACPkE,sBAAsB,SACtBq4C,SAAS,OACTC,UAAU,SACVC,WAAW,SACXh6C,WAAW,iBACXi6C,WAAW,aACXC,aAAa,aACbzgC,cAAc,WACd3M,WAAW,UACXzK,aAAa,WACbqE,iBAAiB,IACjB3E,kBAAkB,6BAClBo4C,qBAAqB,gBACrBC,cAAc,cACdpX,UAAU,cAEVqX,mBAAmB,0EACnBC,mBAAmB,gBACnBC,kBAAkB,OAClBC,uBAAuB,MACvBC,oBAAoB,4BACpBC,wBAAwB,6BAGxBG,YAAY,UACZxrD,MAAM,SACNyrD,aAAa,gBAGbC,UAAU,SAGVC,iBAAiB,UAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,WAClBC,mBAAmB,eACnBC,oBAAoB,aACpBC,mBAAmB,YACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,uBACxBC,aAAa,yBACbC,wBAAwB,aACxBC,yBAAyB,YACzBC,0BAA0B,MAC1BC,uBAAuB,mBACvBC,yBAAyB,UACzBC,iCAAiC,SACjCC,gCAAgC,UAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,UACtBC,mBAAmB,IACnBC,kBAAkB,iBAClBC,8BAA8B,eAC9BE,mBAAmB,UACnBD,mBAAmB,QACnBE,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UACjIC,GAAAA,mBAAmB,CAAC,WAAW,UAAU,YAAY,YAAY,cAAc,WAAW,SAAA,EAAA,EAAA;ACvF5F,MAAe5kD,KAAA,EACdxI,MAAM,EACLk5B,YAAY,CAAC,cAAc,eAAe,WAAW,YAAY,SAAS,WAAW,WAAW,aAAa,eAAe,aAAa,aAAa,eACtJD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,KAC7FD,GAAAA,UAAU,CAAC,WAAW,WAAW,SAAS,WAAW,UAAU,aAAa,SAC5EH,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,UACtBq4C,SAAS,SACTC,UAAU,YACVC,WAAW,SACXh6C,WAAW,YACXi6C,WAAW,cACXC,aAAa,SACbzgC,cAAc,gBACd3M,WAAW,eACXzK,aAAa,YACbqE,iBAAiB,IACjB3E,kBAAkB,wDAClBo4C,qBAAqB,aACrBC,cAAc,oBACdpX,UAAU,gBAGVqX,mBAAmB,4EACnBC,mBAAmB,yBACnBC,kBAAkB,YAClBC,uBAAuB,UACvBC,oBAAoB,2BACpBC,wBAAwB,6BAGxBG,YAAY,oBACZxrD,MAAM,cACNyrD,aAAa,aAGbC,UAAU,QAGVC,iBAAiB,oBAGjBL,UAAU,UAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,aAClBC,mBAAmB,gBACnBC,oBAAoB,YACpBC,mBAAmB,WACnBC,uBAAuB,QACvBC,uBAAuB,SACvBC,wBAAwB,iBACxBC,aAAa,mBACbC,wBAAwB,iCACxBC,yBAAyB,aACzBC,0BAA0B,OAC1BC,uBAAuB,cACvBC,yBAAyB,QACzBC,iCAAiC,QACjCC,gCAAgC,QAChCC,mBAAmB,OACnBC,kBAAkB,OAClBC,sBAAsB,SACtBC,mBAAmB,QACnBC,kBAAkB,2BAClBC,8BAA8B,eAC9BE,mBAAmB,aACnBD,mBAAmB,YACnBE,qBAAqB,CAAC,cAAc,eAAe,WAAW,YAAY,SAAS,WAAW,WAAW,aAAa,eAAe,aAAa,aAAa,YAC/JC,GAAAA,mBAAmB,CAAC,WAAW,WAAW,SAAS,WAAW,UAAU,aAAa,SCxFvF,EAAA,EAAA;AAAA,MAAeK,KAAA,EACdztD,MAAK,EACJk5B,YAAW,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAC1HD,GAAAA,aAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC1FD,UAAS,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAA,GAC5EH,WAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEtD3qB,QAAO,EACNkE,sBAAqB,SACrBq4C,SAAQ,OACRC,UAAS,QACTC,WAAU,SACVh6C,WAAU,aACVi6C,WAAU,QACVC,aAAY,UACZzgC,cAAa,WACb3M,WAAU,QACVzK,aAAY,UACZqE,iBAAgB,IAChB3E,kBAAiB,oDACjBo4C,qBAAoB,eACpBC,cAAa,eACbpX,UAAS,YAGTqX,mBAAkB,yDAClBC,mBAAkB,gBAClBC,kBAAiB,YACjBC,uBAAsB,WACtBC,oBAAoB,eACpBC,wBAAwB,mBAGxBG,YAAW,UACXxrD,MAAK,QACLyrD,aAAY,eAGZC,UAAS,QAGTC,iBAAiB,UAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,SAClBC,mBAAmB,UACnBC,oBAAoB,WACpBC,mBAAmB,UACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,iBACxBC,aAAa,iBACbC,wBAAwB,mBACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,SACzBC,iCAAiC,SACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,eAClBC,8BAA8B,eAC9BC,mBAAmB,SACnBC,mBAAmB,UACnBC,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACpIC,mBAAmB,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAA,EAAA,EAAA;ACrFxF,MAAeM,KAAA,EACd1tD,MAAM,EACLk5B,YAAY,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,cAAc,WAAW,aAAa,WAC7HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,WAAW,SAAS,UAAU,aAAa,UAAU,WAAW,QAAA,GAC3EH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD3qB,QAAQ,EACPkE,sBAAsB,OACtBq4C,SAAS,OACTC,UAAU,UACVC,WAAW,OACXh6C,WAAW,gBACXi6C,WAAW,WACXC,aAAa,YACbzgC,cAAc,YACd3M,WAAW,UACXzK,aAAa,YACbqE,iBAAiB,IACjB3E,kBAAkB,qDAClBo4C,qBAAqB,eACrBC,cAAc,WACdpX,UAAU,eAEVqX,mBAAmB,sDACnBC,mBAAmB,oBACnBC,kBAAkB,YAClBC,uBAAuB,aACvBC,oBAAoB,mBACpBC,wBAAwB,sBAGxBG,YAAY,OACZxrD,MAAM,SACNyrD,aAAa,eAGbC,UAAU,OAGVC,iBAAiB,OAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,eAClBC,mBAAmB,gBACnBC,oBAAoB,gBACpBC,mBAAmB,cACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,2BACxBC,aAAa,iBACbC,wBAAwB,WACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,6BAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,cACnBE,qBAAqB,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,aAAa,WAAW,aAAa,WACrIC,GAAAA,mBAAmB,CAAC,WAAW,SAAS,UAAU,aAAa,UAAU,WAAW,QC1FtF,EAAA,EAAA;AAAA,MAAeO,KAAA,EACd3tD,MAAM,EACLk5B,YAAY,CAAC,YAAY,YAAY,aAAa,YAAY,YAAY,gBAAgB,iBAAiB,UAAU,WAAW,WAAW,aAAa,UAAA,GACxJD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,aAAa,aAAa,WAAW,eAAe,WAAW,aAAa,UAAA,GACvFH,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD3qB,QAAQ,EACPkE,sBAAsB,UACtBq4C,SAAS,SACTC,UAAU,UACVC,WAAW,YACXh6C,WAAW,kBACXi6C,WAAW,YACXC,aAAa,QACbzgC,cAAc,UACd3M,WAAW,WACXzK,aAAa,UACbqE,iBAAiB,IACjB3E,kBAAkB,yCAClBo4C,qBAAqB,UACrBC,cAAc,aACdpX,UAAU,cAEVqX,mBAAmB,mEACnBC,mBAAmB,oBACnBC,kBAAkB,8BAClBC,uBAAuB,2BACvBC,oBAAoB,iBACpBC,wBAAwB,iBAGxBG,YAAY,eACZxrD,MAAM,cACNyrD,aAAa,UAGbC,UAAU,UAGVC,iBAAiB,eAGjBL,UAAU,UAGVhR,gBAAe,sBACfC,cAAa,oBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,wBAClBC,mBAAmB,eACnBC,oBAAoB,iBACpBC,mBAAmB,cACnBC,uBAAuB,QACvBC,uBAAuB,mBACvBC,wBAAwB,4BACxBC,aAAa,eACbC,wBAAwB,6CACxBC,yBAAyB,UACzBC,0BAA0B,IAC1BC,uBAAuB,+BACvBC,yBAAyB,YACzBC,iCAAiC,QACjCC,gCAAgC,YAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,mBACtBC,mBAAmB,YACnBC,kBAAkB,oBAClBC,8BAA8B,wBAC9BE,mBAAmB,UACnBD,mBAAmB,IACnBE,qBAAqB,CAAC,YAAY,YAAY,aAAa,YAAY,YAAY,gBAAgB,iBAAiB,UAAU,WAAW,WAAW,aAAa,UAAA,GACjKC,mBAAmB,CAAC,aAAa,aAAa,WAAW,eAAe,WAAW,aAAa,UAAA,EAAA,EAAA;ACvFlG,MAAeQ,KAAA,EACd5tD,MAAM,EACLk5B,YAAY,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,UAAA,GAC1HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,KAAA,GAC7FD,UAAU,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY,QAAA,GAC1EH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,eACtBq4C,SAAS,QACTC,UAAU,WACVC,WAAW,QACXh6C,WAAW,oBACXi6C,WAAW,eACXC,aAAa,WACbzgC,cAAc,WACd3M,WAAW,YACXzK,aAAa,WACbqE,iBAAiB,IACjB3E,kBAAkB,uDAClBo4C,qBAAqB,eACrBC,cAAc,WACdpX,UAAU,oBAEVqX,mBAAmB,4DACnBC,mBAAmB,eACnBC,kBAAkB,aAClBC,uBAAuB,UACvBC,oBAAoB,qBACpBC,wBAAwB,sBAGxBG,YAAY,QACZxrD,MAAM,QACNyrD,aAAa,eAGbC,UAAU,SAGVC,iBAAiB,QAGjBL,UAAU,UAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,eAClBC,mBAAmB,gBACnBC,oBAAoB,aACpBC,mBAAmB,YACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,6BACxBC,aAAa,uBACbC,wBAAwB,YACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,QACzBC,iCAAiC,UACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,QACtBC,mBAAmB,QACnBC,kBAAkB,iCAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,SACnBE,qBAAqB,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,UAAA,GACnIC,mBAAmB,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY;ACvFrF,MAAeS,KAAA,EACd7tD,MAAM,EACLk5B,YAAY,CAAC,SAAS,UAAU,OAAO,SAAS,OAAO,QAAQ,QAAQ,UAAU,UAAU,WAAW,UAAU,OAChHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,KAAA,GAC9DH,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,EAAA,GAE3C3qB,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,OACTC,UAAU,QACVC,WAAW,QACXh6C,WAAW,YACXi6C,WAAW,QACXC,aAAa,OACbzgC,cAAc,SACd3M,WAAW,QACXzK,aAAa,OACbqE,iBAAiB,IACjB3E,kBAAkB,2BAClBo4C,qBAAqB,SACrBC,cAAc,SAEdC,mBAAmB,4CACnBC,mBAAmB,eACnBC,kBAAkB,WAClBC,uBAAuB,QACvBxX,UAAU,WACVyX,oBAAoB,iBACpBC,wBAAwB,cAGxBG,YAAY,WACZxrD,MAAM,SACNyrD,aAAa,SAGbC,UAAU,QAGVC,iBAAiB,WAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,kBAGb+O,YAAW,MACXC,gBAAe,OAGf9mD,MAAM,OACN6a,MAAM,SACNngB,MAAM,OACNmvB,OAAO,QACPlyB,KAAK,OACLmyB,MAAK,OACLC,QAAQ,OAGRo/B,kBAAkB,QAClBC,mBAAmB,SACnBC,oBAAoB,SACpBC,mBAAmB,QACnBC,uBAAuB,WACvBC,uBAAuB,QACvBC,wBAAwB,qBACxBC,aAAa,YACbC,wBAAwB,kBACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,WACvBC,yBAAyB,UACzBC,iCAAiC,WACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,SAClBC,sBAAsB,QACtBC,mBAAmB,QACnBC,kBAAkB,mBAClBC,8BAA8B,WAC9BE,mBAAmB,YACnBD,mBAAmB,QACnBE,qBAAqB,CAAC,SAAS,UAAU,OAAO,SAAS,OAAO,QAAQ,QAAQ,UAAU,UAAU,WAAW,UAAU,OACzHC,GAAAA,mBAAmB,CAAC,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,KCvFzE,EAAA,EAAA;AAAA,MAAeU,KAAA,EACd9tD,MAAM,EACLk5B,YAAY,CAAC,UAAU,WAAW,WAAW,WAAW,SAAS,UAAU,UAAU,aAAa,cAAc,WAAW,YAAY,UACvID,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,YAAY,SAAS,QAAQ,UAAU,aAAa,UAAU,SAAA,GACzEH,WAAW,CAAC,MAAM,MAAM,MAAM,OAAO,OAAO,MAAM,KAAA,EAAA,GAEnD3qB,QAAQ,EACPkE,sBAAsB,MACtBq4C,SAAS,OACTC,UAAU,OACVC,WAAW,SACXh6C,WAAW,cACXi6C,WAAW,UACXC,aAAa,SACbzgC,cAAc,aACd3M,WAAW,eACXzK,aAAa,UACbqE,iBAAiB,IACjB3E,kBAAkB,gDAClBo4C,qBAAqB,UACrBC,cAAc,WACdpX,UAAU,eAGVqX,mBAAmB,yEACnBC,mBAAmB,qBACnBC,kBAAkB,UAClBC,uBAAuB,gBACvBC,oBAAoB,eACpBC,wBAAwB,uBAGxBG,YAAY,YACZxrD,MAAM,SACNyrD,aAAa,UAGbC,UAAU,MAGVpR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SCvDV,EAAA;AAAA,MAAe7xB,KAAA,EACdqF,MAAM,EACLk5B,YAAY,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UAAA,GAC5HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,SAAS,UAAU,QAAQ,SAAS,SAAS,OAClEH,GAAAA,WAAW,CAAC,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,KAExD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,YACtBq4C,SAAS,QACTC,UAAU,UACVC,WAAW,SACXh6C,WAAW,cACXi6C,WAAW,UACXC,aAAa,SACbzgC,cAAc,UACd3M,WAAW,QACXzK,aAAa,SACbqE,iBAAiB,IACjB3E,kBAAkB,sBAClBo4C,qBAAqB,cACrBC,cAAc,WACdpX,UAAU,cAGVqX,mBAAmB,mCACnBC,mBAAmB,eACnBC,kBAAkB,qBAClBC,uBAAuB,eACvBC,oBAAoB,iBACpBC,wBAAwB,oBAGxBG,YAAY,UACZxrD,MAAM,WACNyrD,aAAa,cAGbC,UAAU,SAGVC,iBAAiB,UAGjBL,UAAU,SAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SAAA,EAAA;AC7DV,MAAeuhC,KAAA,EACd/tD,MAAM,EACLk5B,YAAY,CAAC,WAAW,YAAY,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,WAAW,YAAY,UACnID,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,YAAY,UAAU,WAAW,aAAa,WAAW,WAAW,WAC/EH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEvD3qB,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,UACTC,UAAU,aACVC,WAAW,QACXh6C,WAAW,gBACXi6C,WAAW,SACXC,aAAa,UACbzgC,cAAc,YACd3M,WAAW,YACXzK,aAAa,WACbqE,iBAAiB,IACjB3E,kBAAkB,0CAClBo4C,qBAAqB,eACrBC,cAAc,oBACdpX,UAAU,mBAEVqX,mBAAmB,6CACnBC,mBAAmB,qBACnBC,kBAAkB,eAClBC,uBAAuB,YACvBC,oBAAoB,uBACpBC,wBAAwB,wBAGxBG,YAAY,UACZxrD,MAAM,QACNyrD,aAAa,eAGbC,UAAU,QAGVC,iBAAiB,UAGjBL,UAAU,WAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,cAClBC,mBAAmB,eACnBC,oBAAoB,WACpBC,mBAAmB,WACnBC,uBAAuB,QACvBC,uBAAuB,UACvBC,wBAAwB,4BACxBC,aAAa,kBACbC,wBAAwB,cACxBC,yBAAyB,YACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,QACzBC,iCAAiC,QACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,UACtBC,mBAAmB,QACnBC,kBAAkB,qBAClBC,8BAA8B,aAC9BE,mBAAmB,QACnBD,mBAAmB,QACnBE,qBAAqB,CAAC,WAAW,YAAY,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,WAAW,YAAY,UAAA,GAC5IC,mBAAmB,CAAC,YAAY,UAAU,WAAW,aAAa,UAAU,WAAW,QAAA,EAAA,EAAA;ACpFzF,MAAeY,KAAA,EACdhuD,MAAM,EACLk5B,YAAY,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,KAAA,GACjFD,aAAa,CAAE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,KAAA,GACnFD,UAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GACrDH,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAE3C3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,MACtBq4C,SAAS,KACTC,UAAU,KACVC,WAAW,KACXh6C,WAAW,SACXi6C,WAAW,MACXC,aAAa,SACbzgC,cAAc,MACd3M,WAAW,MACXzK,aAAa,MACbqE,iBAAiB,IACjB3E,kBAAkB,yBAClBo4C,qBAAqB,YACrBC,cAAc,MACdC,mBAAmB,0BACnBC,mBAAmB,aACnBC,kBAAkB,MAClBC,uBAAuB,MACvBxX,UAAU,MACVyX,oBAAoB,cACpBC,wBAAwB,UAGxBG,YAAY,OACZxrD,MAAM,MACNyrD,aAAa,MAGbC,UAAU,MAGVC,iBAAiB,OAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SC9DK,EAAA;AAAA,MAAMyhC,cACpB;AAAA,EAAA,YAAY9xD,QAAAA;AACXvB,SAAKszD,WAAW;AAChB,eAAU3rD,KAAKpG,QAAO;AACrBvB,WAAKszD,SAAS3rD,CAAAA,IAAKpG,OAAOoG,CAAAA;AAAAA,IAC1B;AAAA,EACD;AAAA,EAED,UAAUqF,MAAMqG,QACfrT;AAAAA,SAAKszD,SAAStmD,IAAAA,IAAQqG;AAAAA,EACtB;AAAA,EAED,UAAUrG;AACT,WAAOhN,KAAKszD,SAAStmD,IAAAA;AAAAA,EACrB;ACdF;AAAA,MAAeumD,KAAA,EACdnuD,MAAM,EACLk5B,YAAY,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACxHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QACzEH,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,SACtBq4C,SAAS,OACTC,UAAU,OACVC,WAAW,SACXh6C,WAAW,eACXi6C,WAAW,SACXC,aAAa,UACbzgC,cAAc,YACd3M,WAAW,WACXzK,aAAa,SACbqE,iBAAiB,IACjB3E,kBAAkB,sDAClBo4C,qBAAqB,eACrBC,cAAc,eAGdC,mBAAmB,+DACnBC,mBAAmB,qBACnBC,kBAAkB,MAClBC,uBAAuB,MACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxBG,YAAY,UACZxrD,MAAM,QACNyrD,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,UAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,kBACxBC,aAAa,iBACbC,wBAAwB,WACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,mBAClBC,8BAA8B,aAC9BE,mBAAmB,YACnBD,mBAAmB,SACnBE,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UACjIC,GAAAA,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QCvFpF,EAAA,EAAA;AAAA,MAAegB,KAAA,EACdpuD,MAAM,EACLk5B,YAAY,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,YAAY,aAAa,WAAW,YAAY,UAAA,GAC7HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,UAAU,WAAW,WAAW,YAAY,aAAa,WAAW,UAC/EH,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,WACtBq4C,SAAS,OACTC,UAAU,QACVC,WAAW,SACXh6C,WAAW,cACXi6C,WAAW,WACXC,aAAa,aACbzgC,cAAc,WACd3M,WAAW,YACXzK,aAAa,eACbqE,iBAAiB,IACjB3E,kBAAkB,mDAClBo4C,qBAAqB,gBACrBC,cAAc,gBACdpX,UAAU,YAEVqX,mBAAmB,6CACnBC,mBAAmB,iBACnBC,kBAAkB,OAClBC,uBAAuB,OACvBC,oBAAoB,mBACpBC,wBAAwB,oBAGxBG,YAAY,UACZxrD,MAAM,SACNyrD,aAAa,gBAGbC,UAAU,QAGVC,iBAAiB,UAGjBL,UAAU,SAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,aAClBC,mBAAmB,aACnBC,oBAAoB,eACpBC,mBAAmB,aACnBC,uBAAuB,QACvBC,uBAAuB,WACvBC,wBAAwB,gBACxBC,aAAa,iBACbC,wBAAwB,8BACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,cACvBC,yBAAyB,WACzBC,iCAAiC,UACjCC,gCAAgC,WAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,SAC9BE,mBAAmB,eACnBD,mBAAmB,MACnBE,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,YAAY,aAAa,WAAW,YAAY,UAAA,GACtIC,mBAAmB,CAAC,UAAU,WAAW,WAAW,YAAY,aAAa,WAAW,UAAA,EAAA,EAAA;ACvF1F,MAAeiB,KAAA,EACdruD,MAAM,EACLk5B,YAAY,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACxHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,WACzEH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,OACTC,UAAU,OACVC,WAAW,SACXh6C,WAAW,MACXi6C,WAAW,SACXC,aAAa,UACbzgC,cAAc,YACd3M,WAAW,SACXzK,aAAa,SACbqE,iBAAiB,6CACjB3E,kBAAkB,8CAClBo4C,qBAAqB,eACrBC,cAAc,eACdpX,UAAU,YAGVqX,mBAAmB,yDACnBC,mBAAmB,yBACnBC,kBAAkB,cAClBC,uBAAuB,SACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxBG,YAAY,UACZxrD,MAAM,QACNyrD,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,UAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SAAA,EAAA;AC7DV,MAAe8hC,KAAA,EACdtuD,MAAM,EACLk5B,YAAY,CAAC,WAAW,QAAQ,UAAU,YAAY,OAAO,YAAY,UAAU,YAAY,YAAY,eAAe,YAAY,aACtID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,aAAa,gBAAgB,UAAU,SAAS,YAAY,UAAU,QACjFH,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,SACTC,UAAU,WACVC,WAAW,WACXh6C,WAAW,kBACXi6C,WAAW,UACXC,aAAa,UACbzgC,cAAc,aACd3M,WAAW,UACXzK,aAAa,QACbqE,iBAAiB,IACjB3E,kBAAkB,uDAClBo4C,qBAAqB,QACrBC,cAAc,eACdpX,UAAU,cAGVqX,mBAAmB,8DACnBC,mBAAmB,qBACnBC,kBAAkB,cAClBC,uBAAuB,WACvBC,oBAAoB,gBACpBC,wBAAwB,gBAGxBG,YAAY,UACZxrD,MAAM,QACNyrD,aAAa,QAGbC,UAAU,OAGVC,iBAAiB,UAGjBL,UAAU,UAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,cAClBC,mBAAmB,aACnBC,oBAAoB,aACpBC,mBAAmB,UACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,yBACxBC,aAAa,qBACbC,wBAAwB,mBACxBC,yBAAyB,UACzBC,0BAA0B,KAC1BC,uBAAuB,eACvBC,yBAAyB,WACzBC,iCAAiC,UACjCC,gCAAgC,WAChCC,mBAAmB,KACnBC,kBAAkB,WAClBC,sBAAsB,gBACtBC,mBAAmB,IACnBC,kBAAkB,oBAClBC,8BAA8B,kBAC9BE,mBAAmB,YACnBD,mBAAmB,MACnBE,qBAAqB,CAAC,YAAY,UAAU,SAAS,YAAY,QAAQ,WAAW,SAAS,YAAY,WAAW,cAAc,aAAa,SAAA,GAC/IC,mBAAmB,CAAC,aAAa,eAAe,UAAU,QAAQ,YAAY,SAAS,QAAA,EAAA,EAAA;AC9EzF,MAAemB,KAAA,EACdvuD,MAAM,EACLk5B,YAAY,CAAC,WAAW,aAAa,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,YAAY,WAAW,YAAY,UAAA,GAC9HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,WAAW,WAAW,SAAS,UAAU,UAAU,SAAS,WACvEH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEvD3qB,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,OACTC,UAAU,UACVC,WAAW,OACXh6C,WAAW,eACXi6C,WAAW,UACXC,aAAa,YACbzgC,cAAc,YACd3M,WAAW,UACXzK,aAAa,WACbqE,iBAAiB,IACjB3E,kBAAkB,mCAClBo4C,qBAAqB,aACrBC,cAAc,oBACdpX,UAAU,eAEVqX,mBAAmB,gDACnBC,mBAAmB,kBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxBG,YAAY,OACZxrD,MAAM,QACNyrD,aAAa,aAGbC,UAAU,OAGVC,iBAAiB,OAGjBL,UAAU,SAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,UAClBC,mBAAmB,WACnBC,oBAAoB,UACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,UACvBC,wBAAwB,wBACxBC,aAAa,gBACbC,wBAAwB,WACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,kBAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,UACnBE,qBAAqB,CAAC,WAAW,aAAa,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,YAAY,WAAW,YAAY,UAAA,GACvIC,mBAAmB,CAAC,WAAW,WAAW,SAAS,UAAU,UAAU,SAAS,QAAA,EAAA,EAAA;AC7FlF,MAAeoB,KAAA,EACdxuD,MAAK,EACJk5B,YAAW,CAAC,YAAY,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS,UAAU,cAAc,aAAa,YAAY,UACpID,GAAAA,aAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC1FD,UAAS,CAAC,YAAY,QAAQ,SAAS,YAAY,OAAO,UAAU,SAAA,GACpEH,WAAU,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEhD3qB,QAAO,EACNkE,sBAAqB,UACrBq4C,SAAQ,MACRC,UAAS,aACTC,WAAU,QACVh6C,WAAU,iBACVi6C,WAAU,YACVC,aAAY,YACZzgC,cAAa,WACb3M,WAAU,YACVzK,aAAY,UACZqE,iBAAgB,8CAChB3E,kBAAiB,kDACjBo4C,qBAAoB,aACpBC,cAAa,YACbpX,UAAS,cAGTqX,mBAAkB,uDAClBC,mBAAkB,YAClBC,kBAAiB,eACjBC,uBAAsB,YACtBC,oBAAoB,kBACpBC,wBAAwB,yBAGxBG,YAAW,UACXxrD,MAAK,QACLyrD,aAAY,aAGZC,UAAS,MAGTC,iBAAiB,UAGjBL,UAAU,SAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,UAClBC,mBAAmB,cACnBC,oBAAoB,SACpBC,mBAAmB,SACnBC,uBAAuB,cACvBC,uBAAuB,UACvBC,wBAAwB,yBACxBC,aAAa,sBACbC,wBAAwB,kCACxBC,yBAAyB,aACzBC,0BAA0B,QAC1BC,uBAAuB,iBACvBC,yBAAyB,QACzBC,iCAAiC,cACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,WAClBC,sBAAsB,cACtBC,mBAAmB,IACnBC,kBAAkB,wBAClBC,8BAA8B,cAC9BE,mBAAmB,WACnBD,mBAAmB,QACnBE,qBAAqB,CAAC,YAAY,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS,UAAU,cAAc,aAAa,aAAa,WAC/IC,GAAAA,mBAAmB,CAAC,YAAY,QAAQ,SAAS,YAAY,OAAO,UAAU,SC5FhF,EAAA,EAAA;AAAA,MAAeqB,KAAA,EACdzuD,MAAM,EACLk5B,YAAY,CAAC,UAAU,WAAW,QAAQ,UAAU,OAAO,QAAQ,QAAQ,UAAU,YAAY,WAAW,UAAU,SAAA,GACtHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAE,eAAe,eAAe,WAAW,SAAS,WAAW,WAAW,SAAA,GACpFH,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD3qB,QAAQ,EACPkE,sBAAsB,WACtBq4C,SAAS,QACTC,UAAU,UACVC,WAAW,SACXh6C,WAAW,iBACXi6C,WAAW,aACXC,aAAa,YACbzgC,cAAc,UACd3M,WAAW,YACXzK,aAAa,WACbqE,iBAAiB,IACjB3E,kBAAkB,mDAClBo4C,qBAAqB,YACrBC,cAAc,kBACdpX,UAAU,aAEVqX,mBAAmB,uDACnBC,mBAAmB,cACnBC,kBAAkB,aAClBC,uBAAuB,YACvBC,oBAAoB,uBACpBC,wBAAwB,2BAGxBG,YAAY,UACZxrD,MAAM,QACNyrD,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,UAGjBL,UAAU,WAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,QAClBC,mBAAmB,UACnBC,oBAAoB,SACpBC,mBAAmB,OACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,uBACxBC,aAAa,qBACbC,wBAAwB,eACxBC,yBAAyB,aACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,SACzBC,iCAAiC,WACjCC,gCAAgC,SAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,QACtBC,mBAAmB,IACnBC,kBAAkB,sBAClBC,8BAA8B,cAC9BE,mBAAmB,OACnBD,mBAAmB,IACnBE,qBAAqB,CAAC,UAAU,WAAW,SAAS,UAAU,OAAO,QAAQ,QAAQ,WAAW,YAAY,WAAW,UAAU,SACjIC,GAAAA,mBAAmB,CAAC,eAAe,eAAe,WAAW,SAAS,WAAW,WAAW,SCvF9F,EAAA,EAAA;AAAA,MAAesB,KAAA,EACd1uD,MAAM,EACLk5B,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,SAAS,SAAS,UAAU,aAAa,WAAW,YAAY,UAAA,GAC3HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,WAAW,cAAc,SAAS,SAAS,WAAW,SAAS,QAAA,GAC1EH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,SACtBq4C,SAAS,OACTC,UAAU,SACVC,WAAW,SACXh6C,WAAW,eACXi6C,WAAW,UACXC,aAAa,YACbzgC,cAAc,eACd3M,WAAW,SACXzK,aAAa,WACbqE,iBAAiB,IACjB3E,kBAAkB,4CAClBo4C,qBAAqB,QACrBC,cAAc,iBACdpX,UAAU,WAGVqX,mBAAmB,sDACnBC,mBAAmB,kBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,eACpBC,wBAAwB,mBAGxBG,YAAY,UACZxrD,MAAM,SACNyrD,aAAa,QAGbC,UAAU,QAGVC,iBAAiB,UAGjBL,UAAU,QAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SAAA,EAAA;AC7DV,MAAemiC,KAAA,EACd3uD,MAAM,EACLk5B,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,OAAO,OAAO,UAAU,aAAa,WAAW,YAAY,UACvHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAA,GAC5FD,UAAU,CAAC,UAAU,YAAY,UAAU,UAAU,WAAW,UAAU,QAAA,GAC1EH,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD3qB,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,OACTC,UAAU,UACVC,WAAW,UACXh6C,WAAW,gBACXi6C,WAAW,UACXC,aAAa,QACbzgC,cAAc,UACd3M,WAAW,UACXzK,aAAa,UACbqE,iBAAiB,wCACjB3E,kBAAkB,6CAClBo4C,qBAAqB,YACrBC,cAAc,kBAGdC,mBAAmB,sDACnBC,mBAAmB,uBACnBC,kBAAkB,WAClBC,uBAAuB,WACvBC,oBAAoB,sBACpBC,wBAAwB,qBAGxBG,YAAY,WACZxrD,MAAM,SACNyrD,aAAa,YAGbC,UAAU,OACV/X,UAAU,YAGVgY,iBAAiB,WAGjBL,UAAU,WAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,SAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,iBACbC,wBAAwB,mBACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,UACzBC,iCAAiC,SACjCC,gCAAgC,UAChCC,mBAAmB,MACnBC,kBAAkB,SAClBC,sBAAsB,OACtBC,mBAAmB,UACnBC,kBAAkB,wBAClBC,8BAA8B,eAC9BE,mBAAmB,UACnBD,mBAAmB,MACnBE,qBAAqB,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,OAAO,OAAO,UAAU,aAAa,WAAW,YAAY,UAChIC,GAAAA,mBAAmB,CAAC,UAAU,YAAY,UAAU,UAAU,WAAW,UAAU,QCxFrF,EAAA,EAAA;AAAA,MAAewB,KAAA,EACd5uD,MAAM,EACLk5B,YAAY,CAAC,WAAW,YAAY,QAAQ,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UAC3HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU,QACxEH,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,QACtBq4C,SAAS,OACTC,UAAU,SACVC,WAAW,SACXh6C,WAAW,eACXi6C,WAAW,SACXC,aAAa,SACbzgC,cAAc,YACd3M,WAAW,SACXzK,aAAa,WACbqE,iBAAiB,IACjB3E,kBAAkB,2DAClBo4C,qBAAqB,eACrBC,cAAc,OACdpX,UAAU,cAGVqX,mBAAmB,2DACnBC,mBAAmB,oBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,mBACpBC,wBAAwB,qBAGxBG,YAAY,cACZxrD,MAAM,SACNyrD,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,cAGjBL,UAAU,UAGVhR,gBAAe,wBACfC,cAAa,sBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,YAClBC,mBAAmB,YACnBC,oBAAoB,aACpBC,mBAAmB,WACnBC,uBAAuB,OACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,gBACbC,wBAAwB,sBACxBC,yBAAyB,WACzBC,0BAA0B,OAC1BC,uBAAuB,aACvBC,yBAAyB,SACzBC,iCAAiC,OACjCC,gCAAgC,SAChCC,mBAAmB,OACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,gBAC9BE,mBAAmB,eACnBD,mBAAmB,SACnBE,qBAAqB,CAAC,WAAW,YAAY,QAAQ,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,aACpIC,mBAAmB,CAAC,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU;ACxFnF,MAAeyB,KAAA,EACd7uD,MAAM,EACLk5B,YAAY,CAAC,QAAQ,SAAS,QAAQ,SAAS,SAAS,WAAW,UAAU,WAAW,SAAS,QAAQ,SAAS,QAAA,GAClHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,SAAS,aAAa,QAAQ,YAAY,YAAY,QAAQ,WACzEH,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD3qB,EAAAA,GAAAA,QAAQ,EACPkE,sBAAsB,SACtBq4C,SAAS,OACTC,UAAU,SACVC,WAAW,MACXh6C,WAAW,SACXi6C,WAAW,UACXC,aAAa,SACbzgC,cAAc,YACd3M,WAAW,WACXzK,aAAa,OACbqE,iBAAiB,IACjB3E,kBAAkB,8BAClBo4C,qBAAqB,YACrBC,cAAc,iBACdpX,UAAU,WAGVqX,mBAAmB,iDACnBC,mBAAmB,sBACnBC,kBAAkB,SAClBC,uBAAuB,SACvBC,oBAAoB,kBACpBC,wBAAwB,4BAGxBG,YAAY,UACZxrD,MAAM,SACNyrD,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,UAGjBL,UAAU,UAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,SAAA,EAAA;AC7DV,MAAesiC,KAAA,EACd9uD,MAAM,EACLk5B,YAAY,CAAC,UAAU,SAAS,YAAY,WAAW,WAAW,WAAW,UAAU,WAAW,YAAY,WAAW,YAAY,SACrID,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,UAAU,aAAa,YAAY,UAAU,UAAU,YAAY,QAAA,GAC9EH,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD3qB,QAAQ,EACPkE,sBAAsB,YACtBq4C,SAAS,QACTC,UAAU,WACVC,WAAW,UACXh6C,WAAW,cACXi6C,WAAW,YACXC,aAAa,WACbzgC,cAAc,UACd3M,WAAW,cACXzK,aAAa,YACbqE,iBAAiB,IACjB3E,kBAAkB,2CAClBo4C,qBAAqB,QACrBC,cAAc,oBACdpX,UAAU,aAGVqX,mBAAmB,sDACnBC,mBAAmB,qBACnBC,kBAAkB,cAClBC,uBAAuB,YACvBC,oBAAoB,oBACpBC,wBAAwB,wBAGxBG,YAAY,WACZxrD,MAAM,QACNyrD,aAAa,QAGbC,UAAU,OAGVC,iBAAiB,WAGjBL,UAAU,WAGVhR,gBAAe,kBACfC,cAAa,gBAGb+O,YAAW,MACXC,gBAAe,UAGf9mD,MAAM,QACN6a,MAAM,YACNngB,MAAM,QACNmvB,OAAO,SACPlyB,KAAK,OACLmyB,MAAK,QACLC,QAAQ,UAGRo/B,kBAAkB,QAClBC,mBAAmB,WACnBC,oBAAoB,UACpBC,mBAAmB,OACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,uBACxBC,aAAa,sBACbC,wBAAwB,iBACxBC,yBAAyB,eACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,UACzBC,iCAAiC,UACjCC,gCAAgC,UAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,QACtBC,mBAAmB,IACnBC,kBAAkB,uBAClBC,8BAA8B,aAC9BE,mBAAmB,OACnBD,mBAAmB,IACnBE,qBAAqB,CAAC,SAAS,UAAU,WAAW,UAAU,UAAU,UAAU,SAAS,UAAU,WAAW,UAAU,aAAa,QACvIC,GAAAA,mBAAmB,CAAC,WAAW,cAAc,aAAa,WAAW,aAAa,aAAa,SCvDlF,EAAA,EAAA;AAAA,SAAA2B,cACd;AAAA,SAAO,IAAId,cAAc,EACxBR,IACAjD,IACAe,IACA8B,IACAC,IACAnjB,IACAojB,IACAC,IACAhlD,IACAklD,IACAC,IACAC,IACAC,IACAC,IACAnzD,IACAozD,IACAC,IACAG,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC;AAEF;AC/DO,MAAME,WACZ;AAAA,EAAA,YAAYz0D,YAAWyI,WAAWokB,QAAQ,CAAA,GAAA;AACzCxsB,SAAKwsB,QAAQ,EACZpnB,MAAM,oBAAIiQ,QACVg/C,OAAO,CAAC,QAAQ,UAAU,OAAA,GAC1BC,cAAc,CAAA,GACdC,YAAY,CAAA,GACZC,kBAAkB,GACfhoC,GAAAA,MAAAA;AAEJxsB,SAAKoI,YAAY;AACjBpI,SAAKqE,UAAU;AACfrE,SAAKy0D,wBAAwB,CAAA;AAC7Bz0D,SAAKL,YAAYA;AACjBK,SAAK00D,aAAa/0D,WAAU+T;AAC5B1T,SAAKwsB,QAAQxsB,KAAKgG,SAAAA;AAClByH,kBAAUzN,IAAAA;AACV,QAAGoI,WAAU;AAEZpI,WAAKoI,YAAYA;AACjBpI,WAAKkO,OAAOlO,KAAKoI,SACjB;AAAA,IAAA;AAEDpI,SAAK20D,cAAc,CAACC,UAAUC,aAAAA;AAC7B70D,WAAKyB,UAAU,iBAAiB,CAACozD,UAAUD,QAAU,CAAA;AAAA,IAAA,CAAA;AAAA,EAEtD;AAAA,EAED,WACC;AAAA,WAAO,EACH50D,GAAAA,KAAKwsB,OACR/sB,MAAMO,KAAKwsB,MAAM6nC,MAAMr0D,KAAKwsB,MAAMgoC,gBAAAA,EAAAA;AAAAA,EAEnC;AAAA,EAED,SAASK,UACR;AAAA,UAAMD,WAAW,EAAA,GAAK50D,KAAKwsB,MAAAA;AAC3B,QAAGqoC,SAASp1D,MAAK;AAChBo1D,eAASL,mBAAmBx0D,KAAKwsB,MAAM6nC,MAAMt9C,QAAQ89C,SAASp1D,IAAAA;AAAAA,IAC9D;AACDO,SAAKwsB,QAAQ,EAAA,GAAKxsB,KAAKwsB,OAAAA,GAAUqoC;AAEjC70D,SAAK80D,mBAAmBF,UAAU50D,KAAKwsB,KAEvC;AAAA,QAAIxsB,KAAKoI,WAAW;AACnBpI,WAAKkO,OAAOlO,KAAKoI,SAAAA;AAAAA,IACjB;AAAA,EACD;AAAA,EAED,cAAclC;AACblG,SAAKy0D,sBAAsB/lD,KAAKxI,OAAAA;AAGhC,WAAO,MAAA;AACN,YAAMwF,QAAQ1L,KAAKy0D,sBAAsB19C,QAAQ7Q,OACjD;AAAA,UAAIwF,UAAW,IAAG;AACjB1L,aAAKy0D,sBAAsB5qC,OAAOne,OAAO,CAAA;AAAA,MACzC;AAAA,IAEF;AAAA,EAAA;AAAA,EAED,mBAAmBkpD,UAAUC,UAC5B70D;AAAAA,SAAKy0D,sBAAsBjwD,QAAQ0B,aAAWA,QAAQ0uD,UAAUC,QAAAA,CAAAA;AAAAA,EAChE;AAAA,EAED,YAAYliD,WAEX;AAAA,UAAA,EAAMlT,MAAK2F,KAAEA,IAAQpF,KAAKgG,SAC1B;AAAA,UAAM+uD,UAAU,IAAI1/C,KAAKjQ,IAAAA;AACzB,QAAI3F,SAAS,QAAQ;AACpBs1D,cAAQ/0B,SAAS56B,KAAKkgB,SAAAA,IAAa3S,SACtC;AAAA,IAAA,WAAalT,SAAS,UAAU;AAC7Bs1D,cAAQC,YAAY5vD,KAAKigB,YAAgB1S,IAAAA,SAAAA;AAAAA,IAC5C,OAAS;AACNoiD,cAAQC,YAAY5vD,KAAKigB,YAAgB1S,IAAAA,YAAY,EACrD;AAAA,IAAA;AACD3S,SAAKi1D,SAAS,EAAE7vD,MAAM2vD,QAAAA,CAAAA;AAAAA,EACtB;AAAA,EAED,cACC;AAAA,UAAMG,YAAYl1D,KAAKwsB,MAAMgoC,mBAAmB,KAAKx0D,KAAKwsB,MAAM6nC,MAAMzsD;AACtE5H,SAAKi1D,SAAS,EAAET,kBAAkBU,SAClC,CAAA;AAAA,EAAA;AAAA,EAED,sBAAsB9sD;AACrB,UAAM3I,EAAAA,MAAK2F,KAAUpF,IAAAA,KAAKgG,SAE1B;AAAA,UAAMmI,SAAStO,SAASC,cAAc,KACtCqO;AAAAA,WAAOzJ,UAAUC,IAAI,2BAErB;AAAA,UAAMwwD,gBAAgBt1D,SAASC,cAAc,QAE7Cq1D;AAAAA,kBAAczwD,UAAUC,IAAI,4BAA4B,kBAAkB;AAC1EwJ,WAAO/N,YAAY+0D,aAEnB;AAAA,UAAMC,aAAav1D,SAASC,cAAc,KAAA;AAC1Cs1D,eAAW1wD,UAAUC,IAAI,0BAEzB;AAAA,QAAIlF,SAAS,QAAQ;AACpB21D,iBAAWC,YAAYjwD,KAAKkwD,eAAe,WAAW,EAAE5jC,OAAO,OAAA,CAAA,IAAY,MAAMtsB,KAAKigB,YACzF;AAAA,IAAA,WAAa5lB,SAAS,UAAU;AAC7B21D,iBAAWC,YAAYjwD,KAAKigB,YAC/B;AAAA,IAAA,OAAS;AACN,YAAMkwC,YAAY9iD,KAAKkI,MAAMvV,KAAKigB,gBAAgB,EAAM,IAAA;AACxD+vC,iBAAWC,YAAY,GAAGE,SAAAA,MAAeA,YAAY,CAAA;AAAA,IACrD;AAEDv1D,SAAK00D,WAAW7gD,OAAOuhD,YAAY,SAASp1D,KAAKw1D,YAAY5oD,KAAK5M,IAClEmO,CAAAA;AAAAA,WAAO/N,YAAYg1D,UAAAA;AAEnB,UAAMK,eAAe51D,SAASC,cAAc;AAE5C21D,iBAAa/wD,UAAUC,IAAI,4BAA4B,kBAAkB,aAAA;AACzEwJ,WAAO/N,YAAYq1D;AAEnBrtD,cAAUhI,YAAY+N,MAEtBnO;AAAAA,SAAK00D,WAAW7gD,OAAOshD,eAAe,SAASn1D,KAAK01D,YAAY9oD,KAAK5M,MAAO,EAAA,CAAA;AAC5EA,SAAK00D,WAAW7gD,OAAO4hD,cAAc,SAASz1D,KAAK01D,YAAY9oD,KAAK5M,MAAM,CAAA,CAAA;AAAA,EAC1E;AAAA,EAED,OAAOoI,WACNpI;AAAAA,SAAK00D,WAAW/gD,UAAAA;AAChB3T,SAAKoI,YAAYA,aAAapI,KAAKoI;AACnCpI,SAAKoI,UAAUlI,YAAY;AAE3B,QAAIF,CAAAA,KAAKqE,SAAQ;AAChBrE,WAAKqE,UAAUxE,SAASC,cAAc,KAAA;AACtCE,WAAKqE,QAAQK,UAAUC,IAAI;IAC3B;AACD3E,SAAKqE,QAAQnE,YAAY;AACzBF,SAAKoI,UAAUhI,YAAYJ,KAAKqE,OAEhCrE;AAAAA,SAAK21D,sBAAsB31D,KAAKqE,OAChC;AAAA,UAAMuxD,gBAAgB/1D,SAASC,cAAc,KAC7C81D;AAAAA,kBAAclxD,UAAUC,IAAI,yBAC5B3E;AAAAA,SAAKqE,QAAQjE,YAAYw1D;AAEzB,UAAMn2D,EAAAA,KAASO,IAAAA,KAAKgG,SACpB;AAAA,QAAIvG,SAAS,QAAQ;AACpBO,WAAK61D,eAAeD,aAAAA;AAAAA,IACvB,WAAan2D,SAAS,UAAU;AAC7BO,WAAK81D,iBAAiBF,aACzB;AAAA,IAAA,OAAS;AACN51D,WAAK+1D,gBAAgBH,aAAAA;AAAAA,IACrB;AAAA,EACD;AAAA,EAED,qBAAqBI,qBAAAA;AACpB,UAAM5wD,EAAAA,KAASpF,IAAAA,KAAKgG;AACpB,UAAMrG,aAAYK,KAAKL;AAEvB,QAAIs2D,cAAct2D,WAAUyF,KAAKghB,WAAW,IAAI/Q,KAAKjQ,IAAAA,CAAAA;AACrD,UAAMqa,UAAU9f,WAAUyF,KAAKT,IAAIhF,WAAUyF,KAAKghB,WAAW,IAAI/Q,KAAKjQ,IAAAA,CAAAA,GAAQ,GAAG,MAAA;AAEjF4wD,wBAAoBtxD,UAAUC,IAAI,yBAElC;AAAA,UAAMuxD,cAAcv2D,WAAUyF,KAAKq7B,YAAY;AAE/C,WAAOw1B,YAAY/+C,QAAYuI,IAAAA,QAAQvI,QAAW,GAAA;AACjD,YAAM9D,QAAQ8iD,YAAYD,WAAAA;AAE1B,YAAME,aAAat2D,SAASC,cAAc,KAC1Cq2D;AAAAA,iBAAWpxD,aAAa,YAAYkxD,YAAY93B,OAChDg4B,CAAAA;AAAAA,iBAAWzxD,UAAUC,IAAI,4BACzBwxD;AAAAA,iBAAWd,YAAYjiD;AACvB4iD,0BAAoB51D,YAAY+1D,UAAAA;AAEhCF,oBAAct2D,WAAUyF,KAAKT,IAAIsxD,aAAa,GAAG,KAAA;AAAA,IACjD;AAAA,EAED;AAAA,EAED,cAAcn7C,KAAKpI,KAAAA;AAClB,UAAM/S,aAAYK,KAAKL;AACvB,QAAIitC,QAAQ;AACZ,QAAIwpB,WAAW,IAAI/gD,KAAKyF,GAAAA;AACxB,WAAMs7C,SAASl/C,QAAYxE,IAAAA,IAAIwE,QAAU,GAAA;AACxC01B,eAAS;AACTwpB,iBAAWz2D,WAAUyF,KAAKghB,WAAWzmB,WAAUyF,KAAKT,IAAIyxD,UAAU,GAAG,MAAA,CAAA;AAAA,IACrE;AACD,WAAOxpB;AAAAA,EACP;AAAA,EAED,eAAexkC,WACd;AAAA,UAAA,EAAMhD,MAAKkvD,cAAcC,YAAY8B,SAAcr2D,IAAAA,KAAKgG,SAExD;AAAA,QAAIswD,mBAAmBhC,aAAa,CACpC;AAAA,QAAIiC,mBAAmBjC,aAAa,CAAA;AAEpC,UAAMkC,iBAAiBjC,WAAWkC,OAAO,CAACn5C,KAAKlY;AAC9C,YAAMsxD,WAAW12D,KAAKL,UAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAKjQ;AACxDkY,UAAIo5C,SAASx/C,QAAa,CAAA,IAAA;AAC1B,aAAOoG;AAAAA,IAAG,GACR,CAAE;AAIL,UAAM04C,sBAAsBn2D,SAASC,cAAc,KACnDE;AAAAA,SAAK22D,qBAAqBX,mBAAAA;AAC1B5tD,cAAUhI,YAAY41D,mBAAAA;AAEtB,UAAMr2D,aAAYK,KAAKL;AACvB,UAAMi3D,YAAYj3D,WAAUyF,KAAKghB,WAAWzmB,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKjQ,IAAAA,CAAAA,CAAAA;AAChF,UAAMyxD,aAAal3D,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKjQ,IAAAA,CAAAA;AACvD,UAAM0xD,WAAWn3D,WAAUyF,KAAKT,IAAIhF,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKjQ,IAAQ,CAAA,GAAA,GAAG,OACnF;AAAA,QAAI2xD,WAAWp3D,WAAUyF,KAAKT,IAAIhF,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKjQ,IAAQ,CAAA,GAAA,GAAG,OACjF;AAAA,QAAG2xD,SAAS54B,OAAa,MAAA,GAAE;AAC1B44B,iBAAWp3D,WAAUyF,KAAKT,IAAIhF,WAAUyF,KAAKghB,WAAW2wC,QAAAA,GAAW,GAAG,MAAA;AAAA,IACtE;AAED,QAAInqB,QAAQ5sC,KAAKg3D,cAAcJ,WAAWG,QAAAA;AAC1C,QAAGV,YAAYzpB,QAAQypB,UAAS;AAC/BU,iBAAWp3D,WAAUyF,KAAKT,IAAIoyD,UAAWV,WAAWzpB,OAAQ,MAAA;AAAA,IAC5D;AAED,QAAIqqB,WAAWL;AAEf,UAAMM,mBAAmBr3D,SAASC,cAAc,KAChDo3D;AAAAA,qBAAiBxyD,UAAUC,IAAI,yBAAA;AAE/B3E,SAAK00D,WAAW7gD,OAAOqjD,kBAAkB,SAAUtxD,CAAAA,WAAAA;AAClD,YAAMuxD,WAAWvxD,OAAM4O,OAAOqC,QAAQ,kBACtC;AAAA,YAAMzR,QAAO,IAAIiQ,KAAK8hD,SAAShkD,aAAa,gBAC5CnT,CAAAA;AAAAA,WAAKyB,UAAU,eAAe,CAAC2D,OAAMQ,MAAO,CAAA;AAAA,IAAA,CAAA;AAG7C,WAAMqxD,SAAS//C,QAAY6/C,IAAAA,SAAS7/C,QAAU,GAAA;AAC7C,YAAMi/C,aAAat2D,SAASC,cAAc,KAAA;AAC1Cq2D,iBAAWpxD,aAAa,kBAAkBpF,WAAU0iB,UAAUkD,YAAY0xC,QAAAA,CAAAA;AAC1Ed,iBAAWpxD,aAAa,YAAYkyD,SAAS94B,OAC7Cg4B,CAAAA;AAAAA,iBAAWj2D,YAAY+2D,SAAS72C,QAAAA;AAEhC,UAAG62C,SAAS//C,QAAY2/C,IAAAA,WAAW3/C,QAAU,GAAA;AAC5Ci/C,mBAAWzxD,UAAUC,IAAI,YAAA;AAAA,MACzB,WAAQsyD,SAAS//C,QAAAA,KAAa4/C,SAAS5/C,QAAU,GAAA;AACjDi/C,mBAAWzxD,UAAUC,IAAI,WAAA;AAAA,MACzB;AAED,UAAGsyD,SAAS94B,OAAa,MAAA,KAAK84B,SAAS94B,OAAAA,MAAa,GAAE;AACrDg4B,mBAAWzxD,UAAUC,IAAI,4BACzB;AAAA,MAAA;AAED,UAAG2xD,oBAAoBC,kBAAiB;AACvC,YAAGU,SAAS//C,aAAao/C,iBAAiBp/C,QAAAA,KAAa+/C,SAAS//C,QAAAA,IAAYq/C,iBAAiBr/C,QAAAA,GAAU;AACtGi/C,qBAAWzxD,UAAUC,IAAI,4BAAA;AAAA,QACzB;AAAA,MACD;AAED,UAAG6xD,eAAeS,SAAS//C,QAAAA,CAAAA,GAAW;AACrCi/C,mBAAWzxD,UAAUC,IAAI,0BAAA;AAAA,MACzB;AAEDwxD,iBAAWzxD,UAAUC,IAAI;AAEzBuyD,uBAAiB92D,YAAY+1D,UAC7Bc;AAAAA,iBAAWt3D,WAAUyF,KAAKT,IAAIsyD,UAAU,GAAG,KAAA;AAAA,IAC3C;AAED7uD,cAAUhI,YAAY82D,gBAAAA;AAAAA,EAEtB;AAAA,EAED,iBAAiB9uD,WAChB;AAAA,UAAA,EAAMhD,KAACA,IAAQpF,KAAKgG,SAAAA;AAEpB,UAAMoxD,UAAUv3D,SAASC,cAAc,KAAA;AACvCs3D,YAAQ1yD,UAAUC,IAAI,2BAAA;AAEtB,UAAM0yD,SAAS;AACf,aAAQ1vD,IAAI,GAAGA,IAAI,IAAIA,KAAI;AAC1B0vD,aAAO3oD,KAAK,IAAI2G,KAAKjQ,KAAKigB,YAAAA,GAAe1d,GAAG,CAAA,CAAA;AAAA,IAC5C;AAED,UAAM2vD,cAAct3D,KAAKL,UAAUyF,KAAKq7B,YAAY,IACpD42B;AAAAA,WAAO7yD,QAAQktB,WACd;AAAA,YAAM6lC,eAAe13D,SAASC,cAAc,KAAA;AAC5Cy3D,mBAAa7yD,UAAUC,IAAI,0BAC3B;AAAA,UAAGS,KAAKkgB,SAAAA,MAAeoM,MAAMpM,SAAAA,GAAW;AACvCiyC,qBAAa7yD,UAAUC,IAAI,4BAC3B;AAAA,MAAA;AACD4yD,mBAAaxyD,aAAa,cAAc2sB,MAAMpM;AAC9CiyC,mBAAar3D,YAAYo3D,YAAY5lC,KAAAA;AACrC1xB,WAAK00D,WAAW7gD,OAAO0jD,cAAc,SAAS,MAC7C;AAAA,cAAMxC,UAAU,IAAI1/C,KAAKqc,KAAAA;AACzB1xB,aAAKi1D,SAAS,EACb7vD,MAAM2vD,SACNt1D,MAAM,OAAA,CAAA;AAAA,MACL,CAEH23D;AAAAA,cAAQh3D,YAAYm3D,YAAAA;AAAAA,IAAa;AAElCnvD,cAAUhI,YAAYg3D,OAEtB;AAAA,UAAMI,WAAW33D,SAASC,cAAc,KAAA;AACxC03D,aAAS9yD,UAAUC,IAAI,yBACvB;AAAA,UAAM8yD,UAAU53D,SAASC,cAAc,QAAA;AACvC23D,YAAQpC,YAAY;AACpBoC,YAAQ/yD,UAAUC,IAAI,6BAAA;AACtB3E,SAAK00D,WAAW7gD,OAAO4jD,SAAS,SAAS,MACxCz3D;AAAAA,WAAKi1D,SAAS,EACbx1D,MAAM,OAAA,CAAA;AAAA,IACL,CAEH+3D;AAAAA,aAASp3D,YAAYq3D,OAAAA;AACrBrvD,cAAUhI,YAAYo3D,QACtB;AAAA,EAAA;AAAA,EAED,gBAAgBpvD,WAAAA;AACf,UAAMhD,EAAAA,KAASpF,IAAAA,KAAKgG,SACpB;AAAA,UAAMuvD,YAAY9iD,KAAKkI,MAAMvV,KAAKigB,YAAAA,IAAgB,EAAM,IAAA;AAExD,UAAM+xC,UAAUv3D,SAASC,cAAc,KAAA;AACvCs3D,YAAQ1yD,UAAUC,IAAI,0BAAA;AACtB,aAASgD,IAAI4tD,YAAY,GAAG5tD,KAAK4tD,YAAY,IAAI5tD,KAAK;AACrD,YAAM+vD,cAAc73D,SAASC,cAAc,KAAA;AAC3C43D,kBAAYrC,YAAY1tD;AACxB+vD,kBAAYhzD,UAAUC,IAAI,yBAAA;AAC1B+yD,kBAAY3yD,aAAa,aAAa4C,CAAAA;AACtC,UAAGvC,KAAKigB,kBAAkB1d,GAAE;AAC3B+vD,oBAAYhzD,UAAUC,IAAI,4BAAA;AAAA,MAC1B;AACD3E,WAAK00D,WAAW7gD,OAAO6jD,aAAa,SAAS,MAC5C13D;AAAAA,aAAKi1D,SAAS,EACb7vD,MAAM,IAAIiQ,KAAK1N,GAAGvC,KAAKkgB,SAAY,GAAA,CAAA,GACnC7lB,MAAM,SAAA,CAAA;AAAA,MACL;AAEH23D,cAAQh3D,YAAYs3D,WAEpB;AAAA,IAAA;AACDtvD,cAAUhI,YAAYg3D,OAEtB;AAAA,UAAMI,WAAW33D,SAASC,cAAc,KACxC03D;AAAAA,aAAS9yD,UAAUC,IAAI,yBACvB;AAAA,UAAM8yD,UAAU53D,SAASC,cAAc,QACvC23D;AAAAA,YAAQpC,YAAY;AACpBoC,YAAQ/yD,UAAUC,IAAI,6BACtB3E;AAAAA,SAAK00D,WAAW7gD,OAAO4jD,SAAS,SAAS,MACxCz3D;AAAAA,WAAKi1D,SAAS,EACbx1D,MAAM,SACL,CAAA;AAAA,IAAA,CAAA;AAEH+3D,aAASp3D,YAAYq3D,OACrBrvD;AAAAA,cAAUhI,YAAYo3D,QACtB;AAAA,EAAA;AAAA,EAED,aAAA32D;AACCb,SAAKy0D,wBAAwB,CAC7B;AAAA,QAAGz0D,KAAKqE,SAAQ;AACfrE,WAAKqE,QAAQnE,YAAY;AACzBF,WAAKqE,QAAQkf,OACb;AAAA,IAAA;AAEDvjB,SAAK00D,WAAW/gD,UAChB3T;AAAAA,SAAKyB,UAAU,aAAa;AAC5BzB,SAAKwN,gBAAAA;AAELxN,SAAKL,YAAY;AAAA,EACjB;AAAA;AC/Ta,SAAQg4D,cAACC;AAEvB,QAAMj4D,aAAY,EAAE4sD,SAAS,QAE7BsL;AAAAA,WAAcl4D,UACdm4D;AAAAA,WAAOn4D;AACPo4D,WAAcp4D,UAAAA;AACdq4D,WAASr4D,UAAAA;AAGTA,EAAAA,WAAU+zB,QAAQA;AAClB/zB,EAAAA,WAAUkc,cAAcyb;AACxB33B,EAAAA,WAAU+zB,MAAMukC,MAAM3gC;AACtB33B,EAAAA,WAAUoa,MAAM2Z,MAAM3Z;AACtBpa,EAAAA,WAAUg0B,QAAQD,MAAMC;AACxBh0B,EAAAA,WAAUwzB,UAAUO,MAAMP;AAC1BxzB,EAAAA,WAAUyB,SAASA,OAAOzB,UAC1BA;AAAAA,EAAAA,WAAUm0B,OAAOJ,MAAMI;AAEvBn0B,EAAAA,WAAUu4D,oBAAoB,SAAS9vD,WAAW7G,QAAAA;AACjD,WAAO,IAAI6yD,WAAWz0D,YAAWyI,WAAW7G,MAC9C;AAAA,EAAA;AAMC5B,EAAAA,WAAUw4D,qBAAqB7gC,YAAYjB;AAC3C12B,EAAAA,WAAUsT,gBAAgBqkB,YAAY1C;AACtCj1B,EAAAA,WAAUy4D,cAAc9gC,YAAYpC;AAEpC,QAAMmjC,aAAa/2D,QAAQ3B;AAC3BA,EAAAA,WAAU+zB,MAAMC,MAAMh0B,YAAW04D,UAEjC14D;AAAAA,EAAAA,WAAUo5B,MAAMp5B,WAAUub,OAAO6d;AACjCp5B,EAAAA,WAAUs6B,UAAUh5B,OAAOg5B;AAC3Bp5B,WAAWlB,UACX66B;AAAAA,WAAK76B;AAELsZ,WAAKtZ,UAAAA;AACL4B,WAAO5B,UAAAA;AACPiG,WAAMjG,UAAAA;AACN24D,WAAgB34D,UAAAA;AAChB62C,WAAK72C,UACL2pB;AAAAA,WAAS3pB,UACT6jC;AAAAA,WAAM7jC,UACN44D;AAAAA,WAAmB54D,UAEnB64D;AAAAA,WAAM74D;AACN84D,WACAt0B;AAAAA,WAAaxkC,UACb+4D;AAAAA,SAAoB/4D,UAEpBg5D;AAAAA,WAAUh5D,UACV;AAAA,QAAMi5D,OAAOzE,YAAAA;AACbx0D,EAAAA,WAAUi5D,OAAO,EAChBC,WAAWD,KAAKC,WAChBC,WAAW,SAASzlD,QAAAA;AACnB,QAAUA,OAAAA,WAAW,UAAS;AAC7B,UAAI0lD,eAAeH,KAAKI,UAAU3lD,MAAAA;AAClC,UAAI0lD,CAAAA,cAAa;AAChBA,uBAAeH,KAAKI,UAAU;MAC9B;AAEDr5D,MAAAA,WAAU0T,SAAS0lD;AAAAA,IACnB,WAAQ1lD,QAAO;AACf,UAAI1T,CAAAA,WAAU0T,QAAO;AACpB1T,QAAAA,WAAU0T,SAASA;AAAAA,MACxB,OAAS;AACJ,iBAAQ1L,KAAK0L,QAAO;AACnB,cAAGA,OAAO1L,CAAAA,KAAAA,OAAa0L,OAAO1L,CAAO,MAAA,UAAS;AAC7C,gBAAA,CAAIhI,WAAU0T,OAAO1L,CAAG,GAAA;AACvBhI,cAAAA,WAAU0T,OAAO1L,CAAAA,IAAK;YACtB;AAEDhI,YAAAA,WAAUg0B,MAAMh0B,WAAU0T,OAAO1L,CAAAA,GAAI0L,OAAO1L,CAAAA,GAAI,IACvD;AAAA,UAAA,OAAW;AACJhI,YAAAA,WAAU0T,OAAO1L,CAAK0L,IAAAA,OAAO1L,CAC7B;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAED,QAAI2L,SAAS3T,WAAU0T,OAAOC;AAC9BA,WAAO2lD,eAAgB3lD,OAAO08C;AAC9B18C,WAAO4lD,iBAAkB5lD,OAAO28C;AAChC38C,WAAO6lD,iBAAkB7lD,OAAO8E;AAEhC,QAAGzY,WAAUqI,YAAW;AACvBrI,MAAAA,WAAUiJ,aACV;AAAA,IAAA;AAAA,EAED,GACDowD,WAAWJ,KAAKI,UAAAA;AAEjBr5D,EAAAA,WAAUi5D,KAAKE,UAAU,IAEzBn5D;AAAAA,EAAAA,WAAUy5D,MAAM;AAEhB,QAAMC,gBAAgB,CAAA;AACtB15D,EAAAA,WAAU25D,UAAU,SAAS/3D,QAAAA;AAC5B,UAAMg4D,gBAAgBC,iBAAiBj4D,QAAQ,EAC7Ck4D,cAAc,CAAC,UACfC,GAAAA,aAAa,CAAC,UAAA,GACdC,WAAW,CAAC,QACV,EAAA,GAAA,EACFC,QAAQ,GACRl3D,OAAO,GACPL,UAAU,GACVq3D,aAAa,GACbD,cAAc,GACdE,WAAU,EAGZJ,CAAAA;AAAAA,kBAAc/0D,QAAQ,SAASwI,MAAAA;AAC9B,UAAIqsD,CAAAA,cAAcrsD,IAAM,GAAA;AACvB,cAAM6sD,SAASjC,iBAAiBkC,aAAa9sD,IAAAA;AAC7C,YAAG6sD,QAAO;AACTA,iBAAOl6D,UACP05D;AAAAA,wBAAcrsD,IAAQ,IAAA;AAAA,QAC3B,OAAS;AACJ,gBAAM,IAAI7J,MAAM,oBAAoB6J;QACpC;AAAA,MACD;AAAA,IACJ,CACA;AAAA,EAAA;AAEC,WAASwsD,iBAAiBj4D,QAAQw4D,cAAcC;AAC/C,UAAMphD,SAAS,CAEf;AAAA,eAAUjR,KAAKpG,QAAO;AACrB,UAAGA,OAAOoG,CAAAA,GAAG;AACZ,cAAMsyD,YAAYtyD,EAAE+E,YACpB;AAAA,YAAGqtD,aAAaE,SAAAA,GAAW;AAC1BF,uBAAaE,SAAWz1D,EAAAA,QAAQ,SAAS01D,KAAAA;AACxC,kBAAMC,iBAAiBD,IAAIxtD,YAC3B;AAAA,gBAAA,CAAInL,OAAO44D,cAAAA,GAAgB;AAC1BvhD,qBAAOlK,KAAKyrD,cACZ;AAAA,YAAA;AAAA,UACP,CACK;AAAA,QAAA;AACDvhD,eAAOlK,KAAKurD,SACZ;AAAA,MAAA;AAAA,IACD;AAEDrhD,WAAO6d,KAAK,SAAS3yB,GAAGC,GACvB;AAAA,YAAMq2D,SAASJ,WAAWl2D,MAAM;AAChC,YAAMu2D,SAASL,WAAWj2D,CAAM,KAAA;AAChC,UAAGq2D,SAASC,QAAO;AAClB,eAAO;AAAA,MACX,WAAYD,SAASC,QAAO;AACxB;MACJ,OAAQ;AACJ,eAAO;AAAA,MACP;AAAA,IACJ,CAEE;AAAA,WAAOzhD;AAAAA,EACP;AAED,SAAOjZ;AAER;AC5Me,MAAM26D,kBAAAA;AAAAA,EACpB,YAAY/4D,QACXvB;AAAAA,SAAKu6D,cAAc;AACnB,eAAU5yD,KAAKpG,QAAO;AACrBvB,WAAKu6D,YAAY5yD,CAAAA,IAAKpG,OAAOoG,CAAAA;AAAAA,IAC7B;AAAA,EACD;AAAA,EAED,aAAaqF,MAAMosD,KAClBp5D;AAAAA,SAAKu6D,YAAYvtD,IAAAA,IAAQosD;AAAAA,EACzB;AAAA,EAED,aAAapsD,MAAAA;AACZ,WAAOhN,KAAKu6D,YAAYvtD,IAAAA;AAAAA,EACxB;ACVF5N;AAAAA,WAAAA;AAOA,MAAMo7D,iBAAAA;AAAAA,EAEL,YAAaC,YACZz6D;AAAAA,SAAK06D,QAAQ;AACb16D,SAAK26D,oBAAoB,CAAA;AACzB36D,SAAK46D,qBAAqBH;AAC1Bz6D,SAAK66D,qBAAqB,IAAIP,kBAAkBG,UAChD;AAAA,EAAA;AAAA,EAED,OAAO98B,MACN39B;AAAAA,SAAK26D,kBAAkBjsD,KAAKivB;AAE5B,QAAGz8B,SAAOvB,WAAU;AACnBg+B,WAAKz8B,SAAOvB,SACZ;AAAA,IAAA;AAAA,EACD;AAAA,EAED,qBAAqBm7D,YAAAA;AACpB,QAAIn7D,aAAYg4D,cAAc33D,KAAK66D;AAEnC,aAASlzD,IAAI,GAAGA,IAAI3H,KAAK26D,kBAAkB/yD,QAAQD,KAAK;AACvD3H,WAAK26D,kBAAkBhzD,CAAAA,EAAGhI,UAC1B;AAAA,IAAA;AACDA,IAAAA,WAAUo7D,eAAe/6D,KAAK06D;AAE9B,QAAI16D,KAAKg7D,cAAa;AACrBh7D,WAAKg7D,aAAar7D,UAAAA;AAAAA,IAClB;AAED,QAAGm7D,YAAW;AACb96D,WAAKi7D,gBAAgBt7D,YAAWm7D,UAChC;AAAA,IAAA;AAED,WAAOn7D;AAAAA,EACP;AAAA,EAED,gBAAgBA,YAAWm7D,YAAAA;AAC1B,QAAGA,WAAWxB,SAAQ;AACrB35D,MAAAA,WAAU25D,QAAQwB,WAAWxB,OAC7B;AAAA,IAAA;AAED,QAAGwB,WAAWv5D,QAAO;AACpB5B,MAAAA,WAAUg0B,MAAMh0B,WAAU4B,QAAQu5D,WAAWv5D,QAAQ,IAAA;AAAA,IACrD;AAED,QAAGu5D,WAAWz4C,WAAU;AACvB1iB,MAAAA,WAAUgE,YAAY,oBAAoB;AACzChE,QAAAA,WAAUg0B,MAAMh0B,WAAU0iB,WAAWy4C,WAAWz4C,WAAW,IAC/D;AAAA,MAAA,GAAM,EAAClW,MAAM,KAAA,CAAA;AAAA,IACV;AAED,QAAG2uD,WAAWtnB,QAAO;AACpB,iBAAU5tC,UAASk1D,WAAWtnB,QAAO;AACpC7zC,QAAAA,WAAUgE,YAAYiC,QAAOk1D,WAAWtnB,OAAO5tC,MAAAA,CAAAA;AAAAA,MAC/C;AAAA,IACD;AAED,QAAGk1D,WAAWznD,QAAO;AACpB1T,MAAAA,WAAUi5D,KAAKE,UAAUgC,WAAWznD,MAAAA;AAAAA,IACpC;AAED,QAAG5L,MAAMC,QAAQozD,WAAWI,SAAW,GAAA;AACtCJ,iBAAWI,UAAU12D,QAAQ,SAAS2B,UACrCxG;AAAAA,QAAAA,WAAUw7D,YAAYh1D,QAC1B;AAAA,MAAA,CAAA;AAAA,IACG;AAED,QAAG20D,WAAW1yD,WAAU;AACvBzI,MAAAA,WAAUmB,KAAKg6D,WAAW1yD,SAC7B;AAAA,IAAA,OAAS;AACNzI,MAAAA,WAAUmB,KACV;AAAA,IAAA;AAED,QAAGg6D,WAAWhhC,MAAK;AAClB,UAAA,OAAUghC,WAAWhhC,SAAS,UAAS;AACtCn6B,QAAAA,WAAU62C,KAAKskB,WAAWhhC,IAC9B;AAAA,MAAA,OAAQ;AACJn6B,QAAAA,WAAU+6B,MAAMogC,WAAWhhC;MAC3B;AAAA,IACD;AAAA,EACD;AC3Fa;AAAA,SAAQshC,aAACz7D,YAAAA;AAExBA,EAAAA,WAAU4B,OAAO85D,mBAAmB;AACpC17D,EAAAA,WAAU27D,qBAAqB,SAASxnD,GACvC;AAAA,QAAIiF,QAAQjF,EAAEU;AACd,QAAIwP,KAAKjL,MAAM5F,aAAa,gBAC5B;AAAA,QAAIooD,MAAM57D,WAAUyF,KAAKs7B,YAAY/gC,WAAU4B,OAAOghC,UAAU,OAAO,IAAA;AACvE,QAAIve,IAAI;AACPrkB,MAAAA,WAAUyG,eAAem1D,IAAIv3C,EAAAA,GAAKrkB,WAAU4B,OAAO85D,gBACnD;AAAA,UAAIvnD,KAAKA,EAAEC;AACVD,UAAEC,eACH;AAAA,aAAO;AAAA,IACP;AAAA,EACF;AACApU,EAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AACzC,QAAI63D,aAAa,SAASpyC,MAAKqyC;AAC9BA,iBAAWA,YAAaryC,OAAI;AAE5B,UAAIzpB,CAAAA,WAAU0iB,UAAU,uBAAsBo5C,WAAU;AACvD97D,QAAAA,WAAU0iB,UAAU,uBAAsBo5C,QAAY97D,IAAAA,WAAU0iB,UAAUo5C,QAAAA;AAAAA,MAC1E;AACD,UAAIC,SAAS/7D,WAAU0iB,UAAU,uBAAsBo5C,QACvD;AAAA,UAAIE,MAAMh8D,WAAUyF,KAAKq7B,YAAY9gC,WAAU4B,OAAOghC,QAAAA;AACtD5iC,MAAAA,WAAU0iB,UAAUo5C,YAAY,SAASr2D,MAAAA;AACxC,eAAO,wBAAwBu2D,IAAIv2D,IAAAA,IAAQ,gBAAgBs2D,OAAOt2D,QAAQ;AAAA,MAC7E;AAAA,IACA;AAECo2D,eAAW,MACXA;AAAAA,eAAW,IAAI,WAAA;AACf,QAAIx7D,KAAKyO,QAAO;AACf,eAAS2a,OAAOppB,KAAKyO;AACpB+sD,mBAAWpyC,GAAAA;AAAAA,IACZ;AAEDppB,SAAK2N,gBAAgB3N,KAAKiP,MAAM,SAAStP,WAAU27D,kBACnD37D;AAAAA,IAAAA,WAAUiG,MAAM5F,KAAKiP,MAAM,SAAStP,WAAU27D,kBAAAA;AAAAA,EAC/C;AAEA;ACvCe,SAAQM,cAACj8D,YAAAA;AAExBA,EAAAA,WAAUyF,KAAKy2D,oBAAoB,SAASz2D;AAC3C,WAAOzF,WAAUyF,KAAKT,IAAIS,MAAM,GAAG,MACpC;AAAA,EAAA;AAEAzF,EAAAA,WAAU0iB,UAAUy5C,qBAAqB,SAAS/iD,OAAMC,KAAI1E,IAAAA;AAC3D,QAAIA,GAAG8F;AACN,aAAOpa,KAAKmuB,SAAS7Z,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,IAAI,MAAItU,KAAKklC,WAAWnsB,KAEzE;AAAA;AAAA,aAAOpZ,WAAU0iB,UAAU8L,SAASpV,KAAAA,IAAO,cAAYpZ,WAAU0iB,UAAU8L,SAASnV,GACtF;AAAA,EAAA;AACArZ,EAAAA,WAAU0iB,UAAU05C,qBAAqB,SAAShjD,OAAMC,KAAIpT,QAAAA;AAC3D,WAAOA,OAAMjE;AAAAA,EACd;AACAhC,EAAAA,WAAU0iB,UAAU25C,qBAAqB,WAAY;AAAA,WAAO;AAAA,EAAG;AAE/Dr8D,EAAAA,WAAUyF,KAAK62D,sBAAoB,WAAY;AAAA,WAAOt8D,WAAUyF,KAAK4Z,UAAUrf,WAAUqP,aAAgB,CAAA;AAAA,EAAA;AAEzGrP,EAAAA,WAAUgE,YAAY,oBAAmB,WAAA;AACxC,QAAIu4D,4BAA4Bv8D,WAAUw8D;AAC1Cx8D,IAAAA,WAAUw8D,wBAAwB,WAAA;AACjC,UAAIn8D,KAAKoV,SAAS,iBAAiB;AAClC,YAAA,CAAKpV,KAAKuB,OAAOoV,YAAY3W,KAAKuB,OAAO2Y;AACxCla,eAAK8Y,YACT;AAAA,MAAA,OAAS;AACN,YAAIojD;AACH,iBAAOA,0BAA0BpwD,MAAM9L,MAAM+L,SAC9C;AAAA,MAAA;AAAA,IACH;AAGC,QAAIyzB,MAAM7/B,WAAU0oC;AACpB1oC,IAAAA,WAAU0oC,cAAY,SAASR;AAC9B,UAAI7nC,KAAKoV,SAAS;AACjBgnD,wBAEA;AAAA;AAAA,eAAO58B,IAAI1zB,MAAM9L,MAAK+L,SACzB;AAAA,IAAA;AAEC,QAAIswD,uBAAuB18D,WAAUkiB;AACrCliB,IAAAA,WAAUkiB,mBAAmB;AAC5B,UAAG7hB,KAAKoV,SAAS,iBAAiB;AACjCzV,QAAAA,WAAU28D,mBAAmB38D,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,EAAGmnC,WAAW,CAAA,EAAGp0B;AAC7E/b,QAAAA,WAAUgJ,KAAK,cAAA,EAAgB,GAAGmnC,WAAW,CAAA,EAAGp0B,YAAY;AAAA,MAC5D;AACD,aAAO2gD,qBAAqBvwD,MAAM9L,MAAK+L,SACzC;AAAA,IAAA;AAIC,aAASwwD,cAAc98D,MACtB;AAAA,UAAIA,MAAK;AACR,YAAI+8D,IAAI78D,WAAU0T,OAAOC;AAEzB,YAAImpD,UAAU98D,WAAU4T,SAAS0b,qBACjC;AAAA,YAAIytC,aAAa/8D,WAAU4T,SAAS2b,qBAAqBstC,EAAEp3D,IAAAA;AAC3D,YAAIu3D,oBAAoBh9D,WAAU4T,SAAS4b,4BAA4BqtC,EAAE3L,WAAAA;AAEzElxD,QAAAA,WAAUgJ,KAAK,kBAAkB,CAAGzI,EAAAA,YAAU,UAAQu8D,UAAQ,0DACrDC,aAAW,MAAIF,EAAEp3D,OAAK,wEACkCu3D,oBAAkB,MAAIH,EAAE3L,cAAY;AAErGlxD,QAAAA,WAAUuR,cAAY;AACtBvR,QAAAA,WAAUiQ,UAAAA;AAAAA,MACV;AAAA,IACD;AAED,aAASwsD,kBAGR;AAAA,UAAI5oB,SAAS7zC,WAAU4nC,mBACvBiM;AAAAA,aAAO/c,KAAK,SAAS3yB,GAAEC,GAAI;AAAA,eAAOD,EAAEyV,aAAWxV,EAAEwV,aAAW,IAAG;AAAA,MAAE;AAEjE,UAAIqjD,YAAYj9D,WAAU4T,SAAS6b,qBACnC;AAAA,UAAIC;AAEJ,UAAIpoB,OAAK,kCAAgC21D,YAAU;AACnD,eAASj1D,IAAE,GAAGA,IAAE6rC,OAAO5rC,QAAQD,KAAI;AAClC,YAAI2M,KAAKk/B,OAAO7rC,CAAAA;AAChB,YAAIopC,WAAYz8B,GAAGk6B,QAAO,sCAAoCl6B,GAAGk6B,QAAM,MAAK;AAC5E,YAAIA,QAASl6B,GAAG66B,YAAW,iCAA+B76B,GAAG66B,YAAU,MAAK;AAC5E,YAAI0tB,WAAWl9D,WAAU0iB,UAAUgjB,YAAY/wB,GAAGiF,YAAYjF,GAAGuF,UAAUvF;AAE3E+a,gCAAwB1vB,WAAU4T,SAAS8b,sBAAsB/a,EACjE;AAAA,YAAIwoD,0BAA0Bn9D,WAAU4T,SAASgc,uBAEjDtoB;AAAAA,gBAAM,UAAQooB,wBAAsB,6BAA2BwtC,WAAS,MAAIA,WAAS,MACnF,iBAAevoD,GAAGvU,KAAG,OAAKJ,WAAU4B,OAAO8iC,kBAAgB,OAAK/vB,GAAGvU,KAAG,cAAYyuC,QAASuC,YAC1Fz8B,GAAG+5B,eAAa,MAAI,2CACpB1uC,WAAU4B,OAAOgO,MAAM5P,WAAU0iB,UAAU06C,YAAYzoD,GAAGuF,UAASvF,GAAGiF,YAAYjF,EAAAA,IAAI3U,WAAU0iB,UAAU06C,YAAYzoD,GAAGiF,YAAYjF,GAAGuF,UAASvF,EAClJ,KAAA;AACFrN,gBAAM,QAAQ61D,uBAGd71D;AAAAA;AAAAA;AAAAA,gBAAM,WAAStH,WAAU0iB,UAAU26C,YAAY1oD,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,IAAI;AAAA,MAC/E;AACDrN,cAAM;AAGNtH,MAAAA,WAAUgJ,KAAK,cAAA,EAAgB,CAAGzI,EAAAA,YAAY+G;AAC9CtH,MAAAA,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,EAAGmnC,WAAW,CAAA,EAAGp0B,YAAY/b,WAAU28D,oBAAkB;AAGxF,UAAIW,cAAct9D,WAAUgJ,KAAK,cAAA,EAAgB,CAAGmnC,EAAAA,WAAW,CAC/D;AAAA,UAAIotB,WAAWD,YAAYntB,WAAWmtB,YAAYntB,WAAWloC,SAAO;AACpEs1D,eAASp2D,MAAMC,SAAUk2D,YAAY5yD,eAAe1K,WAAUgJ,KAAK,cAAA,EAAgB,GAAG0B,eAAgB,SAAU4yD,YAAY5yD,eAAa;AAEzI,UAAI6K,IAAEvV,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,EAAGtI,WAAWyvC;AAEnD,UAAIqtB,cAAcx9D,WAAUomB,mBAAAA;AAC5B,UAAGo3C,aAAY;AACdA,oBAAYj9D,YAAUP,WAAU0iB,UAAU+6C,YAAYz9D,WAAU6V,WAAW7V,WAAU+V,WAAW/V,WAAUyV,KAAAA;AAAAA,MAC1G;AAEDzV,MAAAA,WAAU8mC,YAAU,CAAA;AACpB,eAAS9+B,IAAE,GAAGA,IAAIuN,EAAEtN,SAAO,GAAGD;AAC7BhI,QAAAA,WAAU8mC,UAAU9+B,CAAAA,IAAGuN,EAAEvN,CAAAA;AAAAA,IAE1B;AAEDhI,IAAAA,WAAU09D,qBAAmB,SAAS59D,MACrCE;AAAAA,MAAAA,WAAU6V,YAAY7V,WAAU4B,OAAO+7D,gBAAc39D,WAAUyF,KAAK62D,oBAAoBt8D,WAAU2V,KAAAA;AAClG3V,MAAAA,WAAU+V,YAAY/V,WAAU4B,OAAOg8D,cAAY59D,WAAUyF,KAAKy2D,kBAAkBl8D,WAAU6V,WAAW,CAAA;AAEzG+mD,oBAAc98D,IAAAA;AACd,UAAIA,MAAK;AACRE,QAAAA,WAAU8a,QAAQ;AAClB9a,QAAAA,WAAUic,SAAS;AACnBjc,QAAAA,WAAUuR,cAAc;AAExBkrD,wBAAAA;AAAAA,MACH,OAAS;AACNz8D,QAAAA,WAAUuR,cAAc;AAAA,MAExB;AAAA,IACH;AAAA,EACA,CAGA;AAAA;AC5Ie,SAAQssD,YAAC79D,YAEvBA;AAAAA,EAAAA,WAAUyF,KAAKq4D,aAAa,SAASr4D,MAAM86B,KAAAA;AAC1C,WAAOvgC,WAAUyF,KAAKT,IAAIS,MAAM,IAAE86B,KAAK,OACzC;AAAA,EAAA;AAECvgC,EAAAA,WAAU0iB,UAAU06C,cAAc,SAAShkD,OAAMC,KAAI1E,IACpD;AAAA,QAAIA,GAAG8F,QAAO;AACb,aAAO,GAAGpa,KAAKklC,WAAWnsB,KAAY/Y,CAAAA,MAAAA,KAAKklC,WAAWlsB,GAAAA,CAAAA;AAAAA,IACzD,OAAO;AACJ,aAAOrZ,WAAU0T,OAAOC,OAAOylC;AAAAA,IAC/B;AAAA,EACH;AACCp5C,EAAAA,WAAU0iB,UAAU26C,cAAc,SAASjkD,OAAMC,KAAI1E,IAAAA;AACpD,WAAOA,GAAG3S;AAAAA,EACZ;AAEC,QAAM+7D,eAAe/9D,WAAUyF,KAAKq7B,YAAY,OAChD;AAAA,QAAMk9B,cAAch+D,WAAUyF,KAAKq7B,YAAY;AAE/C9gC,EAAAA,WAAU0iB,UAAUu7C,aAAa,SAASx4D,MACzC;AAAA,WAAO,oCAAoCs4D,aAAat4D;oCACtBu4D,YAAYv4D,IAAAA,CAAAA;AAAAA,EAChD;AACCzF,EAAAA,WAAU0iB,UAAU+6C,cAAc,SAASrkD,OAAOC;AACjD,WAAOrZ,WAAU0iB,UAAU6f,WAAWviC,WAAUqG,SAAAA,EAAWZ,IAC7D;AAAA,EAAA;AAECzF,EAAAA,WAAUyF,KAAKk4D,eAAa,SAASl4D,MACpC;AAAA,WAAOzF,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKjQ,IAC7C,CAAA;AAAA,EAAA;AAEC,MAAIsW,YAAY;AAEhB/b,EAAAA,WAAUgE,YAAY,oBAAmB,WAAA;AACxC,QAAIu4D,4BAA4Bv8D,WAAUw8D;AAC1Cx8D,IAAAA,WAAUw8D,wBAAwB;AACjC,UAAIn8D,KAAKoV,SAAS,UAAU;AAC3B,YAAA,CAAKpV,KAAKuB,OAAOoV,YAAY3W,KAAKuB,OAAO2Y;AACxCla,eAAK8Y,YAAAA;AAAAA,MACV,OAAU;AACN,YAAIojD;AACH,iBAAOA,0BAA0BpwD,MAAM9L,MAAM+L,SAAAA;AAAAA,MAC9C;AAAA,IACJ;AAGE,QAAIyzB,MAAM7/B,WAAU0oC;AACpB1oC,IAAAA,WAAU0oC,cAAY,SAASR,KAC9B;AAAA,UAAI7nC,KAAKoV,SAAS;AACjBgnD,wBAEA;AAAA;AAAA,eAAO58B,IAAI1zB,MAAM9L,MAAK+L,SAAAA;AAAAA,IAC1B;AAEE,QAAIswD,uBAAuB18D,WAAUkiB;AACrCliB,IAAAA,WAAUkiB,mBAAmB,WAAA;AAC5B,UAAG7hB,KAAKoV,SAAS,UAAU;AAC1BsG,oBAAY/b,WAAUgJ,KAAK,cAAA,EAAgB,GAAG+S;AAC9C/b,QAAAA,WAAUgJ,KAAK,cAAA,EAAgB,CAAG+S,EAAAA,YAAY;AAAA,MAC9C;AACD,aAAO2gD,qBAAqBvwD,MAAM9L,MAAK+L,SAAAA;AAAAA,IAC1C;AAEE,aAASqwD,kBACR;AAAA,YAAM5oB,SAAS7zC,WAAU4nC,mBAAAA;AACzBiM,aAAO/c,KAAK,SAAS3yB,GAAEC,GAAI;AAAA,eAAOD,EAAEyV,aAAWxV,EAAEwV,aAAW,IAAA;AAAA,MAAK,CAAA;AAEjE,YAAMskD,eAAe,CAAA;AACrB,UAAI5G,WAAWt3D,WAAUqG,SAAWuP,EAAAA;AACpC,YAAMkK,UAAU9f,WAAUqG,SAAWyP,EAAAA;AACrC,aAAMwhD,SAAS//C,QAAYuI,IAAAA,QAAQvI,QAAU,GAAA;AAC5C2mD,qBAAa5G,SAAS//C,QAAa,CAAA,IAAA,CAAA;AACnC+/C,mBAAWt3D,WAAUyF,KAAKT,IAAIsyD,UAAU,GAAG,KAAA;AAAA,MAC3C;AAED,UAAI6G,YAAY;AAEhBtqB,aAAOhvC,QAAS8P;AACf,YAAIypD,aAAap+D,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAKf,GAAGiF;AACtD,eAAOwkD,WAAW7mD,QAAY5C,IAAAA,GAAGuF,SAAS3C,QAAAA,GAAW;AACpD,cAAI2mD,aAAaE,WAAW7mD,QAAY,CAAA,GAAA;AACvC2mD,yBAAaE,WAAW7mD,QAAWxI,CAAAA,EAAAA,KAAK4F;AACxCwpD,wBAAY;AAAA,UACZ;AACDC,uBAAap+D,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAIo5D,YAAY,GAAG,KAAA,CAAA;AAAA,QACxE;AAAA,MAGF,CAAA;AAAA,UAAA,CAAID,WAAU;AACbn+D,QAAAA,WAAUgJ,KAAK,cAAA,EAAgB,CAAGzI,EAAAA,YAAY89D,gBAClD;AAAA,MAAA,OAAQ;AACJ,YAAI/2D,OAAO;AACX,iBAAQzH,OAAOq+D,cAAa;AAC3B52D,kBAAQg3D,UAAU,IAAI5oD,KAAK7V,MAAI,CAAA,GAAIq+D,aAAar+D,GAAAA,CAAAA;AAAAA,QAChD;AAEDG,QAAAA,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,EAAGzI,YAAY+G;AAAAA,MAC9C;AAEDtH,MAAAA,WAAUgJ,KAAK,cAAA,EAAgB,GAAG+S,YAAYA;AAAAA,IAE9C;AAID,aAASsiD,kBACR;AAAA,aAAO,yCAAyCr+D,WAAU0T,OAAOC,OAAOs9C,UAAAA;AAAAA,IACxE;AAED,aAASqN,UAAUz+D,KAAKg0C,QACvB;AAAA,UAAA,CAAIA,OAAO5rC,QAAO;AACjB,eAAO;AAAA,MACP;AACD,UAAIX,OAAO;AAAA;AAAA,0CAE4BtH,WAAU0iB,UAAUu7C,WAAWp+D,GAItEg0C,CAAAA;AAAAA;AAAAA;AAAAA,aAAOhvC,QAAS05D,mBAAAA;AACfj3D,gBAAQk3D,eAAe3+D,KAAK0+D,aAAc;AAAA,MAAA,CAAA;AAG3Cj3D,cAAQ;AACR,aAAOA;AAAAA,IACP;AAED,aAASk3D,eAAe3+D,KAAK0+D,eAC5B;AAAA,YAAME,QAAQz+D,WAAU0iB,UAAU06C,YAAYmB,cAAc3kD,YAAY2kD,cAAcrkD,UAAUqkD,aAAAA;AAChG,YAAMG,aAAa1+D,WAAUqG,SAAAA,EAAWiQ;AACxC,YAAMiP,MAAMvlB,WAAU0iB,UAAUgjB,YAAY64B,cAAc3kD,YAAY2kD,cAAcrkD,UAAUqkD,aAC9F;AAAA,YAAMrN,cAAclxD,WAAU0iB,UAAU26C,YAAYkB,cAAc3kD,YAAY2kD,cAAcrkD,UAAUqkD,aAAAA;AACtG,aAAO,yCAAyCh5C,OAAK,EAAA,IAAMg5C,cAAcn+D,MAAMs+D,aAAa,uCAAuC,EAAA,KAAO1+D,WAAU4B,OAAO8iC,eAAoB65B,KAAAA,cAAcn+D,EAEjJq+D;AAAAA;AAAAA,+CAAAA,KAAAA;AAAAA,+CACAvN;;IAE5C;AAEDlxD,IAAAA,WAAU69D,cAAY,SAAS/9D,MAC9B;AAAA,UAAIA,MAAK;AACRE,QAAAA,WAAU6V,YAAY7V,WAAU4B,OAAO+7D,gBAAgB39D,WAAUyF,KAAKk4D,aAAa39D,WAAU2V,KAC7F3V;AAAAA,QAAAA,WAAU+V,YAAY/V,WAAU4B,OAAOg8D,cAAc59D,WAAUyF,KAAKq4D,WAAW99D,WAAU6V,WAAW,CACpG7V;AAAAA,QAAAA,WAAU8a,QAAQ;AAClB9a,QAAAA,WAAUic,SAAS;AACnBjc,QAAAA,WAAUuR,cAAc;AAExB,cAAMwrD,aAAa/8D,WAAUomB,mBAC7B22C;AAAAA,mBAAWx8D,YAAYP,WAAU0iB,UAAU+6C,YAAYz9D,WAAU2V,KAEjE8mD;AAAAA,wBAAAA;AAAAA,MACJ,OAAU;AACNz8D,QAAAA,WAAUuR,cAAc;AAAA,MAExB;AAAA,IACJ;AAAA,EACA,CAeA;AAAA;AC5Ke,SAAQ8O,UAACrgB;AAEvBA,EAAAA,WAAU4B,OAAOye,YAAY;AAC7BrgB,EAAAA,WAAU4B,OAAO+8D,kBAAkB;AAEnC,MAAIC,iBAAiB,SAAUjqD,IAC9B;AAAA,QAAA,GAAMA,GAAGuF,WAAWvF,GAAGiF,eAAa,MAAK,KAAG,OAAO,KAAI;AACtD,aAAO;AAAA,IACP;AAGD,QAAG5Z,WAAU2W,cAAc,YAAY3W,WAAUyW,YAAY9B,GAAGvU,IAAG;AAClE,aAAO;AAAA,IACP;AACD,WAAQ;AAAA,EACV;AAICJ,EAAAA,WAAU6+D,aAAa,SAAS54D;AAC/B,QAAI64D,QAAQ,MACX3qC,QAAOn0B,WAAUssC,YAAYrmC,MAC9B;AAAA,QAAGA,OAAM84D,WAAU;AAClBD,cAAQ9+D,WAAUwV,SAASvP,OAAM84D,SACjC;AAAA,IAAA;AAED,QAAID,SAASA,MAAME,cAAc/4D,MAAQ,GAAA;AAAA,aACjCkuB,MAAK8qC;AAAAA,aACL9qC,MAAK4qC;AACL5qC,aAAAA,MAAK4xB;AACL5xB,aAAAA,MAAK2xB;AAAAA,IACZ;AAED,WAAO3xB;AAAAA,EACT;AAEC,MAAI+qC,4BAA4Bl/D,WAAUoqC;AAC1C,MAAI+0B,6BAA6Bn/D,WAAUqqC;AAE3C,MAAI+0B,mBAAmB,SAAUl3B,KAAKC,MAAAA;AACrC,QAAK9nC,CAAAA,KAAKkR,aAAa;AACtB,aAAO2tD,0BAA0BxkD,KAAKra,MAAM6nC,KAAKC,IAAAA;AAAAA,IACjD;AAED,WAAOg3B,2BAA2BzkD,KAAKra,MAAM6nC,KAAKC,IAAAA;AAAAA,EACpD;AAECnoC,EAAAA,WAAUoqC,0BAA0BpqC,WAAUqqC,2BAA2B,SAASnC,KAAKC,MACtF;AAAA,QAAA,CAAK9nC,KAAKuB,OAAOye,aACfhgB,KAAKkR,eAAelR,KAAKoV,SAAS,WAClCpV,KAAKoV,SAAS,WAAA,CAAYpV,KAAKuB,OAAO+8D;AACvC,aAAOS,iBAAiB1kD,KAAKra,MAAM6nC,KAAKC,IAAAA;AAEzC,aAASngC,IAAE,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AAClC,UAAI2M,KAAGuzB,IAAIlgC,CAEX;AAAA,UAAI2M,GAAG8F;AACN;AAED,UAAIpa,KAAKuB,OAAOye,aAAa,SAAS;AACrC,YAAKu+C,CAAAA,eAAejqD,EAAK,GAAA;AACxB,cAAItU,KAAKoV,SAAS,SAAS;AAC1ByyB,gBAAIhe,OAAOliB,KAAK,CAChB;AAAA,UAAA;AACD;AAAA,QACA;AAAA,MACD;AAED,UAAIq3D,KAAKh/D,KAAKw+D,WAAWlqD,EACzB;AAAA,UAAA,CAAIA,GAAG2qD,UAAS;AACfD,WAAG3xB,eAAe;AAAA,MACtB,OAAQ;AACJ2xB,WAAG3xB,eAAe;AAAA,MAClB;AACD2xB,SAAGnvB,eAAe;AAClBmvB,SAAGC,WAAW;AACdD,SAAGzlD,aAAa,IAAIlE,KAAK2pD,GAAGzlD,UAAAA;AAE5B,UAAK2lD,CAAAA,iBAAiB5qD,KAAK;AAC1B0qD,WAAGnlD,WAAW,IAAIxE,KAAKf,GAAGuF,QAC1B;AAAA,MAAA,OACI;AACJmlD,WAAGnlD,WAAWslD,WAAWH,GAAGzlD,UAC5B;AAAA,YAAIvZ,KAAKuB,OAAOwc,aAAa,IAAI;AAChCihD,aAAGnlD,WAAWulD,YAAYJ,GAAGzlD,YAAYvZ,KAAKuB,OAAOwc,SAAAA;AAAAA,QACrD;AAAA,MACD;AAED,UAAIshD,gBAAgB;AACpB,UAAIL,GAAGzlD,aAAavZ,KAAK0V,aAAaspD,GAAGnlD,WAAW7Z,KAAKwV,aAAawpD,GAAGzlD,aAAaylD,GAAGnlD,UAAU;AAClGguB,YAAIlgC,CAAKq3D,IAAAA;AACTK,wBAAgB;AAAA,MAChB;AAKD,UAAIC,KAAKt/D,KAAKw+D,WAAWlqD,EACzBgrD;AAAAA,SAAGL,WAAW;AACdK,SAAGzlD,WAAW,IAAIxE,KAAKiqD,GAAGzlD,QAC1B;AAAA,UAAIylD,GAAG/lD,aAAavZ,KAAKwV;AACxB8pD,WAAG/lD,aAAa6lD,YAAYp/D,KAAKwV,WAAWxV,KAAKuB,OAAOmY;;AAExD4lD,WAAG/lD,aAAa6lD,YAAYD,WAAW7qD,GAAGiF,UAAAA,GAAavZ,KAAKuB,OAAOmY;AAEpE,UAAI4lD,GAAG/lD,aAAavZ,KAAK0V,aAAa4pD,GAAG/lD,aAAa+lD,GAAGzlD,UAAU;AAClE,YAAIwlD,eAAc;AACjBx3B,cAAIhe,OAAOliB,IAAE,GAAE,GAAE23D,EAAAA;AAAAA,QACtB,OAAU;AACLz3B,cAAIlgC,GAAAA,IAAO23D;AACX;AAAA,QACA;AACDA,WAAGhyB,cAAc;AAAA,MACrB,OAAQ;AACJ0xB,WAAG1xB,cAAc;AACjB0xB,WAAGnvB,eAAe;AAAA,MAClB;AAAA,IAED;AAGD,QAAI0vB,SAAUv/D,KAAKsW,cAAc,SAAQ,QAAMwxB;AAC/C,WAAOi3B,iBAAiB1kD,KAAKra,MAAM6nC,KAAK03B;AAGxC,aAASL,iBAAiB5qD,KACzB;AAAA,UAAIkrD,WAAWL,WAAW7qD,IAAGiF,UAAAA;AAC7B,cAASjF,IAAGuF,WAAAA,CAAY2lD;AAAAA,IACxB;AACD,aAASL,WAAW/5D,MACnB;AAAA,UAAIo6D,WAAW7/D,WAAUyF,KAAKT,IAAIS,MAAM,GAAG,KAAA;AAC3Co6D,iBAAW7/D,WAAUyF,KAAK4Z,UAAUwgD,QACpC;AAAA,aAAOA;AAAAA,IACP;AACD,aAASJ,YAAYh6D,MAAMk7B,OAC1B;AAAA,UAAIjuB,MAAM1S,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAKjQ;AAC5CiN,UAAIuH,SAAS0mB,KACb;AAAA,aAAOjuB;AAAAA,IACP;AAAA,EACH;AACC,MAAIotD,yBAAyB9/D,WAAU4nC;AACvC5nC,EAAAA,WAAU4nC,qBAAqB,SAASC,YAAAA;AACvC,QAAMxnC,EAAAA,KAAKuB,OAAOye,aAAahgB,KAAKuB,OAAOmlB;AAC1C,aAAO+4C,uBAAuBplD,KAAKra,MAAMwnC;AAC1C,WAAOi4B,uBAAuBplD,KAAKra,MAAM,KAC3C;AAAA,EAAA;AACCL,EAAAA,WAAUgE,YAAY,sBAAsB,SAAU+7D,UAAUC,UAAUlgE,MAAM2F,MAC/EzF;AAAAA,IAAAA,WAAU0gB,aAAc5gB,QAAQ,SAASA,QAAQ,UAAUE,WAAUwgB,QAAQ1gB,IAC7E;AAAA,WAAO;AAAA,EACT,CAAA;AAECE,EAAAA,WAAUioC,sBAAsB,SAAStzB,IAAAA;AACxC,WAAUA,CAAAA,EAAAA,GAAG8F,UAAUpa,KAAKuB,OAAOye,cAAc,QAAShgB,KAAKuB,OAAOye,aAAa,WAAWu+C,eAAejqD,EAAAA;AAAAA,EAC/G;AAEC,MAAIsrD,YAAYjgE,WAAUsV;AAC1BtV,EAAAA,WAAUsV,cAAc,SAASlV,KAAAA;AAIhC,QAAIuU,KAAK3U,WAAUwV,SAASpV,GAAAA;AAC5B,QAAI8/D;AACJ,QAAI1+C;AACJ,QAAG7M,IAAI;AACNurD,yBAAoBlgE,WAAU4B,OAAOye,aAAAA,EAAergB,WAAUiiB,cAAcjiB,WAAUsmC,QAAQlmC,GAAAA,CAAAA,KAAQJ,WAAUqG,SAAAA,EAAWmQ;AAC3H,UAAI0pD,kBAAkB;AACrB1+C,kBAAUxhB,WAAU4B,OAAO+e;AAC3B3gB,QAAAA,WAAU4B,OAAO+e,gBAAgB;AAAA,MACjC;AAAA,IACD;AACDs/C,cAAU9zD,MAAMnM,YAAWoM,SAAAA;AAE3B,QAAGuI,IAAI;AACN,UAAIurD,kBAAkB;AACrBlgE,QAAAA,WAAU4B,OAAO+e,gBAAgBa;AAAAA,MACjC;AAAA,IACD;AAAA,EACH;AAEA;ACnLe,SAAQ2+C,UAACngE,YAAAA;AAExB,MAAIogE;AACJ,MAAIC;AAEJrgE,EAAAA,WAAU4B,OAAO0+D,kBAAkB;AAEnC,WAASC,gBAAgBC,UAAAA;AACxB,QAAIC,eAAezgE,WAAUsgB,kBAC7B;AAAA,QAAGmgD,gBAAgBD,UAAS;AAC3BJ,qBAAepgE,WAAUwV,SAASgrD,UAAUxgE,WAAU0sB,sBAAAA,CAAAA;AAAAA,IACtD;AAAA,EACF;AAEA1sB,EAAAA,WAAUgE,YAAY,gBAAe,SAAS5D;AAC7CmgE,oBAAgBngE,GAAAA;AAChB,WAAO;AAAA,EACR,CACAJ;AAAAA,EAAAA,WAAUgE,YAAY,oBAAmB,SAAS5D,KACjD;AAAA,QAAIuU,KAAK3U,WAAUwV,SAASpV,GAAAA;AAC5BigE,aAAS,CAAC1rD,GAAGiF,YAAYjF,GAAGuF,QAC5BqmD;AAAAA,oBAAgBngE,GAChB;AAAA,WAAO;AAAA,EACR,CAAA;AACAJ,EAAAA,WAAUgE,YAAY,kBAAiB,SAAS5D,KAC/C;AAAA,QAAA,CAAKA,OAAOJ,CAAAA,WAAUwV,SAASpV,GAAK;AAAA,aAAO;AAC3C,QAAIuU,KAAK3U,WAAUwV,SAASpV,GAAAA;AAC5B,SAAKJ,WAAU0gE,eAAe/rD,EAAI,GAAA;AACjC,UAAK0rD,CAAAA;AAAQ,eAAO;AACpB1rD,SAAGiF,aAAaymD,OAAO,CACvB1rD;AAAAA,SAAGuF,WAAWmmD,OAAO,CACrB1rD;AAAAA,SAAG8F,SAAOpa,KAAK4hB,cAActN,EAAAA;AAAAA,IAC7B;AACD,WAAO;AAAA,EACR,CAAA;AACA3U,EAAAA,WAAUgE,YAAY,wBAAuB,SAAS2Q,IAAGR,GAAE0N,QAAAA;AAC1D,WAAO7hB,WAAU0gE,eAAe/rD,EACjC;AAAA,EAAA,CAAA;AACA3U,EAAAA,WAAUgE,YAAY,gBAAe,SAAS5D,KAAGuU,IAAAA;AAChD,QAAIsE,SAASjZ,WAAU0gE,eAAe/rD,EAAAA;AACtC,QAAKsE,CAAAA;AACJjZ,MAAAA,WAAUuY,YAAYnY,GACxB;AAAA,EAAA,CAAA;AACAJ,EAAAA,WAAUgE,YAAY,eAAc,SAAS5D,KAAIugE,WAAW9+C;AAC3D8+C,gBAAY3gE,WAAUmhB,YAAYw/C,SAAAA;AAClCA,cAAUvgE,KAAKA;AAGf,QAAA,EAAKugE,UAAU/mD,cAAc+mD,UAAUzmD,WAAU;AAChD,UAAIvF,KAAK3U,WAAUwV,SAASpV;AAC5BugE,gBAAU/mD,aAAa,IAAIlE,KAAKf,GAAGiF,UAAAA;AACnC+mD,gBAAUzmD,WAAW,IAAIxE,KAAKf,GAAGuF,QACjC;AAAA,IAAA;AAED,QAAGymD,UAAU7a,UAAS;AACrB9lD,MAAAA,WAAU4gE,iBAAiBD,SAAAA;AAAAA,IAC3B;AACD,WAAO3gE,WAAU0gE,eAAeC,SACjC;AAAA,EAAA,CAAA;AAEA3gE,EAAAA,WAAU6gE,4BAA4B,SAAS/kC,OAAOglC,QAAAA;AACrD,QAAIl3C,SAAS5pB,WAAU0sB,sBAAAA;AACvB,QAAIoP,MAAMlS,MAAAA,KAAWk3C,OAAOl3C,MAAAA,KAAWkS,MAAM17B,MAAM0gE,OAAO1gE;AACzD,aAAO;AACR,WAAO;AAAA,EACR;AAEAJ,EAAAA,WAAU0gE,iBAAiB,SAAS/rD;AACnC,QAAIuzB,MAAM,CACV;AAAA,QAAIo4B,kBAAkBtgE,WAAU4B,OAAO0+D;AAEvC,QAAI3rD,GAAGmxC,UAAU;AAChB,UAAIib,YAAY/gE,WAAUghE,YAAYrsD,EAAAA;AACtC,eAAQu3B,IAAE,GAAGA,IAAE60B,UAAU94D,QAAQikC,KAAK;AACrC,YAAI+0B,OAAOjhE,WAAUopC,UAAU23B,UAAU70B,CAAAA,EAAGtyB,YAAYmnD,UAAU70B,GAAGhyB,QACrE;AAAA,iBAAQ4I,IAAE,GAAGA,IAAEm+C,KAAKh5D,QAAQ6a,KAAK;AAChC,eAAKm+C,KAAKn+C,CAAAA,EAAGi8C,aAAakC,KAAKn+C,CAAG1iB,EAAAA,OAAOuU,GAAGvU;AAC3C8nC,gBAAIn5B,KAAKkyD,KAAKn+C,CACf,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACH,OAAQ;AACNolB,YAAMloC,WAAUopC,UAAUz0B,GAAGiF,YAAYjF,GAAGuF,QAAAA;AAC5C,eAASlS,IAAE,GAAGA,IAAEkgC,IAAIjgC,QAAQD,KAAK;AAChC,YAAIk5D,aAAah5B,IAAIlgC,CAErB;AAAA,YAAIk5D,WAAW9gE,MAAMuU,GAAGvU,MAAO8gE,WAAWjC,gBAAgB,CAACiC,WAAWnC,WAAWmC,WAAWjC,YAAAA,EAAcn7D,KAAK,GAAA,KAAQ6Q,GAAGvU,IAAK;AAC9H8nC,cAAIhe,OAAOliB,GAAE,CAAA;AACb;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAED,QAAIy4D,eAAezgE,WAAUsgB,kBAC7B;AAAA,QAAIsJ,SAAS5pB,WAAU0sB;AAEvB,QAAIy0C,SAAS;AACb,QAAIV,cAAc;AACjB,UAAIn8C,QAAQ;AAEZ,eAAStc,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAI;AACnC,YAAIkgC,IAAIlgC,CAAAA,EAAG5H,MAAMuU,GAAGvU,MAAMC,KAAKwgE,0BAA0B34B,IAAIlgC,CAAAA,GAAI2M,EAChE2P;AAAAA;AAAAA,MACD;AAED,UAAIA,SAASg8C,iBAAiB;AAE7Ba,iBAAS;AAAA,MACT;AAAA,IACD,OACI;AACJ,UAAKj5B,IAAIjgC,UAAUq4D;AAClBa,iBAAS;AAAA,IACV;AACD,QAAA,CAAKA,QAAQ;AACZ,UAAIviD,MAAAA,CAAO5e,WAAU8B,UAAU,oBAAmB,CAAC6S,IAAGuzB,GAAAA,CAAAA;AACtD,UAAKtpB,CAAAA,KAAK;AACTjK,WAAGiV,MAAAA,IAAUw2C,gBAAczrD,GAAGiV,MAC9B;AAAA,MAAA;AACD,aAAOhL;AAAAA,IACP;AACD,WAAOuiD;AAAAA,EAER;AAEA;AC5He,SAAQC,qBAACphE,YAEvBA;AAAAA,EAAAA,WAAU4B,OAAOw/D,uBAAuB;AACxCphE,EAAAA,WAAU4B,OAAOy/D,uBAAuB;AACxCrhE,EAAAA,WAAU4B,OAAO0/D,gBAAgB;AACjCthE,EAAAA,WAAU4B,OAAO2/D,eAAe;AAEhC,MAAIC,uBAAuBxhE,WAAUwpC;AAGrC,MAAIi4B,SAAS;AACb,MAAIC,eAAe;AACnB,MAAIC,kBAAkB;AAEtB3hE,EAAAA,WAAUwpC,qBAAqB,SAAStB,KAAKC,MAAAA;AAC5C,QAAMnoC,EAAAA,WAAU4B,OAAOw/D,wBAAwBK,SAAS;AACvD,aAAOD,qBAAqBr1D,MAAM9L,MAAM+L,SAAAA;AAAAA,IACxC;AAED,QAAI89B,KAAK7pC,KAAKwI,GAAGuH;AACjB,QAAI+5B,QAAQ9pC,KAAK4b,OAAOK;AACxB,QAAI1S,IAAIvJ,KAAK4b,OAAOK,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CACjD;AAAA,QAAI6d,OAAO95B,KAAK2I,KAAK,cAAgB,EAAA,CAAA;AAErC,QAAK3I,CAAAA,KAAKkR;AACT22B,YAAM7nC,KAAK+pC,wBAAwBlC,KAAKC,IAAAA;AAAAA;AAExCD,YAAM7nC,KAAKgqC,yBAAyBnC,KAAKC,IAE1C;AAAA,QAAI9nC,KAAKkR,aAAa;AACrB,UAAI42B,MAAK;AACR9nC,aAAK4b,OAAOK,UAAU6tB;AAAAA,MAC1B,OAAU;AACN,YAAIy3B,MAAMznC,KAAKz5B;AACf,cAAMmG,OAAO+6D,IAAIv4C,iBAAiB,oBAAA;AAClC,YAAIxiB,MAAM;AACT,mBAASmB,IAAI,GAAGA,IAAInB,KAAKoB,QAAQD,KAAK;AACrC4B,cAAE5B,CAAAA;AAEF,gBAAK4B,EAAE5B,CAAAA,IAAMkiC,KAAK7pC,KAAK4b,OAAO7U,SAAS/G,KAAKwI,GAAGgI,mBAAmB;AAEjE,kBAAIuY,QAAQviB,KAAKmB,CAAGqhB,EAAAA,iBAAiB,qBAErC;AAAA,kBAAImhB,UAAUnqC,KAAK4b,OAAO7U,SAAS/G,KAAKwI,GAAGgI;AAC3C,kBAAGxQ,KAAKuB,OAAOgoC,mBAAiB,MAAMvpC,KAAKuB,OAAOgoC,oBAAoBhgC,EAAE5B,CAAAA,KAAM3H,KAAKuB,OAAOgoC,kBAAiB;AAC1GY,0BAAU5gC,EAAE5B,CAAAA,IAAKkiC;AAAAA,cACjB,YAAU7pC,KAAKuB,OAAOgoC,mBAAmB,KAAKM,KAAK7pC,KAAK4b,OAAO7U,SAAS/G,KAAKwI,GAAGgI,mBAAkB;AAClG25B,2BAAWnqC,KAAKuB,OAAOgoC,mBAAmB,KAAKM;AAAAA,cAC/C;AAEDrjC,mBAAKmB,CAAGb,EAAAA,MAAMC,SAAUojC,UAAUnqC,KAAKwI,GAAGgI,oBAAqB;AAG/D,uBAASiS,IAAI,GAAGA,IAAIsG,MAAMnhB,QAAQ6a,KAAK;AACtCsG,sBAAMtG,CAAGqtB,EAAAA,WAAW,CAAGhpC,EAAAA,MAAMC,SAASojC,UAAU;AAAA,cAChD;AACD5gC,gBAAE5B,CAAM4B,KAAAA,EAAE5B,IAAI,CAAA,KAAM,KAAKohB,MAAM,CAAG1e,EAAAA;AAAAA,YAClC;AAEDd,cAAE5B,CAAM4B,KAAAA,EAAE5B,IAAI,CAAA,KAAM,KAAKnB,KAAKmB,CAAAA,EAAGqhB,iBAAiB,qBAAA,EAAuB,CAAG3e,EAAAA;AAAAA,UAC5E;AACDd,YAAE6gC,QAAQ,CACV;AAAA,cAAIm3B,IAAIt4D,WAAWoB,eAAek3D,IAAIt4D,WAAWohC,gBAAAA,CAAiBk3B,IAAIC;AAK3E;AAAA,QAAA,OAAW;AACN,cAAA,CAAK35B,IAAIjgC,UAAU5H,KAAK2I,KAAK,eAAiB,EAAA,CAAA,EAAG7B,MAAM+f,cAAc;AACpEtd,cAAE,CAAM,IAAA;AACT,cAAIs+B,IAAIjgC,UAAU2B,EAAE,CAAA,KAAA,IAAU;AAG7B,gBAAImrC,MAAOnrC,EAAE,CAAK,IAAA,KAAKsgC,KAAK;AAC5B,gBAAGy3B,mBAAmB5sB,KAAK,GAAG;AAC7B10C,mBAAKiP,KAAKnI,MAAMC,SAAUs6D,eAAeC,kBAAkB5sB,KAAK,IAAK;AAAA,YACrE;AACDA,kBAAM;AACN,kBAAM+sB,YAAYzhE,KAAK2I,KAAK,mBAAmB,CAAG0B,EAAAA;AAClD,kBAAMq3D,eAAgB1hE,KAAK2I,KAAK,gBAAkB,EAAA,CAAA,EAAG0B;AACrDyvB,iBAAKhzB,MAAMC,SAAU/G,KAAKiP,KAAK5E,eAAeo3D,YAAYC,gBAAgB1hE,KAAKwI,GAAG6H,cAAc,KAAM;AACtG,gBAAI+nC,OAAOp4C,KAAK2I,KAAK,iBAAiB,CACtCyvC;AAAAA,iBAAKtxC,MAAMC,SAAS2tC;AACpB0D,iBAAKtxC,MAAM+f,aAActd,EAAE,CAAO,KAAA,KAAI,WAAW;AACjD6uC,mBAAOp4C,KAAK2I,KAAK,eAAA,EAAiB;AAClCyvC,iBAAKtxC,MAAMC,SAAS2tC;AACpB0D,iBAAKtxC,MAAM+f,aAActd,EAAE,WAAW,WAAW;AACjD,gBAAG6uC,KAAKtxC,MAAM+f,cAAc,UAAS;AACpCuxB,mBAAKtxC,MAAMgC,UAAU;AAAA,YAC5B,OAAW;AACJsvC,mBAAKtxC,MAAMgC,UAAU;AAAA,YACrB;AACDsvC,iBAAKh0C,YAAYmF,EAAE,CAAK,IAAA,uBAAuB;AAC/CvJ,iBAAKojB,aAAa7Z,EAAE,CAAA,IAAK,KAAKsgC;AAC9BtgC,cAAE,CAAA,IAAK;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAED,WAAOs+B;AAAAA,EACT;AAEC,MAAI85B,eAAe,CAAC,mBAAmB,kBAAkB,iBAAiB,cAAA;AAC1E,MAAIC,yBAAyB,SAASC,YACrCR;AAAAA,mBAAe;AACf,aAAS15D,IAAI,GAAGA,IAAIg6D,aAAa/5D,QAAQD,KAAK;AAE7C,UAAIvD,YAAYu9D,aAAah6D,CAC7B;AAAA,UAAIm6D,cAAeniE,WAAUgJ,KAAKvE,SAAczE,IAAAA,WAAUgJ,KAAKvE,SAAAA,EAAW,CAAK,IAAA;AAC/E,UAAI2C,SAAS;AACb,cAAQ3C,WACP;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AACJ2C,mBAAS+6D,YAAYz3D;AACrB;AAAA,QACD,KAAK;AACJtD,mBAAS,cAAgB+6D,YAAYz3D,eAAe,IAAI;AACxDi3D,4BAAkBv6D;AAClB;AAAA,QACD,KAAK;AACJ,cAAItH,OAAOE,WAAUqG,SAAWvG,EAAAA;AAEhC,cAAGqiE,YAAYhyB,WAAW,CAAA,KAAMrwC,QAAQ,SAAS;AAChD,gBAAIsiE,YAAY;AAChB,qBAAQp6D,KAAI,GAAGA,KAAIm6D,YAAYhyB,WAAWloC,QAAQD,MAAI;AACrD,kBAAGm6D,YAAYhyB,WAAWnoC,EAAG0C,EAAAA,eAAe03D,WAAU;AACrDA,4BAAYD,YAAYhyB,WAAWnoC,EAAAA,EAAG0C;AAAAA,cACtC;AAAA,YACD;AACDtD,qBAASg7D;AAAAA,UACT,OACI;AACJh7D,qBAAS0L,KAAKC,IAAIovD,YAAYz3D,eAAe,GAAGy3D,YAAYz3B,YAAAA;AAAAA,UAC5D;AACD,cAAI5qC,QAAQ,SAAS;AACpB,gBAAIE,WAAU4B,OAAOy/D,wBAAAA,CAAyBa,YAAY;AACzD,kBAAIG,cAAcF,YAAY94C,iBAAiB,oBAAA,EAAsBphB;AACrEb,uBAASi7D,cAAcriE,WAAU4B,OAAOy/D;AAAAA,YACxC;AACD,gBAAIa,YAAY;AACfC,0BAAYh7D,MAAMC,SAASA,SAAS;AAAA,YACpC;AAAA,UACD,WACQtH,QAAQ,QAAO;AACvBsH,qBAAS,MAAMpH,WAAU4B,OAAO0gE;AAAAA,UAChC,WACOxiE,QAAQ,UAAS;AACxBsH,qBAAS;AACT,gBAAG+6D,YAAYhyB,cAAcgyB,YAAYhyB,WAAWloC,QAAO;AAC1D,uBAAQ6a,IAAI,GAAGA,IAAIq/C,YAAYhyB,WAAWloC,QAAQ6a,KAAI;AACrD1b,0BAAU+6D,YAAYhyB,WAAWrtB,CAAAA,EAAGpY;AAAAA,cACpC;AAAA,YACD;AAED,gBAAGtD,SAAS,IAAIpH,WAAU4B,OAAO0/D,eAAc;AAC9Cl6D,uBAASpH,WAAU4B,OAAO0/D;AAAAA,YAC1B,OACG;AACHl6D,wBAAU;AAAA,YACV;AAAA,UACD,WACQtH,QAAQ,eAAc;AAC9B,gBAAIkuC,aAAahuC,WAAU6I,GAAG45C,2BAA2BziD,WAAU4B,OAAO0/D,eACzEiB;AAED,gBAAI1nD;AACJ,qBAAQqxB,IAAI,GAAGA,IAAIi2B,YAAYhyB,WAAWloC,QAAQikC,KAAI;AACrDrxB,uBAASsnD,YAAYhyB,WAAWjE,CAChC;AAAA,uBAAQppB,IAAI,GAAGA,IAAIjI,OAAOs1B,WAAWloC,QAAQ6a,KAAK;AACjD,oBAAIjZ,cAAc,GACjB24D,kBAAkB3nD,OAAOs1B,WAAWrtB,CAAGqtB,EAAAA,WAAW,CAEnD;AAAA,yBAAQsyB,IAAG,GAAGA,IAAID,gBAAgBryB,WAAWloC,QAAQw6D,KAAI;AACxD54D,iCAAe24D,gBAAgBryB,WAAWsyB,CAAAA,EAAG/3D;AAAAA,gBAC7C;AAED63D,6BAAa14D,cAAc7J,WAAU6I,GAAG45C;AACxC8f,6BAAcr2B,KAAK,MAAMppB,KAAK,KAAKA,KAAK,KAAMy/C,aAAa,IAAIA;AAE/D,oBAAIA,aAAav0B,YAAY;AAC5BA,+BAAau0B;AAAAA,gBACb;AAAA,cACD;AAAA,YACD;AAEDn7D,qBAAS4mC,aAAa;AAAA,UACtB,WACOluC,QAAQ,OAAO;AACtBsH,qBAAS;AACT,gBAAI8gC,MAAMi6B,YAAY94C,iBAAiB,eAAA;AAEvC,qBAASvG,IAAI,GAAGA,IAAIolB,IAAIjgC,QAAQ6a,KAAK;AACpC1b,wBAAU8gC,IAAIplB,CAAGpY,EAAAA;AAAAA,YACjB;AAED,gBAAItD,SAAS,IAAIpH,WAAU4B,OAAO2/D,cAAc;AAC/Cn6D,uBAASpH,WAAU4B,OAAO2/D;AAAAA,YAC1B,OACI;AACJn6D,wBAAU;AAAA,YACV;AAAA,UACD,WACOpH,WAAU0iE,WAAW;AAC5Bt7D,qBAAS;AAET,gBAAI+6D,YAAYhyB,WAAW,CAAGA,EAAAA,WAAW,CAAGA,EAAAA,cAAcgyB,YAAYhyB,WAAW,CAAGA,EAAAA,WAAW,GAAGA,WAAWloC,QAAQ;AACpH,kBAAIigC,MAAMi6B,YAAYhyB,WAAW,CAAA,EAAGA,WAAW,CAAGA,EAAAA,WAAW,CAAGA,EAAAA;AAEhE,uBAASrtB,IAAI,GAAGA,IAAIolB,IAAIjgC,QAAQ6a,KAAK;AACpC1b,0BAAU8gC,IAAIplB,CAAGpY,EAAAA;AAAAA,cACjB;AAEDtD,wBAAU;AAEV,kBAAGA,SAASpH,WAAU4B,OAAO0/D,eAAc;AAC1Cl6D,yBAASpH,WAAU4B,OAAO0/D;AAAAA,cAC1B;AAAA,YACD,OACG;AACHl6D,uBAASpH,WAAU4B,OAAO0/D;AAAAA,YAC1B;AAAA,UACD;AAED,cAAIthE,WAAU8O,UAAU9O,WAAU8O,OAAOhP,IAAO,GAAA;AAC/C,gBAAIoiE,YAAY;AACf96D,wBAAU;AACV+6D,0BAAYh7D,MAAMC,SAASA,SAAS;AAAA,YAC3C,OAAa;AACNA,uBAAS;AACT,kBAAImxC,MAAMv4C,WAAU8O,OAAOhP,IAAAA;AAC3B,kBAAI+G,OAAO0xC,IAAIoqB;AACf,uBAAQ5hD,IAAE,GAAGA,IAAIla,KAAKoB,QAAQ8Y,KAAI;AACjC3Z,0BAAUmxC,IAAIqqB,iBAAiB/7D,KAAKka,CAAAA,EAAG0I,GACvC;AAAA,cAAA;AAED,kBAAGzpB,WAAUqI,WAAWsB,eAAe3J,WAAUqI,WAAWw6D,aAAY;AACvEz7D,0BAAU07D,cACV;AAAA,cAAA;AAAA,YACD;AACD17D,sBAAU;AAAA,UACV;AACD,cAAItH,QAAQ,SAASA,QAAQ,UAAWE,WAAUgP,UAAUhP,WAAUgP,OAAOlP,IAAQ,GAAA;AACpFsH,sBAAU;AAAA,UACV;AACD;AAAA,MAEFA;AAAAA,gBAAU;AACVs6D,sBAAgBt6D;AAAAA,IAChB;AACDpH,IAAAA,WAAUsP,KAAKnI,MAAMC,SAAS,eAAiB;AAE/C,QAAA,CAAK86D;AACJliE,MAAAA,WAAUiB,WACb;AAAA,EAAA;AAEC,WAAS8hE,aACRtB;AAAAA,aAAS;AACTzhE,IAAAA,WAAU8B,UAAU,0BAA0B,CAC9C2/D,CAAAA;AAAAA,aAAS;AAAA,EACT;AAED,MAAIuB,mCAAmC,WAAA;AACtC,QAAKhjE,EAAAA,WAAU4B,OAAOw/D,wBAAwBK;AAC7C,aAAO;AAER,QAAI3hE,OAAOE,WAAUqG,SAAAA,EAAWvG;AAEhC,QAAA,CAAIA,MAAM;AACT,aAAO;AAAA,IACP;AAED,QAAImjE,eAAe3hE,OAAO4hE,yBAAyB5hE,OAAO8I;AAC1D,QAAI2R,YAAY7b,SAASwJ,gBAAgBqS;AAEzCknD,iBAAa;AACZ,UAAGjjE,WAAUqK,cAAerK,CAAAA,WAAUkQ,cAAa;AAClD;AAAA,MACA;AACD+xD;IACH,CAEE;AAAA,QAAMjiE,WAAU8O,UAAU9O,WAAU8O,OAAOhP,IAAUA,KAAAA,QAAQ,SAAS;AACrEmjE,mBAAa,WACZ;AAAA,YAAGjjE,WAAUqK,cAAAA,CAAerK,WAAUkQ,cAAa;AAClD;AAAA,QACA;AACD+xD,+BAAuB,IACvB/hE;AAAAA,iBAASwJ,gBAAgBqS,YAAYA;AACrCgnD,mBACA;AAAA,MAAA,GAAE,CACN;AAAA,IAAA,OAAO;AACJA,iBAAAA;AAAAA,IACA;AAAA,EACH;AAEC/iE,EAAAA,WAAUgE,YAAY,sBAAsB,WAC3C;AAAA,QAAIm/D,kBAAkBnjE,WAAU4B,OAAOw/D;AACvC,SAAIphE,WAAU6I,GAAGu6D,wBAAuB;AACvCpjE,MAAAA,WAAU6I,GAAGu6D,yBAAyBpjE,WAAU6I,GAAGyH;AAAAA,IACnD;AAEDtQ,IAAAA,WAAU6I,GAAGyH,eAAe6yD,kBAAkB,IAAInjE,WAAU6I,GAAGu6D;AAE/D,QAAGpjE,WAAU8O,QAAO;AACnB,eAAQ9G,KAAKhI,WAAU8O,QAAO;AAC7B,YAAIpM,WAAW1C,WAAU8O,OAAO9G,CAAAA;AAChC,aAAItF,SAAS2gE,8BAA6B;AACzC3gE,mBAAS2gE,+BAA+B3gE,SAAS4gE;AAAAA,QACjD;AACD,YAAGH,iBAAgB;AAClBzgE,mBAAS4gE,qBAAqB;AAAA,QACnC,OAAS;AACJ5gE,mBAAS4gE,qBAAqB5gE,SAAS2gE;AAAAA,QACvC;AAAA,MACD;AAAA,IACD;AACD,WAAO;AAAA,EACT,CAAA;AAECrjE,EAAAA,WAAUgE,YAAY,gBAAgBg/D,gCACtChjE;AAAAA,EAAAA,WAAUgE,YAAY,SAASg/D,gCAC/BhjE;AAAAA,EAAAA,WAAUgE,YAAY,kBAAkBg/D,gCAAAA;AACxChjE,EAAAA,WAAUgE,YAAY,kBAAkBg/D,gCAAAA;AACxChjE,EAAAA,WAAUgE,YAAY,gBAAgBg/D,gCAAAA;AACtChjE,EAAAA,WAAUgE,YAAY,kBAAkBg/D,gCAAAA;AACxChjE,EAAAA,WAAUgE,YAAY,0BAA0Bg/D,gCAChDhjE;AAAAA,EAAAA,WAAUgE,YAAY,cAAcg/D,gCAGpChjE;AAAAA,EAAAA,WAAUgE,YAAY,kBAAkB;AACvCy9D,aAAS;AACT,WAAO;AAAA,EACT,CAECzhE;AAAAA,EAAAA,WAAUgE,YAAY,oBAAoB;AACzCy9D,aAAS;AACT,WAAO;AAAA,EACT,CAEC;AAAA,WAASqB,gBACR;AAAA,QAAIx/D,MAAMpD,SAASC,cAAc,KAAA;AACjCmD,QAAI6D,MAAM6nC,UAAU;AAEpB9uC,aAASM,KAAKC,YAAY6C,GAC1B;AAAA,QAAIqvC,OAAOrvC,IAAIsH,cAActH,IAAIqG;AACjCzJ,aAASM,KAAK+K,YAAYjI,GAAAA;AAC1B,WAAOqvC;AAAAA,EACP;AAGF;AC/Ve,SAAQ4wB,OAACvjE,YAAAA;AACvB,WAASwjE,UAAUn2D,MAAKo2D,cAAav8D,OACpC;AAAA,QAAImf,MAAMhZ,OAAO,MAAMnG,SAAUu8D,eAAc,OAAKA,eAAc;AAClEvjE,aAASqjE,SAASl9C;AAAAA,EAClB;AACD,WAASq9C,UAAUr2D,MAAAA;AAClB,QAAI4K,SAAS5K,OAAO;AACpB,QAAInN,SAASqjE,OAAOt7D,SAAS,GAAG;AAC/B,UAAIof,SAASnnB,SAASqjE,OAAOnsD,QAAQa,MAAAA;AACrC,UAAIoP,UAAAA,IAAc;AACjBA,kBAAUpP,OAAOhQ;AACjB,YAAIoR,MAAMnZ,SAASqjE,OAAOnsD,QAAQ,KAAKiQ;AACvC,YAAIhO,OAAAA;AACHA,gBAAMnZ,SAASqjE,OAAOt7D;AACvB,eAAO/H,SAASqjE,OAAOvrD,UAAUqP,QAAQhO,GAAAA;AAAAA,MACzC;AAAA,IACD;AACD,WAAO;AAAA,EACP;AAED,WAASsqD,cAAc3jE,YACtB;AAAA,YAAQA,WAAUsP,KAAKlP,MAAM,eAAe;AAAA,EAC5C;AAED,MAAI07B,QAAQ;AACZ97B,EAAAA,WAAUgE,YAAY,sBAAqB,SAASqgD,SAAQD,SAAQtkD,MAAK2F,MAAAA;AAExE,QAAIq2B,SAAS97B,WAAU4jE,cAAa;AACnC,UAAIC,sBAAsB7jE,WAAU4jE,aAAAA;AACpC,UAAGC,oBAAoBp+D,QAAQo+D,oBAAoB/jE,QAAQ+jE,oBAAoB59D,OAAM;AACpF61B,gBAAQ;AAAA,MACR;AAAA,IACD;AAED,QAAIynC,UAASI,cAAc3jE,UAAAA;AAE3B,QAAI87B,OAAM;AACTA,cAAQ;AACR,UAAIgoC,kBAAkBJ,UAAUH,OAAAA;AAChC,UAAIO,iBAAgB;AAEnB,YAAA,CAAI9jE,WAAU6V,WAAU;AAGvB7V,UAAAA,WAAU6V,YAAYpQ;AAAAA,QACtB;AAEDq+D,0BAAkBC,SAASD,eAAiBl/D,EAAAA,MAAM;AAClDk/D,wBAAgB,CAAA,IAAKzjE,KAAKukC,SAASC,UAAUi/B,gBAAgB,CAC7D,CAAA;AAAA,YAAI5gE,OAAO7C,KAAKoiB,aAAaqhD,gBAAgB,CAAMA,CAAAA,IAAAA,gBAAgB,CAAKhkE,IAAAA,MACvE2F,QAAQmN,MAAOkxD,CAAAA,gBAAgB,CAAMA,CAAAA,IAAAA,gBAAgB,CAAKr+D,IAAAA;AAE3DnE,eAAO8I,WAAW;AACjB,cAAGpK,WAAUqK,YAAW;AACvB;AAAA,UACA;AACDrK,UAAAA,WAAUyG,eAAehB,MAAKvC,IAC9B;AAAA,QAAA,GAAC,CACF;AAAA,eAAO;AAAA,MACP;AAAA,IACD;AACD,WAAO;AAAA,EACT,CAEClD;AAAAA,EAAAA,WAAUgE,YAAY,gBAAgB,SAAUggE,SAAU5O,SACzD;AAAA,QAAImO,UAASI,cAAc3jE,UAAAA;AAC3B,QAAIgC,OAAO0lD,OAAOrnD,KAAKukC,SAASG,WAAWqwB,WAAS;AACpDoO,cAAUD,SAAO,yCAAwCvhE,IAAAA;AAAAA,EAC3D,CAGC;AAAA,MAAIiiE,WAAWjkE,WAAUqiB;AACzBriB,EAAAA,WAAUqiB,QAAQ,WACjB;AAAA,QAAIwR,OAAOznB;AAEX,QAAKpM,CAAAA,WAAU2V,OAAO;AACrB,UAAI41C,OAAOlrD;AACXiB,aAAO8I,WAAW,WACjB65D;AAAAA,iBAAS93D,MAAMo/C,MAAM13B,IACrB;AAAA,MAAA,GAAC,CACL;AAAA,IAAA,OAAS;AACNowC,eAAS93D,MAAM9L,MAAMwzB,IAAAA;AAAAA,IACrB;AAAA,EACH;AACA;ACpFA,MAAeqwC,iBAAA,EACd1/D,OAAO,CAAC81D,WAAW74D,YAClBA;AAAAA,EAAAA,QAAO,OAAO,OAAO64D,SAE+H;AAAA;AAAA,qJAAA;AAAA,EAAA;ACFvI,SAAQ6J,uBAACnkE,YACvBkkE;AAAAA,iBAAe1/D,MAAM,gBAAgBxE,WAAUyB,MAChD;AAAA;ACFe,SAAQ2iE,wBAACpkE,YACvBkkE;AAAAA,iBAAe1/D,MAAM,gBAAgBxE,WAAUyB,MAChD;AAAA;ACJe,SAAQ4iE,QAACrkE,YAExBA;AAAAA,EAAAA,WAAUq3C,YAAY,OAAA,IAAS,EAC9B9oC,QAAO,SAAS0pC,KACf;AAAA,QAAA,CAAKA,IAAIqsB;AACRrsB,UAAIqsB,iBAAiB;AACtB,QAAI1lD,MAAM;AACVA,WAAO,iBAAeq5B,IAAIl2C,OAAK;AAC/B,WAAO6c;AAAAA,EACP,GACD44B,WAAU,SAASllC,MAAKpL,OAAMyN,IAAG/S,QAChC;AAAA,KAAA,WAAA;AACC2iE,iBACA;AAAA,UAAInkE,MAAKJ,WAAUgE,YAAY,mBAAkB;AAEhDugE,mBACAvkE;AAAAA,QAAAA,WAAU0N,YAAYtN,GAAAA;AAAAA,MAC1B,CACG;AAAA,eAASmkE,aACR;AAAA,YAAGjyD,KAAKkyD,UAAUlyD,KAAKkyD,OAAOC,WAAW;AACxC,cAAIC,SAAQpyD,KAAKkyD;AACjB,cAAGE,OAAMC,QAAO;AACfD,YAAAA,OAAMC,OAAAA;AAAAA,UACZ,WAAcD,OAAMxjE,YAAW;AACzBwjE,YAAAA,OAAMxjE,WAAAA;AAAAA,UACN;AAEDwjE,UAAAA,OAAMD,YAAYC,OAAME,UAAU;AAAA,QAClC;AAAA,MACD;AAAA,IACD,GACDtjE;AAAAA,WAAOujE,oBAAoBjjE,OAAOkjE,cAAY;AAC9CxyD,SAAKkyD,SAAS,IAAIO,YAAYzyD,MAAM1Q,OAAOyL,MAAMiF,KAAK1H,cAAY,CAClE;AAAA,QAAIhJ,OAAOw2C;AACV9lC,WAAKkyD,OAAOxgE,YAAY,YAAYpC,OAAOw2C,QAE5C;AAAA,QAAIx2C,OAAOojE;AACV1yD,WAAKkyD,OAAOS,gBAAgBrjE,OAAOojE,cAAAA;AACpC,QAAIN,QAAQpyD,KAAKkyD;AACjBE,UAAMQ,oBAAoBtjE,OAAOujE,WAAWvjE,OAAOwjE,eAAa,MAAQxjE,CAAAA,CAAAA,OAAOyoB,KAE/E;AAAA,QAAA,CAAKzoB,OAAOwjE,aAAa;AACxB,UAAIC,cAAc,CAClB;AAAA,eAASr9D,IAAI,GAAGA,IAAIpG,OAAOioB,QAAQ5hB,QAAQD,KAAK;AAC/C,YAAIisC,SAASryC,OAAOioB,QAAQ7hB,CAAAA;AAC5B,YAAIs9D,gBAAgB,CACnBrxB,OAAOxqB,KACPwqB,OAAOxgC,OACPwgC,OAAOjtC,GAERq+D;AAAAA,oBAAYt2D,KAAKu2D,aAAAA;AAAAA,MACjB;AACDZ,YAAMa,UAAUF,WAChB;AAAA,UAAI1wD,GAAG/S,OAAOgoB,MAAS,GAAA;AACtB,YAAI7d,QAAQ24D,MAAMc,gBAAgB7wD,GAAG/S,OAAOgoB,MAAAA,CAAAA;AAC5C86C,cAAMe,aAAa15D,KACnB;AAAA,MAAA;AAAA,IACJ,OAAS;AACN,UAAI25D,cAAc/wD,GAAG/S,OAAOgoB,MAAAA;AAC5B,UAAI87C,aAAa;AAChB,YAAI9jE,OAAO0iE,eAAeoB,WAAAA,GAAc;AACvChB,gBAAMa,UAAUG,aAAa9jE,OAAO0iE,eAAeoB,WAAAA,CAAAA;AACnDhB,gBAAMiB,QAAQ,CACdjB;AAAAA,gBAAMe,aAAa,CAAA;AACnBf,gBAAMiB,QAAQ,CAAA;AAAA,QACnB,OAAW;AACN3lE,UAAAA,WAAU66B,KAAK0B,IAAI36B,OAAOwjE,cAAY,SAAOM,cAAY,UAAQ1lE,WAAUoa,IAAO,GAAA,SAASnB,QAC1F;AAAA,gBAAI3U,eAAe2U,OAAOmkB,OAAO94B;AACjC,gBAAImP;AACJ,gBACC;AAAA,kBAAImL,MAAMlP,KAAKqrB,MAAMz2B,YACrBmP;AAAAA,sBAAQmL,IAAIiL,QAAQ,CAAG7nB,EAAAA;AAAAA,YACvB,SAAMmS,GAAAA;AACN,kBAAI8/B,UAASj0C,WAAU66B,KAAKa,MAAM,YAAYziB,OAAOmkB,MAAQ,EAAA,CAAA;AAC7D3pB,sBAAQwgC,QAAO9D,WAAW,CAAA,EAAGkD;AAAAA,YAC7B;AACDzxC,mBAAO0iE,eAAeoB,WAAejyD,IAAAA;AACrCixD,kBAAMa,UAAUG,aAAajyD,KAAAA;AAC7BixD,kBAAMiB,QAAQ,CAAA;AACdjB,kBAAMe,aAAa,CACnBf;AAAAA,kBAAMiB,QAAQ,CAAA;AAAA,UACpB;QACK;AAAA,MACL,OAAU;AACNjB,cAAMkB,cAAc,EAAA;AAAA,MACpB;AAAA,IACD;AAAA,EACD,GACDtuB,WAAU,SAAShlC,MAAKqC,IAAG/S,QAC1B;AAAA,QAAI8jE,cAAcpzD,KAAKkyD,OAAOqB,iBAAAA;AAC9B,QAAIjkE,OAAOwjE,aAAa;AACvBxjE,aAAO0iE,eAAeoB,eAAepzD,KAAKkyD,OAAOsB,gBACjD;AAAA,IAAA;AACD,WAAOJ;AAAAA,EACP,GACD16C,OAAM,SAAS1Y,MACd;AAAA,EAAA,EAAA;AAGFtS,EAAAA,WAAUq3C,YAAY,OAAS,IAAA,EAC9B9oC,QAAO,SAAS0pC;AACf,QAAIr5B,MAAM;AACVA,WAAO,2CAA2Cq5B,IAAI8tB,WAAW,2BAA0B,yBAAyB9tB,IAAI7wC,MAAAA;AACxH,aAASY,IAAE,GAAGA,IAAEiwC,IAAIpuB,QAAQ5hB,QAAQD,KAAK;AACxC,UAAI5H,MAAKJ,WAAUoa,IACnBwE;AAAAA,aAAO,4CAA0Cxe,MAAG,kBAAgBA,MAAG,0BAAwB63C,IAAI5qC,OAAK,cAAY4qC,IAAIpuB,QAAQ7hB,CAAGyhB,EAAAA,MAAI,cAAewuB,IAAIpuB,QAAQ7hB,CAAGyL,EAAAA,QAAM;AAAA,IAC3K;AACDmL,WAAO;AAEP,WAAOA;AAAAA,EACP,GACD44B,WAAU,SAASllC,MAAKpL,OAAMyN,IAAG/S,QAAAA;AAChC,QAAIokE,eAAe1zD,KAAKc,qBAAqB;AAC7C,aAASpL,IAAI,GAAGA,IAAIg+D,aAAa/9D,QAAQD,KAAK;AAC7Cg+D,mBAAah+D,CAAAA,EAAGsxC,UAAU;AAC1B,UAAI2sB,gBAAgBtxD,GAAG/S,OAAOgoB,WAAS1iB;AACvC,UAAI8+D,aAAah+D,CAAAA,EAAGd,SAAS++D,eAAe;AAC3CD,qBAAah+D,GAAGsxC,UAAU;AAAA,MAC1B;AAAA,IACD;AAAA,EACD,GACDhC,WAAU,SAAShlC,MAAKqC,IAAG/S,QAC1B;AAAA,QAAIokE,eAAe1zD,KAAKc,qBAAqB,OAAA;AAC7C,aAAQpL,IAAE,GAAGA,IAAEg+D,aAAa/9D,QAAQD,KAAK;AACxC,UAAGg+D,aAAah+D,CAAGsxC,EAAAA,SAAS;AAC3B,eAAO0sB,aAAah+D,CAAAA,EAAGd;AAAAA,MACvB;AAAA,IACD;AAAA,EACD,GACD8jB,OAAM,SAAS1Y,MAAAA;AAAAA,EACd,EAGFtS;AAAAA,EAAAA,WAAUq3C,YAAY,UAAA,IAAY,EACjC9oC,QAAO,SAAS0pC,KACf;AAAA,QAAIj4C,WAAU4B,OAAOmhC;AACpB,aAAO;AAAA;AAEP,aAAO;AAAA,EACR,GACDyU,WAAU,SAASllC,MAAKpL,OAAMyN,IAAG/S;AAChC0Q,WAAKtS,WAAU8R,UAAUxJ,cAAc,IAAI1G,OAAOxB,EAClD,EAAA;AAAA,QAAIA,MAAKJ,WAAUoa,IAAAA;AACnB,QAAI8rD,YAAAA,OAAoBtkE,OAAOqkE,iBAAiB,cAAe/+D,SAAStF,OAAOqkE,gBAAkB/+D,CAAAA,CAAAA;AACjGoL,SAAK7N,aAAa;AAClB,QAAI0hE,aAAa,gBAAc/lE,MAAG,0CAAwCwB,OAAOyL,OAAK,OAAK,YAAY,mBAAiB,MAAI;AAC5H,QAAI+4D,aAAa,iBAAehmE,MAAG,QAAMJ,WAAU0T,OAAOC,OAAO,aAAW/R,OAAOyL,IAAAA,KAAOzL,OAAOyL,QAAM;AACvG,QAAIrN,WAAU4B,OAAOmhC,WAAU;AAC9BzwB,WAAK/R,YAAY6lE;AACjB9zD,WAAKkmB,YAAYj4B,YAAU4lE;AAAAA,IAC3B;AACA7zD,WAAK/R,YAAU4lE,aAAWC;AAE3B,QAAIxkE,OAAO2E,SAAS;AACnB,UAAI8/D,WAAW/zD,KAAKc,qBAAqB,OAAS,EAAA,CAAA;AAClD,UAAGizD,SAASrgE,iBAAgB;AAC3B;AAAA,MACA;AACDqgE,eAASrgE,kBAAkB;AAC3BhG,MAAAA,WAAUiG,MAAMogE,UAAU,SAASzkE,OAAO2E,OAE1C;AAAA,IAAA;AAAA,EACD,GACD+wC,WAAU,SAAShlC,MAAKqC,IAAG/S,QAC1B0Q;AAAAA,WAAKtS,WAAU8R,UAAUxJ,cAAc,IAAI1G,OAAOxB,EAAAA,EAAAA;AAClD,QAAIimE,WAAW/zD,KAAKc,qBAAqB,OAAS,EAAA,CAAA;AAClD,QAAKizD,CAAAA;AACJA,iBAAW/zD,KAAKkmB,YAAYplB,qBAAqB,OAAA,EAAS,CAC3D;AAAA,WAAQizD,SAAgB,UAAGzkE,OAAOqkE,iBAAe,OAAOrkE,OAAO0kE,mBAAiB;AAAA,EAChF,GACDt7C,OAAM,SAAS1Y;EACd,EAIF;AAAA;AC/Ke,SAAQi0D,OAACvmE,YAExBA;AAAAA,EAAAA,WAAUy5D,IAAI+M,aAAa,EAC1BC,YAAY,KAAA;AAGbzmE,EAAAA,WAAUumE,SAAS,WAClB;AAAA,QAAA,CAAIvmE,WAAU8B,UAAU,kBAAkB,CACzC,CAAA;AAAA;AACD,QAAIyT,IAAIvV,WAAUsP;AAClB,OAAG;AACFiG,QAAEmxD,YAAYnxD,EAAEpO,MAAMf,YAAY;AAClCmP,QAAEpO,MAAMf,WAAW;AAAA,IACnB,UAASmP,IAAIA,EAAEjM,eAAeiM,EAAEpO;AACjCoO,QAAIvV,WAAUsP;AACdiG,MAAEpO,MAAMf,WAAW;AACnBmP,MAAEoxD,SAASpxD,EAAEpO,MAAMF;AACnBsO,MAAEqxD,UAAUrxD,EAAEpO,MAAMC;AACpBmO,MAAEpO,MAAMF,QAAQsO,EAAEpO,MAAMC,SAAS;AACjCmO,MAAEpO,MAAM+L,MAAMqC,EAAEpO,MAAMiL,OAAO;AAE7B,QAAIc,MAAMhT,SAASM;AACnB0S,QAAI6I,YAAY;AAEhB7I,UAAMA,IAAI5J;AACV,QAAI4J;AACHA,UAAI6I,YAAY;AACjB7b,aAASM,KAAKqmE,YAAY3mE,SAASM,KAAK2G,MAAM2/D,YAAY;AAC1D5mE,aAASM,KAAK2G,MAAM2/D,WAAW;AAC/B9mE,IAAAA,WAAU+mE,UAAAA;AACV/mE,IAAAA,WAAU8B,UAAU,YAAY,CACjC,CAAA;AAAA,EAAA;AACA9B,EAAAA,WAAUgnE,WAAW,WACpB;AAAA,QAAA,CAAIhnE,WAAU8B,UAAU,oBAAoB,CAAA,CAAA;AAC3C;AACD,QAAIyT,IAAIvV,WAAUsP;AAClB,OAAG;AACFiG,QAAEpO,MAAMf,WAAWmP,EAAEmxD;AAAAA,IACrB,UAASnxD,IAAIA,EAAEjM,eAAeiM,EAAEpO;AACjCoO,QAAIvV,WAAUsP;AACdiG,MAAEpO,MAAMF,QAAQsO,EAAEoxD;AAClBpxD,MAAEpO,MAAMC,SAASmO,EAAEqxD;AACnB1mE,aAASM,KAAK2G,MAAM2/D,WAAW5mE,SAASM,KAAKqmE;AAC7C7mE,IAAAA,WAAU+mE,UAAAA;AACV/mE,IAAAA,WAAU8B,UAAU,cAAc,CACnC,CAAA;AAAA,EAAA;AACA9B,EAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AACzC,QAAIuR,IAAIrV,SAASC,cAAc,KAAA;AAC/BoV,MAAE9Q,YAAY;AACdzE,IAAAA,WAAUy5D,IAAI+M,WAAWC,aAAalxD;AACtCA,MAAEhV,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAadP,IAAAA,WAAUsP,KAAK7O,YAAY8U,CAAAA;AAC3BvV,IAAAA,WAAUiG,MAAMsP,GAAG,SAAU,WAC5B;AAAA,UAAA,CAAKvV,WAAUuW;AACdvW,QAAAA,WAAUumE,OACVvmE;AAAAA;AAAAA,QAAAA,WAAUgnE,SACb;AAAA,IAAA,CAAA;AAAA,EACA,CACAhnE;AAAAA,EAAAA,WAAU+mE,YAAY,WAAA;AACrB1mE,SAAKkW,WAAYlW,CAAAA,KAAKkW;AACtB,QAAGlW,KAAKkW,UAAS;AAChBlW,WAAKo5D,IAAI+M,WAAWC,WAAW1hE,UAAUC,IAAI,2BAE/C;AAAA,IAAA,OAAM;AACJ3E,WAAKo5D,IAAI+M,WAAWC,WAAW1hE,UAAU6e,OAAO,2BAAA;AAAA,IAChD;AAID,QAAIqjD,aAAa,CAAC,QAAQ,KAC1B;AAAA,aAASj/D,IAAI,GAAGA,IAAIi/D,WAAWh/D,QAAQD,KAAK;AAE3C,UAAIk/D,cAAclnE,WAAU,kBAAkBinE,WAAWj/D;AACzD,UAAIhI,WAAU6I,GAAG,YAAYo+D,WAAWj/D,CAAAA,CAAAA,GAAK;AAC5ChI,QAAAA,WAAU,kBAAkBinE,WAAWj/D,CAAMhI,CAAAA,IAAAA,WAAU6I,GAAG,YAAYo+D,WAAWj/D,CAAAA,CAAAA;AACjFhI,QAAAA,WAAU6I,GAAG,YAAYo+D,WAAWj/D,CAAAA,CAAAA,IAAM;AAAA,MAC7C,OAAS;AACN,YAAIk/D,aAAa;AAChBlnE,UAAAA,WAAU6I,GAAG,YAAYo+D,WAAWj/D,CAAAA,CAAAA,IAAMhI,WAAU,kBAAkBinE,WAAWj/D,CAC1EhI,CAAAA;AAAAA,iBAAAA,WAAU,kBAAkBinE,WAAWj/D,CAC9C,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAEDhI,IAAAA,WAAUyG,eACX;AAAA,EAAA;AAGA;AClGe,SAAQ0gE,UAACnnE,YAAAA;AACvBkkE,iBAAe1/D,MAAM,QAAQxE,WAAUyB,MAAAA;AACxC;ACJe,SAAQ2lE,eAACpnE,YAAAA;AAExBA,EAAAA,WAAUgE,YAAY,oBAAmB,WACxC;AAAA,QAAImP,MAAMjT,SAASM,KAAK4S,qBAAqB,KAC7C;AAAA,aAASpL,IAAE,GAAGA,IAAImL,IAAIlL,QAAQD,KAAK;AAClC,UAAI4nC,MAAKz8B,IAAInL,CAAGvD,EAAAA,aAAW;AAC3BmrC,MAAAA,MAAKA,IAAGhrC,MAAM;AACd,UAAIgrC,IAAG3nC,UAAU,KAAK2nC,IAAG,CAAA,KAAM,YAAW;AACzC,YAAI5R,OAAO,cAAa7qB,IAAInL,CAAAA,EAAGzH,aAAW,IAAI+W,QAAQ,OAAO,QAAQA,QAAQ,MAAK,KAAQA,EAAAA,QAAQ,YAAW,EAAA,IAAI;AACjH0mB,eAAO+lC,SAAS/lC,IAAAA,EAAM1mB,QAAQ,wBAAuB,SAAS+vD,KAAIlwD,MACjE;AAAA,iBAAO,UAAQA,OAAK;AAAA,QACxB,CACGnX;AAAAA,QAAAA,WAAU0iB,UAAUktB,IAAG,CAAIzc,CAAAA,IAAAA,SAAS,SAAQ,OAAM,MAAK6K,IACvD7qB;AAAAA,YAAInL,CAAGb,EAAAA,MAAMgC,UAAQ;AAAA,MACrB;AAAA,IACD;AAAA,EACF,CAAA;AAEA;AClBe,SAAQm+D,mBAACtnE,YAAAA;AAExBA,EAAAA,WAAUunE,oBAAoBC,YAAY,EACzCC,eAAe,WAAA;AACd,WAAO,EACNC,WAAU,EACTznD,OAAS,OACT0nD,KAAO,OACPC,MAAQ,OACRC,MAAQ,MAET14B,GAAAA,SAAS;EAEV,GACDpU,OAAO,SAAS+sC,UAAAA;AACf,QAAIC,WAAW,CAEf;AAAA,QAAIC,OAAO3nE,KAAK4nE,eAAe5nE,KAAKstB,KAAKm6C,QACzC,CAAA;AAAA,aAAQ9/D,IAAI,GAAGA,IAAIggE,KAAK//D,QAAQD,KAAI;AACnC,UAAIkgE,QAAQ7nE,KAAK8nE,SAASH,KAAKhgE,CAAAA,CAAAA;AAE/B,UAAIogE,UAAU/nE,KAAKonE,cAAAA;AAEnB,eAAQ3kD,IAAI,GAAGA,IAAIolD,MAAMjgE,QAAQ6a,KAAI;AACpC,YAAGziB,KAAKgoE,YAAYH,MAAMplD,CAAAA,CAAAA,GAAI;AAC7BslD,kBAAQV,UAAUQ,MAAMplD,CAAM,CAAA,IAAA;AAAA,QAC9B,WAAQziB,KAAKioE,YAAYJ,MAAMplD,CAAAA,CAAAA,GAAI;AACnCslD,kBAAQj5B,UAAU9uC,KAAKioE,YAAYJ,MAAMplD,CAAAA,CAAAA;AAAAA,QAC9C,OAAS;AACJslD,kBAAQj5B,UAAU+4B,MAAMplD,CAAGylD,EAAAA,WAAW,CACtC;AAAA,QAAA;AAAA,MACD;AAEDR,eAASh5D,KAAKq5D,OAAAA;AAAAA,IACd;AACD,WAAOL;AAAAA,EACP,GAEDS,qBAAqB,SAASC,UAAAA;AAC7B,QAAIL,UAAU/nE,KAAKonE,cAAAA;AACnBW,YAAQV,UAAUznD,QAAUwoD,CAAAA,CAAAA,SAASv5B;AACrCk5B,YAAQV,UAAUC,MAAQc,CAAAA,CAAAA,SAASC;AACnCN,YAAQV,UAAUE,OAAAA,CAAAA,CAASa,SAASE;AACpCP,YAAQV,UAAUG,OAAAA,CAAAA,CAASY,SAASG;AACpCR,YAAQj5B,UAAUs5B,SAAS1a,SAAS0a,SAASt5B;AAE7C,QAAGi5B,QAAQj5B,WAAW,MAAMi5B,QAAQj5B,WAAW,KAAI;AAElDi5B,cAAQj5B,WAAW;AAAA,IACnB;AAED,QAAI05B,eAAer+C,OAAOs+C,aAAaV,QAAQj5B,OAAAA;AAC/C,QAAG05B,cAAa;AACfT,cAAQj5B,UAAU05B,aAAa97D,cAAcw7D,WAAW,CAAA;AAAA,IACxD;AACD,WAAOH;AAAAA,EACP,GAEDW,kBAAkB,SAASN;AAC1B,WAAOpoE,KAAK2oE,QAAQ3oE,KAAKmoE,oBAAoBC,QAAAA,CAAAA;AAAAA,EAC7C,GAEDO,SAAS,SAASZ,SACjB;AAAA,QAAIa,QAAQ,CAAA;AACZ,aAAQjhE,KAAKogE,QAAQV,WAAU;AAC9B,UAAGU,QAAQV,UAAU1/D,CAAG,GAAA;AACvBihE,cAAMl6D,KAAK/G;MACX;AAAA,IACD;AACDihE,UAAMl6D,KAAKq5D,QAAQj5B,OAAAA;AAEnB,WAAO85B,MAAMnlE,KAAKzD,KAAK6oE,YAAAA;AAAAA,EACvB,GAEDjB,gBAAgB,SAASH,UAAAA;AACxB,WAAOA,SAASljE,MAAMvE,KAAK6oE,YAC3B;AAAA,EAAA,GACDf,UAAU,SAASgB,MAClB;AAAA,WAAOA,KAAKvkE,MAAMvE,KAAK+oE,eACvB;AAAA,EAAA,GACDz7C,MAAM,SAASm6C,UACd;AAAA,WAAOA,SAASxwD,QAAQ,OAAO,EAC/B;AAAA,EAAA,GACD4xD,cAAa,KACbE,iBAAgB,KAChBf,aAAY,EACXpoD,OAAS,IACT0nD,KAAO,IACPC,MAAQ,IACRC,MAAQ,KAETS,GAAAA,aAAY,EACXe,WAAa,GACb3lD,KAAO,GACP4lD,OAAS,IACTC,KAAO,IACPC,OAAS,IACTC,IAAM,IACNC,MAAQ,IACRt3D,MAAQ,IACRC,OAAS,IACTs3D,MAAQ,IACRtwD,KAAO,IACPuwD,QAAU,IACVC,UAAY,IACZ3xD,QAAU,IACV4xD,QAAU,IACVC,MAAO,KACPC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,KAAO,KACPC,KAAO,KACPC,KAAO,IAAA,EAAA;AAIT;AC3He,SAAQC,aAAC5qE,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoBsD,eAAe,EAC5CC,WAAW,MACXC,aAAa,SAAS3C,SACrB;AAAA,QAAA,CAAI/nE,KAAKyqE;AAAWzqE,WAAKyqE,YAAY,CAAA;AACrC,QAAItD,YAAYxnE,WAAUunE,oBAAoBC;AAC9C,QAAI3gC,OAAO2gC,UAAUwB,QAAQZ;AAE7B,WAAO/nE,KAAKyqE,UAAUjkC,IAAAA;AAAAA,EACtB,GAEDmkC,UAAU,SAAS5C,SAASj0D;AAC3B,QAAI5N,UAAUlG,KAAK0qE,YAAY3C,OAC/B;AAAA,QAAG7hE,SAAQ;AACVA,cAAQmU,KAAKra,MAAM8T,CAAAA;AAEnB,UAAIA,EAAEC;AAAgBD,UAAEC;;AACnBD,UAAEY,cAAc;AAAA,IAErB;AAAA,EACD,GACD9H,MAAM,SAAS66D,UAAUvhE;AACxB,QAAIlG,CAAAA,KAAKyqE;AAAWzqE,WAAKyqE,YAAY,CAAA;AAErC,QAAItD,YAAYxnE,WAAUunE,oBAAoBC;AAE9C,QAAIO,WAAWP,UAAUzsC,MAAM+sC,QAAAA;AAC/B,aAAQ9/D,IAAI,GAAGA,IAAI+/D,SAAS9/D,QAAQD,KAAI;AACvC3H,WAAKyqE,UAAUtD,UAAUwB,QAAQjB,SAAS//D,CAAAA,CAAAA,CAAAA,IAAOzB;AAAAA,IACjD;AAAA,EACD,GACD0kE,QAAQ,SAASnD,UAChB;AAAA,QAAIN,YAAYxnE,WAAUunE,oBAAoBC;AAE9C,QAAIO,WAAWP,UAAUzsC,MAAM+sC,QAAAA;AAC/B,aAAQ9/D,IAAI,GAAGA,IAAI+/D,SAAS9/D,QAAQD,KAAI;AACvC,UAAG3H,KAAKyqE,UAAUtD,UAAUwB,QAAQjB,SAAS//D,CAAK,CAAA,CAAA,GAAA;AAAA,eAC1C3H,KAAKyqE,UAAUtD,UAAUwB,QAAQjB,SAAS//D,CACjD,CAAA,CAAA;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GAEDkjE,SAAS,SAAS1oE,KACjB;AAAA,aAAQwF,KAAKxF,KAAI;AAChBnC,WAAK4M,KAAKjF,GAAGxF,IAAIwF,CAAAA,CAAAA;AAAAA,IACjB;AAAA,EACD,GACDmjE,UAAU,WACT;AAAA,QAAA,CAAI9qE,KAAKyqE;AACRzqE,WAAKyqE,YAAY;AAClB,QAAGzqE,KAAK0Q,MAAK;AACZ1Q,WAAK6qE,QAAQ7qE,KAAK0Q;IAClB;AAAA,EACD,EAAA;AAGF;ACzDe,SAAQq6D,iBAACprE,YAAAA;AAAAA,GAExB,WACCA;AAAAA,IAAAA,WAAUunE,oBAAoB7wC,oBAAoB12B,WAAUw4D;AAE5Dx4D,IAAAA,WAAUunE,oBAAoB8D,YAAY,SAASA,UAAUhiE,MAAM8K,GAAAA;AAClE,UAAGA,EAAEg7B,WAAW;AAAG,eAAO;AAE1B,UAAIwgB,YAAY3vD,WAAUunE,oBAAoB7wC,kBAAkBrtB,IAChE;AAAA,UAAIiiE,eAAeprE,SAASk3B;AAC5B,UAAIm0C,eAAAA;AACJ,eAAQvjE,IAAI,GAAGA,IAAI2nD,UAAU1nD,QAAQD,KAAI;AACxC,YAAG2nD,UAAU3nD,CAAAA,KAAMsjE,cAAa;AAC/BC,yBAAevjE;AACf;AAAA,QACA;AAAA,MACD;AAED,UAAIwjE,WAAWC;AACf,UAAGt3D,EAAE+6B,UAAS;AAIbs8B,oBAAaD,gBAAgB,IAAM5b,UAAU1nD,SAAS,IAAMsjE,eAAe;AAE3EE,mBAAW9b,UAAU6b,SAAAA;AACrB,YAAGC,UAAS;AACXA,mBAASzgD;AACT7W,YAAEC,eAAAA;AACF,iBAAO;AAAA,QACP;AAAA,MAEJ,OAAO;AAGJo3D,oBAAaD,gBAAgB5b,UAAU1nD,SAAS,IAAK,IAAKsjE,eAAe;AACzEE,mBAAW9b,UAAU6b,SACrB;AAAA,YAAGC,UAAS;AACXA,mBAASzgD,MAAAA;AACT7W,YAAEC,eAAAA;AACF,iBAAO;AAAA,QACP;AAAA,MAED;AAED,aAAO;AAAA,IACT;AAAA,EACC,GA7CD;AA+CA;ACjDe,SAAQ42C,OAAChrD,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoBvc,SAAS,EACtCr+C,OAAO;AACN,QAAI++D,OAAO1rE,WAAUqI,WAAWghB,iBAAiB,iBAAA;AACjD,aAAQrhB,IAAI,GAAGA,IAAI0jE,KAAKzjE,QAAQD,KAAI;AACnC0jE,WAAK1jE,CAAAA,EAAGsB,WAAWiC,YAAYmgE,KAAK1jE,CACpC,CAAA;AAAA,IAAA;AAAA,EACD,GACD7H,eAAe,WACd;AAAA,QAAIuE,UAAUxE,SAASC,cAAc,KACrCuE;AAAAA,YAAQU,aAAa,YAAA,EACrBV;AAAAA,YAAQD,YAAY;AACpB,WAAOC;AAAAA,EACP,GAEDinE,gBAAgB,SAASvyD,OAAOC,KAAKmhB,QACpC;AAAA,QAAIkxC,OAAO,CAAA;AACX,QAAIE,eAAe,IAAIl2D,KAAK0D;AAC5B,QAAIyyD,aAAa,IAAIn2D,KAAK5C,KAAKqI,IAAI9B,IAAI9B,QAAAA,GAAWvX,WAAUyF,KAAKT,IAAIhF,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK0D,KAAAA,CAAAA,GAAS,GAAG,KAAA,EAAO7B,QAC1H,CAAA,CAAA;AAAA,WAAMq0D,aAAar0D,QAAAA,IAAY8B,IAAI9B,QAAAA,GAAU;AAE5Cm0D,aAAOA,KAAKl+D,OAAOgtB,OAAO9f,KAAKra,MAAMurE,cAAc,IAAIl2D,KAAK5C,KAAKqI,IAAI0wD,WAAWt0D,QAAAA,GAAW8B,IAAI9B,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC/Fq0D,qBAAe5rE,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAI4mE,cAAc,GAAG,KAE5EC,CAAAA;AAAAA,mBAAa7rE,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAI4mE,cAAc,GAAG;AAC1EC,mBAAa,IAAIn2D,KAAK5C,KAAKqI,IAAI0wD,WAAWt0D,QAAW8B,GAAAA,IAAI9B;IACzD;AAED,WAAOm0D;AAAAA,EACP,GAGDn9D,QAAQ,SAAS6K,OAAOC,KAAKyR;AAC5BzqB,SAAKsM,MAAAA;AACL,QAAI++D,OAAO,CAEX;AAAA,QAAIhX,QAAQ10D,WAAUunE,oBAAoBuE,SAASphD,UAAUqhD;AAC7D,QAAI7oE,OAAOlD,WAAUunE,oBAAoBuE,SAASphD,UAAUshD,SAC5D;AAAA,YAAQ9oE,MACP;AAAA,MAAA,KAAKwxD,MAAMuX;AACVP,eAAOrrE,KAAK6rE,qBAAqB9yD,OAAOC,KAAKyR,OAC7C;AAAA;AAAA,MACD,KAAK4pC,MAAMhyD;AACVgpE,eAAOrrE,KAAK8rE,qBAAqB/yD,OAAOC,KAAKyR,OAAAA;AAC7C;AAAA,MACD,KAAK4pC,MAAM9xD;AACV8oE,eAAOA,KAAKl+D,OAAOnN,KAAKsrE,eAAevyD,OAAOC,KAAKhZ,KAAK+rE;AACxD;AAAA,MACD,KAAK1X,MAAM3iC;AACV25C,eAAOrrE,KAAKgsE,kBAAkBjzD,OAAOC;AACrC;AAAA,MACD,KAAKq7C,MAAM4X;AACVZ,eAAOA,KAAKl+D,OAAOnN,KAAKsrE,eAAevyD,OAAOC,KAAKhZ,KAAKksE,sBAAAA,CAAAA;AACxD;AAAA,MACD,KAAK7X,MAAM/mD;AACV+9D,eAAOrrE,KAAKmsE,mBAAmBpzD,OAAOC,GACtC;AAAA;AAAA,MACD,KAAKq7C,MAAM+X;AACVf,eAAOA,KAAKl+D,OAAOnN,KAAKsrE,eAAevyD,OAAOC,KAAKhZ,KAAK6rE;AACxD;AAAA,IAGF7rE;AAAAA,SAAKqsE,gBAAgBhB,MAAMtyD,OAAOC,KAAKyR,OACvCzqB;AAAAA,SAAKssE,kBAAkBjB,MAAMtyD,OAAOC,KAAKyR,OAAAA;AAEzC,aAAQ9iB,IAAI0jE,KAAKzjE,SAAS,GAAGD,KAAK,GAAGA,KAAI;AACxC,UAAG0jE,KAAK1jE,GAAG4C,aAAY;AACtB,eAAO8gE,KAAK1jE,CACZ;AAAA,MAAA;AAAA,IACD;AAED,WAAO;AAAA,EACP,GAED2kE,mBAAmB,SAASjB,MAAMtyD,OAAOC,KAAKyR,SAC7C;AAAA,QAAI8hD,YAAY5sE,WAAUyF,KAAKq7B,YAAY9gC,WAAU4B,OAAOghC,QAAAA;AAE5D,QAAIxe,OAAOwoD,UAAUxzD,KACpBiL,GAAAA,KAAKuoD,UAAUvzD,GAAAA;AAEhB,aAAQrR,IAAI,GAAGA,IAAI0jE,KAAKzjE,QAAQD,KAAI;AACnC0jE,WAAK1jE,CAAAA,EAAG5C,aAAa,mBAAmBgf;AACxCsnD,WAAK1jE,CAAAA,EAAG5C,aAAa,iBAAiBif,EACtC;AAAA,UAAGyG,SAAQ;AACV4gD,aAAK1jE,CAAG5C,EAAAA,aAAa,gBAAgB0lB,OAAAA;AAAAA,MACrC;AAAA,IACD;AAAA,EACD,GAED4hD,iBAAiB,SAAShB,MAAMtyD,OAAOC,KAAKyR,SAC3C;AAAA,QAAIrX,QAAQ;AACZ,QAAIoZ,QAAQ7sB,WAAUqG,SACtB;AAAA,QAAIvG,OAAO+sB,MAAM/sB;AAEjB,QAAI+sE,gBAAgB;AAEpBp5D,aAASzT,WAAU0iB,UAAU8L,SAASpV,KAAAA;AAEtC,QAAIpZ,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK0D,KAAAA,CAAAA,EAAQ7B,QAAa6B,KAAAA,MAAM7B,QAAW,GAAA;AAC3E9D,eAAS,MAAMzT,WAAU0iB,UAAUiF,WAAWvO,KAAAA;AAC9CyzD,sBAAgB;AAAA,IAChB;AAED,QAAI7sE,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK0D,KAAQ7B,CAAAA,EAAAA,QAAAA,KAAavX,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK2D,GAAM9B,CAAAA,EAAAA,QAAAA,GAAW;AAE7G9D,eAAS,QAAQzT,WAAU0iB,UAAU8L,SAASnV,GAAAA;AAC9C,UAAGwzD,iBAAkB7sE,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK2D,GAAAA,CAAAA,EAAM9B,QAAa8B,KAAAA,IAAI9B,QAAW,GAAA;AACxF9D,iBAAS,MAAMzT,WAAU0iB,UAAUiF,WAAWtO,GAC9C;AAAA,MAAA;AAAA,IACD;AAED,QAAGyR,SAAQ;AACV,UAAG9qB,WAAU8O,UAAU9O,WAAU8O,OAAOhP,IAAM,GAAA;AAC7C2T,iBAAS,OAAOzT,WAAU0iB,UAAU5iB,OAAO,cAAgBgrB,EAAAA,QAAQrB,KAAKqB,QAAQrX,OAAOqX,OAC3F;AAAA,MAAA,WAAY9qB,WAAUgP,UAAUhP,WAAUgP,OAAOlP,IAAAA,GAAM;AACnD2T,iBAAS,OAAOzT,WAAU0iB,UAAU5iB,OAAO,aAAA,EAAegrB,QAAQrB,KAAKqB,QAAQrX,OAAOqX,OAAAA;AAAAA,MACtF;AAAA,IACD;AAGD,aAAQ9iB,IAAI,GAAGA,IAAI0jE,KAAKzjE,QAAQD,KAAI;AACnChI,MAAAA,WAAU4T,SAAS0a,cAAco9C,KAAK1jE,CAAI,GAAA,EACzC,cAAcyL,OACd,aAAa,SAAA,CAAA;AAAA,IAEd;AAAA,EACD,GAED84D,wBAAwB,SAAS3yD,YAAYM,UAC5C;AAAA,QAAIwxD,OAAO1rE,WAAUqI,WAAWghB,iBAAiB;AAEjD,QAAIiuC,WAAWt3D,WAAUyF,KAAKghB,WAAW,IAAI/Q,KAAK1V,WAAUqG,WAAWuP,QAEvE,CAAA;AAAA,QAAI7J,QAAS;AACb,QAAI+gE,aAAa9sE,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAKkE,UACnD,CAAA;AAAA,aAAQ5R,IAAI,GAAGA,IAAI0jE,KAAKzjE,QAAQD,KAAI;AACnC+D;AACA,UAAG/L,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK4hD,QAAAA,CAAAA,EAAW//C,QAAau1D,KAAAA,WAAWv1D,QAAU,GAAA;AACjF;AAAA,MACJ,OAAQ;AACJ+/C,mBAAWt3D,WAAUyF,KAAKT,IAAIsyD,UAAU,GAAG,KAC3C;AAAA,MAAA;AAAA,IACD;AACD,QAAGvrD,SAAU;AAAG,aAAO1L,KAAK0sE,SAASrB,KAAK3/D;AAC1C,WAAO,CAAA;AAAA,EACP,GAEDghE,UAAU,SAASpkD,MAAAA;AAClB,QAAIqiC,UAAS3qD,KAAKF,cAClB6qD;AAAAA,IAAAA,QAAO7jD,MAAM+L,MAAMyV,KAAK9W,YAAY;AACpCm5C,IAAAA,QAAO7jD,MAAMiL,OAAOuW,KAAKkM,aAAa;AACtCm2B,IAAAA,QAAO7jD,MAAMF,QAAQ0hB,KAAK/d,cAAc;AACxCogD,IAAAA,QAAO7jD,MAAMC,SAASuhB,KAAKje,eAAe;AAC1Cie,SAAKloB,YAAYuqD,OACjB;AAAA,WAAO,CAACA,OAAAA;AAAAA,EACR,GACDohB,kBAAkB,SAASxyD,YAAYM;AACtC,QAAIyO,OAAO3oB,WAAUgtE,eAAepzD,UACpC+O;AAAAA,SAAKxhB,MAAMf,WAAW;AACtB,QAAI4kD,UAAS3qD,KAAKF,cAAAA;AAClB6qD,IAAAA,QAAO7jD,MAAM+L,MAAM;AACnB83C,IAAAA,QAAO7jD,MAAMiL,OAAO;AACpB44C,IAAAA,QAAO7jD,MAAMF,QAAQ;AACrB+jD,IAAAA,QAAO7jD,MAAMC,SAAS;AACtBuhB,SAAKloB,YAAYuqD,OAAAA;AACjB,WAAO,CAACA;EACR,GAEDwhB,oBAAoB,SAAS5yD,YAAYM,UACxC;AAAA,QAAI6gC,QAAQ16C,KAAKF;AACjB46C,UAAM5zC,MAAMC,SAAS;AACrB2zC,UAAM5zC,MAAMF,QAAQ;AACpB8zC,UAAM5zC,MAAM8lE,UAAU;AACtBlyB,UAAM5zC,MAAM+L,MAAM;AAClB6nC,UAAM5zC,MAAMiL,OAAO;AACnBpS,IAAAA,WAAUqI,WAAWC,cAAc,eAAiB7H,EAAAA,YAAYs6C;AAChE,WAAO,CAACA,KACR;AAAA,EAAA,GAEDoxB,sBAAsB,SAASvyD,YAAYM,UAAU4Q;AACpD,QAAIoiD,YAAYltE,WAAU8hB,WAAW,CAAE,GAAE9hB,WAAU8O,OAAO9O,WAAUyV,KAAAA,CAAAA;AACpE,QAAI03D,QAAQD,UAAU1mD;AAEtB0mD,cAAUE,iBAAiB;AAC3B,QAAIC,SAAS,CAEb;AAAA,QAAIz3D,WAAWgE,aAAa,IAAIlE,KAAKkE,cAAc5Z,WAAU6V;AAC7D,QAAIC,WAAWoE,WAAW,IAAIxE,KAAKwE,QAAAA,IAAYla,WAAU+V;AAEzD,QAAGH,SAAS2B,QAAAA,IAAYvX,WAAU6V,UAAU0B,QAC3C3B;AAAAA,iBAAW,IAAIF,KAAK1V,WAAU6V,SAC/B;AAAA,QAAGC,SAASyB,QAAAA,IAAYvX,WAAU+V,UAAUwB;AAC3CzB,iBAAW,IAAIJ,KAAK1V,WAAU+V,SAE/B;AAAA,QAAA,CAAIm3D,UAAUI;AAAU,aAAOD;AAE/B,aAAQrlE,IAAI,GAAGA,IAAIklE,UAAUI,SAASrlE,QAAQD,KAAI;AACjD,UAAGhI,WAAUutE,mBAAmBL,UAAUI,SAAStlE,CAAAA,CAAAA;AAClD;AAAA,IACD;AACD,QAAGA,KAAKklE,UAAUI,SAASrlE;AAC1B,aAAOolE;AAER,QAAIn3C,OAAOi3C,MAAMriD,OAAAA;AAEjB,QAAMlV,EAAAA,WAAWsE,YAAYpE,WAAW8D;AACvC,aAAOyzD;AAER,QAAItyB,QAAQ16C,KAAKF,cAAAA;AAEjB,QAAIqtE,YAAYxtE,WAAUytE,eAAe,EAAC7zD,WAAYA,GAAa,OAAOszD,SAAAA,IAAW;AACrF,QAAIQ,UAAU1tE,WAAUytE,eAAe,EAAC7zD,YAAYM,SAAAA,GAAW,OAAOgzD,SAAAA,IAAW;AACjF,QAAI9lE,SAAW8lE,UAAUS,gBAAgB7iD,OAAS,IAAA,KAAOoiD,UAAU7wD,KAAK;AAExE,QAAInJ,MAAM;AACV,QAAIlT,WAAU4tE,UAAU,MAAQ,GAAA;AAC/B16D,YAAMgjB,KAAKrkB;AACX27D,mBAAaN,UAAUj7B;AACvBy7B,iBAAWR,UAAUj7B;AACrB/b,aAAOl2B,WAAUqI,WAAWC,cAAc,eAG1C;AAAA,IAAA;AACD,QAAIrB,QAAQ6L,KAAKC,IAAI,GAAG26D,UAAUF,YAAY,CAC9CzyB;AAAAA,UAAM5zC,MAAM6nC,UAAU,aAAW5nC,SAAO,eAAaomE,YAAU,gBAAcvmE,QAAM,cAAYiM,MAAI;AAEnG,QAAGgjB,MAAK;AACPA,WAAKz1B,YAAYs6C,KACjBsyB;AAAAA,aAAOt+D,KAAKgsC,KAAAA;AAAAA,IACZ;AAED,WAAOsyB;AAAAA,EACP,GAEDQ,iBAAiB,SAASpoE,MAAAA;AACzB,QAAI2jB,QAAQppB,WAAUqI,WAAWghB,iBAAiB,iBAElD;AAAA,QAAIqiD,OAAO,CAAA;AACX,aAAQ1jE,IAAI,GAAGA,IAAIohB,MAAMnhB,QAAQD,KAAI;AACpC0jE,WAAK38D,KAAKqa,MAAMphB,CAAGsB,EAAAA,UAAAA;AAAAA,IACnB;AAED,QAAI2tD,YAAYj3D,WAAUyF,KAAKghB,WAAW,IAAI/Q,KAAK1V,WAAUqG,SAAAA,EAAWuP,QAExE,CAAA;AAAA,QAAI7J,QAAS;AACb,QAAI+hE,aAAa;AACjB,QAAIC,WAAAA;AACJ,QAAIzW,WAAWL;AACf,QAAI6V,aAAa9sE,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAKjQ,IACnD,CAAA;AAAA,aAAQuC,IAAI,GAAGA,IAAI0jE,KAAKzjE,QAAQD,KAAI;AACnC+D;AAEA,UAAGgiE,YAAY,GAAE;AAChBD;AACAC,mBAAW;AAAA,MACf,OAAQ;AACJA;AAAAA,MACA;AAED,UAAG/tE,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK4hD,WAAW//C,QAAau1D,KAAAA,WAAWv1D,QAAU,GAAA;AACjF;AAAA,MACJ,OAAQ;AACJ+/C,mBAAWt3D,WAAUyF,KAAKT,IAAIsyD,UAAU,GAAG,KAC3C;AAAA,MAAA;AAAA,IACD;AAED,QAAGvrD,SAAU,IAAE;AACd,aAAO,CACP;AAAA,IAAA;AAED,QAAIqG,OAAOpS,WAAUic,OAAO8xD,QAAAA;AAC5B,QAAI76D,MAAMlT,WAAUic,OAAOK,QAAQwxD,UAAAA;AAEnC,QAAIxqE,MAAMjD,KAAKF,cACfmD;AAAAA,QAAI6D,MAAM+L,MAAMA,MAAM;AACtB5P,QAAI6D,MAAMiL,OAAOA,OAAO;AACxB9O,QAAI6D,MAAMF,QAAQjH,WAAU8a,MAAMizD,QAAY,IAAA;AAC9CzqE,QAAI6D,MAAMC,UAAWpH,WAAUic,OAAOK,QAAQwxD,aAAa,CAAK56D,IAAAA,OAAQlT,WAAUic,OAAO7U,UAAU;AAGnG,QAAIqB,YAAYzI,WAAUqI,WAAWC,cAAc,eAEnD;AAAA,QAAI0lE,YAAYvlE,UAAUH,cAAc,OAAA;AACxC,QAAG0lE,UAAUx1C,aAAY;AACxB/vB,gBAAUkJ,aAAarO,KAAK0qE,UAAUx1C,WAAAA;AAAAA,IACzC,OAAO;AACJ/vB,gBAAUhI,YAAY6C,GACtB;AAAA,IAAA;AACD,WAAOA;AAAAA,EACP,GACD+oE,mBAAmB,SAASzyD,YAAYM,UAAAA;AACvC,QAAI0E,MAAM,CACV;AAAA,QAAI03C,cAAc18C;AAClB,WAAM08C,YAAY/+C,QAAAA,IAAY2C,SAAS3C,QAAAA,GAAU;AAChDqH,UAAI7P,KAAK1O,KAAKwtE,gBAAgBvX,WAC9BA,CAAAA;AAAAA,oBAAct2D,WAAUyF,KAAKT,IAAIsxD,aAAa,GAAG,KACjD;AAAA,IAAA;AACD,WAAO13C;AAAAA,EACP,GAEDstD,sBAAsB,SAAStyD,YAAYM,UAAU4Q,SACpD;AAAA,QAAI/e,QAAQ/L,WAAU8sC,kBAAkBlzB,UAAAA;AAExC,QAAI8xD,OAAO;AACX,QAAIx1C,OAAO;AAEX,QAAI7xB,IAAIrE,WAAU4B;AAClB,QAAG5B,WAAU+a,SAAShP,KAAAA;AAAQ,aAAO2/D;AAErC,QAAI1rE,WAAUgP,UAAUhP,WAAUgP,OAAOhP,WAAUyV,KAAUqV,KAAAA,SAAS;AACrE,UAAI5nB,OAAOlD,WAAUgP,OAAOhP,WAAUyV,KAAAA;AACtC1J,cAAQ7I,KAAKotC,MAAMxlB,OAAAA;AAEnB,UAAImjD,cAAc/qE,KAAKotC,MAAMxlB,OAAAA;AAC7B,UAAK5nB,EAAAA,KAAKopB,OAAO,IAAG;AACnBvgB,gBAAQkiE;AACR,YAAI/qE,KAAKyvC,QAAS5mC,QAAQ7I,KAAKkD,WAASlD,KAAKyvC,MAAO;AACnD5mC,kBAAQ;AAAA,QACR;AAAA,MACL,OAAQ;AAGJA,gBAAQ/L,WAAU8sC,kBAAkBlzB,cAAcq0D;AAAAA,MAElD;AAAA,IACD;AACD/3C,WAAOl2B,WAAU8pC,cAAc/9B,KAC/B;AAAA,QAAA,CAAImqB,QAAQA,KAAK5tB,cAAc,iBAAmB,GAAA;AAEjD,aAAOpI,SAASC,cAAc,KAAA;AAAA,IAC9B;AAED,QAAIiZ,QAAQtG,KAAKC,IAAK6G,WAAWI,SAAAA,IAAW,KAAKJ,WAAWyE,WAAeha,GAAAA,EAAE0V,aAAW,EAAA;AAGxF,QAAIV,MAAMvG,KAAKqI,IAAKjB,SAASF,SAAW,IAAA,KAAKE,SAASmE,WAAAA,GAAeha,EAAE+Z,YAAU,EACjF;AAAA,QAAA,CAAI/E,OAAQrZ,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAKwE,QAAAA,CAAAA,EAAW3C,QAAYvX,IAAAA,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAKkE,UAAAA,CAAAA,EAAarC,QAAW,GAAA;AAC9H8B,YAAMhV,EAAE+Z,YAAU;AAAA,IAClB;AAED,QAAI/E,OAAOD,OAAO;AACjB,aAAO;IACP;AAED,QAAI2hC,QAAQ16C,KAAKF,cAGjB;AAAA,QAAI+tE,mBAAmBluE,WAAU4B,OAAOyZ,eAAahX,EAAE+Z,YAAY;AACnE,QAAI+vD,UAAU,KAAG,KAAG;AACpBpzB,UAAM5zC,MAAM+L,MAAOJ,KAAK+G,OAAOT,QAAM,KAAG,MAAKpZ,WAAU4B,OAAOmY,aAAWo0D,WAASnuE,WAAU4B,OAAOyZ,eAAa8yD,OAAAA,IAAWD,mBAAoB;AAC/InzB,UAAM5zC,MAAMinE,aAAarzB,MAAM5zC,MAAMC,SAAS0L,KAAKC,IAAKD,KAAK+G,OAAQR,MAAID,SAAO,KAAG,MAAMpZ,WAAU4B,OAAOyZ,eAAa8yD,OAAYD,IAAAA,kBAAkB,CAAG,IAAA;AACxJnzB,UAAM5zC,MAAMF,QAAQ;AACpBivB,SAAKz1B,YAAYs6C,KAAAA;AACjB2wB,SAAK38D,KAAKgsC,KACV;AAAA,WAAO2wB,KAAK,CAAA;AAAA,EAEZ;AAGF;ACxWe,SAAQ2C,eAACruE,YAAAA;AAExBA,EAAAA,WAAUunE,oBAAoB+G,gBAAgB,WAAA;AAAA;AAE9CtuE,EAAAA,WAAUunE,oBAAoB+G,cAAc5jD,YAAY1qB,WAAUuuE,SACjEvuE,WAAUunE,oBAAoBsD,cAC9B,EACC2D,gBAAgB,WACf;AAAA,QAAIl8D,OAAO,IAAItS,WAAUunE,oBAAoBuE;AAE7C,QAAA,CAAIx5D,KAAKykB,QAAAA,GAAU;AAClBzkB,aAAOA,KAAK6qC,SAAAA;AAAAA,IACZ;AACD,WAAO7qC;AAAAA,EACP,GAEDy5D,QAAO,EACNh6C,OAAO,SACPnvB,MAAM,QACN6pE,YAAY,cACZ/pE,UAAS,YACTupE,OAAM,SACNK,YAAY,cACZ3+D,MAAM,OAEP8gE,GAAAA,SAAS,WACR;AAAA,QAAI5hD,QAAQ7sB,WAAUqG,SAEtB;AAAA,QAAIvG,OAAO+sB,MAAM/sB;AACjB,QAAIE,WAAU8O,UAAU9O,WAAU8O,OAAOhP,OAAO;AAC/C,aAAOO,KAAK0rE,OAAOrpE;AAAAA,IACvB,WAAc1C,WAAUgP,UAAUhP,WAAUgP,OAAOlP,IAAO,GAAA;AACtD,aAAOO,KAAK0rE,OAAOE;AAAAA,IACvB,WAAYnsE,QAAQ,SAAQ;AACxB,aAAOO,KAAK0rE,OAAOh6C;AAAAA,IACvB,WAAYjyB,QAAQ,QAAO;AACvB,aAAOO,KAAK0rE,OAAOnpE;AAAAA,IACvB,WAAY9C,QAAQ,eAAc;AAC9B,aAAOO,KAAK0rE,OAAOO;AAAAA,IACnB,WAAQxsE,QAAQ,SAASA,QAAQ,YAAaE,WAAUiP,SAASjP,WAAU,UAAUF,IAAAA,GAAO;AAC5F,aAAOO,KAAK0rE,OAAOp+D;AAAAA,IACvB,OAAQ;AACJ,aAAOtN,KAAK0rE,OAAOU;AAAAA,IACnB;AAAA,EACD,GAEDzhD,OAAO,WAAA;AACNhrB,IAAAA,WAAUgrB,MACV;AAAA,EAAA,GAED0jD,MAAM,WAAA;AAAA,EAEL,GAED/I,SAAS,WACR3lE;AAAAA,IAAAA,WAAUqI,WAAWjD,aAAa,YAAY,GAC9C;AAAA,EAAA,GACDupE,QAAQ,WAAA;AACP,QAAG3uE,WAAUqI;AACZrI,MAAAA,WAAUqI,WAAWumE,gBAAgB,UAAA;AAAA,EACtC,GACDv4C,WAAW,WACV;AAAA,WAAOr2B,WAAUqI,WAAWouB,aAAa,UAAA;AAAA,EACzC,GAGDo4C,gBAAgB,SAAS1qE,GAAGC;AAC3B,QAAID,EAAEyV,WAAWrC,QAAAA,KAAanT,EAAEwV,WAAWrC,QAC1C;AAAA,aAAOpT,EAAE/D,KAAKgE,EAAEhE,KAAK,IAAA;AACtB,WAAO+D,EAAEyV,WAAWrC,YAAYnT,EAAEwV,WAAWrC,QAAY,IAAA,IAAA;AAAA,EACzD,GAEDu3D,YAAY,SAAS1qD,MAAMC,IAAI0qD,SAAS1rB,SAAAA;AACvC,QAAIxK,QAAQ74C,WAAUqG,SAAAA;AACtB+d,WAAO,IAAI1O,KAAK5C,KAAKC,IAAI8lC,MAAMjjC,SAAS2B,QAAW6M,GAAAA,KAAK7M;AACxD8M,SAAK,IAAI3O,KAAK5C,KAAKqI,IAAI09B,MAAM/iC,SAASyB,QAAAA,GAAW8M,GAAG9M,QAEpD,CAAA,CAAA;AAAA,QAAI2wB,MAAMloC,WAAUopC,UAAUhlB,MAAMC,EACpC6jB;AAAAA,QAAIpR,KAAKz2B,KAAKwuE,cACd;AAAA,QAAGxrB,SAAQ;AACVnb,YAAMA,IAAImb;IACV;AAED,QAAI11B,OAASohD,CAAAA,CAAAA;AACb,aAAQ/mE,IAAG,GAAGA,IAAIkgC,IAAIjgC,UAAU0lB,MAAM3lB,KAAI;AACzC,UAAGkgC,IAAIlgC,CAAAA,EAAG5H,MAAM2uE,SAAQ;AACvBphD,eAAO;AAAA,MACP;AACDua,UAAIhe,OAAOliB,GAAG;AACdA;AAAAA,IACA;AAED,aAAQA,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAI;AAClC,UAAIgnE,eAAe,IAAIhvE,WAAUunE,oBAAoB0H,MAAM/mC,IAAIlgC,CAAG5H,EAAAA,EAAAA;AAClE,UAAG4uE,aAAaE,QACf;AAAA,eAAOhnC,IAAIlgC,CAAAA;AAAAA,IACZ;AAED,WAAO;AAAA,EACP,GAEDmnE,kBAAkB,SAAS/uE,KAAAA;AAC1B,QAAIgvE,aAAapvE,WAAUunE,oBAAoB8H,WAAWD;AAE1D,QAAIL,UAAU3uE,OAAOgvE,cAAcA,WAAWxhE;AAE9C,QAAI0hE,YAAY;AAChB,QAAGP,WAAW/uE,WAAUwV,SAASu5D,UAAS;AACzC,UAAIQ,YAAYvvE,WAAUwV,SAASu5D,OAAAA;AAEnCO,kBAAYtvE,WAAUunE,oBAAoB+G,cAAc5jD,UAAUokD,WACjES,UAAU31D,YACV5Z,WAAUyF,KAAKT,IAAIuqE,UAAU31D,YAAY,GAAG,MAAA,GAC5C21D,UAAUnvE,IACV,KAGD;AAAA,IAAA;AACD,SAAIkvE,aAAclvE,CAAAA,KAAG;AACpB,UAAIovE,eAAexvE,WAAUqG,SAE7BipE;AAAAA,kBAAYtvE,WAAUunE,oBAAoB+G,cAAc5jD,UAAUokD,WACjEU,aAAa55D,UACb5V,WAAUyF,KAAKT,IAAIwqE,aAAa55D,UAAU,GAAG,MAAA,GAC7C,MACA,KAAA;AAAA,IAED;AAED,QAAG05D,WAAU;AAEZ,UAAIG,SAAS,IAAIzvE,WAAUunE,oBAAoB0H,MAAMK,UAAUlvE,EAC/D;AAAA,UAAA,CAAIqvE,OAAO14C,QAAAA,GAAU;AACpB12B,aAAK8uE,iBAAiBG,UAAUlvE;MACrC,OAAS;AACJ,YAAGgvE,YAAW;AAACA,qBAAWV,KAAO;AAAA,QAAA;AACjC1uE,QAAAA,WAAUunE,oBAAoB8H,WAAWK,cAAcD,MAAAA;AAAAA,MACvD;AAAA,IACD;AAAA,EACD,GAEDE,kBAAkB,SAASvvE,KAC1B;AAAA,QAAIgvE,aAAapvE,WAAUunE,oBAAoB8H,WAAWD;AAE1D,QAAIL,UAAU3uE,OAAOgvE,cAAcA,WAAWxhE;AAE9C,QAAI0hE,YAAY;AAChB,QAAGP,WAAW/uE,WAAUwV,SAASu5D,OAAS,GAAA;AACzC,UAAIQ,YAAYvvE,WAAUwV,SAASu5D;AAEnCO,kBAAYtvE,WAAUunE,oBAAoB+G,cAAc5jD,UAAUokD,WACjE9uE,WAAUyF,KAAKT,IAAIuqE,UAAUr1D,UAAW,IAAG,MAC3Cq1D,GAAAA,UAAUr1D,UACVq1D,UAAUnvE,IACV,IAED;AAAA,IAAA;AACD,QAAIkvE,CAAAA,aAAAA,CAAclvE,KAAG;AACpB,UAAIovE,eAAexvE,WAAUqG,SAE7BipE;AAAAA,kBAAYtvE,WAAUunE,oBAAoB+G,cAAc5jD,UAAUokD,WACjE9uE,WAAUyF,KAAKT,IAAIwqE,aAAa15D,UAAW,IAAG,MAC9C05D,GAAAA,aAAa15D,UACb,MACA,IAED;AAAA,IAAA;AAED,QAAGw5D,WAAU;AACZ,UAAIG,SAAS,IAAIzvE,WAAUunE,oBAAoB0H,MAAMK,UAAUlvE,EAAAA;AAC/D,UAAIqvE,CAAAA,OAAO14C,QAAU,GAAA;AACpB12B,aAAKsvE,iBAAiBL,UAAUlvE,EACrC;AAAA,MAAA,OAAS;AACJ,YAAGgvE,YAAW;AAACA,qBAAWV,KAAO;AAAA,QAAA;AACjC1uE,QAAAA,WAAUunE,oBAAoB8H,WAAWK,cAAcD,MACvD;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GAED1+D,MAAM,EAEL,iEAAiE,SAASoD,GACzE;AAAA,QAAIpU,OAAOC,WAAUunE,oBAAoBqI,WAAWllD,UAAUmlD,SAAS,+BAAA;AACvE,QAAIpmD,MAAMtV,EAAEsV;AACZ,QAAGA,QAAQxW,QAAU;AACpBwW,YAAMtV,EAAEg7B,UAAU;AAAA,IAClB;AACD,QAAGpvC,KAAK0pB,MAAI,IAAI,CAAA,GAAG;AAClB1pB,WAAK0pB,MAAI,IAAI,CAAA,EAAG1jB,MAChB;AAAA,IAAA;AAAA,EACD,GAED,uBAAuB,SAASoO,GAAAA;AAC/BnU,IAAAA,WAAUiU,OAAOuD,oBAAAA;AAAAA,EACjB,GACD,yBAAyB,SAASrD,GAAAA;AACjCnU,IAAAA,WAAUiU,OAAOwD;EACjB,GACD,mBAAkB,SAAStD,GAAAA;AAC1B,QAAI1F,WAAWzO,WAAUqI,WAAWC,cAAc,eAClDmG;AAAAA,aAASsN,aAAa;AAAA,EACtB,GACD,uBAAuB,SAAS5H,GAAAA;AAC/B,QAAI1F,WAAWzO,WAAUqI,WAAWC,cAAc,eAAA;AAClDmG,aAASsN,aAAa;AAAA,EACtB,GAGD5H,GAAK,WACJ9T;AAAAA,SAAK8uE,iBACL;AAAA,EAAA,GAEDxF,MAAQ,WAAA;AACP3pE,IAAAA,WAAUyG,eAAe,oBAAIiP,MAC7B;AAAA,EAAA,GAED,WAAW,WAAA;AACVrV,SAAKsvE,iBAAAA;AAAAA,EACL,GAED,yBAAyB,WAAA;AACxB3vE,IAAAA,WAAUmZ,YAAY,EAACS,YAAY,IAAIlE,KAAK1V,WAAUqG,SAAAA,EAAWZ,IACjE,EAAA,CAAA;AAAA,EAAA,GAED,iBAAiB,SAAS0O,GACzBnU;AAAAA,IAAAA,WAAU8vE,oBAAoB37D,CAC9B;AAAA,EAAA,GACD,iBAAiB,SAASA,GACzBnU;AAAAA,IAAAA,WAAU8vE,oBAAoB37D,CAAAA;AAAAA,EAC9B,GACD,iBAAiB,SAASA,GACzBnU;AAAAA,IAAAA,WAAU8vE,oBAAoB37D,CAAAA;AAAAA,EAC9B,EAMJnU,EAAAA,CAAAA;AAAAA,EAAAA,WAAUunE,oBAAoB+G,cAAc5jD,UAAUwgD,QAAQlrE,WAAUunE,oBAAoB+G,cAAc5jD,UAAU3Z,IAAAA;AAEpH;AChPe,SAAQg/D,SAAC/vE,YAAAA;AAExBA,EAAAA,WAAUunE,oBAAoByI,aAAa,WAAA;AAAA;AAE3ChwE,EAAAA,WAAUunE,oBAAoByI,WAAWtlD,YAAY1qB,WAAUuuE,SAC9DvuE,WAAUunE,oBAAoBsD,cAC9B,EACC9zC,SAAS,WACR;AAAA,WAAO;AAAA,EACP,GACDomB,UAAU,WAAA;AACT,WAAO;AAAA,EACP,GAED8yB,QAAQ,SAAUvrE,SACjB1E;AAAAA,IAAAA,WAAUunE,oBAAoB8H,WAAWK,cAAchrE,OACvD;AAAA,EAAA,GAEDwrE,WAAW,SAAS9rE,GAEnB;AAAA,QAAA,CAAIA;AAAG,aAAO;AACd,aAAQ4D,KAAK3H,MAAK;AACjB,UAAA,CAAA,CAAKA,KAAK2H,CAAAA,KAAAA,CAAAA,CAAQ5D,EAAE4D,CAAI;AAAA,eAAO;AAE/B,UAAImoE,mBAAsB9vE,CAAAA,EAAAA,KAAK2H,CAAM3H,KAAAA,KAAK2H,GAAGorB;AAC7C,UAAIg9C,mBAAsBhsE,CAAAA,EAAAA,EAAE4D,CAAM5D,KAAAA,EAAE4D,CAAGorB,EAAAA;AACvC,UAAGg9C,oBAAoBD;AAAkB,eAAO;AAChD,UAAA,EAAKC,oBAAoBD,mBAAmB;AAC3C,YAAG/rE,EAAE4D,CAAM3H,KAAAA,KAAK2H,CAAI;AAAA,iBAAO;AAAA,MAChC,OAAS;AACJ,YAAG5D,EAAE4D,CAAGorB,EAAAA,SAAAA,KAAc/yB,KAAK2H,CAAAA,EAAGorB,SAC7B;AAAA,iBAAO;AAAA,MACR;AAAA,IACD;AACD,WAAO;AAAA,EACP,GAED87C,SAAS,WAAY;AAAA,EAAA,GACrBlkD,OAAO,WAAA;AACN,QAAI1Y,OAAOjS,KAAK6uE,QAAAA;AAChB,QAAG58D,MAAK;AACPA,WAAKlN,aAAa,YAAY,IAAA;AAE9B,UAAGkN,KAAK0Y;AAAO1Y,aAAK0Y;IACpB;AAAA,EAED,GACD0jD,MAAM,WAAA;AACL,QAAIp8D,OAAOjS,KAAK6uE,QAAAA;AAChB,QAAG58D,MAAK;AACPA,WAAKlN,aAAa,YAAY,IAAA;AAAA,IAE9B;AAAA,EACD,EAAA,CAAA;AAKH;AC1De,SAAQirE,YAACrwE,YAAAA;AAExBA,EAAAA,WAAUunE,oBAAoBqI,aAAa,SAAS7jE;AACnD1L,SAAK0L,QAAQA,SAAS;AAAA,EACvB;AAEA/L,EAAAA,WAAUunE,oBAAoBqI,WAAWllD,YAAY1qB,WAAUuuE,SAC9DvuE,WAAUunE,oBAAoByI,YAC9B,EACCd,SAAS,SAASnjE;AACjBA,YAAQA,SAAS1L,KAAK0L,SAAS;AAC/B,QAAI4qB,QAAQt2B,KAAKwvE;AACjB,QAAGl5C,MAAM5qB,KAAQ;AAAA,aAAO4qB,MAAM5qB,KAAAA;AAAAA,EAC9B,GAED8jE,UAAU,SAASz3C,UAClBA;AAAAA,eAAWA,YAAY,CACrB,yCACA,yCACA,0CACA,+BAAA,EACCt0B,KAAK,IAER;AAAA,QAAI6yB,QAAQ7uB,MAAM4iB,UAAU6C,MAAM7S,KAAK1a,WAAUqI,WAAWghB,iBAAiB+O,QAAAA,CAAAA;AAC7EzB,UAAMG,KAAK,SAAS3yB,GAAGC,GACtB;AAAA,aAAOD,EAAE0wB,aAAazwB,EAAEywB;AAAAA,IAC5B,CACG;AAAA,WAAO8B;AAAAA,EACP,GAEDm0C,WAAU,MAEV/zC,SAAS,WACR;AAAA,WAAA,CAAA,CAAS12B,KAAK6uE,QAAQ7uE,KAAK0L,KAAAA;AAAAA,EAC3B,GACDoxC,UAAS,WAAA;AACR,QAAImzB,cAAcjwE,KAAK6uE,QAAQ,CAC/B;AAAA,QAAA,CAAIoB,aAAY;AACfA,oBAAc,IAAItwE,WAAUunE,oBAAoBuE;AAAAA,IAChD;AACD,WAAOwE;AAAAA,EACP,GAEDv/D,MAAM,EACLqB,MAAQ,WACP;AAAA,QAAImjD,WAAWl1D,KAAK0L,QAAQ;AAC5B,QAAGwpD,WAAW,GAAE;AACfA,iBAAWl1D,KAAKwvE,SAAAA,EAAW5nE,SAAS;AAAA,IACpC;AAED5H,SAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBqI,WAAWra;EAEzD,GACDljD,OAAS,WACR;AAAA,QAAIkjD,WAAWl1D,KAAK0L,QAAQ;AAC5B,QAAGwpD,YAAYl1D,KAAKwvE,SAAAA,EAAW5nE,QAAO;AACrCstD,iBAAW;AAAA,IACX;AAEDl1D,SAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBqI,WAAWra,QACzD,CAAA;AAAA,EAAA,GACDmU,MAAQ,WACPrpE;AAAAA,SAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBuE,UAC9C;AAAA,EAAA,GAEDxC,OAAS,WACR;AAAA,QAAIh3D,OAAOjS,KAAK6uE,QAChB;AAAA,QAAG58D,MAAK;AACPA,WAAKvM,MACL;AAAA,IAAA;AAAA,EACD,EAKJ/F,EAAAA,CAAAA;AAAAA,EAAAA,WAAUunE,oBAAoBqI,WAAWllD,UAAUwgD,QAAQlrE,WAAUunE,oBAAoBqI,WAAWllD,UAAU3Z,IAAAA;AAE9G;AC7Ee,SAAQ9K,MAACjG,YAAAA;AAExBA,EAAAA,WAAUunE,oBAAoB0H,QAAQ,SAAS7uE,KAAAA;AAC9CC,SAAKuN,UAAU;AACf,QAAG5N,WAAUwV,SAASpV,GAAAA,GAAI;AACzB,UAAIuU,KAAK3U,WAAUwV,SAASpV,GAAAA;AAC5BC,WAAK+Y,QAAQ,IAAI1D,KAAKf,GAAGiF,UAAAA;AACzBvZ,WAAKgZ,MAAM,IAAI3D,KAAKf,GAAGuF,QAEvB7Z;AAAAA,WAAKyqB,UAAUzqB,KAAKkwE,YAAY57D,EAAAA;AAChCtU,WAAKuN,UAAUxN;AAAAA,IACf;AAAA,EACF;AAEAJ,EAAAA,WAAUunE,oBAAoB0H,MAAMvkD,YAAY1qB,WAAUuuE,SACzDvuE,WAAUunE,oBAAoByI,YAC9B,EACCQ,WAAW,WACV;AAAA,WAAO1oE,MAAM4iB,UAAU6C,MAAM7S,KAAK1a,WAAUqI,WAAWghB,iBAAiB,MAAIrpB,WAAU4B,OAAO8iC,kBAAgB,GAC7G,CAAA;AAAA,EAAA,GAEDqnC,QAAQ/rE,WAAUunE,oBAAoB+G,cAAc5jD,UAAUqhD,QAE9D0C,SAASzuE,WAAUunE,oBAAoB+G,cAAc5jD,UAAU+jD,SAE/D3D,WAAW,MACX/zC,SAAS,WAAA;AACR,WAAU/2B,CAAAA,EAAAA,WAAUwV,SAASnV,KAAKuN,OAAYvN,KAAAA,KAAK6uE,QACnD;AAAA,EAAA,GACD/xB,UAAU,WAAA;AACT,QAAIszB,YAAYpwE,KAAKmwE,UAAAA,EAAY;AACjC,QAAIE,iBAAiB;AACrB,QAAA,CAAID,aAAezwE,CAAAA,WAAUgV,cAAcy7D,SAAAA,GAAY;AACtDC,uBAAiB,IAAI1wE,WAAUunE,oBAAoBuE;AAAAA,IACvD,OAAQ;AACJ,UAAI1rE,MAAKJ,WAAUgV,cAAcy7D,SACjCC;AAAAA,uBAAiB,IAAI1wE,WAAUunE,oBAAoB0H,MAAM7uE;IACzD;AAED,WAAOswE;AAAAA,EACP,GAEDC,oBAAoB,SAAU1iE,KAC7B;AAAA,QAAI2iE,WAAW3iE,IAAGumB,sBAAAA;AAClB,QAAIq8C,WAAW7wE,WAAUqI,WAAWC,cAAc,eAAA,EAAiBksB;AAEnE,QAAGo8C,SAASr8C,SAASs8C,SAAS39D,OAAO09D,SAAS19D,MAAM29D,SAASt8C,QAAO;AACnE,aAAO;AAAA,IACP;AACD,WAAO;AAAA,EACP,GAED26C,SAAS,WAER;AAAA,QAAI4B,aAAa,MAAI9wE,WAAU4B,OAAO8iC,kBAAgB,OAAKrkC,KAAKuN,UAAQ;AAExE,QAAImjE,eAAe/wE,WAAUunE,oBAAoB8H,WAAW2B,gBAAgB3wE,KAAKuN,OACjF;AAAA,QAAGmjE,cAAa;AACf,aAAOA;AAAAA,IACX,OAAQ;AACJ,UAAG/wE,WAAUixE,uBAAuBjxE,WAAUixE,oBAAoBjxE,WAAUwV,SAASnV,KAAKuN,OAAAA,CAAAA,GAAU;AACnG,YAAI+oB,QAAQ32B,WAAUqI,WAAWghB,iBAAiBynD,UAClD;AAAA,iBAAQ9oE,IAAI,GAAGA,IAAI2uB,MAAM1uB,QAAQD,KAAI;AACpC,cAAG3H,KAAKswE,mBAAmBh6C,MAAM3uB,CAAI,CAAA,GAAA;AACpC,mBAAO2uB,MAAM3uB,CACb;AAAA,UAAA;AAAA,QACD;AACD,eAAO2uB,MAAM,CAClB;AAAA,MAAA,OAAS;AACJ,eAAO32B,WAAUqI,WAAWC,cAAcwoE,UAAAA;AAAAA,MAC1C;AAAA,IAGD;AAAA,EAED,GAED9lD,OAAO,WACN;AAAA,QAAI/kB,SAAQjG,WAAUwV,SAASnV,KAAKuN,OAAAA;AAEpC,QAAIpH,WAAWxG,WAAUqG,SAAAA;AACzB,QAAGJ,OAAM2T,WAAWrC,QAAY/Q,IAAAA,SAASsP,SAASyB,QAAAA,KAAatR,OAAMiU,SAAS3C,aAAa/Q,SAASoP,SAAS2B,QAAU,GAAA;AACtHvX,MAAAA,WAAUyG,eAAeR,OAAM2T,UAAAA;AAAAA,IAC/B;AAED,QAAItH,OAAOjS,KAAK6uE,QAAAA;AAChB,QAAI7uE,KAAKswE,mBAAmBr+D,IAAAA,GAAO;AAClCtS,MAAAA,WAAUunE,oBAAoB8H,WAAW6B,oBAAmB,WAC3DlxE;AAAAA,QAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUM,MAAM7e,MAAM9L,IAC/D;AAAA,MAAA,GAAE4M,KAAK5M,IAAAA,CAAAA;AAAAA,IACZ,OAAU;AACNL,MAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUM,MAAM7e,MAAM9L,IAAAA;AAAAA,IAC/D;AAAA,EAED,GACDquE,MAAM,WAAA;AACL1uE,IAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUgkD,KAAKviE,MAAM9L;EAC9D,GAGDkwE,aAAa,SAAS57D,IAAAA;AACrB,QAAImW,UAAU;AACd,QAAIhrB,OAAOE,WAAUqG,SAAAA,EAAWvG;AAChC,QAAGE,WAAU8O,UAAU9O,WAAU8O,OAAOhP,OAAM;AAC7C,UAAI4C,WAAW1C,WAAU8O,OAAO9O,WAAUqG,SAAWvG,EAAAA,IAAAA;AACrDgrB,gBAAUnW,GAAGjS,SAASiqB,UAAAA;AAAAA,IAC1B,WAAY3sB,WAAUgP,UAAUhP,WAAUgP,OAAOlP,IAAAA,GAAM;AACnD,UAAI2C,OAAOzC,WAAUgP,OAAOlP,IAAAA;AAC5BgrB,gBAAUnW,GAAGlS,KAAKmnB,MAClB;AAAA,IAAA;AACD,WAAOkB;AAAAA,EACP,GACDqmD,aAAa,SAAS/kD,KACrB;AAAA,QAAIzX,KAAK3U,WAAUwV,SAASnV,KAAKuN,OACjC;AAAA,QAAG+G,IAAG;AACL,UAAImW,UAASzqB,KAAKkwE,YAAY57D,EAC9B;AAAA,UAAIy8D,OAAO,IAAIpxE,WAAUunE,oBAAoBuE,SAASn3D,GAAGiF,YAAY,MAAMkR,OAAAA;AAC3EzqB,WAAK4vE,OAAOmB,KAAKC,SAASD,MAAMhlD,GACpC,CAAA;AAAA,IAAA,OAAQ;AACJ/rB,WAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBuE,UAAAA;AAAAA,IAC9C;AAAA,EACD,GAED/6D,MAAM,EACLqB,MAAQ,WACP/R;AAAAA,SAAK8wE,YAAY,MAAA;AAAA,EACjB,GAED9+D,OAAS,WACRhS;AAAAA,SAAK8wE,YAAY,OACjB;AAAA,EAAA,GACDzH,MAAQ,WAAA;AACP,QAAGrpE,KAAKouE,QAAapuE,KAAAA,KAAK0rE,OAAOp+D,MAAK;AACrC3N,MAAAA,WAAUunE,oBAAoB+G,cAAc5jD,UAAUykD,iBAC3D;AAAA,IAAA,OAAU;AACL9uE,WAAK8wE,YAAY,MACjB;AAAA,IAAA;AAAA,EACD,GAED3H,OAAS,WACR;AAAA,QAAIl3D,OAAOjS,KAAK6uE,QAChB;AAAA,QAAG58D,QAAQA,KAAKvM,OAAM;AACrBuM,WAAKvM,MACV;AAAA,IAAA,OAAS;AACJ1F,WAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBuE;IAC9C;AAAA,EAED,GAEDrC,IAAM,WAAA;AACL,QAAGppE,KAAKouE,QAAapuE,KAAAA,KAAK0rE,OAAOp+D,MAAK;AACrC3N,MAAAA,WAAUunE,oBAAoB+G,cAAc5jD,UAAUilD,iBAC3D;AAAA,IAAA,OAAU;AACLtvE,WAAK8wE,YAAY,IACjB;AAAA,IAAA;AAAA,EACD,GAEDj5D,QAAU,WACT;AAAA,QAAGlY,WAAUwV,SAASnV,KAAKuN,OAAU,GAAA;AACpC5N,MAAAA,WAAUiU,OAAOoD,QAAQ,QAAA,EAAUhX,KAAKuN,OAC7C;AAAA,IAAA,OAAS;AACJvN,WAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBuE;IAC9C;AAAA,EACD,GAGDxC,OAAS,WAAA;AACR,QAAGtpE,WAAUwV,SAASnV,KAAKuN,OAAU,GAAA;AACpC5N,MAAAA,WAAU6Y,aAAaxY,KAAKuN,OAAAA;AAAAA,IACjC,OAAS;AACJvN,WAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBuE,UAC9C;AAAA,IAAA;AAAA,EACD,EAIJ9rE,EAAAA,CAAAA;AAAAA,EAAAA,WAAUunE,oBAAoB0H,MAAMvkD,UAAUwgD,QAAQlrE,WAAUunE,oBAAoB0H,MAAMvkD,UAAU3Z,IAAAA;AAEpG;AClLe,SAAQugE,UAACtxE,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoBuE,WAAW,SAAS1nD,MAAMC,IAAIyG,SAASymD,YAAAA;AACpE,QAAI1kD,QAAQ7sB,WAAUqG,SAAAA;AACtB,QAAI3D,WAAW1C,WAAU8O,UAAU9O,WAAU8O,OAAO+d,MAAM/sB,IAE1D;AAAA,QAAA,CAAIskB,MAAK;AACRA,aAAO/jB,KAAKmxE,eAAAA;AAAAA,IACZ;AAED,QAAA,CAAIntD,IAAG;AAEN,UAAG3hB,UAAS;AACX2hB,aAAKrkB,WAAUyF,KAAKT,IAAIof,MAAM1hB,SAASia,QAAQja,SAASka,MAC3D;AAAA,MAAA,OAAO;AACJyH,aAAKrkB,WAAUyF,KAAKT,IAAIof,MAAMpkB,WAAU4B,OAAO6vE,cAAc,QAC7D;AAAA,MAAA;AAAA,IAED;AAEDpxE,SAAKyqB,UAAUA,WAAWzqB,KAAKqxE,mBAC/BrxE;AAAAA,SAAKuZ,aAAa,IAAIlE,KAAK0O,IAAAA;AAC3B/jB,SAAK6Z,WAAW,IAAIxE,KAAK2O,EAAAA;AACzBhkB,SAAKkxE,aAAaA,cAAc;AAAA,EACjC;AAEAvxE,EAAAA,WAAUunE,oBAAoBuE,SAASphD,YAAY1qB,WAAUuuE,SAC5DvuE,WAAUunE,oBAAoByI,YAC9B,EACClF,WAAU,MAEV0G,gBAAgB,WAAA;AACf,QAAIptD;AACJ,QAAIyI,QAAQ7sB,WAAUqG,SACtB;AAAA,QAAIsrE,cAAc,IAAIj8D,KAAKmX,MAAMpnB,IACjCksE;AAAAA,gBAAY5xC,WAAW,CACvB4xC;AAAAA,gBAAY3xC,gBAAgB,CAAA;AAE5B,QAAI4xC,UAAU,oBAAIl8D;AAClBk8D,YAAQ7xC,WAAW,CACnB6xC;AAAAA,YAAQ5xC,gBAAgB,CAAA;AAExB,QAAIt9B,WAAW1C,WAAU8O,UAAU9O,WAAU8O,OAAO+d,MAAM/sB,IAC1D;AAAA,QAAI+xE,cAAc;AAClB,QAAGF,YAAYp6D,QAAAA,MAAcq6D,QAAQr6D,QAAAA,GAAU;AAC9Cs6D,oBAAc;AAAA,IACd;AAED,QAAGnvE,UAAS;AACX,UAAGmvE,aAAY;AACd,YAAGnvE,SAASka,WAAW,OAAM;AAC5Bg1D,kBAAQ33D,SAAS,CAAA;AACjB23D,kBAAQ9xC,WAAW,CACzB;AAAA,QAAA,WAAcp9B,SAASka,WAAW,QAAO;AACnCg1D,kBAAQ9xC,WAAW,CACnB;AAAA,QAAA;AACD1b,eAAOwtD;AAAAA,MACZ,OAAS;AACJxtD,eAAOpkB,WAAUyF,KAAK/C,SAAS2K,OAAO,UAAU,IAAIqI,KAAKmX,MAAMpnB,IAAAA,CAAAA;AAAAA,MAC/D;AAED2e,aAAO/jB,KAAKyxE,kBAAkB1tD,IAClC;AAAA,IAAA,OAAQ;AACJA,aAAO,IAAI1O,KAAK1V,WAAUqG,SAAAA,EAAWuP;AACrC,UAAGi8D,aAAY;AACdztD,eAAOwtD;AAAAA,MACP;AACDxtD,aAAO/jB,KAAKyxE,kBAAkB1tD,IAC9B;AAAA,UAAA,CAAIytD,aAAY;AACfztD,aAAKnK,SAASja,WAAU4B,OAAOmY;MAC/B;AAED,UAAA,CAAI/Z,WAAUuR,aAAY;AACzB,YAAI0kD,gBAAgBj2D,WAAUqI,WAAWC,cAAc,eACvD;AAAA,YAAG2tD,cAAcl6C,WAAU;AAC1BqI,eAAKnK,SAASja,WAAU4B,OAAOmY,aAAajH,KAAKsI,KAAK66C,cAAcl6C,YAAY/b,WAAU4B,OAAOyZ,YACjG,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAED,WAAO+I;AAAAA,EACP,GAED2tD,OAAO,SAASC,UACf;AAAA,WAAO,IAAIhyE,WAAUunE,oBAAoBuE,SAASkG,SAASp4D,YAAYo4D,SAAS93D,UAAU83D,SAASlnD,SAASknD,SAAST,UAAAA;AAAAA,EACrH,GACDU,sBAAsB;AACrB,QAAIplD,QAAQ7sB,WAAUqG,SAAAA;AACtB,QAAInD;AACJ,QAAGlD,WAAUgP,UAAUhP,WAAUgP,OAAO6d,MAAM/sB,IAAAA,GAAO;AACpDoD,aAAOlD,WAAUgP,OAAO6d,MAAM/sB,IAClC;AAAA,IAAA,WAAYE,WAAU8O,UAAU9O,WAAU8O,OAAO+d,MAAM/sB,OAAM;AACzDoD,aAAOlD,WAAU8O,OAAO+d,MAAM/sB,IAAAA;AAAAA,IAC9B;AACD,WAAOoD;AAAAA,EACP,GAEDwuE,oBAAoB,WACnB;AAAA,QAAI5mD,UAAU;AACd,QAAI5nB,OAAO7C,KAAK4xE,qBAChB;AAAA,QAAG/uE,QAAS4nB,CAAAA,SAAQ;AACnBA,gBAAUzqB,KAAK6xE,gBAAAA;AAAAA,IACf;AACD,WAAOpnD;AAAAA,EACP,GAEDonD,iBAAiB,SAASC,WAAW/lD,KACpC;AAAA,QAAIlpB,OAAO7C,KAAK4xE,qBAChB;AAAA,QAAI1G,eAAeroE,KAAKotC,MAAM6hC,SAAAA;AAC9B,QAAI3G,YAAYD;AAChB,QAAGA,iBAAiBt4D,QAAU;AAC7Bu4D,kBAAaD,eAAen/C;AAAAA,IAChC,OAAQ;AACJo/C,kBAAatoE,KAAKyvC,QAAQzvC,KAAKkD,WAAYlD,KAAKkD,WAAW;AAAA,IAC3D;AAED,QAAGolE,YAAY,GAAE;AAChBA,kBAAY;AAAA,IACZ;AACD,QAAI3hD,UAAU3mB,KAAK2mB,WAAW3mB,KAAKy/D;AAEnC,QAAG6I,aAAa3hD,QAAQ5hB,QAAO;AAC9BujE,kBAAY3hD,QAAQ5hB,SAAS;AAAA,IAC7B;AAGD,QAAG4hB,QAAQ2hD,SAAAA,GAAW;AACrB,aAAO3hD,QAAQ2hD,SAAAA,EAAW/hD;AAAAA,IAC9B,OAAQ;AACJ,aAAO;AAAA,IACP;AAAA,EACD,GAGDsN,SAAS,WAAA;AACR,QAAIlK,QAAQ7sB,WAAUqG,SAAAA;AACtB,QAAI+rE,YAAAA,EAAc/xE,KAAKuZ,WAAWrC,QAAYsV,IAAAA,MAAMjX,SAAS2B,QAAalX,KAAAA,KAAKuZ,WAAWrC,QAAAA,KAAasV,MAAM/W,SAASyB,QAEtH;AAAA,QAAA,CAAI66D;AAAW,aAAO;AAGtB,QAAI/xE,CAAAA,KAAKs1B,UAAUt1B,KAAKuZ,YAAYvZ,KAAK6Z;AAAW,aAAO;AAE3D,QAAIhX,OAAO7C,KAAK4xE,qBAAAA;AAEhB,QAAG/uE,MAAK;AACP,aAAQA,KAAKotC,MAAMjwC,KAAKyqB,OAAa7X,MAAAA;AAAAA,IACzC,OAAQ;AACJ,aAAO;AAAA,IACP;AAAA,EAED,GAEDkqC,UAAS,WAER;AAAA,QAAIk1B,cAAc,IAAIryE,WAAUunE,oBAAoBuE;AACpD,QAAIuG,CAAAA,YAAYt7C,QAAU,GAAA;AACzB,aAAO,IAAI/2B,WAAUunE,oBAAoB+K;AAAAA,IAC7C,OAAQ;AACJ,aAAOD;AAAAA,IACP;AAAA,EACD,GAEDxC,UAAU,WAAA;AACT,WAAO/nE,MAAM4iB,UAAU6C,MAAM7S,KAAK1a,WAAUqI,WAAWghB,iBAAiB,iBAAA,CAAA;AAAA,EACxE,GACD6lD,SAAS,WACR;AAAA,WAAO7uE,KAAKwvE,SAAAA,EAAW;EACvB,GAED7kD,OAAO,WACN;AAAA,QAAG3qB,KAAKyqB,WAAW9qB,WAAUwgB,QAAAA,KAAaxgB,WAAUwgB,QAAU+xD,EAAAA,mBAAmBvyE,WAAUwgB,QAAAA,EAAU2xB,YAAanyC,CAAAA,WAAUqI,WAAWC,cAAc,qBAAqBjI,KAAKyqB,OAAAA,IAAAA,GAAa;AAC3L9qB,MAAAA,WAAUwgB,QAAU2xB,EAAAA,SAAS,EAACrnB,SAASzqB,KAAKyqB,QAC5C,CAAA;AAAA,IAAA;AACD9qB,IAAAA,WAAUunE,oBAAoBvc,OAAOz8C,OAAOlO,KAAKuZ,YAAYvZ,KAAK6Z,UAAU7Z,KAAKyqB,OACjF9qB;AAAAA,IAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUM,MAAM7e,MAAM9L,IAC/DL;AAAAA,IAAAA,WAAUunE,oBAAoBiL,aAAanyE,KAAKuZ;AAChD5Z,IAAAA,WAAUunE,oBAAoBkL,gBAAgBpyE,KAAKyqB;AAAAA,EAEnD,GACD4jD,MAAM,WAAA;AACL1uE,IAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUgkD,KAAKviE,MAAM9L,IAAAA;AAC9DL,IAAAA,WAAUunE,oBAAoBvc,OAAOr+C,MAAAA;AAAAA,EACrC,GAEDo/D,QAAQ/rE,WAAUunE,oBAAoB+G,cAAc5jD,UAAUqhD,QAE9DC,UAAUhsE,WAAUunE,oBAAoB+G,cAAc5jD,UAAU+jD,SAEhEiE,cAAc,SAASjtE,MAAM2mB,KAAKhqB,SAAAA;AACjC,QAAIwc;AACJ,YAAQwN,KACP;AAAA,MAAA,KAAK;AACJxN,cAAM5e,WAAUyF,KAAKT,IAAIS,MAAO,IAAG,MACnC;AAAA;AAAA,MACD,KAAK;AACJmZ,cAAM5e,WAAUyF,KAAKT,IAAIS,MAAM,GAAG,MAAA;AAClC;AAAA,MACD,KAAK;AACJmZ,cAAM5e,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAIS,MAAAA,IAAU,KAAA,CAAA;AAC5DmZ,cAAMve,KAAKyxE,kBAAkBlzD,KAAAA,EAC7B;AAAA;AAAA,MACD,KAAK;AACJA,cAAM5e,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAIS,MAAM,GAAG;AAC3DmZ,cAAMve,KAAKyxE,kBAAkBlzD,KAAK,CAClC;AAAA;AAAA,MACD;AACCA,cAAM5e,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAKjQ,IACxC,CAAA;AAAA;AAAA,IAAA;AAGF,QAAIonB,QAAQ7sB,WAAUqG,SAAAA;AACtB,QAAGZ,KAAK8R,QAAYsV,IAAAA,MAAMjX,SAAS2B,QAAAA,KAAAA,CAAenV,WAAUqD,KAAK8R,QAAAA,KAAasV,MAAM/W,SAASyB,QAAW,GAAA;AACvGqH,YAAM,IAAIlJ,KAAKmX,MAAMjX,QAAAA;AAAAA,IACrB;AAED,WAAOgJ;AAAAA,EACP,GAED+zD,eAAe,SAASvB,MAAMhlD,KAAKhqB,SAAAA;AAElC,QAAIgX,OAAOC;AACXD,YAAQ/Y,KAAKqyE,aAAatB,KAAKx3D,YAAYwS,KAAKhqB,OAAAA;AAEhDgX,UAAMa,SAASja,WAAU4B,OAAOmY;AAChCV,UAAM,IAAI3D,KAAK0D,KAAAA;AACfC,QAAIY,SAASja,WAAU4B,OAAOwc;AAC9B,WAAO,EAACxE,YAAYR,OAAOc,UAAUb,IAAAA;AAAAA,EACrC,GAEDu5D,gBAAgB,SAASntE,MAAMoa,SAASpd,MAAMkV,MAAAA;AAC7C,QAAI2+C,cAAc,IAAI5gD,KAAKmK;AAC3B,WAAMy2C,YAAY/+C,QAAY9R,IAAAA,KAAK8R,QAAU,GAAA;AAC5C++C,oBAAct2D,WAAUyF,KAAKT,IAAIsxD,aAAa3+C,MAAMlV,IAAAA;AAAAA,IACpD;AAED,QAAG6zD,YAAY/+C,QAAAA,IAAY9R,KAAK8R,QAAU,GAAA;AACzC++C,oBAAct2D,WAAUyF,KAAKT,IAAIsxD,aAAc3+C,CAAAA,MAAMlV;IACrD;AAED,WAAO6zD;AAAAA,EACP,GAEDuc,kBAAkB,SAASzB,MAAMhlD,KAAKhqB,SACrC;AAAA,QAAIyqB,QAAQ7sB,WAAUqG,SACtB;AAAA,QAAInD,OAAOlD,WAAU8O,OAAO+d,MAAM/sB,IAAAA;AAElC,QAAIorB,YAAa7qB,KAAKuyE,eAAexB,KAAKx3D,YAAY5Z,WAAUyF,KAAKvC,KAAKmK,OAAO,QAAA,EAAU,IAAIqI,KAAK07D,KAAKx3D,UAAAA,CAAAA,GAAc1W,KAAK0Z,QAAQ1Z,KAAKyZ,MACzI;AAAA,QAAIwO,UAAU9qB,KAAKuyE,eAAexB,KAAKl3D,UAAUla,WAAUyF,KAAKvC,KAAKmK,OAAO,QAAA,EAAU,IAAIqI,KAAK07D,KAAKl3D,QAAYhX,CAAAA,GAAAA,KAAK0Z,QAAQ1Z,KAAKyZ,MAElI;AAAA,QAAGwO,QAAQ5T,QAAAA,KAAa2T,UAAU3T,QAAU,GAAA;AAC3C4T,gBAAUnrB,WAAUyF,KAAKT,IAAIkmB,WAAWhoB,KAAKyZ,QAAQzZ,KAAK0Z,MAAAA;AAAAA,IAC1D;AACD,QAAIk2D,SAASzyE,KAAK0xE,MAAMX,IAAAA;AACxB0B,WAAOl5D,aAAasR;AACpB4nD,WAAO54D,WAAWiR;AAClB2nD,WAAOhoD,UAAUsmD,KAAKtmD,WAAWzqB,KAAK6xE,gBAGtC;AAAA,YAAQ9lD,KACP;AAAA,MAAA,KAAK;AACJ0mD,eAAOhoD,UAAUzqB,KAAK6xE,gBAAgBd,KAAKtmD,SAAAA,EAC3C;AAAA;AAAA,MACD,KAAK;AACJgoD,eAAOhoD,UAAUzqB,KAAK6xE,gBAAgBd,KAAKtmD,SAAU,CAAA;AACrD;AAAA,MACD,KAAK;AACJgoD,eAAOl5D,aAAavZ,KAAKyxE,kBAAkB9xE,WAAUyF,KAAKT,IAAI8tE,OAAOl5D,aAAa1W,KAAKyZ,QAAQzZ,KAAK0Z,MAAAA,GAAAA,EACpGk2D;AAAAA,eAAO54D,WAAWla,WAAUyF,KAAKT,IAAI8tE,OAAOl5D,YAAY1W,KAAKyZ,QAAQzZ,KAAK0Z,MAC1E;AAAA;AAAA,MACD,KAAK;AACJk2D,eAAOl5D,aAAavZ,KAAKyxE,kBAAkB9xE,WAAUyF,KAAKT,IAAI8tE,OAAOl5D,YAAY1W,KAAKyZ,QAAQzZ,KAAK0Z,MAAAA,GAAS,CAC5Gk2D;AAAAA,eAAO54D,WAAWla,WAAUyF,KAAKT,IAAI8tE,OAAOl5D,YAAY1W,KAAKyZ,QAAQzZ,KAAK0Z;AAE1E;AAAA,IAMF;AAAA,QAAGk2D,OAAOl5D,WAAWrC,QAAYsV,IAAAA,MAAMjX,SAAS2B,QAAAA,KAAau7D,OAAOl5D,WAAWrC,QAAAA,KAAasV,MAAM/W,SAASyB,QAAU,GAAA;AACpH,UAAGnV,WAAU0wE,OAAOl5D,WAAWrC,QAAasV,KAAAA,MAAM/W,SAASyB,QAAAA,GAAU;AACpEu7D,eAAOl5D,aAAa,IAAIlE,KAAKmX,MAAM/W,QAAAA;AAAAA,MACxC,OAAS;AACJg9D,eAAOl5D,aAAa5Z,WAAUyF,KAAKonB,MAAM/sB,OAAO,QAAA,EAAUE,WAAUyF,KAAKT,IAAI6nB,MAAMpnB,MAAM2mB,OAAO,SAAA,KAAc,GAAGS,MAAM/sB,IAAAA,CAAAA;AACvHgzE,eAAO54D,WAAWla,WAAUyF,KAAKT,IAAI8tE,OAAOl5D,YAAY1W,KAAKyZ,QAAQzZ,KAAK0Z;MAC1E;AAAA,IACD;AAED,WAAOk2D;AAAAA,EACP,GAEDC,eAAe,SAAS3B,MAAMhlD,KAAKhqB,SAClC;AAAA,QAAI0wE,SAASzyE,KAAK0xE,MAAMX,IAAAA;AACxB0B,WAAOhoD,UAAUsmD,KAAKtmD,WAAWzqB,KAAK6xE,gBAEtC;AAAA,QAAIpnD,UAAUsmD,KAAKtmD,WAAWzqB,KAAK6xE;AACnC,QAAIrlD,QAAQ7sB,WAAUqG,SAAAA;AACtB,QAAInD,OAAOlD,WAAUgP,OAAO6d,MAAM/sB,IAClC;AAAA,YAAQssB,KACP;AAAA,MAAA,KAAK;AACJtB,kBAAUzqB,KAAK6xE,gBAAgBd,KAAKtmD,SAAU,EAAA;AAC9C,YAAIkoD,eAAe9vE,KAAKyvC,OAAQzvC,KAAKyvC,OAAO,IAAKzvC,KAAK2mB,QAAQ5hB;AAE9D,YAAG/E,KAAKopB,OAAO,KAAMppB,KAAKotC,MAAMxlB,OAAAA,KAAYkoD,eAAe,GAAG;AAC7D,cAAGhzE,WAAUyF,KAAKT,IAAIosE,KAAKx3D,YAAAA,IAAgB,KAAA,EAAOrC,QAAasV,KAAAA,MAAMjX,SAAS2B,QAAAA,GAAU;AACvFu7D,qBAASzyE,KAAK4yE,YAAY7B,MAAMhlD,KAAKhqB,OAAAA;AAAAA,UACrC;AAAA,QACD;AACD;AAAA,MACD,KAAK;AACJ0oB,kBAAUzqB,KAAK6xE,gBAAgBd,KAAKtmD,SAAS,CAAA;AAC7C,YAAG5nB,KAAKopB,OAAO,KAAA,CAAMppB,KAAKotC,MAAMxlB,OAAS,GAAA;AACxC,cAAG9qB,WAAUyF,KAAKT,IAAIosE,KAAKx3D,YAAY,GAAG,KAAOrC,EAAAA,QAAAA,IAAYsV,MAAM/W,SAASyB,QAAAA,GAAU;AACrFu7D,qBAASzyE,KAAK4yE,YAAY7B,MAAMhlD,KAAKhqB;UACrC;AAAA,QACD;AAED;AAAA,MACD;AACC0wE,iBAASzyE,KAAK4yE,YAAY7B,MAAMhlD,KAAKhqB,OAAAA;AACrC0oB,kBAAUsmD,KAAKtmD;AACf;AAAA,IAAA;AAEFgoD,WAAOhoD,UAAUA;AACjB,WAAOgoD;AAAAA,EACP,GAEDI,WAAW,SAAS9uB,SAASh4B,KAC5B;AAAA,QAAIgpC,UAAU/0D,KAAKyxE,kBAAkB9xE,WAAUyF,KAAKT,IAAIo/C,SAASh4B,KAAK,KAAA,GAAQA;AAC9EgpC,YAAQn7C,SAASmqC,QAAQpqC,SAAAA,CAAAA;AACzBo7C,YAAQt1B,WAAWskB,QAAQ/lC,WAAAA,CAAAA;AAC3B,WAAO+2C;AAAAA,EACP,GAED+d,kBAAkB,SAAS1tE,MAAM2tE,aAAAA;AAChC,QAAIC,UAAU5tE,KAAK4Y,WAClBsiB,GAAAA,QAAQl7B,KAAKuU,SAAAA,GACboE,YAAYpe,WAAU4B,OAAOwc;AAC9B,WAAQuiB,QAAQviB,aAAAA,CAAeg1D,iBAAiBh1D,aAAa,MAAMuiB,SAASviB,cAAei1D,CAAAA;AAAAA,EAC3F,GACDC,kBAAkB,SAAS7tE,MAAM2tE,aAAAA;AAChC,QAAIC,UAAU5tE,KAAK4Y,WAAAA,GAClBsiB,QAAQl7B,KAAKuU,SACbD,GAAAA,aAAa/Z,WAAU4B,OAAOmY,YAC9BqE,YAAYpe,WAAU4B,OAAOwc;AAC9B,WAAQuiB,SAAS5mB,cAAgBq5D,CAAAA,gBAAAA,CAAiBC,YAAc1yC,CAAAA,SAAUviB,aAAa,MAAQuiB,SAASviB;AAAAA,EACxG,GACDm1D,oBAAoB,SAAS9tE,MAAM2tE,aAAAA;AAClC,WAAQ/yE,KAAK8yE,iBAAiB1tE,MAAM2tE,WAAAA,KAAgB/yE,KAAKizE,iBAAiB7tE,MAAM2tE,WAAAA;AAAAA,EAChF,GAEDH,aAAa,SAAS7B,MAAMhlD,KAAKhqB,SAAAA;AAChC,QAAIgX,OAAOC;AAEX,QAAIo4D,eAAezxE,WAAU4B,OAAO6vE;AAEpC,QAAIhsE,OAAOpF,KAAKuyE,eAAexB,KAAKx3D,YAAY5Z,WAAUyF,KAAK0gB,UAAU,IAAIzQ,KAAK07D,KAAKx3D,cAAc,UAAU63D,YAAAA;AAG/G,QAAI+B,WAAWpC,KAAKx3D;AAEpB,YAAQwS,KAAAA;AAAAA,MACP,KAAK;AACJhT,gBAAQpZ,WAAUyF,KAAKT,IAAIS,MAAOgsE,CAAAA,cAAc;AAEhD,YAAIpxE,CAAAA,KAAKkzE,mBAAmBn6D,OAAO,IAAM,GAAA;AACxC,cAAKhX,CAAAA,WAAU/B,KAAKkzE,mBAAmBC,UAAU,IAAO,GAAA;AAEvD,gBAAIC,YAAY;AAChB,gBAAGrxE,WAAUpC,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAK0D,KAAAA,CAAAA,EAAQ7B,QAAavX,KAAAA,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAK89D,QAAAA,CAAAA,EAAWj8D,QAChHk8D;AAAAA,0BAAY;AACb,gBAAGA;AACFr6D,sBAAQ/Y,KAAKyxE,kBAAkB9xE,WAAUyF,KAAKT,IAAIosE,KAAKx3D,YAAAA,IAAgB,KAAS,GAAA,EAAA;AAEjFR,kBAAMa,SAASja,WAAU4B,OAAOwc,SAChChF;AAAAA,kBAAM0mB,WAAW,CACjB1mB;AAAAA,oBAAQpZ,WAAUyF,KAAKT,IAAIoU,OAAAA,CAAQq4D,cAAc,QAAA;AAAA,UACjD;AAAA,QACD;AACDp4D,cAAMrZ,WAAUyF,KAAKT,IAAIoU,OAAOq4D,cAAc;AAC9C;AAAA,MACD,KAAK;AACJr4D,gBAAQpZ,WAAUyF,KAAKT,IAAIS,MAAMgsE,cAAc,QAE/C;AAAA,YAAIiC,UAAUtxE,UAASgX,QAAQpZ,WAAUyF,KAAKT,IAAIoU,OAAOq4D,cAAc,QAAA;AACvE,YAAIpxE,CAAAA,KAAKkzE,mBAAmBG,SAAS,KAAO,GAAA;AAC3C,cAAItxE,CAAAA,WAAU/B,KAAKkzE,mBAAmBC,UAAU,KAAA,GAAQ;AACvD,gBAAA,CAAKpxE,SAAQ;AACZgX,sBAAQ/Y,KAAKyxE,kBAAkB9xE,WAAUyF,KAAKT,IAAIosE,KAAKx3D,YAAY,GAAG,KAAA,GAAQ,CAC9ER;AAAAA,oBAAMa,SAASja,WAAU4B,OAAOmY,UAAAA;AAChCX,oBAAM0mB,WAAW,CAAA;AAAA,YACzB,OAAc;AACN,kBAAI2zC,YAAY;AAChB,kBAAIzzE,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAK89D,QAAAA,CAAAA,EAAWj8D,QAAai8D,KAAAA,SAASj8D,WAAW;AACjFk8D,4BAAY;AAAA,cACZ;AACD,kBAAIA,WAAW;AACdr6D,wBAAQ/Y,KAAKyxE,kBAAkB9xE,WAAUyF,KAAKT,IAAIosE,KAAKx3D,YAAY,GAAG,KAAA,GAAQ;cAC9E;AACDR,oBAAMa,SAASja,WAAU4B,OAAOmY,UAAAA;AAChCX,oBAAM0mB,WAAW;AACjB1mB,sBAAQpZ,WAAUyF,KAAKT,IAAIoU,OAAOq4D,cAAc,QAChD;AAAA,YAAA;AAAA,UAED;AAAA,QACD;AACDp4D,cAAMrZ,WAAUyF,KAAKT,IAAIoU,OAAOq4D,cAAc,QAAA;AAC9C;AAAA,MACD,KAAK;AACJr4D,gBAAQ/Y,KAAK6yE,UAAU9B,KAAKx3D,YAAa,EAAA;AACzCP,cAAMhZ,KAAK6yE,UAAU9B,KAAKl3D,UAAAA,EAC1B;AAAA;AAAA,MACD,KAAK;AACJd,gBAAQ/Y,KAAK6yE,UAAU9B,KAAKx3D,YAAY,CAAA;AACxCP,cAAMhZ,KAAK6yE,UAAU9B,KAAKl3D,UAAU,CACpC;AAAA;AAAA,MACD;AACCd,gBAAQ3T;AACR4T,cAAMrZ,WAAUyF,KAAKT,IAAIoU,OAAOq4D,cAAc,QAC9C;AAAA;AAAA,IAAA;AAGF,WAAO,EAAC73D,YAAYR,OAAOc,UAAUb,IACrC;AAAA,EAAA,GACDs6D,oBAAoB,SAASvC,MAAMhlD,KAAAA;AAClC,QAAIhT,OAAOC;AACX,QAAIwT,QAAQ7sB,WAAUqG,SAEtB;AAAA,YAAQ+lB;MACP,KAAK;AAAA,MACL,KAAK;AACJhT,gBAAQpZ,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAIosE,KAAKx3D,YAAAA,IAAgB,KAAA,CAAA;AACzER,gBAAQ/Y,KAAKyxE,kBAAkB14D,OAAQ,EAAA;AACvC;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJA,gBAAQpZ,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAIosE,KAAKx3D,YAAY,GAAG,KACxER,CAAAA;AAAAA,gBAAQ/Y,KAAKyxE,kBAAkB14D,OAAO,CAAA;AACtC;AAAA,MACD;AACCA,gBAAQpZ,WAAUyF,KAAK0gB,UAAUirD,KAAKx3D,UACtC;AAAA;AAAA,IAAA;AAEF,QAAGw3D,KAAKx3D,WAAWrC,QAAYsV,IAAAA,MAAMjX,SAAS2B,QAAAA,KAAa65D,KAAKx3D,WAAWrC,QAAasV,KAAAA,MAAM/W,SAASyB,QAAU,GAAA;AAChH6B,cAAQ,IAAI1D,KAAKmX,MAAMjX,QAEvB;AAAA,IAAA;AACDyD,UAAM,IAAI3D,KAAK0D,KACfC;AAAAA,QAAIY,SAASja,WAAU4B,OAAOwc,SAAAA;AAC9B,WAAO,EAACxE,YAAYR,OAAOc,UAAUb,IACrC;AAAA,EAAA,GACDu6D,gBAAgB,SAASxC,MAAMhlD,KAC9B;AAAA,WAAO,EAACxS,YAAYw3D,KAAKx3D,YAAYM,UAAUk3D,KAAKl3D,SACpD;AAAA,EAAA,GAGD25D,eAAe,SAASpuE,MACvB;AAAA,QAAA,CAAIzF,WAAUuc;AACb,aAAO;AAER,QAAI7Z,WAAW1C,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUqG,WAAWvG,IAEzE;AAAA,QAAIiM;AACJ,QAAGrJ,UAAS;AACXqJ,cAAQ/L,WAAU0rB,gBAAgBhpB,UAAU+C,IAAAA;AAAAA,IAChD,OAAQ;AACJsG,cAAQ/L,WAAU8sC,kBAAkBrnC,IAAAA;AAAAA,IACpC;AAED,WAAQzF,CAAAA,WAAU+a,SAAShP,KAAAA;AAAAA,EAC3B,GAED+lE,mBAAmB,SAAS14D,OAAOgT;AAClC,QAAI3mB,OAAO2T;AACXgT,UAAMA,OAAO;AACb,QAAIysB,QAAQ74C,WAAUqG,SAEtB;AAAA,WAAA,CAAOhG,KAAKwzE,cAAcpuE,IAAW2mB,MAAAA,MAAM,KAAK3mB,KAAK8R,aAAashC,MAAM/iC,SAASyB,QAAe6U,KAAAA,MAAM,KAAK3mB,KAAK8R,QAAashC,KAAAA,MAAMjjC,SAAS2B,QAAAA,IAAY;AACvJ9R,aAAOpF,KAAKyzE,eAAeruE,MAAM2mB,GAAAA;AAAAA,IACjC;AAED,WAAO3mB;AAAAA,EACP,GAEDquE,gBAAgB,SAAS16D,OAAOgT,KAC/BA;AAAAA,UAAMA,OAAO;AACb,QAAI1pB,WAAW1C,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUqG,WAAWvG,IAEzE;AAAA,QAAI2F;AACJ,QAAG/C,UAAS;AACX+C,aAAOzF,WAAUyF,KAAKT,IAAIoU,OAAOgT,MAAM1pB,SAASia,QAAQja,SAASka,MACrE;AAAA,IAAA,OAAQ;AACJnX,aAAOzF,WAAUyF,KAAK0gB,UAAUnmB,WAAUyF,KAAKT,IAAIoU,OAAOgT,KAAK,KAC/D,CAAA;AAAA,IAAA;AAED,WAAO3mB;AAAAA,EACP,GAEDkwB,WAAU,SAASvR,MAAMC;AACxB,QAAIrkB,CAAAA,WAAUuc;AACb,aAAO;AAER,QAAIw3D,UAAU,IAAIr+D,KAAK0O,IAAAA;AAEvB,WAAM2vD,QAAQx8D,QAAY8M,IAAAA,GAAG9M,QAAU,GAAA;AACtC,UAAGlX,KAAKwzE,cAAcE,OAAU;AAAA,eAAO;AACvCA,gBAAU1zE,KAAKyzE,eAAeC;IAC9B;AACD,WAAO;AAAA,EACP,GAED1C,UAAU,SAASD,MAAMhlD,KAAKlpB,MAAMd,SACnC;AAAA,QAAI8F;AACJhF,WAAOA,QAAQ7C,KAAK2rE,SAEpB;AAAA,QAAIgI,WAAWh0E,WAAUunE,oBAAoBuE,SAASphD,UAAUqnD,MAAMX,IAEtE;AAAA,YAAQluE;MACP,KAAK7C,KAAK0rE,OAAOE;AAChB/jE,eAAO7H,KAAK0yE,cAAciB,UAAU5nD,KAAKhqB,OACzC;AAAA;AAAA,MACD,KAAK/B,KAAK0rE,OAAOrpE;AAChBwF,eAAO7H,KAAKwyE,iBAAiBmB,UAAU5nD,KAAKhqB,OAC5C;AAAA;AAAA,MACD,KAAK/B,KAAK0rE,OAAOnpE;AAChBsF,eAAO7H,KAAKsyE,cAAcqB,UAAU5nD,KAAKhqB,OAAAA;AACzC;AAAA,MACD,KAAK/B,KAAK0rE,OAAOh6C;AAChB7pB,eAAO7H,KAAKsyE,cAAcqB,UAAU5nD,KAAKhqB,OAAAA;AACzC;AAAA,MACD,KAAK/B,KAAK0rE,OAAOO;AAChBpkE,eAAO7H,KAAKszE,mBAAmBK,UAAU5nD,KAAKhqB,OAC9C;AAAA;AAAA,MACD,KAAK/B,KAAK0rE,OAAOp+D;AAChBzF,eAAO7H,KAAKuzE,eAAeI,UAAU5nD,KAAKhqB,OAC1C;AAAA;AAAA,MACD,KAAK/B,KAAK0rE,OAAOU;AAChBvkE,eAAO7H,KAAK4yE,YAAYe,UAAU5nD,KAAKhqB,OACvC;AAAA;AAAA,IAAA;AAGF,QAAG8F,KAAK0R,WAAWrC,QAAarP,KAAAA,KAAKgS,SAAS3C,QAAAA,GAAU;AACvDrP,aAAO7H,KAAKgxE,SAASnpE,MAAMkkB,KAAKlpB,IAAAA;AAAAA,IAChC;AAED,WAAOlD,WAAUunE,oBAAoBuE,SAASphD,UAAUqnD,MAAM7pE,IAAAA;AAAAA,EAE9D,GAED+rE,YAAY,SAAS7C,MAAMhlD,KAC1B;AAAA,QAAIlpB,OAAO7C,KAAK2rE,SAAAA;AAChB,QAAI9jE;AACJ,YAAQhF,MAAAA;AAAAA,MACP,KAAK7C,KAAK0rE,OAAOE;AAChB,YAAG7/C,OAAO,UAAUA,OAAO,SAAQ;AAClClkB,iBAAO7H,KAAK0yE,cAAc3B,MAAMhlD,GACtC;AAAA,QAAA,OAAU;AACJlkB,iBAAO7H,KAAK6zE,gBAAgB9C,MAAMhlD,GAAAA;AAAAA,QAClC;AACD;AAAA,MACD,KAAK/rB,KAAK0rE,OAAOrpE;AAChB,YAAG0pB,OAAO,UAAUA,OAAO,MAAK;AAC/BlkB,iBAAO7H,KAAKwyE,iBAAiBzB,MAAMhlD,GACzC;AAAA,QAAA,OAAU;AACJlkB,iBAAO7H,KAAK8zE,mBAAmB/C,MAAMhlD,GAAAA;AAAAA,QACrC;AACD;AAAA,MACD,KAAK/rB,KAAK0rE,OAAOnpE;AAChBsF,eAAO7H,KAAK+zE,gBAAgBhD,MAAMhlD,GAAAA;AAClC;AAAA,MACD,KAAK/rB,KAAK0rE,OAAOh6C;AAChB7pB,eAAO7H,KAAK+zE,gBAAgBhD,MAAMhlD,GAClC;AAAA;AAAA,MACD,KAAK/rB,KAAK0rE,OAAOU;AAChBvkE,eAAO7H,KAAKg0E,cAAcjD,MAAMhlD,GAAAA;AAChC;AAAA,MACD,KAAK/rB,KAAK0rE,OAAOO;AAChBpkE,eAAO7H,KAAKi0E,qBAAqBlD,MAAMhlD,GACvC;AAAA;AAAA,MACD;AACClkB,eAAOkpE;AACP;AAAA,IAGF;AAAA,QAAIv4B,QAAQ74C,WAAUqG,SACtB;AAAA,QAAG6B,KAAK0R,WAAWrC,YAAYshC,MAAMjjC,SAAS2B,QAAU,GAAA;AACvDrP,WAAK0R,aAAavZ,KAAKyxE,kBAAkBj5B,MAAMjjC,QAC/C1N;AAAAA,WAAK0R,WAAWK,SAASja,WAAU4B,OAAOmY,UAC1C;AAAA,IAAA;AAED,QAAG7R,KAAKgS,SAAS3C,QAAYshC,IAAAA,MAAM/iC,SAASyB,QAAAA,GAAU;AAErDrP,WAAKgS,WAAW7Z,KAAKyxE,kBAAkBj5B,MAAM/iC,UAAW,EAAA;AAAA,IACxD;AAGD,WAAO9V,WAAUunE,oBAAoBuE,SAASphD,UAAUqnD,MAAM7pE,IAC9D;AAAA,EAAA,GAEDisE,oBAAoB,SAAS/C,MAAMp+D,WAClC;AAAA,WAAO3S,KAAKk0E,kBAAkB,EAC7BniE,MAAO,cACPC,OAAQ,cAER++D,MACAp+D,WACA,UAED;AAAA,EAAA,GAEDshE,sBAAsB,SAASlD,MAAMp+D,WAAAA;AACpC,WAAO3S,KAAKk0E,kBAAkB,EAC5BniE,MAAO,cACPC,OAAQ,WAAA,GAET++D,MACAp+D,WACA,YAAA;AAAA,EAED,GAEDuhE,mBAAmB,SAASC,mBAAmBpD,MAAMp+D,WAAWjR;AAC/D,QAAImG;AACJ,QAAIusE,WAAWrD,KAAKG;AAEpB,QAAIkD,CAAAA,UAAS;AACZA,iBAAWD,kBAAkBxhE,SAC7B;AAAA,IAAA;AAED,QAAIyhE,CAAAA,YAAAA,CAAaD,kBAAkBxhE,SAAAA,GAAW;AAC7C,aAAOo+D;AAAAA,IACP;AAED,QAAGp+D,WAAU;AACZ9K,aAAO7H,KAAKgxE,SAAS,EAACz3D,YAAYw3D,KAAKqD,QAAW3pD,GAAAA,SAASsmD,KAAKtmD,QAAAA,GAAU9X,WAAWjR,MAAM,IAAA;AAE3F,UAAGmG,KAAK0R,WAAWrC,QAAAA,KAAa65D,KAAKx3D,WAAWrC,WAAU;AACzDrP,eAAO7H,KAAKgxE,SAAS,EAACz3D,YAAY1R,KAAK0R,YAAYkR,SAAQ5iB,KAAK4iB,QAAAA,GAAU9X,WAAWjR,MAAM,IAC3F;AAAA,MAAA;AAEDmG,WAAKqpE,aAAakD;AAAAA,IACtB,OAAQ;AACJ,aAAOz0E,WAAUunE,oBAAoBuE,SAASphD,UAAUqnD,MAAMX;IAC9D;AAED,QAAIsD,WAAWr0E,KAAKs0E,gBAAgBvD,MAAMlpE,MAAMA,KAAKqpE;AAErD,QAAGmD,SAASx6D,SAAS3C,QAAAA,KAAam9D,SAAS96D,WAAWrC,QAAU,GAAA;AAC/DrP,WAAKqpE,aAAarpE,KAAKqpE,cAAc,aAAa,eAAe;AAAA,IACjE;AACDmD,eAAWr0E,KAAKs0E,gBAAgBvD,MAAMlpE,MAAMA,KAAKqpE,UAAAA;AAEjDrpE,SAAK0R,aAAa86D,SAAS96D;AAC3B1R,SAAKgS,WAAWw6D,SAASx6D;AACzB,WAAOhS;AAAAA,EACP,GAEDysE,iBAAiB,SAASC,SAASC,SAASC,eAAAA;AAC3C,QAAIl2D,MAAM,EAAChF,YAAW,MAAMM,UAAS,KAAA;AAErC,QAAG46D,iBAAiB,cAAa;AAChCl2D,UAAIhF,aAAai7D,QAAQj7D;AACzBgF,UAAI1E,WAAW06D,QAAQ16D;AAAAA,IAC3B,OAAQ;AACJ0E,UAAIhF,aAAag7D,QAAQh7D;AACzBgF,UAAI1E,WAAW26D,QAAQj7D;AAAAA,IACvB;AACD,WAAOgF;AAAAA,EAEP,GAEDw1D,iBAAiB,SAAShD,MAAMp+D,WAC/B;AAAA,QAAIo+D,OAAO/wE,KAAKk0E,kBAAkB,EAChC9K,IAAK,cACLC,MAAO,YACPt3D,MAAO,cACPC,OAAQ,WAET++D,GAAAA,MACAp+D,WACA,OAAA;AAGDo+D,SAAKx3D,WAAWK,SAASja,WAAU4B,OAAOmY,UAC1Cq3D;AAAAA,SAAKl3D,WAAWla,WAAUyF,KAAKT,IAAIosE,KAAKl3D,UAAAA,IAAc,KACtDk3D;AAAAA,SAAKl3D,SAASD,SAASja,WAAU4B,OAAOwc,SACxC;AAAA,WAAOgzD;AAAAA,EACP,GAED8C,iBAAiB,SAAS9C,MAAMp+D,WAC/B;AAAA,QAAI9K;AAEJ,YAAQ8K;MACP,KAAK;AAAA,MACL,KAAK;AACJ9K,eAAO7H,KAAKg0E,cAAcjD,MAAMp+D;AAChC;AAAA,MACD;AACC9K,eAAOkpE;AACP;AAAA,IAEFlpE;AAAAA,SAAK4iB,UAAUsmD,KAAKtmD;AACpB,WAAO5iB;AAAAA,EACP,GACDmsE,eAAe,SAASjD,MAAMp+D,WAC7B;AAAA,WAAO3S,KAAKk0E,kBAAkB,EAC5B9K,IAAK,cACLC,MAAO,YACPt3D,MAAO,cACPC,OAAQ,WAAA,GAET++D,MACAp+D,WACA,YAED;AAAA,EAAA,GAED+hE,YAAY,SAAS3oD;AACpB,QAAIS,QAAQ7sB,WAAUqG,SAAAA;AAEtB,QAAI+qE,OAAO/wE,KAAKgxE,SAAShxE,MAAM+rB,GAC/B;AAAA,QAAGglD,KAAKx3D,WAAWrC,QAAYsV,IAAAA,MAAMjX,SAAS2B,QAAAA,KAAa65D,KAAKx3D,WAAWrC,QAAasV,KAAAA,MAAM/W,SAASyB,QAAAA,GAAU;AAChHvX,MAAAA,WAAUyG,eAAe,IAAIiP,KAAK07D,KAAKx3D,UAAAA,CAAAA;AAAAA,IACvC;AAEDvZ,SAAK4vE,OAAOmB,IAAAA;AAAAA,EACZ,GAEDrgE,MAAM,EACLqB,MAAQ,WAAA;AACP/R,SAAK00E,WAAW,MAChB;AAAA,EAAA,GACD1iE,OAAS,WACRhS;AAAAA,SAAK00E,WAAW,OAAA;AAAA,EAChB,GACDrL,MAAQ,WAEP;AAAA,QAAI5pE,OAAQO,KAAK2rE,SACjB;AAAA,QAAGlsE,QAAQO,KAAK0rE,OAAOp+D,MAAK;AAC3B3N,MAAAA,WAAUunE,oBAAoB+G,cAAc5jD,UAAUykD,iBAC3D;AAAA,IAAA,OAAS;AACJ9uE,WAAK00E,WAAW,MAChB;AAAA,IAAA;AAAA,EAED,GAEDtL,IAAM,WACL;AAAA,QAAI3pE,OAAQO,KAAK2rE;AACjB,QAAGlsE,QAAQO,KAAK0rE,OAAOp+D,MAAK;AAC3B3N,MAAAA,WAAUunE,oBAAoB+G,cAAc5jD,UAAUilD,iBAAAA;AAAAA,IAC3D,OAAS;AACJtvE,WAAK00E,WAAW,IAChB;AAAA,IAAA;AAAA,EAED,GAED,cAAa,WAAA;AACZ10E,SAAK4vE,OAAO5vE,KAAK4zE,WAAW5zE,MAAM,MAAA,CAAA;AAAA,EAClC,GACD,YAAW,WAAA;AACVA,SAAK4vE,OAAO5vE,KAAK4zE,WAAW5zE,MAAM,IAAA,CAAA;AAAA,EAClC,GACD,eAAc,WAAA;AACbA,SAAK4vE,OAAO5vE,KAAK4zE,WAAW5zE,MAAM,OAAA,CAAA;AAAA,EAClC,GACD,cAAa,WACZA;AAAAA,SAAK4vE,OAAO5vE,KAAK4zE,WAAW5zE,MAAM;EAClC,GAGDipE,OAAS,WACR;AAAA,QAAIrpE,MAAM,EAAC2Z,YAAY,IAAIlE,KAAKrV,KAAKuZ,UAAAA,GAAaM,UAAU,IAAIxE,KAAKrV,KAAK6Z,QAE1E,EAAA;AAAA,QAAIpa,OAAOE,WAAUqG,SAAAA,EAAWvG;AAChC,QAAGE,WAAU8O,UAAU9O,WAAU8O,OAAOhP,IAAM,GAAA;AAE7C,UAAI4C,WAAW1C,WAAU8O,OAAO9O,WAAUqG,SAAAA,EAAWvG;AACrDG,UAAIyC,SAASiqB,UAActsB,IAAAA,KAAKyqB;AAAAA,IACrC,WAAa9qB,WAAUgP,UAAUhP,WAAUgP,OAAOlP,IAAM,GAAA;AACnD,UAAI2C,OAAOzC,WAAUgP,OAAOlP;AAC5BG,UAAIwC,KAAKmnB,MAAUvpB,IAAAA,KAAKyqB;AAAAA,IACxB;AAED9qB,IAAAA,WAAUmZ,YAAYlZ,GACtB;AAAA,EAAA,EAAA,EAAA,CAAA;AAKJD,EAAAA,WAAUunE,oBAAoBuE,SAASphD,UAAUwgD,QAAQlrE,WAAUunE,oBAAoBuE,SAASphD,UAAU3Z,IAE1G;AAAA;ACxxBe,SAAQikE,eAACh1E,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoB0N,gBAAgB,SAAS3xE,KAAKyI,OAAAA;AAC3D1L,SAAKoI,YAAYnF;AACjBjD,SAAK0L,QAAQA,SAAS;AAAA,EACvB;AAEA/L,EAAAA,WAAUunE,oBAAoB0N,cAAcvqD,YAAY1qB,WAAUuuE,SACjEvuE,WAAUunE,oBAAoByI,YAC9B,EAECj5C,SAAS,WAAA;AACR,QAAItuB,YAAYpI,KAAKoI;AACrB,WAAA,CAAA,CAASA,UAAUmC;AAAAA,EACnB,GAEDuyC,UAAU,WACT;AAAA,QAAIk1B,cAAc,IAAIryE,WAAUunE,oBAAoBuE;AACpD,QAAGuG,YAAYt7C,QAAU,GAAA;AACxB,aAAOs7C;AAAAA,IACX,OAAQ;AACJ,aAAO,IAAIryE,WAAUunE,oBAAoB+K;AAAAA,IACzC;AAAA,EACD,GACDtnD,OAAO,WAAA;AACNhrB,IAAAA,WAAUunE,oBAAoB8H,WAAW6F,WAAWvP;AACpDtlE,SAAKoI,UAAUmmE,gBAAgB,UAAA;AAC/B5uE,IAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUM,MAAM7e,MAAM9L,IAAAA;AAAAA,EAE/D,GACDquE,MAAM,WACLruE;AAAAA,SAAKoI,UAAUrD,aAAa,YAAY,GACxCpF;AAAAA,IAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUgkD,KAAKviE,MAAM9L,IAAAA;AAAAA,EAC9D,GACD6uE,SAAS,WACR;AAAA,QAAA,CAAI7uE,KAAK0L,OAAM;AACd,aAAO1L,KAAKoI,UAAUH,cAAc,sBACxC;AAAA,IAAA,OAAQ;AACJ,aAAOjI,KAAKoI,UAAUH,cAAc,sBACpC;AAAA,IAAA;AAAA,EACD,GAEDyI,MAAM,EACLsB,OAAS,SAAS8B,GAAAA;AACjB9T,SAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoB0N,cAAc50E,KAAKoI,WAAWpI,KAAK0L,QAAQ,IAAI,CAC7F,CAAA;AAAA,EAAA,GACDqG,MAAQ,SAAS+B,GAChB9T;AAAAA,SAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoB0N,cAAc50E,KAAKoI,WAAWpI,KAAK0L,QAAQ,IAAI,CAC7F,CAAA;AAAA,EAAA,GACD29D,MAAQ,WAAA;AACP,QAAIxhE,OAAO,IAAIlI,WAAUunE,oBAAoB4N,YAAY90E,KAAKoI,WAAW,GAAG,CAC5E;AAAA,QAAGP,QAASA,CAAAA,KAAK6uB,WAAU;AAC1B7uB,aAAOA,KAAKi1C,SAAAA;AAAAA,IACZ;AAED98C,SAAK4vE,OAAO/nE,IAAAA;AAAAA,EACZ,GACDohE,OAAS,SAASn1D,GACjB9T;AAAAA,SAAK6uE,QAAUnpE,EAAAA,MAAAA;AAAAA,EACf,EAKJ/F,EAAAA,CAAAA;AAAAA,EAAAA,WAAUunE,oBAAoB0N,cAAcvqD,UAAUwgD,QAAQlrE,WAAUunE,oBAAoB0N,cAAcvqD,UAAU3Z,IAAAA;AAEpH;AClEe,SAAQqkE,aAACp1E,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoB4N,cAAc,SAAS7xE,KAAK6B,KAAK42B,KAAAA;AAC9D17B,SAAKoI,YAAYnF;AACjBjD,SAAK8E,MAAMA,OAAO;AAClB9E,SAAK07B,MAAMA,OAAO;AAAA,EACnB;AAEA/7B,EAAAA,WAAUunE,oBAAoB4N,YAAYzqD,YAAY1qB,WAAUuuE,SAC/DvuE,WAAUunE,oBAAoByI,YAC9B,EAECj5C,SAAS,WAAA;AACR,QAAIx0B,OAAOlC,KAAKg1E,SAChB;AAAA,WAAA,CAAA,EAAU9yE,KAAKlC,KAAK8E,GAAQ5C,KAAAA,KAAKlC,KAAK8E,GAAK9E,EAAAA,KAAK07B,GAChD;AAAA,EAAA,GACDohB,UAAU,WAAA;AACT,QAAIh4C,MAAM9E,KAAK8E;AACf,QAAI42B,MAAM17B,KAAK07B;AACf,QAAIx5B,OAAOlC,KAAKg1E;AAChB,QAAI9yE,CAAAA,KAAK4C,GAAK,GAAA;AACbA,YAAM;AAAA,IACN;AACD,QAAIinB,MAAM;AACV,QAAGjnB,MAAM5C,KAAK0F,SAAS,GAAE;AACxBmkB,YAAM;AAAA,IACN;AAED,QAAI7pB,CAAAA,KAAK4C,GAAK,GAAA;AACb,UAAIktE,cAAc,IAAIryE,WAAUunE,oBAAoBuE;AACpD,UAAGuG,YAAYt7C,QAAAA,GAAU;AACxB,eAAOs7C;AAAAA,MACZ,OAAS;AACJ,eAAO,IAAIryE,WAAUunE,oBAAoB+K;AAAAA,MACzC;AAAA,IACD;AAED,QAAGlmD,KAAI;AACN,eAAQ/nB,IAAI03B,KAAKx5B,KAAK4C,QAAQd,IAAI9B,KAAK4C,GAAK8C,EAAAA,QAAQ5D,KAAI;AACvD,YAAI9B,CAAAA,KAAK4C,KAAKd,CAAMA,KAAAA,KAAK9B,KAAK4C,GAAAA,EAAK8C,SAAS,GAAE;AAC7C9C;AACA42B,gBAAM;AAAA,QACN;AACD,YAAGx5B,KAAK4C,GAAKd,EAAAA,CAAAA,GAAG;AACf,iBAAO,IAAIrE,WAAUunE,oBAAoB4N,YAAY90E,KAAKoI,WAAWtD,KAAKd,CAC1E;AAAA,QAAA;AAAA,MACD;AAAA,IACL,OAAQ;AACJ,eAAQA,IAAI03B,KAAKx5B,KAAK4C,QAAQd,IAAI9B,KAAK4C,GAAK8C,EAAAA,QAAQ5D,KAAI;AACvD,YAAI9B,CAAAA,KAAK4C,KAAKd,CAAOA,KAAAA,CAAAA,GAAE;AACtBc;AACA42B,gBAAMx5B,KAAK4C,GAAK8C,EAAAA,SAAS;AAAA,QACzB;AACD,YAAG1F,KAAK4C,GAAAA,EAAKd,CAAG,GAAA;AACf,iBAAO,IAAIrE,WAAUunE,oBAAoB4N,YAAY90E,KAAKoI,WAAWtD,KAAKd,CAC1E;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAED,WAAO,IAAIrE,WAAUunE,oBAAoB0N,cAAc50E,KAAKoI,WAAW;EACvE,GACDuiB,OAAO,WACNhrB;AAAAA,IAAAA,WAAUunE,oBAAoB8H,WAAW6F,WAAWvP,QAAAA;AAEpDtlE,SAAKoI,UAAUmmE,gBAAgB,UAC/B5uE;AAAAA,IAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUM,MAAM7e,MAAM9L,IAAAA;AAAAA,EAC/D,GACDquE,MAAM,WACLruE;AAAAA,SAAKoI,UAAUrD,aAAa,YAAY,GACxCpF;AAAAA,IAAAA,WAAUunE,oBAAoByI,WAAWtlD,UAAUgkD,KAAKviE,MAAM9L,IAAAA;AAAAA,EAC9D,GACDi1E,UAAU,SAASnwE,KAAK42B,KAAAA;AACvB,WAAO17B,KAAKoI,UAAUH,cAAc,kCAAgCnD,MAAM,KAAK,qBAAmB42B,MAAM,KAAG,GAAA;AAAA,EAC3G,GACDmzC,SAAS;AACR,WAAO7uE,KAAKi1E,SAASj1E,KAAK8E,KAAK9E,KAAK07B,GACpC;AAAA,EAAA,GAEDs5C,UAAU,WACT;AAAA,QAAIxuE,OAAOxG,KAAKoI,UAAU4gB,iBAAiB,mBAC3C;AAAA,QAAI9mB,OAAO,CACX;AAAA,aAAQyF,IAAI,GAAGA,IAAInB,KAAKoB,QAAQD,KAAI;AACnCzF,WAAKyF,CAAK,IAAA,CAAA;AACV,UAAI7C,MAAM0B,KAAKmB,CAAAA;AACf,UAAIohB,QAAQjkB,IAAIkkB,iBAAiB,IACjC;AAAA,eAAQhlB,IAAI,GAAGA,IAAI+kB,MAAMnhB,QAAQ5D,KAAI;AACpC,YAAIskB,OAAOS,MAAM/kB;AACjB,YAAIkxE,UAAU;AACd,YAAIvuE,MAAMhH,WAAUsT,cAAcqV,IAAAA;AAClC,YAAG3hB,IAAIoQ,QAAQ,WAAgB,IAAA,MAAKpQ,IAAIoQ,QAAQ,YAAiB,IAAA,MAAKpQ,IAAIoQ,QAAQ,kBAAuB,IAAA,IAAE;AAC1Gm+D,oBAAU;AAAA,QACV;AACDhzE,aAAKyF,CAAG3D,EAAAA,CAAAA,IAAKkxE;AAAAA,MACb;AAAA,IACD;AACD,WAAOhzE;AAAAA,EACP,GAGDwO,MAAM,EACLsB,OAAS,SAAS8B,GAAAA;AACjB,QAAI5R,OAAOlC,KAAKg1E,SAAAA;AAChB,QAAIG,SAASn1E,KAAK8E;AAClB,QAAIswE,SAASp1E,KAAK07B,MAAM;AACxB,QAAIx5B,CAAAA,KAAKizE,MAAYjzE,KAAAA,CAAAA,KAAKizE,MAAQC,EAAAA,MAAAA,GAAQ;AACzC,UAAGlzE,KAAKizE,SAAS,CAAA,GAAG;AACnBA,iBAASA,SAAS;AAClBC,iBAAS;AAAA,MACf,OAAU;AACJA,iBAASp1E,KAAK07B;AAAAA,MACd;AAAA,IACD;AAED,QAAI7zB,OAAO,IAAIlI,WAAUunE,oBAAoB4N,YAAY90E,KAAKoI,WAAW+sE,QAAQC,MACjF;AAAA,QAAA,CAAIvtE,KAAK6uB,QAAU,GAAA;AAClB7uB,aAAOA,KAAKi1C,SACZ;AAAA,IAAA;AAED98C,SAAK4vE,OAAO/nE;EACZ,GACDkK,MAAQ,SAAS+B,GAAAA;AAChB,QAAI5R,OAAOlC,KAAKg1E,SAAAA;AAChB,QAAIG,SAASn1E,KAAK8E;AAClB,QAAIswE,SAASp1E,KAAK07B,MAAM;AACxB,SAAIx5B,KAAKizE,MAAAA,KAAAA,CAAYjzE,KAAKizE,MAAAA,EAAQC,MAAQ,GAAA;AACzC,UAAGlzE,KAAKizE,SAAS,CAAA,GAAG;AACnBA,iBAASA,SAAS;AAClBC,iBAASlzE,KAAKizE,QAAQvtE,SAAS;AAAA,MACrC,OAAU;AACJwtE,iBAASp1E,KAAK07B;AAAAA,MACd;AAAA,IACD;AAED,QAAI7zB,OAAO,IAAIlI,WAAUunE,oBAAoB4N,YAAY90E,KAAKoI,WAAW+sE,QAAQC,MACjF;AAAA,QAAA,CAAIvtE,KAAK6uB,QAAAA,GAAU;AAClB7uB,aAAOA,KAAKi1C,SAAAA;AAAAA,IACZ;AAED98C,SAAK4vE,OAAO/nE,IAAAA;AAAAA,EACZ,GACDwhE,MAAQ,WACP;AAAA,QAAInnE,OAAOlC,KAAKg1E,SAAAA;AAChB,QAAIG,SAASn1E,KAAK8E,MAAM;AACxB,QAAIswE,SAASp1E,KAAK07B;AAElB,QAAIx5B,CAAAA,KAAKizE,MAAYjzE,KAAAA,CAAAA,KAAKizE,MAAQC,EAAAA,MAAAA,GAAQ;AACzCD,eAASn1E,KAAK8E;AAAAA,IACd;AAED,QAAI+C,OAAO,IAAIlI,WAAUunE,oBAAoB4N,YAAY90E,KAAKoI,WAAW+sE,QAAQC,MAAAA;AACjF,QAAIvtE,CAAAA,KAAK6uB,WAAU;AAClB7uB,aAAOA,KAAKi1C,SAAAA;AAAAA,IACZ;AAED98C,SAAK4vE,OAAO/nE,IAAAA;AAAAA,EACZ,GACDuhE,IAAM,WAAA;AACL,QAAIlnE,OAAOlC,KAAKg1E,SAAAA;AAChB,QAAIG,SAASn1E,KAAK8E,MAAM;AACxB,QAAIswE,SAASp1E,KAAK07B;AAElB,QAAIx5B,CAAAA,KAAKizE,YAAYjzE,KAAKizE,MAAAA,EAAQC,MAAQ,GAAA;AACzC,UAAI1pE,QAAQ;AACZ,UAAG1L,KAAK07B,MAAMx5B,KAAKlC,KAAK8E,GAAAA,EAAK8C,SAAS,GAAE;AACvC8D,gBAAQ;AAAA,MACR;AACD1L,WAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoB0N,cAAc50E,KAAKoI,WAAWsD,KACjF,CAAA;AAAA,IAAA,OAAS;AACJ,UAAI7D,OAAO,IAAIlI,WAAUunE,oBAAoB4N,YAAY90E,KAAKoI,WAAW+sE,QAAQC,MACjF;AAAA,UAAA,CAAIvtE,KAAK6uB,QAAAA,GAAU;AAClB7uB,eAAOA,KAAKi1C,SACZ;AAAA,MAAA;AAED98C,WAAK4vE,OAAO/nE,IACZ;AAAA,IAAA;AAAA,EAED,GACDohE,OAAS,SAASn1D,GACjB9T;AAAAA,SAAK6uE,QAAU5mE,EAAAA,cAAc,iBAAmBvC,EAAAA,MAAAA;AAAAA,EAChD;AAKJ/F,EAAAA,WAAUunE,oBAAoB4N,YAAYzqD,UAAUwgD,QAAQlrE,WAAUunE,oBAAoB4N,YAAYzqD,UAAU3Z,IAAAA;AAEhH;AC1Le,SAAQmU,UAACllB,YAAAA;AAExBA,EAAAA,WAAUunE,oBAAoB+K,WAAW,SAASvmE,OAAAA;AACjD1L,SAAK0L,QAAQA,SAAS;AAAA,EACvB;AAEA/L,EAAAA,WAAUunE,oBAAoB+K,SAAS5nD,YAAY1qB,WAAUuuE,SAC5DvuE,WAAUunE,oBAAoByI,YAC9B,EACCd,SAAS,SAASnjE,OAAAA;AACjB,WAAO/L,WAAUqI,WAAWC,cAAc,eAC1C;AAAA,EAAA,GAEDwiE,WAAU,MAEV/zC,SAAS,WAAA;AACR,WAAO;AAAA,EACP,GACDomB,UAAS;AACR,WAAO98C;AAAAA,EACP,GAED0Q,MAAM,EACL,sBAAqB,WACpB1Q;AAAAA,SAAK4vE,OAAO,IAAIjwE,WAAUunE,oBAAoBuE,UAAAA;AAAAA,EAC9C,EAKJ9rE,EAAAA,CAAAA;AAAAA,EAAAA,WAAUunE,oBAAoB+K,SAAS5nD,UAAUwgD,QAAQlrE,WAAUunE,oBAAoB+K,SAAS5nD,UAAU3Z,IAAAA;AAE1G;AChCe,SAAQ2kE,OAAC11E,YAIxB;AAAA,GAAA,WAAA;AACC,QAAI21E,cAAc,CAElB;AAAA,aAASC,UACR;AAAA,aAAA,CAAA,CAAUD,YAAkB;AAAA,IAC5B;AAED,aAASl9C,UAAUC,OAAOC,QAAAA;AACzB,aAAMD,SAASA,SAASC,QAAO;AAC9BD,gBAAQA,MAAMpvB;AAAAA,MACd;AAED,aAAUovB,CAAAA,EAAAA,SAASC;AAAAA,IACnB;AAED,aAASk9C,WAAWphD,KAAAA;AACnBrqB,iBAAW,WAAA;AACV,YAAGpK,WAAUqK,YAAW;AACvB,iBAAO;AAAA,QACP;AACD,YAAA,CAAIurE,QAAen9C,KAAAA,CAAAA,UAAUv4B,SAASk3B,eAAep3B,WAAUqI,UAAc,GAAA;AAC5ErI,UAAAA,WAAUgrB,MAAAA;AAAAA,QACV;AAAA,MACD,GAAE;IACH;AACD,aAAS8qD,WAAWrhD,KAAAA;AACnBz0B,MAAAA,WAAUgtB,YAAYyH,KAAK,WAAW42C;AACtCrrE,MAAAA,WAAUiG,MAAMwuB,KAAK,WAAW42C,SAChCsK;AAAAA,kBAAY5mE,KAAK0lB,GAAAA;AAAAA,IAEjB;AAED,aAASshD,WACR;AAAA,UAAIthD,MAAMkhD,YAAY1iD,IACtB;AAAA,UAAGwB,KAAK;AACPz0B,QAAAA,WAAUgtB,YAAYyH,KAAK,WAAW42C,SAAAA;AAAAA,MACtC;AACDwK,iBAAAA;AAAAA,IAEA;AAED,aAASG,WAAWvhD,KAIlB;AAAA,aAAOA,OAAOkhD,YAAYA,YAAY1tE,SAAS;IAGhD;AAED,aAASojE,UAAUplE,QAAAA;AAClB,UAAIA,SAAQA,UAAS3E,OAAO2E;AAC5B,UAAI4O,SAAS5O,OAAMgwE;AACnB,UAAA,CAAID,WAAWnhE,MAAAA;AAAS;AAExB7U,MAAAA,WAAUunE,oBAAoB8D,UAAUx2D,QAAQ5O,MAChD;AAAA,IAAA;AAED,aAASiwE,gBAAAA;AACRJ,iBAAW91E,WAAUm3C,YAAAA,CAAAA;AAAAA,IACrB;AAEDn3C,IAAAA,WAAUgE,YAAY,cAAckyE,aACpCl2E;AAAAA,IAAAA,WAAUgE,YAAY,mBAAmB+xE,QAAAA;AAEzC/1E,IAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AAAW6xE,iBAAa;AAAA,IAAA,CAAA;AAElE,SAAI71E,WAAUm2E,qBAAqB;AAClCn2E,MAAAA,WAAUm2E,sBAAsB;AAEhC,UAAIC,eAAe;AACnB,UAAIC,cAAc;AAClB,YAAMV,eAAc,CAAA;AACpB31E,MAAAA,WAAUgE,YAAY,kBAAkB,SAASywB,KAAAA;AAChD2hD,uBAAel2E,SAASk3B;AACxBi/C,sBAAcD;AAEd,eAAMC,eAAer2E,WAAUsT,cAAc+iE,WAAaj/D,EAAAA,QAAQ,cAAkB,IAAA,GAAE;AACrFi/D,wBAAcA,YAAY/sE;AAAAA,QAC1B;AACD,YAAG+sE,aAAY;AACdA,wBAAcA,YAAY/sE;AAAAA,QAC1B;AAEDtJ,QAAAA,WAAUgtB,YAAYyH,KAAK,WAAW42C,SAAAA;AACtCrrE,QAAAA,WAAUiG,MAAMwuB,KAAK,WAAW42C,SAAAA;AAChCsK,QAAAA,aAAY5mE,KAAK0lB,GACpB;AAAA,MAAA,CAAA;AAGEz0B,MAAAA,WAAUgE,YAAY,uBAAuB,WAC5C;AAAA,YAAIywB,MAAMkhD,aAAY1iD,IACtB;AAAA,YAAGwB,KAAK;AACPz0B,UAAAA,WAAUgtB,YAAYyH,KAAK,WAAW42C,SACtC;AAAA,QAAA;AACDjhE,mBAAW,WAAA;AACV,cAAGpK,WAAUqK,YAAW;AACvB,mBAAO;AAAA,UACP;AACD,cAAI4rE,gBAAgB/1E,SAASk3B;AAC7B,iBAAM6+C,iBAAiBj2E,WAAUsT,cAAc2iE,aAAAA,EAAe7+D,QAAQ,eAAA,IAAmB,GAAE;AAC1F6+D,4BAAgBA,cAAc3sE;AAAAA,UAC9B;AACD,cAAG2sE;AACF;AAGD,cAAGG,gBAAgBA,aAAa9sE,YAAW;AAC1C8sE,yBAAaprD,MAElB;AAAA,UAAA,WAAaqrD,eAAeA,YAAY/sE,YAAW;AAC9C+sE,wBAAYrrD,MAAAA;AAAAA,UACZ;AACDorD,yBAAe;AACfC,wBAAc;AAAA,QAEd,GAAE,CAAA;AAAA,MACN,CACE;AAAA,IAAA;AAEDr2E,IAAAA,WAAUunE,oBAAoBqO,UAAUA;AAAAA,EAGxC,GAED;AAAA;ACjIe,SAAQU,KAACt2E,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoB8H,aAAa,EAC1C3gD,UAAU,OACV0gD,YAAY,MACZ8F,YAAY,IAAIl1E,WAAUunE,oBAAoB+G,iBAE9C4C,oBAAoB,SAAU9jE,UAC7B;AAAA,QAAI8F,KAAKd;AAET,QAAI0sC,aAAa9+C,WAAUqI,WAAWC,cAAc,+BACpD;AAAA,QAAA,CAAIw2C,YAAW;AACdA,mBAAa9+C,WAAUqI,WAAWC,cAAc,eAAA;AAAA,IAChD;AAED,QAAGw2C,YAAW;AACb5rC,YAAM4rC,WAAW/iC;AACjB3J,aAAO0sC,WAAWljC;AAAAA,IAClB;AAEDxO,aAAAA;AAEA,QAAG0xC,YAAW;AACbA,iBAAW/iC,YAAY7I;AACvB4rC,iBAAWljC,aAAaxJ;AAAAA,IACxB;AAAA,EACD,GACDu8D,QAAQ,WACP;AAAA,QAAA,CAAI3uE,WAAUqI,YAAW;AAExB;AAAA,IACA;AAEDhI,SAAKquB,WAAW;AAChB,QAAIy1B,OAAO9jD;AACXA,SAAK6wE,mBAAmB,WACvB/sB;AAAAA,WAAK+wB,WAAWvG,OAAAA;AAChBxqB,WAAKurB,cAAcvrB,KAAKoyB,cAAAA,CAAAA;AAAAA,IAC3B;EACE,GAED5Q,SAAS,WACRtlE;AAAAA,SAAKquB,WAAW;AAChBruB,SAAK60E,WAAWvP;EAChB,GAEDtvC,WAAW,WACV;AAAA,WAAA,CAAA,CAASh2B,KAAKquB;AAAAA,EACd,GAED8/C,gBAAgB;AACf,WAAOnuE,KAAK60E,WAAW1G,eAAAA;AAAAA,EACvB,GAEDgI,gBAAgB,WACfn2E;AAAAA,SAAKqvE,cAAcrvE,KAAKmuE,eACxB,CAAA;AAAA,EAAA,GAED+H,eAAe,WAAA;AACd,QAAIjkE,OAAOjS,KAAK+uE;AAChB,QAAG98D,QAASA,CAAAA,KAAKykB,QAAU,GAAA;AAC1BzkB,aAAOA,KAAK6qC;IACZ;AACD,WAAO7qC;AAAAA,EACP,GAEDmkE,iBAAiB,WAAA;AAChBp2E,SAAKq2E,SAASr2E,KAAK60E,UACnB70E;AAAAA,SAAKi3B,UAAUj3B,KAAK60E,UACpB;AAAA,EAAA,GAEDxF,eAAe,SAASzhE;AACvB,QAAIA,CAAAA,OAAAA,CAAOA,IAAG8oB,QAAAA;AACb;AAED,QAAG12B,KAAK+uE,YAAW;AAClB,UAAG/uE,KAAK+uE,WAAWc,UAAUjiE,GAAI,GAAA;AAChC;AAAA,MACA;AAAA,IACD;AACD,QAAG5N,KAAKg2B,UAAY,GAAA;AACnBh2B,WAAKq2E,SAASr2E,KAAK+uE,UAAAA;AACnB/uE,WAAK+uE,aAAanhE;AAClB5N,WAAKi3B,UAAUj3B,KAAK+uE,UAAAA;AAAAA,IACpB;AAAA,EACD,GAED93C,WAAW,SAASrpB,KACnB;AAAA,QAAGA,OAAMA,IAAG+c,OAAM;AACjB/c,MAAAA,IAAG+c,MACH;AAAA,UAAG/c,IAAGihE,WAAWhvE,SAASk3B,iBAAiBnpB,IAAGihE,QAAAA,GAAU;AACvD7uE,aAAKqvE,cAAc,IAAI1vE,WAAUunE,oBAAoB+K,UAAAA;AAAAA,MACrD;AAAA,IACD;AAAA,EACD,GACDoE,UAAU,SAASzoE,KAClB;AAAA,QAAGA,OAAMA,IAAGygE,MAAK;AAChBzgE,MAAAA,IAAGygE,KACH;AAAA,IAAA;AAAA,EACD,GAEDsC,iBAAiB,SAAS5wE,KAAAA;AACzB,QAAIu2E,SAAS32E,WAAUqI,WAAWC,cAAc,qBAAmBtI,WAAU4B,OAAO8iC,kBAAgB,OAAKtkC,MAAG;AAC5G,QAAGu2E,UAAUA,OAAO/rE,aAAY;AAE/B,aAAO+rE;AAAAA,IACP;AACD,WAAO;AAAA,EACP,GAEDC,gBAAgB,SAAUziE,GAEzB;AAAA,QAAGA,EAAE0iE,kBAAiB;AACrB;AAAA,IACA;AAED,QAAIz/C,gBAAgB/2B,KAAKk2E,cAEzB;AAAA,QAAGv2E,WAAUunE,oBAAoBqO,QAAAA,KAAAA,EAC9Bx+C,iBAAiBA,cAAc3uB,aAAazI,WAAU+zB,MAAMukC,IAAI/iC,UAAU,EAAC1gB,QAAOuiB,cAAc3uB,UAAAA,GAAY,qBAAqB,KAAA;AACnI;AAED,QAAGzI,WAAUqG,SAAW2P,EAAAA,aAAa3V,KAAK2wE,gBAAgBhxE,WAAUqG,SAAAA,EAAW2P,SAC9E;AAAA;AAED,SAAK3V,KAAKg2B,UAAAA;AACT;AAEDliB,QAAIA,KAAK7S,OAAO2E;AAEhB,QAAI6wE,gBAAgBz2E,KAAK60E;AAEzB,QAAI9M,UAAUpoE,WAAUunE,oBAAoBC,UAAUgB,oBAAoBr0D;AAE1E,QAAIijB,CAAAA,eAAc;AACjB/2B,WAAKm2E,eACL;AAAA,IAAA,WAAQp/C,cAAc2zC,YAAY3C,OAAS,GAAA;AAC3ChxC,oBAAc4zC,SAAS5C,SAASj0D,CAAAA;AAAAA,IAChC,WAAQ2iE,cAAc/L,YAAY3C,OAAS,GAAA;AAC3C0O,oBAAc9L,SAAS5C,SAASj0D,CAAAA;AAAAA,IAChC;AAAA,EAED,GAED4iE,UAAU,MACVl5D,OAAO,SAASzQ,UAAUyQ,QAEzB1T;AAAAA,iBAAa9J,KAAK02E,QAClB12E;AAAAA,SAAK02E,WAAW3sE,WAAWgD,UAAUyQ,UAAS,CAE9C;AAAA,EAAA,EAAA;AAGF;ACzJe,SAAQm5D,eAACh3E,YAGxBA;AAAAA,EAAAA,WAAUi3E,kBAAkB,WAAA;AAE3Bj3E,IAAAA,WAAU4B,OAAOs1E,UAAU;AAE3Bl3E,IAAAA,WAAUunE,oBAAoBiL,aAAa;AAC3CxyE,IAAAA,WAAUunE,oBAAoBkL,gBAAgB;AAC9C,QAAI0E,SAAS;AAEb,QAAIj8D,MAAM,CAAA;AAEV,SAAIhb,SAASM,MAAK;AACjBR,MAAAA,WAAUiG,MAAM3E,QAAQ,QAAQ,WAAA;AAC/BtB,QAAAA,WAAUiG,MAAM/F,SAASM,MAAM,aAAa42E,kBAC/C;AAAA,MAAA,CAAA;AAAA,IACA,OAAM;AACJp3E,MAAAA,WAAUiG,MAAM/F,SAASM,MAAM,aAAa42E,kBAAAA;AAAAA,IAC5C;AAED,aAASA,mBAAmBnxE,QAC3BA;AAAAA,MAAAA,SAAQA,UAAS3E,OAAO2E;AACxBiV,UAAI3I,IAAItM,OAAM0V;AACdT,UAAI1I,IAAIvM,OAAM6V;AAAAA,IACd;AACD,aAASm6D,gBAER;AAAA,UAAIoB,eAAe;AACnB,UAAIC,gBAAgB;AAEpB,UAAIziE,SAAS3U,SAASq3E,iBAAiBr8D,IAAI3I,GAAG2I,IAAI1I,CAClD;AAAA,aAAMqC,UAAUA,UAAU7U,WAAUsP,MAAK;AACxCuF,iBAASA,OAAOvL;AAAAA,MAChB;AACD+tE,qBAAkBxiE,CAAAA,EAAAA,UAAU7U,WAAUsP;AAEtCgoE,sBAAgBt3E,WAAUunE,oBAAoB8H,WAAWh5C,UAAAA;AAEzD,aAAOghD,gBAAgBC;AAAAA,IACvB;AAEDt3E,IAAAA,WAAUgE,YAAY,eAAe,SAAS5D,KAAG+T,GAChD;AAAA,UAAI0Y,QAAQ7sB,WAAUqG,SAGtB;AAAA,UAAA,EAAKwmB,MAAM/sB,QAAQ+sB,MAAMjX,WAAU;AAClC;AAAA,MACA;AACD,UAAIxP,WAAWpG,WAAU+W,cAAc5C,CACvCnU;AAAAA,MAAAA,WAAUunE,oBAAoBiL,aAAapsE,SAASX;AACpDzF,MAAAA,WAAUunE,oBAAoBkL,gBAAgBrsE,SAAS0kB;AAAAA,IACzD,CAEC;AAAA,aAAS0sD,kBAAkB7iE,IACnBA;AAAAA,aAAAA,GAAGmxC;AAAiBnxC,aAAAA,GAAGoxC;AACvBpxC,aAAAA,GAAGoqD;AAAkBpqD,aAAAA,GAAGsqD;AAAAA,IAC/B;AAED,aAASwY,UAAU9iE,IAClB;AAAA,aAAO3U,WAAU8hB,WAAW,CAAE,GAAEnN,EAAAA;AAAAA,IAChC;AAED3U,IAAAA,WAAU03E,qBAAqB,SAAS/iE,IACvC;AAAA,UAAIlP,OAAOzF,WAAUunE,oBAAoBiL;AACzC,UAAI1nD,UAAU9qB,WAAUunE,oBAAoBkL;AAE5C,UAAI/4D,iBAAiB/E,GAAGuF,WAASvF,GAAGiF;AAEpC,UAAIua,QAAOsjD,UAAU9iE,EACrB6iE;AAAAA,wBAAkBrjD,KAClBA;AAAAA,MAAAA,MAAKva,aAAa,IAAIlE,KAAKjQ,IAAAA;AAC3B0uB,MAAAA,MAAKja,WAAW,IAAIxE,KAAKye,MAAKva,WAAWrC,QAAAA,IAAYmC,cAErD;AAAA,UAAGoR,SAAQ;AACV,YAAItB,WAAWxpB,WAAU0sB,sBAEzB;AAAA,YAAG1sB,WAAU4B,OAAO+1E;AACnBxjD,UAAAA,MAAK3K,QAAAA,IAAY7U,GAAG6U,QAAAA;AAAAA;AAEpB2K,UAAAA,MAAK3K,QAAAA,IAAYsB;AAAAA,MAClB;AACD,aAAOqJ;AAAAA,IACT;AACCn0B,IAAAA,WAAU43E,YAAY,SAASC,SAASC,aAAaC,aAAAA;AACpD,UAAG/3E,WAAU8B,UAAU,uBAAuB,CAAC+1E,SAASC,aAAaC,WAAkB,CAAA,MAAA,OAAM;AAC5F;AAAA,MACA;AACD/3E,MAAAA,WAAUqM,SAASyrE,WACnB93E;AAAAA,MAAAA,WAAU8B,UAAU,iBAAiB,CAAC+1E,SAASC,aAAaC,WAC9D,CAAA;AAAA,IAAA;AAEC/3E,IAAAA,WAAUg4E,qBAAqB,WAC9B;AAAA,UAAG33E,KAAKusB,gBAAAA,KAAAA,CAAsBvsB,KAAKysB,kBAAAA,KAAuBzsB,KAAKuB,OAAOs1E,SAAQ;AAC7E,eAAO;AAAA,MACP;AACD,aAAO;AAAA,IACT;AAEC,aAASe,mBACR;AAAA,UAAI3lE,OAAOtS,WAAUunE,oBAAoB8H,WAAWkH,cAAAA;AACpD,UAAGjkE,QAAQA,KAAK1E;AAAS,eAAO0E,KAAK1E;AACrC,aAAO5N,WAAUkV;AAAAA,IACjB;AAEDlV,IAAAA,WAAUiG,MAAM/F,UAAU,WAAW,SAASiU,GAAAA;AAE7C,WAAKA,EAAEw0D,WAAWx0D,EAAEy0D,YAAYz0D,EAAEg7B,WAAW,MAAOnvC,WAAUk4E,iBAAkBl4E,CAAAA,WAAUunE,oBAAoB8H,WAAWh5C,aAAa;AACrIr2B,QAAAA,WAAUunE,oBAAoB8H,WAAW3gD,WAAWunD,cAAAA;AAAAA,MACpD;AAAA,IACH,CAAA;AAECj2E,IAAAA,WAAU8vE,sBAAsB,SAAS37D,GACxC;AAAA,UAAA,CAAInU,WAAUg4E,mBAAAA;AAAsB,eAAO;AAE3C,UAAI7jE,EAAEg7B,WAAW,MAAMh7B,EAAEg7B,WAAW,IAAI;AACvCh7B,UAAE0C,eAAe;AAEjB,YAAI3O,OAAOlI,WAAUyF,KAAKT,IAAIhF,WAAU2V,OAAOxB,EAAEg7B,WAAW,KAAM,KAAI,GAAInvC,WAAUyV,KACpFzV;AAAAA,QAAAA,WAAUyG,eAAeyB,IACzB;AAAA,eAAO;AAAA,MACP;AAED,UAAIoO,YAAY2hE,iBAChB;AAAA,WAAK9jE,EAAEw0D,WAAWx0D,EAAEy0D,YAAYz0D,EAAEg7B,WAAW,IAAI;AAChD,YAAI74B,WAAW;AACdtW,UAAAA,WAAUk4E,gBAAgBT,UAAUz3E,WAAUwV,SAASc,SACvD6gE,CAAAA;AAAAA,mBAAS;AACTn3E,UAAAA,WAAU8B,UAAU,iBAAiB,CAAC9B,WAAUwV,SAASc,SACzD,CAAA,CAAA;AAAA,QAAA;AACD,eAAO;AAAA,MACP;AACD,WAAKnC,EAAEw0D,WAAWx0D,EAAEy0D,YAAYz0D,EAAEg7B,WAAW,IAAI;AAChD,YAAI74B,WAAW;AACd6gE,mBAAS;AACT,cAAIxiE,KAAK3U,WAAUk4E,gBAAgBT,UAAUz3E,WAAUwV,SAASc,SAEhEtW,CAAAA;AAAAA,UAAAA,WAAUsV,YAAYX,GAAGvU,EAAAA;AACzBJ,UAAAA,WAAU8B,UAAU,cAAc,CAAC6S,EACnC,CAAA;AAAA,QAAA;AAAA,MACD;AAED,WAAKR,EAAEw0D,WAAWx0D,EAAEy0D,YAAYz0D,EAAEg7B,WAAW,MAAM8mC,iBAAkB;AACpE,YAAIthE,KAAK3U,WAAUk4E,gBAAgBl4E,WAAUwV,SAASxV,WAAUk4E,cAAc93E,EAAMJ,IAAAA,WAAUk4E;AAC9FvjE,aAAKA,MAAM3U,WAAUk4E;AAErB,YAAIvjE,IAAI;AACP,cAAIwjE,SAASn4E,WAAU03E,mBAAmB/iE,EAAAA;AAC1C,cAAIwiE,QAAQ;AACXgB,mBAAO/3E,KAAKJ,WAAUoa,IAAAA;AACtBpa,YAAAA,WAAU43E,UAAUT,QAAQgB,QAAQxjE,EACpC;AAAA,UAAA,OACI;AACJ,gBAAIiK,MAAM5e,WAAU8B,UAAU,wBAAuB,CAACq2E,QAAQhkE,GAAG,OAAOQ,EAAAA,CAAAA;AACxE,gBAAIiK,KAAK;AACR5e,cAAAA,WAAU43E,UAAUT,QAAQgB,QAAQxjE,EACpCwiE;AAAAA,uBAAS;AAAA,YACT;AAAA,UACD;AAAA,QAED;AACD,eAAO;AAAA,MACP;AAAA,IACH;AAAA,EACA;AACAn3E,EAAAA,WAAUi3E,gBAAAA;AAEV;ACvKe,SAAQmB,mBAACp4E,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoB8Q,0BAA0B,WACvD;AAAA,QAAIhJ,aAAarvE,WAAUunE,oBAAoB8H;AAE/C,QAAIuH,iBAAiB,SAASziE,GAC7B;AAAA,UAAA,CAAInU,WAAU4B,OAAOs1E;AAAS;AAE9B,aAAO7H,WAAWuH,eAAeziE,CACnC;AAAA,IAAA;AAEC,QAAImkE,eAAe;AAClBjJ,iBAAW6B,mBAAmB,WAC7B7B;AAAAA,mBAAWoH,gBACd;AAAA,MAAA,CAAA;AAAA,IACA;AAEC,QAAI8B;AACJv4E,IAAAA,WAAUgE,YAAY,gBAAgB,WACrC;AAAA,UAAA,CAAIhE,WAAU4B,OAAOs1E;AAAS;AAC9B,UAAA,EAAK7H,WAAWh5C,UAAAA,KAAAA,CAAgBr2B,WAAUqG,SAAAA,EAAW2P;AAAY;AAEjE7L,mBAAaouE,QACbA;AAAAA,iBAAWnuE,WAAW,WAAA;AACrB,YAAGpK,WAAUqK,YAAW;AACvB,iBAAO;AAAA,QACP;AACD,YAAIglE,CAAAA,WAAWh5C,UACdg5C;AAAAA,qBAAWV,OACZ6J;AAAAA,0BAAAA;AAAAA,MACH,CACA;AAAA,IAAA,CAAA;AAEC,QAAIA,oBAAoB,WACvB;AAAA,UAAA,CAAInJ,WAAWh5C,UAAAA;AACd;AAED,UAAI+4C,aAAaC,WAAWkH,cAAAA;AAC5B,UAAInH,CAAAA;AACH;AAED,UAAA,CAAIA,WAAWr4C,QAAU,GAAA;AACxBq4C,qBAAaA,WAAWjyB,SACxB;AAAA,MAAA;AAED,UAAIiyB,CAAAA,cAAcA,sBAAsBpvE,WAAUunE,oBAAoB0N,iBAAiB7F,sBAAsBpvE,WAAUunE,oBAAoB4N;AAC1I;AAED9F,iBAAW6B,mBAAmB,WAC7B9B;AAAAA,mBAAWpkD,MAAM,IAAA;AAAA,MACpB,CACA;AAAA,IAAA;AAEChrB,IAAAA,WAAUgE,YAAY,oBAAoB,WACzC;AAAA,UAAIyE,YAAYzI,WAAUqI;AAC1BrI,MAAAA,WAAUgtB,YAAY9sB,UAAU,WAAW02E,cAC3C52E;AAAAA,MAAAA,WAAUgtB,YAAYvkB,WAAW,aAAagwE,gBAAAA;AAC9Cz4E,MAAAA,WAAUgtB,YAAYvkB,WAAW,SAAS6vE,YAAAA;AAG1C,UAAGt4E,WAAU4B,OAAOs1E,SAAQ;AAE3Bl3E,QAAAA,WAAUiG,MAAM/F,UAAU,WAAW02E,cACrC52E;AAAAA,QAAAA,WAAUiG,MAAMwC,WAAW,aAAagwE,gBACxCz4E;AAAAA,QAAAA,WAAUiG,MAAMwC,WAAW,SAAS6vE,YAAAA;AAEpC7vE,kBAAUrD,aAAa,YAAY,GAEtC;AAAA,MAAA,OAAO;AACJqD,kBAAUmmE,gBAAgB,UAAA;AAAA,MAC1B;AAAA,IACH,CAAA;AAEC,aAAS6J,iBAAiBtkE,GAAAA;AACzB,UAAInU,CAAAA,WAAU4B,OAAOs1E;AAAS,eAAO;AAGrC,UAAIwB,gBAAgB14E,WAAUunE,oBAAoB9uC,UAAUtkB,EAAEU,UAAUV,EAAEW,YAAY9U,WAAUqI,WAAWC,cAAc,eAAA,CAAA;AAGzH,UAAI4S,MAAMlb,WAAU+W,cAAc5C;AAElC,UAAImjB;AACJ,UAAGt3B,WAAUgV,cAAcb,EAAEU,UAAUV,EAAEW,aAAY;AACpDwiB,oBAAY,IAAIt3B,WAAUunE,oBAAoB0H,MAAMjvE,WAAUgV,cAAcb,EAAEU,UAAUV,EAAEW,UAAAA,CAAAA;AAAAA,MAC1F,WAAQ4jE,eAAc;AACtBphD,oBAAY,IAAIt3B,WAAUunE,oBAAoBuE;AAC9C,YAAG5wD,IAAIzV,QAAQizE,eAAc;AAC5BphD,sBAAYA,UAAU+5C,SAAS,IAAIrxE,WAAUunE,oBAAoBuE,SAAS5wD,IAAIzV,MAAM,MAAMyV,IAAI4P,OAC9F,CAAA;AAAA,QAAA;AAAA,MACD;AAED,UAAGwM,WAAW;AACb,YAAK+3C,CAAAA,WAAWh5C,UAAa,GAAA;AAC5Bg5C,qBAAWD,aAAa93C;AAAAA,QAE5B,OAAU;AACN,cAAIpc,IAAIzV,QAAQizE,eAAe;AAC9BrJ,uBAAWxxD,MAAM,WAAA;AAChBwxD,yBAAWK,cAAcp4C,SAAAA;AAAAA,YAC/B,CACK;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAED,aAASqhD,WAAWC,QACnB;AAAA,UAAA,CAAI54E,WAAU4B,OAAOs1E;AAAS;AAC9B,UAAI7H,CAAAA,WAAWh5C;AAAa;AAG5B,UAAIwiD,YAAYD;AAChB,UAAIthD,YAAY,IAAIt3B,WAAUunE,oBAAoB0H,MAAM4J,UAAUjrE,OAClE;AAAA,UAAA,CAAI0pB,UAAUP,QAAAA,GAAU;AACvB,YAAI+hD,YAAYxhD,UAAUle,SAASy/D,UAAUz/D;AAC7C,YAAI2/D,UAAUzhD,UAAUje,OAAOw/D,UAAUx/D;AACzC,YAAI2/D,cAAc1hD,UAAUxM,WAAW+tD,UAAU/tD;AAEjDwM,oBAAY,IAAIt3B,WAAUunE,oBAAoBuE,SAASgN,WAAWC,SAASC,WAC3E;AAAA,YAAA,CAAI1hD,UAAUP,QAAU,GAAA;AACvBO,sBAAY,IAAIt3B,WAAUunE,oBAAoBuE;AAAAA,QAC9C;AAAA,MACD;AAEDuD,iBAAWK,cAAcp4C,SACzB;AAAA,UAAIhlB,OAAO+8D,WAAWkH,cACtB;AAAA,UAAGjkE,QAAQA,KAAK48D,WAAWhvE,SAASk3B,iBAAiB9kB,KAAK48D,QAAAA,GAAU;AACnEG,mBAAW/3C,UAAU+3C,WAAWkH,cAChC,CAAA;AAAA,MAAA;AAAA,IACD;AAGD,QAAIjhE,cAActV,WAAUsV;AAC5BtV,IAAAA,WAAUsV,cAAc,SAASlV,KAAAA;AAChC,UAAIwe,MAAMtJ,YAAYnJ,MAAM9L,MAAM+L,SAClC;AAAA,UAAGpM,WAAU4B,OAAOs1E,WAAW7H,WAAWh5C,UAAY,GAAA;AACrD,YAAGr2B,WAAUqG,SAAAA,EAAWiQ,aAAalW,KAAG;AACvC,cAAIsE,UAAU,IAAI1E,WAAUunE,oBAAoB0H,MAAM7uE,GAAAA;AAEtD,cAAIJ,CAAAA,WAAUqG,SAAW6P,EAAAA,aAAY;AACpCyiE,uBAAWj0E,OAAAA;AAAAA,UACX;AAAA,QACD;AAAA,MACD;AACD,aAAOka;AAAAA,IACT;AAEC5e,IAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAAAA;AAChD,UAAIJ,CAAAA,WAAU4B,OAAOs1E;AAAS,eAAO;AACrC,UAAG7H,WAAWh5C,UAAAA,GAAY;AACzB,YAAI+4C,aAAaC,WAAWkH;AAC5B,YAAGnH,WAAWxhE,WAAWxN,KAAG;AAC3BivE,qBAAWK,cAAc,IAAI1vE,WAAUunE,oBAAoBuE,UAAAA;AAAAA,QAC3D;AAAA,MACD;AACD,aAAO;AAAA,IACT,CAEC9rE;AAAAA,IAAAA,WAAUgE,YAAY,cAAc,WAAA;AACnC,UAAIhE,CAAAA,WAAU4B,OAAOs1E;AAAS,eAAO;AACrC,UAAG7H,WAAWh5C,UAAAA,GAAY;AACzB,YAAGg5C,WAAWkH,cAAAA,aAA2Bv2E,WAAUunE,oBAAoB0H,OAAM;AAC5EI,qBAAWK,cAAc,IAAI1vE,WAAUunE,oBAAoBuE,UAAAA;AAAAA,QAC3D;AAAA,MACD;AAAA,IACH,CAAA;AAAA,EAEA;AAEA;ACzKe,SAAQmN,iBAACj5E,YAExBA;AAAAA,EAAAA,WAAUunE,oBAAoB2R,iBAAiB,CAAA;AAE/Cl5E,EAAAA,WAAUunE,oBAAoB4R,YAAY,SAAS7mE,MAClD;AAAA,QAAI8mE,gBAAgBp5E,WAAUunE,oBAAoB2R;AAClD,aAAQlxE,IAAI,GAAGA,IAAIoxE,cAAcnxE,QAAQD,KAAI;AAC5C,UAAG3H,KAAKo4B,UAAUnmB,MAAM8mE,cAAcpxE;AACrC,eAAO;AAAA,IACR;AACD,WAAO;AAAA,EACR;AAEAhI,EAAAA,WAAUunE,oBAAoB9uC,YAAY,SAASC,OAAOC,QACzD;AAAA,WAAMD,SAASA,UAAUC,QAAO;AAC/BD,cAAQA,MAAMpvB;AAAAA,IACd;AAED,WAAA,CAAA,EAAUovB,UAAUC;AAAAA,EACrB;AAEA34B,EAAAA,WAAUunE,oBAAoB8R,oBAAoB,WACjD;AAAA,QAAIhK,aAAarvE,WAAUunE,oBAAoB8H;AAE/C,aAASiK,aAAanlE,GAAAA;AACrB,UAAIU,SAASV,EAAEU;AAEfw6D,iBAAWV,OAAAA;AACXU,iBAAWK,cAAc,IAAI1vE,WAAUunE,oBAAoB0N,cAAcpgE,QAAQ,CACjF,CAAA;AAAA,IAAA;AAED,aAAS0kE,aAAaplE,GAAAA;AACrB,UAAIU,SAASV,EAAEU,UAAUV,EAAEW;AAE3B,UAAIiO,OAAO/iB,WAAU+zB,MAAMukC,IAAI/iC,UAAUphB,GAAG,uBAAuB,KAAA;AACnE,UAAIjM,OAAOlI,WAAU+zB,MAAMukC,IAAI/iC,UAAUphB,GAAG,uBAAuB,KAAA;AACnE,UAAIwU,OAAO3oB,WAAU+zB,MAAMukC,IAAI/iC,UAAUphB,GAAG,iBAAiB,KAAA;AAE7D,UAAIqlE,WAAW;AACf,UAAI3sC,YAAY;AAChB,UAAGlkB,MAAK;AACP,YAAI2rC;AACJ,YAAImlB;AACJ,YAAI1F,UAAUl/D;AACd,eAAMk/D,WAAWA,QAAQ3+C,QAAQroB,YAAiB,KAAA,MAAK;AACtDgnE,oBAAUA,QAAQzqE;AAAAA,QAClB;AACD,YAAGyqE,SAAQ;AACV0F,eAAK1F;AACLzf,UAAAA,MAAKmlB,GAAGnwE;AAAAA,QACR;AAED,YAAGgrD,OAAMmlB,IAAG;AACX,cAAI5yE,OAAOytD,IAAGhrD,WAAW+f,iBAAiB,IAAA;AAC1C,mBAAQrhB,IAAI,GAAGA,IAAInB,KAAKoB,QAAQD,KAAI;AACnC,gBAAGnB,KAAKmB,CAAMssD,KAAAA,KAAG;AAChBklB,yBAAWxxE;AACX;AAAA,YACA;AAAA,UACD;AACD,cAAIohB,QAAQkrC,IAAGjrC,iBAAiB,IAAA;AAChC,mBAAQrhB,IAAI,GAAGA,IAAIohB,MAAMnhB,QAAQD,KAAI;AACpC,gBAAGohB,MAAMphB,CAAMyxE,KAAAA,IAAG;AACjB5sC,0BAAY7kC;AACZ;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AACD,UAAIqB,OAAO8K,EAAE8hE;AACb5G,iBAAWxxD,MAAM,WAChB;AAAA,YAAGkF,QAAQ7a,QAAQygB,MAAK;AAEvB,cAAIjkB;AACJ,cAAGqe,MAAK;AACPre,sBAAU,IAAI1E,WAAUunE,oBAAoB0N,cAAc5rE,MAAM;AAChEgmE,uBAAWK,cAAc,IAAI1vE,WAAUunE,oBAAoB0N,cAAc5rE,MAAM,CAAA,CAAA;AAAA,UAC/E,WAAQnB,MAAK;AACbxD,sBAAU,IAAI1E,WAAUunE,oBAAoB0N,cAAc5rE,MAAM,CAChE;AAAA,UAAA,WAAQsf,MAAK;AACbjkB,sBAAU,IAAI1E,WAAUunE,oBAAoB4N,YAAY9rE,MAAMmwE,UAAU3sC,SAAAA;AAAAA,UAExE;AAED,cAAGnoC,SAAQ;AAEV2qE,uBAAWV,OAAAA;AACX,gBAAGjqE,QAAQqyB,QAAU,GAAA;AACpBs4C,yBAAWD,aAAa;AACxBC,yBAAWK,cAAchrE,OACzB;AAAA,YAAA;AAAA,UAED;AAAA,QACD;AAAA,MAEJ,CACE;AAAA,IAAA;AAED,QAAG1E,WAAU4D,gBAAe;AAC3B,UAAI81E,gBAAgB15E,WAAU4D;AAC9B5D,MAAAA,WAAU4D,iBAAiB,WAC1B;AAAA,YAAI+1E,MAAMD,cAAcvtE,MAAM9L,MAAM+L,SACpC;AAAA,YAAIgtE,gBAAgBp5E,WAAUunE,oBAAoB2R;AAElDl5E,QAAAA,WAAUgtB,YAAY2sD,KAAK,SAASJ;AACpCv5E,QAAAA,WAAUiG,MAAM0zE,KAAK,SAASJ,YAE9Bv5E;AAAAA,QAAAA,WAAUgtB,YAAY2sD,KAAK,SAASL,YACpCt5E;AAAAA,QAAAA,WAAUiG,MAAM0zE,KAAK,SAASL,YAAAA;AAE9B,YAAIM,QAAQ;AACZ,iBAAQ5xE,IAAI,GAAGA,IAAIoxE,cAAcnxE,QAAQD,KAAI;AAC5C,cAAGoxE,cAAcpxE,CAAAA,KAAM2xE,KAAI;AAC1BC,oBAAQ;AACR;AAAA,UACA;AAAA,QACD;AACD,YAAIA,CAAAA;AACHR,wBAAcrqE,KAAK4qE,GAEpB;AAAA,YAAGtK,WAAWh5C,UAAY,GAAA;AACzB,cAAI/jB,OAAO+8D,WAAWkH,cAAAA;AACtB,cAAGjkE,QAAQA,KAAK7J,aAAakxE,KAAI;AAChCtK,uBAAW/3C,UAAUhlB,IAAAA;AAAAA,UAC1B,OAAS;AACJqnE,gBAAIv0E,aAAa,YAAY,GAC7B;AAAA,UAAA;AAAA,QACL,OAAQ;AACJu0E,cAAIv0E,aAAa,YAAY,GAC7B;AAAA,QAAA;AACD,eAAOu0E;AAAAA,MACV;AAAA,IACE;AAED,QAAG35E,WAAUmG,iBAAgB;AAC5B,UAAI0zE,iBAAiB75E,WAAUmG;AAC/BnG,MAAAA,WAAUmG,kBAAkB,SAASwzE,KAAK1lD,OACzC0lD;AAAAA,cAAMA,QAAQ35E,WAAU85E,aAAa95E,WAAU85E,WAAWp5E,aAAa;AACvE,YAAIke,MAAMi7D,eAAe1tE,MAAM9L,MAAM+L,SAErC;AAAA,YAAA,CAAIutE,QAAQA,IAAIrwE,YAAW;AAC1B,cAAI8vE,gBAAgBp5E,WAAUunE,oBAAoB2R;AAClD,mBAAQlxE,IAAI,GAAGA,IAAIoxE,cAAcnxE,QAAQD,KAAI;AAC5C,gBAAGoxE,cAAcpxE,CAAAA,KAAM2xE,KAAI;AAC1B35E,cAAAA,WAAUgtB,YAAYosD,cAAcpxE,CAAAA,GAAI,SAASsxE,YAAAA;AACjDF,4BAAclvD,OAAOliB,GAAG,CAAA;AACxBA;AAAAA,YACA;AAAA,UACD;AAAA,QACD;AAED,eAAO4W;AAAAA,MACV;AAAA,IACE;AAAA,EACF;AAEA;ACxIe,SAAQs4D,QAACl3E,YACtBA;AAAAA,EAAAA,WAAU4B,OAAOs1E,UAAU;AAC3Bl3E,EAAAA,WAAU4B,OAAO6vE,eAAe;AAChCzxE,EAAAA,WAAU+5E,cAAc,SAASjS,UAAUvhE,SAASyzE,OAAAA;AACnD,QAAIC,cAAcC,SAASF,KAAAA;AAC3B,QAAGC,aAAY;AACdA,kBAAYvvD,UAAUzd,KAAK66D,UAAUvhE,OACrC;AAAA,IAAA;AAAA,EACJ;AAEEvG,EAAAA,WAAUm6E,qBAAqB,SAASrS,UAAUkS,OAAAA;AACjD,QAAIC,cAAcC,SAASF,KAC3B;AAAA,QAAGC,aAAY;AACd,UAAIlS,WAAW/nE,WAAUunE,oBAAoBC,UAAUzsC,MAAM+sC,QAAAA;AAC7D,UAAGC,SAAS9/D,QAAO;AAClB,eAAOgyE,YAAYvvD,UAAUqgD,YAAYhD,SAAS,CAClD,CAAA;AAAA,MAAA;AAAA,IACD;AAAA,EACJ;AAEE/nE,EAAAA,WAAUo6E,iBAAiB,SAAStS,UAAUkS,OAAAA;AAC7C,QAAIC,cAAcC,SAASF,KAAAA;AAC3B,QAAGC,aAAY;AACdA,kBAAYvvD,UAAUugD,OAAOnD,QAAAA;AAAAA,IAC7B;AAAA,EACJ;AAEE9nE,EAAAA,WAAUgrB,QAAQ,WAAA;AACjB,QAAIhrB,CAAAA,WAAU4B,OAAOs1E,SAAQ;AAC5B;AAAA,IACA;AACD,QAAImD,OAAOr6E,WAAUunE,oBAAoB8H;AACzCgL,SAAK1L,OAAAA;AACL,QAAIS,aAAaiL,KAAK9D,cACtB;AAAA,QAAA,CAAInH,cAAcA,sBAAsBpvE,WAAUunE,oBAAoB0N,iBAAiB7F,sBAAsBpvE,WAAUunE,oBAAoB4N,aAAY;AACtJkF,WAAK7D,eACT;AAAA,IAAA,OAAQ;AACJ6D,WAAK/iD,UAAU+iD,KAAK9D,cAAAA,CAAAA;AAAAA,IACpB;AAAA,EACJ;AAEE,WAAS2D,SAASp6E,MACjB;AAAA,QAAIw6E,SAAS,EACZC,eAAgBv6E,WAAUunE,oBAAoB0N,eAC9CuF,aAAcx6E,WAAUunE,oBAAoB4N,aAC5Cn1E,WAAYA,WAAUunE,oBAAoB+G,eAC1C7/D,UAAYzO,WAAUunE,oBAAoB+K,UAC1CmI,UAAYz6E,WAAUunE,oBAAoBuE,UAC1C7lE,OAASjG,WAAUunE,oBAAoB0H,MAGxC;AAAA,QAAIyL,YAAY,CAAA;AAChB,aAAQ1yE,KAAKsyE;AACZI,gBAAU1yE,EAAE+E,YAAAA,CAAAA,IAAiButE,OAAOtyE,CAAAA;AAErClI,YAAQA,OAAO,IAAIiN,YAEnB;AAAA,WAAO2tE,UAAU56E,IAAAA,KAASw6E,OAAOt6E;AAAAA,EACjC;AAEDA,EAAAA,WAAUunE,sBAAsB;AAEhCvnE,EAAAA,WAAUuuE,WAAW,WACpB;AAAA,QAAItF,QAAQnhE,MAAM4iB,UAAU6C,MAAM7S,KAAKtO,WAAW,CAAA;AAClD,QAAIwS,MAAM,CAAA;AACV,aAAQ5W,IAAI,GAAGA,IAAIihE,MAAMhhE,QAAQD,KAAI;AACpC,UAAI/H,MAAMgpE,MAAMjhE,CAChB;AAAA,UAAA,OAAU/H,OAAO,YAAW;AAC3BA,cAAM,IAAIA;AAAAA,MACV;AAED,eAAQ04C,KAAK14C,KAAI;AAChB2e,YAAI+5B,KAAK14C,IAAI04C,CAAAA;AAAAA,MACb;AAAA,IACD;AACD,WAAO/5B;AAAAA,EACV;AAEE0oD,qBAAmBtnE,UACnB4qE;AAAAA,eAAa5qE,UACborE;AAAAA,mBAAiBprE,UACjBgrD;AAAAA,SAAOhrD,UACPquE;AAAAA,iBAAeruE;AACf+vE,WAAS/vE,UAAAA;AACTqwE,cAAYrwE,UAAAA;AACZiG,QAAMjG,UAAAA;AACNsxE,YAAUtxE,UAAAA;AACVg1E,iBAAeh1E,UACfo1E;AAAAA,eAAap1E,UACbklB;AAAAA,YAAUllB,UACV01E;AAAAA,SAAO11E,UACPs2E;AAAAA,OAAKt2E;AACLg3E,iBAAeh3E,UAAAA;AAAAA,GAEf,WACCo4E;AAAAA,uBAAmBp4E,UACnBi5E;AAAAA,qBAAiBj5E,UAEjB;AAAA,QAAIqvE,aAAarvE,WAAUunE,oBAAoB8H;AAE/CrvE,IAAAA,WAAUunE,oBAAoB8Q,wBAE9B;AAAA,QAAGr4E,WAAU4D,gBAAe;AAE3B5D,MAAAA,WAAUunE,oBAAoB8R,kBAClC;AAAA,IAAA,OAAQ;AAEJ,UAAIsB,aAAa36E,WAAUgE,YAAY,oBAAoB,WAAA;AAC1DhE,QAAAA,WAAU0N,YAAYitE,UACtB36E;AAAAA,QAAAA,WAAUunE,oBAAoB8R,kBACnC;AAAA,MAAA,CAAA;AAAA,IACI;AAID,aAASuB,sBACR;AAAA,UAAA,CAAI56E,WAAU4B,OAAOs1E;AAAS;AAE9B,UAAIvI;AACJ,UAAIyH,eAAel2E,SAASk3B;AAE5B,WAAIg/C,gBAAgBp2E,WAAU+zB,MAAMukC,IAAI/iC,UAAU6gD,cAAc,sBAAsB,KAAA,GAAO;AAC5FzH,iBAAS;AAAA,MACd,OAAS;AACJA,iBAAS3uE,WAAUunE,oBAAoB9uC,UAAU29C,cAAcp2E,WAAUqI,UAAAA,KAAerI,WAAUunE,oBAAoB4R,UAAU/C,YAAAA;AAAAA,MAChI;AAED,aAAOzH;AAAAA,IACP;AAID,aAASkM,YAAYlM,QAAAA;AACpB,UAAGA,UAAAA,CAAWU,WAAWh5C,UAAAA,GAAY;AACpCg5C,mBAAWV,OAAAA;AAAAA,MACX,WAAK,CAAIA,UAAUU,WAAWh5C,UAAY,GAAA;AAC1Cg5C,mBAAW1J,QACX;AAAA,MAAA;AAAA,IACD;AAEDnZ,gBAAY,WACX;AAAA,UAAA,CAAIxsD,WAAUqI,cAAAA,CAAerI,WAAUunE,oBAAoB9uC,UAAUz4B,WAAUqI,YAAYnI,SAASM,IAAAA,GAAM;AACzG;AAAA,MACA;AAED,UAAImuE,SAASiM,oBAAAA;AAEb,UAAGjM,QAAO;AACTkM,oBAAYlM;MACZ,WAAK,CAAIA,UAAUU,WAAWh5C,UAAY,GAAA;AAC1CjsB,mBAAW,WAAA;AACV,cAAGpK,WAAUqK,YAAW;AACvB;AAAA,UACA;AAED,cAAGrK,WAAU4B,OAAOs1E,SAAQ;AAC3B2D,wBAAYD,oBACnB,CAAA;AAAA,UAAA,OAAW;AACJ56E,YAAAA,WAAUqI,WAAWumE,gBAAgB,UACrC;AAAA,UAAA;AAAA,QAED,GAAE,GAAA;AAAA,MACH;AAAA,IACD,GAAE,GAEH;AAAA,EAAA;AAMH;AC/Le,SAAQkM,MAAC96E,YAAAA;AAExBA,EAAAA,WAAUgE,YAAY,oBAAmB,WAAA;AAExC3D,SAAK06E,OAAOjkD,KAAK,SAAS3yB,GAAGC,GAC5B;AAAA,aAAOD,EAAEyqC,SAASxqC,EAAEwqC;AAAAA,IACtB,CAAA;AAEC5uC,IAAAA,WAAU2rD,WAAS,SAASjH,IAAAA;AAC3BA,SAAGgE,WAAS,CAAC,yBAAwB,IAAG,iBAAgB,aAExDroD;AAAAA,WAAK2D,YAAY,gBAAe,SAAS5D,KACxC;AAAA,YAAA,CAAKC,KAAKga,YAAYha,KAAK26E,QAAQ56E,GAAOC,KAAAA,KAAKmV,SAASpV,GAAOC,KAAAA,KAAKmV,SAASpV,GAAAA,EAAI06E,SAASp2B,GAAGo2B;AAC5Fp2B,aAAGK,WAAW3kD,KAAG,MAAK,UAC1B;AAAA,MAAA,CAAA;AACEC,WAAK2D,YAAY,uBAAsB,SAAS5D;AAC/C,YAAGC,KAAKmV,SAASpV,GAAAA,KAAOC,KAAKmV,SAASpV,GAAI06E,EAAAA,SAASp2B,GAAGo2B,OAAO;AAC5D,cAAKz6E,CAAAA,KAAK26E,QAAQ56E,GAAAA;AAAK;AACvB,cAAI4kD,IAAEN,GAAGr+C,SAASjG,GAElB;AAAA,cAAI4kD,KAAG,cAAc3kD,KAAKgW,YAAY;AAAGquC,eAAGK,WAAW3kD,KAAG,KAAA;AAAS,mBAAO;AAAA,UAAO;AACjF,cAAI4kD,KAAG;AAAY,mBAAO;AAC1B,cAAIA,KAAG;AAAiB,mBAAO;AAE/BN,aAAGK,WAAW3kD,KAAG,MAAK,SACrB;AAAA,iBAAO;AAAA,QACR;AACI,iBAAO;AAAA,MACf,CAAA;AACEC,WAAK2D,YAAY,kBAAiB,SAAS5D,KAC1C;AAAA,YAAA,CAAKC,KAAKga,YAAYha,KAAK26E,QAAQ56E,GAAAA,KAAOC,KAAKmV,SAASpV,GAAOC,KAAAA,KAAKmV,SAASpV,GAAAA,EAAI06E,SAASp2B,GAAGo2B;AAC5Fp2B,aAAGK,WAAW3kD,KAAG,MAAK,SAC1B;AAAA,MAAA,CAAA;AAEEskD,SAAGqE,cAAY,SAAS3oD,KAAG+oD,MAC1B;AAAA,YAAIx0C,KAAGtU,KAAKJ,IAAIuV,SAASpV,GAAAA;AACzB,YAAI+5B,OAAO,CAAA;AAEX,iBAASh2B,KAAKwQ,IAAG;AAChB,cAAIxQ,EAAEiT,QAAQ,GAAA,MAAO;AAAG;AACxB,cAAIzC,GAAGxQ,CAAMwQ,KAAAA,GAAGxQ,CAAGk6B,EAAAA;AAClBlE,iBAAKh2B,CAAK9D,IAAAA,KAAKJ,IAAI2kC,SAASG,WAAWpwB,GAAGxQ,CAE1Cg2B,CAAAA;AAAAA;AAAAA,iBAAKh2B,KAAKwQ,GAAGxQ,CAAAA;AAAAA,QACd;AACD,eAAOg2B;AAAAA,MACV;AACEuqB,SAAGu2B,mBAAiB;;AAEpBv2B,SAAG1gD,YAAY,kBAAkBhE,WAAUqlD,gBAAAA;AAC3CX,SAAG1gD,YAAY,kBAAkBhE,WAAUqlD,gBAAAA;AAC3CX,SAAG1gD,YAAY,kBAAkB,SAASshD,KAAKllD,KAAAA;AAC9CC,aAAKJ,IAAIslD,YAAYnlD,KAAIC,KAAKmlD,cAAc,cAAA;AAC5CnlD,aAAKJ,IAAIsY,YAAYnY,GACxB;AAAA,MAAA,CAAA;AAAA,IACA;AAEC,KAAA,WAAA;AACO,UAAI86E,YAAY,SAASj7E,KAAAA;AACrB,YAAGA,QAAQ,QAAA,OAAe,OAAQ;AAC9B,iBAAOA;AACX,YAAIm/B,OAAO,IAAIn/B,IAAIwL;AACnB,iBAAQge,OAAOxpB;AACXm/B,eAAK3V,OAAOyxD,UAAUj7E,IAAIwpB,GAC9B,CAAA;AAAA,eAAO2V;AAAAA,MACnB;AAEEp/B,MAAAA,WAAUm7E,kBAAkB;AAC5Bn7E,MAAAA,WAAUo7E,iBAAiB;AAC3B,eAAQpzE,KAAE,GAAGA,KAAEhI,WAAU+6E,OAAO9yE,QAAQD,MAAK;AAC5ChI,QAAAA,WAAU4B,OAAO,cAAY5B,WAAU+6E,OAAO/yE,EAAAA,EAAGqF,IAAQ,IAAA;AAChDrN,QAAAA,WAAU4B,OAAO,cAAY5B,WAAU+6E,OAAO/yE,EAAAA,EAAGqF,IAAMqc,EAAAA,WAAWwxD,UAAUl7E,WAAU4B,OAAO+nB,SAASD;AAC/G1pB,QAAAA,WAAUo7E,eAAep7E,WAAU+6E,OAAO/yE,EAAGqF,EAAAA,IAAAA,IAAQrN,WAAU4B,OAAOy5E,wBAAsB,IAAIrzE,KAAE;AAClG,YAAGhI,WAAU+6E,OAAO/yE,EAAGyyB,EAAAA,KAAK;AAC3B,cAAIiqB,KAAK1kD,WAAUstD,oBAAoB,EACtC7yB,KAAKz6B,WAAU+6E,OAAO/yE,EAAGyyB,EAAAA,IAAAA,CAAAA;AAE1BiqB,aAAGo2B,QAAQ96E,WAAU+6E,OAAO/yE,EAAGqF,EAAAA;AAC/BrN,UAAAA,WAAUm7E,gBAAgBpsE,KAAK21C,EAC/B1kD;AAAAA,UAAAA,WAAUm7E,gBAAgBnzE,EAAAA,EAAG7G,KAAKnB,UAAAA;AAAAA,QAClC;AACD,YAAGA,WAAU+6E,OAAO/yE,EAAAA,EAAGszE;AACtBt7E,UAAAA,WAAUu7E,eAAev7E,WAAU+6E,OAAO/yE,EAAGqF,EAAAA;AAAAA,MAC9C;AAAA,IACD,GAGDrN;AAAAA,IAAAA,WAAUw7E,YAAY,SAASC;AAC9Bp7E,WAAKq7E,YAAYD,QAAQ,IAAA;AAAA,IAC3B;AAECz7E,IAAAA,WAAU27E,YAAY,SAASF;AAC9Bp7E,WAAKq7E,YAAYD,QAAQ,KAAA;AAAA,IAC3B;AAECz7E,IAAAA,WAAU07E,cAAc,SAASD,QAAQG,SACxC;AAAA,UAAId,SAAQz6E,KAAKw7E,SAASJ,MAAAA;AAE1B,UAAUG,OAAAA,WAAW;AACpBd,QAAAA,OAAMc,UAAYA,CAAAA,CAAAA;AAAAA;AAElBd,QAAAA,OAAMc,UAAAA,CAAWd,OAAMc;AAExBv7E,WAAKoG,eAAepG,KAAKsV,OAAOtV,KAAKoV,KACvC;AAAA,IAAA;AAECzV,IAAAA,WAAU67E,WAAW,SAASJ,QAC7B;AAAA,UAAIX,QACHgB;AACD,UAAUL,OAAAA,UAAU;AACnBK,qBAAaL;AACd,UAAUA,OAAAA,UAAU;AACnBK,qBAAaL,OAAOX;AACrB,eAAS9yE,KAAE,GAAGA,KAAEhI,WAAU+6E,OAAO9yE,QAAQD,MAAK;AAC7C,YAAGhI,WAAU+6E,OAAO/yE,EAAGqF,EAAAA,QAAQyuE;AAC9BhB,UAAAA,SAAQ96E,WAAU+6E,OAAO/yE;MAC1B;AACD,aAAO8yE;AAAAA,IACT;AAEC96E,IAAAA,WAAUgE,YAAY,oBAAoB,SAAUw8D;AACnD,UAAI7rD,KAAKtU,KAAKmV,SAASgrD,QACjBngE;AAAAA,WAAKuB,OAAO+nB,SAASD,WAAWrpB,KAAKuB,OAAO,cAAY+S,GAAGmmE,KAAAA,EAAOpxD;AAClE1pB,MAAAA,WAAUmqB;AAChB,aAAO;AAAA,IACT,CAECnqB;AAAAA,IAAAA,WAAUgE,YAAY,WAAW,SAAUw8D,UAAUub;AACpD,UAAIpnE,KAAK3U,WAAUwV,SAASgrD,QACtB;AAAA,aAAA,CAAQxgE,WAAU67E,SAASlnE,GAAGmmE,KAAOkB,EAAAA;AAAAA,IAC7C,CAECh8E;AAAAA,IAAAA,WAAUgE,YAAY,oBAAoB,SAAS2Q,IAAIuzB;AACtD,UAAI4yC,SAAQz6E,KAAKw7E,SAASlnE,EAC1B;AAAA,UAAA,CAAImmE,OAAMpa;AACT,eAAO;AACR,UAAIp8C,QAAQ;AACZ,eAAQtc,KAAI,GAAGA,KAAEkgC,IAAIjgC,QAAQD,MAAK;AACjC,YAAGkgC,IAAIlgC,EAAG8yE,EAAAA,SAASA,OAAMztE,QAAQ66B,IAAIlgC,EAAG5H,EAAAA,MAAMuU,GAAGvU;AAChDkkB;AAAAA,MACD;AACD,aAAQA,SAAStkB,WAAU4B,OAAO0+D;AAAAA,IACpC,CAAA;AAECtgE,IAAAA,WAAUqM,WAAS,SAASuN,YAAWM,UAASlY,MAAK5B,KAAGqmC,YACvD;AAAA,UAAI9xB,KAAGiF;AACP,UAAIxN,UAAUnE,UAAQ,GAAE;AACvB0M,aAAG8xB,cAAY;AACf9xB,WAAGiF,aAAWA;AACdjF,WAAGuF,WAASA;AACZvF,WAAG3S,OAAKA;AACR2S,WAAGvU,KAAGA;AACNuU,WAAGmmE,QAAQz6E,KAAKk7E;AAAAA,MAChB;AACD5mE,SAAGvU,KAAKuU,GAAGvU,MAAIJ,WAAUoa,IACzBzF;AAAAA,SAAG3S,OAAO2S,GAAG3S,QAAM;AAGnB,UAAA,OAAW2S,GAAGiF,cAAc;AAAWjF,WAAGiF,aAAWvZ,KAAKqiB,UAAUkgB,SAASjuB,GAAGiF,UAChF;AAAA,UAAA,OAAWjF,GAAGuF,YAAY;AAAWvF,WAAGuF,WAAS7Z,KAAKqiB,UAAUkgB,SAASjuB,GAAGuF,QAAAA;AAC5EvF,SAAG8F,SAAOpa,KAAK4hB,cAActN,EAAAA;AAE7B,UAAIkN,SAAAA,CAAQxhB,KAAKimC,QAAQ3xB,GAAGvU,EAAAA;AAC5BC,WAAKimC,QAAQ3xB,GAAGvU,EAAIuU,IAAAA;AACpBtU,WAAKqmC,cAAc/xB,EACnB;AAAA,UAAA,CAAKtU,KAAKga;AACTha,aAAKyB,UAAU+f,SAAO,iBAAe,kBAAiB,CAAClN,GAAGvU,IAAGuU,EAChE,CAAA;AAAA,IAAA;AAECtU,SAAK47E,aAAa;AAClB,aAASj0E,IAAI,GAAGA,IAAI3H,KAAK06E,OAAO9yE,QAAQD,KAAK;AAC5C3H,WAAK47E,WAAW57E,KAAK06E,OAAO/yE,CAAGqF,EAAAA,IAAAA,IAAQ,CACvC;AAAA,IAAA;AAEDrN,IAAAA,WAAUmZ,cAAY,SAASC,OAAMC,KAAIlF,GACxC;AAAA,UAAImF,OAAO,CAAA;AACX,UAAA,OAAWF,SAAS,UAAS;AAC5BE,eAAOF;AACPA,gBAAQ;AAAA,MACR;AAED,UAAIK,KAAKpZ,KAAKuB,OAAO8X,kBAAgBrZ,KAAKuB,OAAO+X,aAAW;AAC5D,WAAKP;AAAOA,gBAAQtG,KAAK+G,MAAO7Z,WAAUqP,aAAAA,EAAgBkI,QAAUkC,IAAAA,CAAAA,IAAGA;AACvE,UAAIG,aAAa,IAAIlE,KAAK0D,KAC1B;AAAA,UAAA,CAAKC,KAAI;AACR,YAAIS,aAAazZ,KAAKuB,OAAOmY;AAC7B,YAAID,aAAaF,WAAWI,YAAW;AACtCJ,qBAAWK,SAASH,UAAAA;AACpBV,kBAAQQ,WAAWrC,QACnB;AAAA,QAAA;AACD8B,cAAMD,QAAMK;AAAAA,MACZ;AAGDH,WAAKM,aAAaN,KAAKM,cAAYA;AACnCN,WAAKY,WAAYZ,KAAKY,YAAU,IAAIxE,KAAK2D,GAAAA;AACzCC,WAAKtX,OAAOsX,KAAKtX,QAAM3B,KAAKqT,OAAOC,OAAOyC;AAC1CkD,WAAKlZ,KAAKC,KAAKoW,WAAWpW,KAAK+Z,IAC/Bd;AAAAA,WAAKwhE,QAAQz6E,KAAKk7E;AAClBl7E,WAAKsW,aAAW;AAEhBtW,WAAKga,WAAS;AACdha,WAAKgM,SAASiN,IACdjZ;AAAAA,WAAKyB,UAAU,kBAAiB,CAACzB,KAAKoW,UAAStC,CAC/C9T,CAAAA;AAAAA,WAAKga,WAAS;AAEdha,WAAKia,cAAY;AACjBja,WAAKoU,aAAaN,CAAAA;AAAAA,IACpB;AAECnU,IAAAA,WAAUk8E,sBAAsB,SAASroC,QAAAA;AACxC,UAAIxzC,KAAKuB,OAAOmlB,aAAAA,CAAc1mB,KAAKkR,aAAa;AAC/C,YAAIg3B,MAAM,CACV;AAAA,YAAIC,MAAM,CAAA;AACV,iBAAS0D,IAAI,GAAGA,IAAI2H,OAAO5rC,QAAQikC,KAAK;AACvC,cAAI2H,OAAO3H,CAAGzxB,EAAAA;AACb8tB,gBAAIx5B,KAAK8kC,OAAO3H,CAAAA,CAAAA;AAAAA;AAEhB1D,gBAAIz5B,KAAK8kC,OAAO3H,CACjB,CAAA;AAAA,QAAA;AACD7rC,aAAKkR,cAAc;AACnBlR,aAAKqoC,YAAYF,GAAAA;AACjBnoC,aAAKkR,cAAc;AACnBlR,aAAKqoC,YAAYH,GACjB;AAAA,MAAA;AAEAloC,aAAKqoC,YAAYmL;IACpB;AAEC7zC,IAAAA,WAAUkiB,mBAAmB,WAAA;AAC5B,UAAI7hB,KAAKgoC,aAAa;AACrBhoC,aAAKiiB,eAAe;AACpB;AAAA,MACA;AACDjiB,WAAKiiB,eAAe;AAEpBjiB,WAAKmmC;AAELnmC,WAAK47E,aAAa;AAClB,eAASj0E,KAAI,GAAGA,KAAI3H,KAAK06E,OAAO9yE,QAAQD,MAAK;AAC5C3H,aAAK47E,WAAW57E,KAAK06E,OAAO/yE,EAAGqF,EAAAA,IAAAA,IAAQ,CACvC;AAAA,MAAA;AAED,UAAI66B,MAAM7nC,KAAKunC,mBAAAA;AACf,eAAS5/B,KAAI,GAAGA,KAAIkgC,IAAIjgC,QAAQD,MAAK;AACpC,YAAG3H,KAAK47E,WAAW/zC,IAAIlgC,EAAG8yE,EAAAA,KAAAA;AACzBz6E,eAAK47E,WAAW/zC,IAAIlgC,EAAG8yE,EAAAA,KAAAA,EAAO/rE,KAAKm5B,IAAIlgC,EACxC,CAAA;AAAA,MAAA;AAED,UAAG3H,KAAKoV,SAAS,SAAS;AACzB,YAAIwrD,OAAO,CACX;AAAA,iBAASj5D,KAAI,GAAGA,KAAI3H,KAAK06E,OAAO9yE,QAAQD,MAAK;AAC5C,cAAI3H,KAAK06E,OAAO/yE,EAAG4zE,EAAAA;AAClB3a,mBAAOA,KAAKzzD,OAAOnN,KAAK47E,WAAW57E,KAAK06E,OAAO/yE,EAAGqF,EAAAA,IAAAA,CAAAA;AAAAA,QACnD;AACDhN,aAAK67E,oBAAoBjb,IAAAA;AAAAA,MACzB,OACI;AACJ,iBAASj5D,KAAI,GAAGA,KAAI3H,KAAK06E,OAAO9yE,QAAQD,MAAK;AAC5C,cAAI3H,KAAK06E,OAAO/yE,EAAG4zE,EAAAA,SAAS;AAC3B,gBAAIO,YAAY97E,KAAK47E,WAAW57E,KAAK06E,OAAO/yE,EAAGqF,EAAAA,IAAAA;AAC/ChN,iBAAK67E,oBAAoBC;UACzB;AAAA,QACD;AAAA,MACD;AAAA,IACH;AAECn8E,IAAAA,WAAUyuC,gBAAc,SAAS95B,IAAGpC,GAAEC,GAAEhJ,GAAEI,GAAEzC,OAAMuoC,UAASC,UAASpb,QACnE;AAAA,UAAIn0B,MAAKuU,GAAGvU;AAEZ,UAAGsvC,SAASt4B,QAAQ,aAAmB,KAAA;AACtCs4B,mBAAY1vC,WAAU0iB,UAAU,kBAAgB/N,GAAGmmE,KAAQ96E,IAAAA,WAAU0iB,UAAU,kBAAgB/N,GAAGmmE,KAAOnmE,EAAAA,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAAA,IAAI+6B;AACxI,UAAGC,SAASv4B,QAAQ,aAAA,KAAA;AACpBu4B,mBAAY3vC,WAAU0iB,UAAU,gBAAc/N,GAAGmmE,KAAQ96E,IAAAA,WAAU0iB,UAAU,gBAAc/N,GAAGmmE,KAAAA,EAAOnmE,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAAA,IAAIg7B;AAEnI,UAAIl2B,IAAEvZ,SAASC,cAAc,KAAA;AAC7B,UAAIyvC,MAAK;AACT,UAAIC,MAAO7vC,WAAU0iB,UAAU,iBAAe/N,GAAGmmE,SAAQ96E,WAAU0iB,UAAU,iBAAe/N,GAAGmmE,KAAOnmE,EAAAA,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAI3U,IAAAA,WAAU0iB,UAAUgjB,YAAY/wB,GAAGiF,YAAWjF,GAAGuF,UAASvF;AAC9L,UAAIk7B;AAAKD,QAAAA,MAAGA,MAAG,MAAIC;AAEnB,UAAIusC,YAAYp8E,WAAUgiD,mBAE1B;AAAA,UAAIq6B,iBAAiB7yE,IAAI;AACzB,UAAIsmC,WAAWssC,YAAYC,iBAAkB7yE,IAAE,GAC/C8yE,cAAcF,YAAYC,iBAAkB7yE,IAAE,GAC9C+yE,YAAYH,YAAYC,iBAAkB7yE,IAAE,IAC5CgzE,cAAcJ,YAAaC,iBAAiB,IAAM7yE,IAAE;AAEpD,UAAIizE,aAAaL,YAAaxyE,IAAIvJ,KAAKwI,GAAGiI,sBAAwBlH,IAAE,KAAK;AAEzE,UAAItC,OAAK,oBAAkBlH,MAAG,OAAKJ,WAAU4B,OAAO8iC,kBAAgB,OAAKtkC,MAAG,cAAYwvC,MAAG,qCAAmCp9B,IAAE,cAAYD,IAAE,eAAau9B,WAAS,gBAAclmC,IAAE,SAAOzC,SAAO,MAAI;AACtMG,cAAM,2CAAyCg1E,cAAY;AAC3Dh1E,cAAM,4BAA0BooC,WAAS;AACzCpoC,cAAM,yCAAuCi1E,YAAU,gBAAcE,aAAW,UAAQ9sC,WAAS;AACjGroC,cAAM,2CAAyCk1E,cAAY,SAAOjoD,SAAO,sBAAoB,MAAI;AAEjG9a,QAAElZ,YAAU+G;AACZmS,QAAEtS,MAAMynC,SAAS;AACjB,aAAOn1B,EAAE/Y;AAAAA,IACX;AAECV,IAAAA,WAAU0pC,mBAAiB,SAAS/0B,IAAAA;AACnC,UAAIgkB,SAAOt4B,KAAK2I,KAAK,gBAAgB,CAErC;AAAA,UAAIuJ,IAAElS,KAAK4b,OAAOtH,GAAGq0B,KACrB;AAAA,UAAIO,KAAGlpC,KAAK4b,OAAOtH,GAAGs0B,KAAAA;AACtB,UAAIM,MAAIh3B;AAAGg3B,aAAGlpC,KAAK4b,OAAOtH,GAAGs0B,QAAM,CAAA;AACnC,UAAIiB,KAAK7pC,KAAKwI,GAAGuH;AAEjB,UAAIoC,IAAEnS,KAAK4b,OAAOK,QAAQ3H,GAAGw0B,MAAS9oC,KAAAA,KAAK4b,OAAO7U,SAAQ/G,KAAKwI,GAAG2H,qBAAmB,IAAG,KAAGmE,GAAGk1B,UAAQK;AAEtG,UAAIzwB,IAAEvZ,SAASC,cAAc,KAC7B;AAAA,UAAIyvC,MAAKj7B,GAAG8F,SAAO,wBAAsB;AACzC,UAAIo1B,MAAO7vC,WAAU0iB,UAAU,iBAAe/N,GAAGmmE,KAAQ96E,IAAAA,WAAU0iB,UAAU,iBAAe/N,GAAGmmE,KAAAA,EAAOnmE,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAAA,IAAI3U,WAAU0iB,UAAUgjB,YAAY/wB,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAC9L;AAAA,UAAIk7B;AAAKD,QAAAA,MAAGA,MAAG,MAAIC;AAEnB,UAAIvoC,OAAK,oBAAkBqN,GAAGvU,KAAG,OAAKC,KAAKuB,OAAO8iC,kBAAgB,OAAK/vB,GAAGvU,KAAG,cAAYwvC,MAAG,qCAAmCp9B,IAAE,cAAYD,IAAE,gBAAcg3B,KAAGh3B,IAAE,MAAI,SAAOoC,GAAG+5B,eAAa,MAAI;AAEjM,UAAI/5B,GAAG8F;AACNnT,gBAAOtH,WAAU0iB,UAAU,oBAAkB/N,GAAGmmE,KAAAA,IAAQ96E,WAAU0iB,UAAU,oBAAkB/N,GAAGmmE,KAAOnmE,EAAAA,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAI3U,IAAAA,WAAU0iB,UAAUijB,eAAehxB,GAAGiF,YAAWjF,GAAGuF,UAASvF;AACpMrN,cAAStH,WAAU0iB,UAAU,oBAAkB/N,GAAGmmE,KAAAA,IAAQ96E,WAAU0iB,UAAU,oBAAkB/N,GAAGmmE,KAAAA,EAAOnmE,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAI3U,IAAAA,WAAU0iB,UAAUkjB,eAAejxB,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAAA,IAAM;AAC3MrN,cAAM;AAENmS,QAAElZ,YAAU+G;AAEZjH,WAAKymC,UAAU/3B,KAAK0K,EAAE/Y,UAAAA;AACtBi4B,aAAOl4B,YAAYgZ,EAAE/Y,UACvB;AAAA,IAAA;AAECV,IAAAA,WAAUgqC,eAAa,SAASr1B,IAAAA;AAC/B,UAAIw5B,OAAOnuC,WAAU6I,GAAG4H;AACxB,UAAGzQ,WAAU67E,SAASlnE,GAAGmmE,KAAOkB,EAAAA;AAC/B7tC,eAAO;AAER,UAAIx5B,GAAGq0B,QAAM;AAAG;AAChB,UAAIrQ,SAAO34B,WAAU8pC,cAAcn1B,GAAGq0B,KAAAA;AACtC,UAAKrQ,CAAAA;AAAQ;AACb,UAAImV,KAAKn5B,GAAGiF,WAAWI,SAAW,IAAA,KAAGrF,GAAGiF,WAAWyE;AACnD,UAAI4vB,KAAMt5B,GAAGuF,SAASF,SAAW,IAAA,KAAGrF,GAAGuF,SAASmE,gBAAgBre,WAAU4B,OAAOwc,YAAU;AAE3F,UAAIlL,MAAOJ,KAAK+G,OAAOi0B,KAAG,KAAG,MAAKztC,KAAKuB,OAAOmY,aAAW,KAAG,KAAG,OAAM1Z,KAAKuB,OAAOyZ,gBAAc,KAAG,KAAG,IAAShb,KAAAA,KAAKuB,OAAOyZ,eAAa,MAAI;AAC3I,UAAIjU,SAAS0L,KAAKC,IAAI/S,WAAU6I,GAAGsH,mBAAkB89B,KAAGH,MAAIztC,KAAKuB,OAAOyZ,eAAa,EAAA,IAAI;AAEzF,UAAIpU,QAAM6L,KAAKkI,OAAO2d,OAAOhvB,cAAYwkC,QAAMx5B,GAAG03B,MAClD;AAAA,UAAIj6B,OAAKuC,GAAGk1B,UAAQ5iC,QAAM;AAC1B,UAAK0N,CAAAA,GAAGi3B;AAAQ3kC,gBAAMA,SAAO0N,GAAG03B,SAAO13B,GAAGk1B;AAI1C,UAAIpwB,IAAEpZ,KAAKouC,cAAc95B,GAAGvU,IAAG+tC,OAAK/7B,MAAKc,KAAIjM,OAAMG,QAAOuN,GAAG+5B,aAAY1uC,WAAU0iB,UAAU+iB,aAAa9wB,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAI3U,GAAAA,WAAU0iB,UAAUqM,WAAWpa,GAAGiF,YAAWjF,GAAGuF,UAASvF,EAAAA,CAAAA;AAEjMtU,WAAKymC,UAAU/3B,KAAK0K,CACpBkf;AAAAA,aAAOl4B,YAAYgZ,CAAAA;AAEnBrH,aAAKA,OAAKiT,SAASsT,OAAOxxB,MAAMiL,MAAK,EAAI+7B,IAAAA;AAEzCj7B,aAAK7S,KAAKojB;AACVhK,QAAEtS,MAAMynC,SAASvuC,KAAK+6E,eAAezmE,GAAGmmE,KAExC;AAAA,UAAIz6E,KAAK4V,YAAUtB,GAAGvU,IAAG;AACxBqZ,UAAEtS,MAAMynC,SAASvpB,SAAS5L,EAAEtS,MAAMynC,UAAQ;AAC1C,YAAI8tC,aAAajjE,EAAEtS,MAAMynC;AACzB3nC,gBAAM6L,KAAKC,IAAI9L,QAAM,GAAEjH,WAAU6I,GAAG+H,YAAAA;AACpC,YAAI6I,IAAEvZ,SAASC,cAAc,KAAA;AAC7BsZ,UAAErU,aAAa,YAAWuP,GAAGvU,EAC7BqZ;AAAAA,UAAErU,aAAa/E,KAAKuB,OAAO8iC,iBAAgB/vB,GAAGvU,EAC9CC;AAAAA,aAAKuR,OAAO6H,GAAExS,OAAMG,SAAO,IAAGgL,MAAKc,MAAI,EACvCuG;AAAAA,UAAEhV,YAAU;AACZgV,UAAEtS,MAAMynC,SAAS8tC;AACjB,YAAIx3C,KAAGhlC,SAASC,cAAc;AAC9BE,aAAKuR,OAAOszB,IAAGj+B,QAAM,GAAEG,SAAO,EAC9B89B;AAAAA,WAAG/9B,MAAM6nC,WAAS;AAGlB9J,WAAG/9B,MAAMynC,SAAS8tC;AAClBjjE,UAAEhZ,YAAYykC;AACd7kC,aAAK2I,KAAK,cAAgB,EAAA,CAAA,EAAGvI,YAAYgZ,CAAAA;AACzCpZ,aAAKymC,UAAU/3B,KAAK0K,CAEpByrB;AAAAA,WAAG3kC,YAAU,sCAAoCoU,GAAG3S,OAAK;AAEzD3B,aAAK4uC,UAAQ/J,GAAGxkC;AAChBL,aAAK4uC,QAAQ5nC,iBAAiB,YAAY,SAAS8M,GAAAA;AAClD,cAAIA,EAAE+6B;AAAU,mBAAO;AACvB,cAAIlR,OAAM7pB,EAAEg7B;AACZ,cAAInR,QAAMh+B,WAAU+Q,KAAKC;AAAWhR,YAAAA,WAAUoV,SAAS,IACvD;AAAA,cAAI4oB,QAAMh+B,WAAU+Q,KAAKE;AAAajR,YAAAA,WAAUoV,SAAS,KAC7D;AAAA,QAAA,CAAA;AACG/U,aAAK4uC,QAAQ5nC,iBAAiB,eAAe,SAAS8M,GAAIA;AAAAA,YAAE0C,eAAa;AAAM,iBAAO;AAAA,QAAO,CAAA;AAC7FquB,WAAGxkC,WAAWsqB,MAEd3qB;AAAAA,aAAK2I,KAAK,cAAA,EAAgB,GAAG4S,aAAW;AACxCspB,WAAGxkC,WAAWuU,OACd;AAAA,MAAA;AACD,UAAI5U,KAAK6U,cAAYP,GAAGvU,IAAG;AAC1BqZ,UAAEtS,MAAMynC,SAASvpB,SAAS5L,EAAEtS,MAAMynC,MAAAA,IAAQ;AAC1C,YAAIQ,QAAM/uC,KAAKuB,OAAO,YAAWvB,KAAK4V,YAAUtB,GAAGvU,KAAI,SAAO,SAC9D;AAAA,YAAIivC,YAAU;AACd,iBAASrnC,KAAE,GAAGA,KAAEonC,MAAMnnC,QAAQD;AAC7BqnC,uBAAW,+BAA6BD,MAAMpnC,EAAG,IAAA,cAAY3H,KAAKqT,OAAOC,OAAOy7B,MAAMpnC,OAAI;AAC3F,YAAI/H,MAAMI,KAAKouC,cAAc95B,GAAGvU,IAAGgS,OAAK+7B,OAAK,GAAEj7B,KAAIi7B,MAAKiB,MAAMnnC,SAAO,KAAG,IAAG,IAAG,qCAAoConC,WAAU,IAAA;AAC5HpvC,YAAIkH,MAAMiL,OAAKA,OAAK+7B,OAAK;AACzBluC,YAAIkH,MAAMynC,SAASn1B,EAAEtS,MAAMynC;AAC3BvuC,aAAK2I,KAAK,cAAA,EAAgB,GAAGvI,YAAYR,GAAAA;AACzCI,aAAKymC,UAAU/3B,KAAK9O,GAAAA;AAAAA,MACpB;AAAA,IAEH;AAEID,IAAAA,WAAU28E,gBAAgB,SAASv8E,KAAI6F,QAAAA;AACnC,UAAI60E,SAAQ96E,WAAU67E,SAAS51E,OAAM60E,KACrC;AAAA,aAAQA,UAASA,OAAMc;AAAAA,IAC/B;AAAA,EACA,CAGA;AAAA;AChae,SAAQ74E,MAAC/C,YAExBA;AAAAA,EAAAA,WAAU4B,OAAOg7E,cAAc;AAC/B58E,EAAAA,WAAU4B,OAAOi7E,YAAc;AAC/B78E,EAAAA,WAAU4B,OAAOk7E,aAAc;AAC/B98E,EAAAA,WAAU4B,OAAOm7E,eAAe;AAChC/8E,EAAAA,WAAU4B,OAAOo7E,WAAW;AAC5Bh9E,EAAAA,WAAU4B,OAAOq7E,2BAA2B;AAC5Cj9E,EAAAA,WAAU4B,OAAOs7E,6BAA6B;AAC9Cl9E,EAAAA,WAAUm9E,oBAAoB,WAC7B;AAAA,QAAI9c,SAAS;AACb,QAAI+c,iBAAiB;AACrB,QAAIC,wBAAwB;AAC5B,QAAIC,cAAc,SAASzzD,SAASyC,MAAMixD,OACzC;AAAA,UAAIjxD,gBAAgB5W,QAAQ6nE,iBAAiB7nE,MAAM;AAClDmU,gBAAQjQ,aAAa0S;AACrBzC,gBAAQ3P,WAAWqjE;AAAAA,MACtB,OAAS;AACN1zD,gBAAQyC,OAAOA;AACfzC,gBAAQ0zD,QAAQA;AAAAA,MAChB;AACD,aAAO1zD;AAAAA,IACT;AACC,QAAI2zD,wBAAwB,SAASlxD,MAAMixD,OAAO7zD;AACjD,UAAIG,UAAAA,OAAkByC,QAAQ,WAAYA,OAAO,EAAEA,KAAMA;AACzDzC,cAAQ9nB,OAAOq7E;AACfvzD,cAAQ7iB,MAAM;AACd,UAAIu2E,OAAO;AACV,YAAI7zD;AACHG,kBAAQH,WAAWA;AACpBG,kBAAUyzD,YAAYzzD,SAASyC,MAAMixD;MACrC;AACD,aAAO1zD;AAAAA,IACT;AACC7pB,IAAAA,WAAUy9E,YAAY,SAASnxD,MAAMixD,OAAO7zD,UAC3C;AAAA,UAAIG,UAAU2zD,sBAAsBlxD,MAAMixD,OAAO7zD,QACjD;AAAA,aAAO1pB,WAAU2D,kBAAkBkmB,OAAAA;AAAAA,IACrC;AACC7pB,IAAAA,WAAU09E,cAAc,SAASpxD,MAAMixD,OAAO7zD;AAC7C6zD,cAAQA,SAAS;AACjB,UAAI1zD,UAAU2zD,sBAAsBlxD,MAAMixD,OAAO7zD,QACjD;AAAA,aAAO1pB,WAAU29E,qBAAqB9zD,OACxC;AAAA,IAAA;AACC7pB,IAAAA,WAAUgE,YAAY,sBAAqB,SAAS45E,IAAGC,IAAGC,IAAGC,IAE5D;AAAA,eAASC,UAAUv4E,MAAM3F;AACxB,YAAI88E,cAAc58E,WAAU4B,OAAOg7E,aAClCC,YAAY78E,WAAU4B,OAAOi7E,WAC7BoB,WAAYj+E,WAAUyF,KAAKT,IAAIS,MAAK,GAAE3F,IAEvC;AAAA,eAAQ2F,KAAK8R,QAAYslE,IAAAA,UAAUtlE,QAAa0mE,KAAAA,YAAYrB,YAAYrlE,QAAAA;AAAAA,MACxE;AAED,UAAIvX,WAAU4B,OAAOk7E,YAAW;AAC/BiB,aAAKA,MAAIF;AAAIC,aAAKA,MAAIF;AACtB,YAAII,UAAUD,IAAID,EAAAA,KAAAA,EAASD,GAAGtmE,QAAAA,KAAawmE,GAAGxmE,QAAAA,IAAW;AACxDnN,qBAAW,WAAA;AACV,gBAAGpK,WAAUqK,YAAW;AACvB,qBAAO;AAAA,YACP;AACD,gBAAI6zE,YAAaF,CAAAA,UAAUH,IAAIC,EAAAA,IAAMD,KAAK79E,WAAU4B,OAAOg7E;AAE3D58E,YAAAA,WAAUyG,eAAgBu3E,CAAAA,UAAUE,WAAWJ,EAAAA,IAAMI,YAAY,MAAMJ;UACvE,GAAC,CAAA;AACF,iBAAO;AAAA,QACP;AAAA,MACD;AACD,aAAO;AAAA,IACT;AACC99E,IAAAA,WAAUm+E,wBAAwB,SAASxpE,IAAIypE,eAAeC,YAAAA;AAC7DD,sBAAgBA,iBAAiBf;AAEjC,UAAIz+D,MAAM;AACV,UAAI0/D,kBAAkB,IAAI5oE,KAAKf,GAAGiF,WAAWrC,QAC7C,CAAA;AAAA,UAAIgnE,gBAAgBv+E,WAAUyF,KAAKT,IAAIs5E,iBAAiB,GAAG;AAC3D,UAAIE,YAAYx+E,WAAUy+E;AAC1B,aAAOH,kBAAkB3pE,GAAGuF,UAAUokE,kBAAkBt+E,WAAUyF,KAAK4Z,UAAUk/D,aAAAA,GAAgBA,gBAAgBv+E,WAAUyF,KAAKT,IAAIs5E,iBAAiB,GAAG,KAAS,GAAA;AAChK,YAAII,YAAAA,CAAa1+E,WAAUyF,KAAK4Z,UAAW,IAAI3J,KAAK4oE,eACpD,CAAA;AAAA,YAAIK,YAAYL,gBAAgB9/C,OAEhC;AAAA,YAAI++C,QAAQqB,SAASjqE,IAAI6pE,WAAWG,WAAWD,WAAWN,aAAAA;AAC1D,YAAIb,OAAM;AACT,mBAASv1E,IAAI,GAAGA,IAAIu1E,MAAMt1E,QAAQD,KAAG,GAAG;AAGvC,gBAAIo2D,aAAap+D,WAAU6+E,kBAAkBP,eAC7C;AAAA,gBAAIQ,WAAanqE,GAAGuF,WAASqkE,iBAAiB5pE,GAAGuF,SAASuG,QAAAA,KAAa69D,gBAAgB79D,QAAAA,IAAc,OAAOzgB,WAAU6+E,kBAAkBlqE,GAAGuF,QAAAA;AAE3I,gBAAI6kE,cAAcxB,MAAMv1E,CAAAA;AACxB,gBAAIg3E,YAAYzB,MAAMv1E,IAAE,CAAA;AACxB,gBAAI+2E,cAAYD,YAAYE,YAAU5gB,YAAY;AACjD,kBAAUigB,OAAAA,cAAc,YAAW;AAGlCz/D,sBAAMy/D,WAAW1pE,IAAIypD,YAAY0gB,UAAUC,aAAaC,SAAAA;AAAAA,cAC/D,OAAW;AACJpgE,sBAAM;AAAA,cACN;AACD,kBAAIA,CAAAA;AACH;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AACD,aAAA,CAAQA;AAAAA,IACV;AACC,QAAIqgE,UAAUj/E,WAAUk/E,sBAAsB,SAASj5E,QACtD;AAAA,UAAA,CAAIA;AACH,eAAO;AACR,UAAKjG,CAAAA,WAAU4B,OAAOm7E;AACrB,eAAO;AACR,UAAIp9C,IAAI3/B;AACR,UAAIqE,IAAIs7B,EAAE/9B;AACV,UAAIsmC,MAAM;AACV,UAAIjiC,OAAM6/C,UAAU;AACnB,YAAI2Y,QAAQz+D,WAAUghE,YAAY/6D;AAClC,iBAAQ+B,IAAE,GAAGA,IAAIy2D,MAAMx2D,QAAQD,KAAI;AAClC,cAAI2M,KAAK3U,WAAUssC,YAAYrmC,MAAAA;AAC/BjG,UAAAA,WAAU8hB,WAAWnN,IAAI8pD,MAAMz2D,CAAAA,CAAAA;AAC/BkgC,cAAIn5B,KAAK4F,EACT;AAAA,QAAA;AAAA,MAEJ,OAAS;AACNuzB,cAAM,CAACjiC,MAAAA;AAAAA,MACP;AAED,UAAIk5E,eAAe;AACnB,eAASxmC,IAAE,GAAGA,IAAEzQ,IAAIjgC,QAAQ0wC,KAAK;AAChC,YAAI/5B,MAAM;AACV,YAAIjK,KAAKuzB,IAAIyQ,CAEbhkC;AAAAA,WAAG8F,SAASza,WAAUiiB,cAActN,EAEpCiK;AAAAA,cAAOva,EAAEu4E,eAAev4E,EAAEw4E,YAAcloE,GAAGiF,WAAWrC,aAAalT,EAAEu4E,YAAYrlE,QAAa5C,KAAAA,GAAGuF,SAAS3C,QAAAA,KAAalT,EAAEw4E,UAAUtlE,YAAa;AAChJ,YAAIqH,KAAI;AACPA,gBAAO5e,CAAAA,WAAUm+E,sBAAsBxpE,IAAIyoE,gBAAgB,SAASn3E,QAAOm4D,YAAY0gB,UAAUC,aAAaC,WAE7G;AAAA,gBAAII,QAAQ;AACZ,gBAAIhhB,cAAY4gB,aAAa5gB,cAAc2gB,aAAY;AACtD,kBAAIC,aAAa,KAAG,MAAMF,YAAYE,WAAU;AAC/CI,wBAAQ;AAAA,cACR;AAED,kBAAGn5E,OAAMwU,UAAUklB,EAAElpB,YAAYkpB,EAAEhpB,cAAc,YAAW;AAC3D1Q,gBAAAA,OAAM2T,WAAWK,SAAS,CAC1BhU;AAAAA,gBAAAA,OAAM2T,WAAWkmB,WAAWk/C,SACnC;AAAA,cAAA,OAAa;AACNI,wBAAQ;AAAA,cACR;AAAA,YACD;AACD,gBAAKN,YAAYC,eAAeD,YAAYE,aAAe5gB,aAAa2gB,eAAeD,WAAWE,WAAW;AAC5G,kBAAG/4E,OAAMwU,UAAUklB,EAAElpB,YAAYkpB,EAAEhpB,cAAc,YAAW;AAC3D1Q,gBAAAA,OAAMiU,SAASD,SAAS,CACxBhU;AAAAA,gBAAAA,OAAMiU,SAAS4lB,WAAWi/C,WACjC;AAAA,cAAA,OAAa;AACNK,wBAAQ;AAAA,cACR;AAAA,YACD;AACD,mBAAOA;AAAAA,UACZ,CACI;AAAA,QAAA;AACD,YAAKxgE,CAAAA,KAAK;AACTA,gBAAO+gB,EAAElyB,WAAW,kBAAA,IAAuBkyB,EAAE79B,UAAU,oBAAmB,CAAC6S,GAAGvU,IAAIuU,EAAAA,CAAAA,IAAOiK;AAAAA,QACzF;AACDugE,uBAAeA,gBAAgBvgE;AAAAA,MAC/B;AACD,UAAIugE,CAAAA,cAAa;AAChBx/C,UAAElpB,WAAW;AACbkpB,UAAEhpB,aAAa;AAAA,MACf;AACD,aAAOwoE;AAAAA,IAGT;AACCn/E,IAAAA,WAAUq/E,qBAAqB,SAASb,WAAWh1D,UAAUm1D,WAAWD,WAAWN,eAClF;AAAA,UAAIb,QAAO,CAAA;AACX,UAAIiB,aAAaA,UAAUh1D,QAAW,GAAA;AACrC,YAAI81D,iBAAiBd,UAAUh1D,QAAAA;AAC/B,YAAI+1D,yBAAyBl/E,KAAKm/E,4BAA4Bb,WAAWD,WAAWY,gBAAgBlB,aAAAA;AACpG,iBAASp2E,IAAE,GAAGA,IAAEu3E,uBAAuBt3E,QAAQD,KAAK;AACnDu1E,kBAAQl9E,KAAKo/E,oBAAoBlC,OAAOgC,uBAAuBv3E,CAAGu1E,EAAAA,KAAAA;AAAAA,QAClE;AAAA,MACD;AACD,aAAOA;AAAAA,IACT;AACCv9E,IAAAA,WAAUw/E,8BAA8B,SAASb,WAAWD,WAAWnB,OAAOa,eAC7E;AAAA,UAAIsB;AACJ,UAAG1/E,WAAU4B,OAAOs7E,4BAA2B;AAC9CwC,sBAAenC,MAAMmB,SAAAA,KAAcnB,MAAMmB,SAAWN,EAAAA,aAAAA,IAAkBb,MAAMmB,SAAAA,EAAWN,aACtFb,IAAAA,MAAMoB,SAAcpB,KAAAA,MAAMoB,WAAWP,aAAkBb,IAAAA,MAAMoB,SAAWP,EAAAA,aAAAA,IAAiB,CAC7F;AAAA,MAAA,OAAO;AACJsB,sBAAc;AACd,YAAGnC,MAAMmB,SAAcnB,KAAAA,MAAMmB,SAAWN,EAAAA,aAAAA,GAAe;AACtDsB,wBAAcA,YAAYlyE,OAAO+vE,MAAMmB,SAAAA,EAAWN,aAClD,CAAA;AAAA,QAAA;AAED,YAAIb,MAAMoB,cAAcpB,MAAMoB,SAAAA,EAAWP,aAAgB,GAAA;AACxDsB,wBAAcA,YAAYlyE,OAAO+vE,MAAMoB,WAAWP,aAClD,CAAA;AAAA,QAAA;AAAA,MACD;AAED,aAAOsB;AAAAA,IACT;AACC,aAASd,SAASjqE,IAAI6pE,WAAWG,WAAWD,WAAWN,eAAAA;AACtD,UAAIz+C,IAAI3/B;AAER,UAAIu9E,QAAQ,CACZ;AAAA,UAAI9zC,aAAa,EAChBz6B,QAAS,UACTF,QAAS,aAAA;AAEV,eAAQrG,aAAaghC,YAAW;AAC/B,YAAIjgB,WAAWigB,WAAWhhC,SAAAA;AAC1B,YAAGk3B,EAAEl3B,SAAAA,GAAW;AACf,mBAAQvF,QAAQy8B,EAAEl3B,SAAAA,GAAW;AAC5B,gBAAIk3E,cAAchgD,EAAEl3B,SAAAA,EAAWvF,IAC/B;AAAA,gBAAI08E,SAASD,YAAYn2D,QACzB;AAAA,gBAAA,CAAI7U,GAAGirE,MAAAA;AAAS;AAChBrC,oBAAS59C,EAAE8/C,oBAAoBlC,OAC9Bv9E,WAAUq/E,mBAAmBb,UAAUt7E,IAAAA,GAAOyR,GAAGirE,MAAAA,GAASjB,WAAWD,WAAWN;UACjF;AAAA,QACD;AAAA,MACD;AAEDb,cAAQ59C,EAAE8/C,oBAAoBlC,OAAOv9E,WAAUq/E,mBAAmBb,WAAW,UAAUG,WAAWD,WAAWN,aAC7G,CAAA;AAAA,aAAOb;AAAAA,IACP;AAEDv9E,IAAAA,WAAUgE,YAAY,eAAe,SAASgd,WAAAA;AAC7C,aAASA,EAAAA,aAAao8D;AAAAA,IACxB,CAAA;AACCp9E,IAAAA,WAAUgE,YAAY,gBAAe,SAAS5D,KAAAA;AAC7C,UAAKA,CAAAA;AAAI,eAAO;AAChB,aAAO6+E,QAAQj/E,WAAUwV,SAASpV,GAAAA,CAAAA;AAAAA,IACpC,CACCJ;AAAAA,IAAAA,WAAUgE,YAAY,WAAW,SAAUw8D,UAAUub,qBAAAA;AACpD,aAAOkD,QAAQj/E,WAAUwV,SAASgrD,QACpC,CAAA;AAAA,IAAA,CAAA;AACCxgE,IAAAA,WAAUgE,YAAY,oBAAmB,SAAS5D,KAEjD;AAAA,UAAIuU,KAAK3U,WAAUwV,SAASpV,GAC5BigE;AAAAA,eAAS,CAAC1rD,GAAGiF,YAAYjF,GAAGuF,QAC5B;AAAA,aAAO+kE,QAAQtqE,EACjB;AAAA,IAAA,CAAA;AACC3U,IAAAA,WAAUgE,YAAY,eAAe,SAAS5D,KAAI+5B,MAAM0lD;AAGvD,UAAK1lD,EAAAA,KAAKvgB,cAAcugB,KAAKjgB,WAAU;AACtC,YAAIvF,KAAK3U,WAAUwV,SAASpV,GAC5B+5B;AAAAA,aAAKvgB,aAAa,IAAIlE,KAAKf,GAAGiF;AAC9BugB,aAAKjgB,WAAW,IAAIxE,KAAKf,GAAGuF,QAAAA;AAAAA,MAC5B;AAED,UAAGigB,KAAK2rB,UAAS;AAGhB,YAAIg6B,YAAY9/E,WAAUmhB,YAAYgZ,IACtCn6B;AAAAA,QAAAA,WAAU4gE,iBAAiBkf,SAC3B;AAAA,eAAOb,QAAQa,SAAAA;AAAAA,MACf;AACD,aAAOb,QAAQ9kD,IAAAA;AAAAA,IACjB,CACCn6B;AAAAA,IAAAA,WAAUgE,YAAY,gBAAe,SAAS5D,KAAAA;AAC7C,UAAKA,CAAAA;AAAI,eAAO;AAChB,UAAIuU,KAAK3U,WAAUwV,SAASpV,GAAAA;AAC5B,UAAK6+E,CAAAA,QAAQtqE,OAAO3U,WAAU4B,OAAOg7E,eAAe58E,WAAU4B,OAAOi7E,WAAW;AAE/E,YAAIloE,GAAGiF,aAAa5Z,WAAU4B,OAAOg7E,aAAa;AACjDjoE,aAAGiF,aAAa,IAAIlE,KAAK1V,WAAU4B,OAAOg7E,WAC1C;AAAA,QAAA;AACD,YAAIjoE,GAAGiF,WAAWrC,QAAAA,KAAavX,WAAU4B,OAAOi7E,UAAUtlE,QAAW,GAAA;AACpE5C,aAAGiF,aAAavZ,KAAKoF,KAAKT,IAAIhF,WAAU4B,OAAOi7E,WAAY,IAAG,KAC9D;AAAA,QAAA;AACD,YAAIloE,GAAGuF,WAAWla,WAAU4B,OAAOg7E,aAAa;AAC/CjoE,aAAGuF,WAAW,IAAIxE,KAAK1V,WAAU4B,OAAOg7E,WACxC;AAAA,QAAA;AACD,YAAIjoE,GAAGuF,SAAS3C,QAAAA,KAAavX,WAAU4B,OAAOi7E,UAAUtlE,QAAW,GAAA;AAClE5C,aAAGuF,WAAW7Z,KAAKoF,KAAKT,IAAIhF,WAAU4B,OAAOi7E,WAAY,IAAG,KAC5D;AAAA,QAAA;AACD,YAAIloE,GAAGiF,WAAWrC,QAAa5C,KAAAA,GAAGuF,SAAS3C,QAAAA,GAAW;AACrD5C,aAAGuF,WAAW7Z,KAAKoF,KAAKT,IAAI2P,GAAGiF,YAAavZ,KAAKuB,OAAO8X,kBAAgBrZ,KAAKuB,OAAO+X,WAAY,QAAA;AAAA,QAChG;AACDhF,WAAG8F,SAAOpa,KAAK4hB,cAActN,EAAAA;AAAAA,MAC7B;AACD,aAAO;AAAA,IACT,CACC3U;AAAAA,IAAAA,WAAUgE,YAAY,kBAAiB,SAAS5D,KAAAA;AAC/C,WAAKA;AAAI,eAAO;AAChB,UAAIuU,KAAK3U,WAAUwV,SAASpV,GAAAA;AAC5B,UAAK6+E,CAAAA,QAAQtqE,EAAI,GAAA;AAChB,YAAK0rD,CAAAA;AAAQ,iBAAO;AACpB1rD,WAAGiF,aAAaymD,OAAO,CACvB1rD;AAAAA,WAAGuF,WAAWmmD,OAAO,CACrB1rD;AAAAA,WAAG8F,SAAOpa,KAAK4hB,cAActN,EAC7B;AAAA,MAAA;AACD,aAAO;AAAA,IACT,CACC3U;AAAAA,IAAAA,WAAUgE,YAAY,wBAAuB,SAAS2Q,IAAIorE,eAAel+D,QACxE;AAAA,aAAOo9D,QAAQtqE,EAAAA;AAAAA,IACjB;AACC3U,IAAAA,WAAUgE,YAAY,wBAAwB,SAAS2Q,IACtD;AAAA,UAAIiF,aAAa5Z,WAAU+W,cAAcpC,EAAIlP,EAAAA;AAC7C,UAAIQ,SAAQ,EACXwU,QAAQ,MACRb,YACAM,UAAUla,WAAUyF,KAAKT,IAAI4U,YAAY5Z,WAAU4B,OAAO+X,WAAW;AAEtE,aAAOslE,QAAQh5E,MACjB;AAAA,IAAA,CAAA;AAECjG,IAAAA,WAAUgE,YAAY,gBAAgB,WAAA;AACrChE,MAAAA,WAAUggF,UAAAA;AAAAA,IACZ,CAEChgF;AAAAA,IAAAA,WAAUgE,YAAY,0BAA0B,WAC/C1C;AAAAA,aAAO8I,WAAW,WACjB;AAAA,YAAGpK,WAAUqK,YAAW;AACvB,iBAAO;AAAA,QACP;AACDrK,QAAAA,WAAUggF,UACV;AAAA,MAAA,GAAE,CACH;AAAA,aAAO;AAAA,IACT,CAAA;AAEChgF,IAAAA,WAAUgE,YAAY,oBAAoB,WACzChE;AAAAA,MAAAA,WAAUigF,kBAAkB3+E,OAAOkrD,YAAY,WAAA;AAC9C,YAAIxsD,CAAAA,WAAU4sB,gBACb;AAAA;AACD5sB,QAAAA,WAAUggF,UAAAA;AAAAA,MACV,GAAE,GAAA;AAAA,IACL,CACChgF;AAAAA,IAAAA,WAAUggF,YAAY,SAASnyB,MAAAA;AAE9B,UAAIqyB,eAAe;AACnB,UAAA,CAAK7/E,KAAK2I,KAAKk3E,eAAe;AAC7B7/E,aAAK2I,KAAKk3E,YAAAA,IAAgB,CAC1B;AAAA,MAAA;AACD,UAAIltD,MAAMhzB,WAAUqP,aACpB;AAAA,UAAIkpC,MAAMl4C,KAAKuB;AACf5B,MAAAA,WAAUmgF,iBACV;AAAA,UAAA,CAAKtyB,QAAQtV,IAAIykC,YAAYhqD,MAAM3yB,KAAK0V,aAAaid,MAAM3yB,KAAKwV,aAAamd,IAAIhZ,SAAAA,KAAcu+B,IAAIx+B,cAAciZ,IAAIhZ,SAAAA,IAAWu+B,IAAIn6B,WAAW;AAC9I,YAAIugE,YAAYt+E,KAAKysC,kBAAkB9Z,GACvC3yB;AAAAA,aAAK2I,KAAKk3E,YAAAA,IAAgBlgF,WAAUogF,iBAAiBzB,WAAW3rD,GAChE;AAAA,MAAA;AAAA,IACH;AACChzB,IAAAA,WAAUogF,mBAAmB,SAASzB,WAAW3rD,KAChD;AAAA,UAAIktD,eAAe;AACnB,UAAIG,aAAYrgF,WAAU6+E,kBAAkB7rD;AAC5C,UAAInJ,UAAU,EACb0zD,OAAO,CAAC8C,YAAYA,aAAW,CAAA,GAC/Br5E,KAAKk5E,cACLn+E,MAAMm+E,aAEP;AAAA,UAAA,CAAK7/E,KAAKkR,aAAa;AACtB,YAAIlR,KAAK2O,UAAU3O,KAAK2O,OAAO3O,KAAKoV,KAAQ,GAAA;AAC3C,cAAI6qE,aACHC;AAED,cAAIr9E,OAAO7C,KAAK2O,OAAO3O,KAAKoV,KAC5B;AAAA,cAAI+qE,UAAUt9E,KAAKyvC,QAAQzvC,KAAK2mB,QAAQ5hB;AACxC,cAAI/E,KAAKopB,OAAO,GAAG;AAClB,gBAAGppB,KAAKyvC,QAAQzvC,KAAK2mB,QAAQ5hB,QAAO;AACnC02E,2BAAcz7E,KAAKkD,WAAUu4E,aAAaz7E,KAAK2mB,QAAQ5hB,SAAU/E,KAAKyvC;AAAAA,YACtE;AACD2tC,0BAAc3B;AACd4B,wBAAY5B,YAAY6B;AAAAA,UACxB,OACI;AACJF,0BAAc;AACdC,wBAAYD,cAAcE;AAAAA,UAC1B;AAED,cAAIC,SAAS,CAEb;AAAA,mBAASz4E,IAAIs4E,aAAat4E,IAAIu4E,WAAWv4E,KAAK;AAC7C,gBAAI04E,QAAQ14E;AACZ6hB,oBAAQyC,OAAOo0D;AACf,gBAAIC,QAAQ3gF,WAAU4gF,wBAAwB/2D,SAAS,MAAM62D,KAAAA,EAAO,CACpED;AAAAA,mBAAO1xE,KAAK4xE,KAAAA;AAAAA,UACZ;AACD,iBAAOF;AAAAA,QACX,OAAU;AACN52D,kBAAQyC,OAAOqyD;AACf,iBAAO3+E,WAAU4gF,wBAAwB/2D,SAAS,MAAM80D,SAAAA;AAAAA,QACxD;AAAA,MACJ,OAAS;AACN,YAAIt+E,KAAKoV,SAAS,SAAS;AAC1BoU,kBAAQyC,OAAQtsB,CAAAA,WAAUyF,KAAK4Z,UAAU2T,GACzC;AAAA,iBAAOhzB,WAAU4gF,wBAAwB/2D,SAAS,MAAM,IAAA;AAAA,QACxD;AAAA,MACD;AAAA,IACH;AACC7pB,IAAAA,WAAUmgF,mBAAmB,WAC5B;AAAA,UAAID,eAAe;AACnB,UAAI/sE,MAAM9S,KAAK2I,KAAKk3E;AACpB,eAASl4E,IAAE,GAAGA,IAAEmL,IAAIlL,QAAQD,KAAK;AAChC,YAAI1E,MAAM6P,IAAInL,CAAAA;AACd,YAAI2wB,SAASr1B,IAAIgG;AACjB,YAAIqvB,QAAQ;AACXA,iBAAOptB,YAAYjI,GAAAA;AAAAA,QACnB;AAAA,MACD;AACDjD,WAAK2I,KAAKk3E,YAAAA,IAAgB,CAC5B;AAAA,IAAA;AA4CClgF,IAAAA,WAAUy+E,oBAAoB,EAAEl9E,QAAQ,CAAE,EAE1CvB;AAAAA,IAAAA,WAAU6+E,oBAAoB,SAASp5E,MACtC;AAAA,aAAOA,KAAKuU,SAAAA,IAAW,KAAKvU,KAAK4Y,WAAAA;AAAAA,IACnC;AACCre,IAAAA,WAAU6gF,4BAA4B,SAASj/E,QAC9C;AAAA,UAAIk/E,YAAY,CAAA;AAChB,UAAIC,eAAe,CAEnB;AAAA,UAAIn/E,OAAO0qB,QAAQ;AAClB1qB,eAAO0qB,OAAO,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAE5B;AAAA,UAAI1qB,OAAO0qB,gBAAgBxkB,OAAO;AACjC,YAAIk5E,SAASp/E,OAAO0qB,KAAKiB,MAAAA;AACzB,iBAASvlB,IAAE,GAAGA,IAAEg5E,OAAO/4E,QAAQD,KAAK;AACnC,cAAIi5E,gBAAgBjhF,WAAUmhB,YAAYvf,MAAAA;AAC1Cq/E,wBAAc30D,OAAO00D,OAAOh5E,CAC5B84E;AAAAA,oBAAU/xE,KAAK5C,MAAM20E,WAAW9gF,WAAU6gF,0BAA0BI,aACpE,CAAA;AAAA,QAAA;AACD,eAAOH;AAAAA,MACP;AAED,UAAA,CAAMl/E,UACFA,EAAAA,OAAOgY,cAAchY,OAAOsY,YAAYtY,OAAOsY,WAAWtY,OAAOgY,cAAgBhY,OAAO0qB,SAASrZ,UAAarR,OAAO27E,UAAAA,CAAY37E,OAAOG;AAC3I,eAAO++E;AAER,UAAI3lE,MAAM;AACV,UAAIpI,MAAM,KAAG;AACb,UAAInR,OAAO27E,SAAS;AACnB37E,eAAO27E,QAAQ,CAACpiE,KAAKpI,GAAAA;AACtB,UAAInR,OAAO27E,SAAS37E,OAAOs/E,cAAc;AACxCt/E,eAAO27E,QAAQv9E,WAAUmhF,YAAYv/E,OAAO27E,KAC5C;AAAA,MAAA;AAED37E,aAAOxB,KAAKJ,WAAUoa,IAAAA;AACtBxY,aAAOoF,MAAMpF,OAAOoF,OAAK;AACzBpF,aAAOG,OAAOH,OAAOG,QAAMs7E;AAE3B,UAAI3zD,WAAW9nB,OAAO8nB;AACtB,UAAIA,UAAU;AACb,iBAAS03D,YAAY13D,UAAU;AAC9B,cAAIA,SAASiB,eAAey2D,QAAW,GAAA;AACtC,gBAAIn3B,MAAMvgC,SAAS03D,QAAAA;AACnB,gBAAMn3B,EAAAA,eAAeniD;AACpBmiD,oBAAM,CAACA,GAAAA;AACR,qBAASjiD,IAAE,GAAGA,IAAEiiD,IAAIhiD,QAAQD,KAAK;AAChC,kBAAIq5E,WAAWrhF,WAAU8hB,WAAW,CAAE,GAAElgB,MAAAA;AACxCy/E,uBAAS33D,WAAW;AACpB23D,uBAAS33D,SAAS03D,QAAAA,IAAYn3B,IAAIjiD,CAAAA;AAClC+4E,2BAAahyE,KAAKsyE,QAClB;AAAA,YAAA;AAAA,UACD;AAAA,QACD;AAAA,MACJ,OAAS;AACNN,qBAAahyE,KAAKnN,MAClB;AAAA,MAAA;AAED,eAASsqC,IAAE,GAAGA,IAAE60C,aAAa94E,QAAQikC,KAAK;AACzC,YAAIo1C,WAAWP,aAAa70C,CAE5B;AAAA,YAAItyB,aAAa0nE,SAAS1nE;AAC1B,YAAIM,WAAWonE,SAASpnE;AAExB,YAAIN,cAAcM,UAAU;AAC3B,cAAIqnE,OAAOvhF,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAKkE,UAC7C,CAAA;AAAA,cAAI4nE,OAAMxhF,WAAUyF,KAAKT,IAAIu8E,MAAM,GAAG,KAAA;AAEtC,iBAAOA,OAAOrnE,UAAU;AACvB,gBAAImnE,WAAWrhF,WAAU8hB,WAAW,CAAE,GAAEw/D,QAAAA;AAAAA,mBACjCD,SAASznE;AAAAA,mBACTynE,SAASnnE;AAChBmnE,qBAAS/0D,OAAOi1D,KAAKhqE,QACrB;AAAA,gBAAI8oE,aAAczmE,aAAa2nE,OAAQvhF,WAAU6+E,kBAAkBjlE,UAAAA,IAAcuB;AACjF,gBAAIsmE,WAAavnE,WAAWsnE,QAAQtnE,SAASuG,QAAAA,KAAa8gE,KAAK9gE,QAAAA,IAAc1N,MAAM/S,WAAU6+E,kBAAkB3kE,QAAAA;AAC/GmnE,qBAAS9D,QAAQ,CAAC8C,YAAYoB,QAAAA;AAC9BX,sBAAU/xE,KAAKsyE,QAEfE;AAAAA,mBAAOC;AACPA,mBAAOxhF,WAAUyF,KAAKT,IAAIw8E,MAAM,GAAG,KACnC;AAAA,UAAA;AAAA,QACL,OAAU;AACN,cAAIF,SAASh1D,gBAAgB5W;AAC5B4rE,qBAASh1D,OAAQtsB,WAAUyF,KAAK4Z,UAAUiiE,SAASh1D,IAAAA,EAAO/U,QAC3D+pE;AAAAA,mBAAS/D,QAAQ37E,OAAO27E,MAAMhwD,MAC9BuzD;AAAAA,oBAAU/xE,KAAKuyE,QAAAA;AAAAA,QACf;AAAA,MACD;AACD,aAAOR;AAAAA,IACT;AACC9gF,IAAAA,WAAU0hF,sBAAsB,SAAS31E,OAAOqN,OAAOC,KAAAA;AACtD,UAAIolD,QAAQ,CACZrlD;AAAAA,cAAQpZ,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAK0D,SAAOpZ,WAAU6V,SAC3DwD,CAAAA;AAAAA,YAAM,IAAI3D,KAAK2D,OAAKrZ,WAAU+V,SAC9B;AAAA,UAAI4rE,YAAYvoE,MAAMolB,OAAAA;AACtB,UAAIojD,QAAS71E,QAAM41E,aAAa,IAAM51E,QAAM41E,YAAc,IAAEvoE,MAAMolB,OAASzyB,IAAAA;AAC3E,UAAI81E,SAAS7hF,WAAUyF,KAAKT,IAAIoU,OAAOwoE,OAAO,KAC9C;AAAA,aAAOC,SAASxoE,KAAKwoE,SAAS7hF,WAAUyF,KAAKT,IAAI68E,QAAQ,GAAG,MAAA,GAAS;AACpEpjB,cAAM1vD,KAAK8yE,MAAAA;AAAAA,MACX;AACD,aAAOpjB;AAAAA,IACT;AACCz+D,IAAAA,WAAU8hF,6BAA6B,SAASlgF,QAC/C;AAAA,UAAImgF,cAAc,CAClB;AAAA,UAAIngF,OAAOG,QAAQq7E,gBAAgB;AAClC2E,oBAAYhzE,KAAKquE,cACjB;AAAA,YAAIx7E,OAAOoF;AACV+6E,sBAAYhzE,KAAKquE,iBAAe,QAAA;AAAA,MACjC;AACD2E,kBAAYhzE,KAAK,uBAAuBnN,OAAOoF,GAC/C;AAAA,aAAO+6E,YAAYj+E,KAAK;IAC1B;AACC9D,IAAAA,WAAUgiF,uBAAuB,SAASpgF,QACzC;AAAA,UAAIm5C,QAAS76C,SAASC,cAAc,KACpC;AAAA,UAAIyB,OAAO0F,MAAM;AAChB,YAAA,OAAW1F,OAAO0F,QAAQ;AACzByzC,gBAAMx6C,YAAYqB,OAAO0F;AAAAA;AAEzByzC,gBAAMt6C,YAAYmB,OAAO0F,IAAAA;AAAAA,MAC1B;AACD,aAAOyzC;AAAAA,IACT;AACC/6C,IAAAA,WAAU4gF,0BAA0B,SAAS/2D,SAASqM,MAAMr2B;AAC3D,UAAIwtE,SAAS,CACb;AAAA,UAAIhpE,IAAIrE,WAAU4B;AAClB,UAAIgU,WAAWvV,KAAKwV;AACpB,UAAIC,WAAWzV,KAAK0V;AACpB,UAAI2oE,YAAY;AAEhB,UAAA,CAAKr6E,EAAE44E;AACN,eAAO5P;AAGR,UAAKxtE,CAAAA,OAAOA,QAAQ,GAAG;AACtB,YAAIgqB,QAAQyC,OAAO;AAClBzsB,gBAAMgqB,QAAQyC;AAAAA,aACV;AACJ,cAAI21D,kBAAkB,IAAIvsE,KAAKmU,QAAQyC,IACvCoyD;AAAAA,sBAAAA,CAAauD;AAGb,cAAQnsE,EAAAA,CAAAA,WAAAA,CAAYmsE,mBAAoBrsE,CAAAA,YAAAA,CAAaqsE;AACpD,mBAAO5U;AAERxtE,gBAAMoiF,gBAAgBzjD,OACtB;AAAA,QAAA;AAGD,YAAI0jD,UAAUtsE,SAAS4oB,OAAAA;AACvB,YAAI0jD,UAAUriF,KAAK;AAClBA,gBAAM,KAAKqiF,UAAQriF;AAAAA,QACvB,OAAU;AACNA,gBAAMA,MAAMqiF;AAAAA,QACZ;AAAA,MACD;AACD,UAAI3E,QAAQ1zD,QAAQ0zD;AACpB,UAAIwE,cAAc/hF,WAAU8hF,2BAA2Bj4D,OAEvD;AAAA,UAAI7pB,WAAUuR,eAAevR,WAAUyV,SAAS,SAAS;AACxD,YAAI03D,QAAQ,CACZ;AAAA,YAAI7gD,OAAO,CAAA;AAGX,aAAK4J,MAAM;AACV5J,iBAAO,YAAc,CAACoyD,SAAAA,IAAa1+E,WAAU0hF,oBAAoB7hF;AACjE,mBAASmI,IAAE,GAAGA,IAAIskB,KAAKrkB,QAAQD,KAAK;AACnCmlE,kBAAMp+D,KAAM1O,KAAKmmB,QAAQ8F,KAAKtkB,CAAAA,CAAAA,CAAAA;AAAAA,UAC9B;AAAA,QACL,OAAU;AACNmlE,gBAAMp+D,KAAKmnB,IAAAA;AACX5J,eAAKvd,KAAKlP,GACV;AAAA,QAAA;AAED,iBAASmI,IAAE,GAAGA,IAAImlE,MAAMllE,QAAQD,KAAK;AACpCkuB,iBAAOi3C,MAAMnlE,CAAAA;AACbnI,gBAAMysB,KAAKtkB,CAEX;AAAA,cAAIm6E,OAAO9hF,KAAKysC,kBAAkBjtC,KAAK,KAAA,IAASQ,KAAKya,MAAM7S;AAE3D,cAAG5H,KAAK0a,SAASonE,IAAO;AAAA;AAExB,cAAIC,cAAcpiF,WAAUgiF,qBAAqBn4D,OACjDu4D;AAAAA,sBAAY39E,YAAYs9E;AACxBK,sBAAYj7E,MAAM+L,MAAM;AACxBkvE,sBAAYj7E,MAAMC,SAAS;AAE3B,mBAAS8kC,IAAE,GAAGA,IAAIqxC,MAAMt1E,QAAQikC,KAAG,GAAG;AACrC,gBAAI9yB,QAAQmkE,MAAMv1E,CAClB;AAAA,gBAAIqR,MAAMkkE,MAAMv1E,IAAE,CAClB;AAAA,gBAAIqR,OAAOD;AACV,qBAAO,CAAA;AAER,gBAAI2hC,QAAQqnC,YAAY56D,UAAU,IAAA;AAElCuzB,kBAAM5zC,MAAMiL,OAAO;AACnB2oC,kBAAM5zC,MAAMF,QAAQ;AAEpBivB,iBAAKz1B,YAAYs6C,KAAAA;AACjBsyB,mBAAOt+D,KAAKgsC,KACZ;AAAA,UAAA;AAAA,QACD;AAAA,MACJ,OAAS;AACN,YAAIhvC,QAAQlM;AAEZ,YAAGQ,KAAK0a,SAAS1a,KAAKysC,kBAAkBjtC,KAAK,KAAA,CAAA;AAAS,iBAAOwtE;AAE7D,YAAIhtE,KAAK2O,UAAU3O,KAAK2O,OAAO3O,KAAKoV,KAAAA,KAAUoU,QAAQH,YAAYG,QAAQH,SAASrpB,KAAKoV,KAAQ,GAAA;AAC/F,cAAIvS,OAAO7C,KAAK2O,OAAO3O,KAAKoV,KAAAA;AAC5B1J,kBAAQ7I,KAAKotC,MAAMzmB,QAAQH,SAASrpB,KAAKoV,KAAAA,CAAAA;AAEzC,cAAIw4D,cAAc/qE,KAAKotC,MAAMzmB,QAAQH,SAASrpB,KAAKoV,KAAAA,CAAAA;AACnD,cAAKvS,EAAAA,KAAKopB,OAAO,IAAG;AACnBvgB,oBAAQkiE;AACR,gBAAI/qE,KAAKyvC,QAAS5mC,QAAQ7I,KAAKkD,WAASlD,KAAKyvC,MAAO;AACnD5mC,sBAAQ;AAAA,YACR;AAAA,UACN,OAAS;AACJ,gBAAIy0E,UAAUt9E,KAAKyvC,QAAQzvC,KAAK2mB,QAAQ5hB;AACxC8D,oBAAQA,QAAMy0E,UAAUvS;AAAAA,UACxB;AAAA,QACD;AACD/3C,eAAOA,OAAOA,OAAOl2B,WAAU8pC,cAAc/9B,KAAAA;AAE7C,iBAAS/D,IAAI,GAAGA,IAAIu1E,MAAMt1E,QAAQD,KAAG,GAAE;AACtC,cAAIoR,QAAQtG,KAAKC,IAAIwqE,MAAMv1E,IAAI3D,EAAE0V,aAAW,EAC5C;AAAA,cAAIV,MAAMvG,KAAKqI,IAAIoiE,MAAMv1E,IAAE,CAAI3D,GAAAA,EAAE+Z,YAAU,EAAA;AAC3C,cAAI/E,OAAOD,OAAO;AACjB,gBAAIpR,IAAE,IAAIu1E,MAAMt1E;AACf;AAAA;AAEA,qBAAO,CACR;AAAA,UAAA;AAED,cAAI8yC,QAAQ/6C,WAAUgiF,qBAAqBn4D,OAAAA;AAC3CkxB,gBAAMt2C,YAAYs9E;AAGlB,cAAI7T,mBAAmB7tE,KAAKuB,OAAOyZ,eAAa,KAAK;AACrD,cAAI8yD,UAAU,KAAG,KAAG;AACpBpzB,gBAAM5zC,MAAM+L,MAAOJ,KAAK+G,OAAOT,QAAM,KAAG,MAAK/Y,KAAKuB,OAAOmY,aAAWo0D,WAAS9tE,KAAKuB,OAAOyZ,eAAa8yD,WAAWD,mBAAoB;AACrInzB,gBAAM5zC,MAAMC,SAAS0L,KAAKC,IAAKD,KAAK+G,OAAQR,MAAID,SAAO,KAAG,MAAM/Y,KAAKuB,OAAOyZ,eAAa8yD,OAAAA,IAAYD,kBAAkB,CAAA,IAAG;AAE1Hh4C,eAAKz1B,YAAYs6C,KAAAA;AACjBsyB,iBAAOt+D,KAAKgsC;QACZ;AAAA,MACD;AACD,aAAOsyB;AAAAA,IACT;AAECrtE,IAAAA,WAAUqiF,kBAAkB,WAAA;AAC3B,UAAIloD,OAAO95B,KAAK2I,KAAK,cAAA,EAAgB,CACrC;AAAA,UAAI0iE,OAAO,CAAA;AACX,UAAI1rE,WAAUuR,eAAevR,WAAUyV,SAAS,SAAQ;AACvD,iBAAS5V,OAAOQ,KAAKmmB,SAAS;AAC7B,cAAI/gB,OAAO,oBAAIiQ,KAAAA,CAAM7V;AACrB6rE,eAAK38D,KAAK5C,MAAMu/D,MAAM1rE,WAAUsiF,qBAAqBjiF,KAAKmmB,QAAQ3mB,MAAK4F,IACvE,CAAA;AAAA,QAAA;AAAA,MACJ,OAAQ;AAEL,YAAIA,OAAO,IAAIiQ,KAAK1V,WAAU6V,SAC9B;AAAA,iBAAS7N,IAAI,GAAGiW,MAAMkc,KAAKgW,WAAWloC,QAAQD,IAAIiW,KAAKjW,KAAK;AAC3D,cAAIkuB,OAAOiE,KAAKgW,WAAWnoC;AAC3B,cAAIkuB,KAAKx1B,cAAcV,WAAUsT,cAAc4iB,KAAKx1B,UAAY0W,EAAAA,QAAQ,wBAAwB;AAC/F;AAAA,UACA;AAEDs0D,eAAK38D,KAAK5C,MAAMu/D,MAAM1rE,WAAUsiF,qBAAqBpsD,MAAMzwB,IAC3DA,CAAAA;AAAAA,iBAAOzF,WAAUyF,KAAKT,IAAIS,MAAM,GAAG,KAAA;AAAA,QACnC;AAAA,MACD;AACD,aAAOimE;AAAAA,IACT;AAGC1rE,IAAAA,WAAUuiF,eAAe,SAASC,eAAAA;AAEjC,UAAIC,cAAc;AAClB,UAAA,CAAIpiF,KAAK2I,KAAK,iBAAgB;AAC7BhJ,QAAAA,WAAUiJ,aACVw5E;AAAAA,sBAAc;AAAA,MACd;AAID,UAAIC,gBAAgB1iF,WAAU2iF,uBAC7BC,iBAAiB5iF,WAAU6iF,yBAC3BrE,YAAYx+E,WAAUy+E;AAEvBz+E,MAAAA,WAAU29E,qBAGV39E;AAAAA,MAAAA,WAAU2D,kBAAkB6+E,aAAAA;AAE5B,UAAI9W,OAAO1rE,WAAUqiF,gBAAAA;AAErB,UAAGI;AACFziF,QAAAA,WAAUgJ,OAAO,CAAA;AAGlBhJ,MAAAA,WAAU2iF,wBAAwBD;AAClC1iF,MAAAA,WAAU6iF,0BAA0BD;AACpC5iF,MAAAA,WAAUy+E,oBAAoBD;AAE9B,aAAO9S;AAAAA,IACT;AACC1rE,IAAAA,WAAU8iF,iBAAiB,SAASpX,MAAAA;AACnC,UAAKA,CAAAA;AACJ;AACD,eAAS1jE,IAAE,GAAGA,IAAE0jE,KAAKzjE,QAAQD,KAAK;AACjC,YAAI1E,MAAMooE,KAAK1jE,CAEf;AAAA,YAAI1E,IAAIgG,YAAY;AACnBhG,cAAIgG,WAAWiC,YAAYjI;QAC3B;AAAA,MACD;AAAA,IACH;AAGCtD,IAAAA,WAAU+iF,2BAA2B,SAASnhF,QAC7C;AAAA,UAAIL,UAAS;AACb,UAAIi9E,YAAYx+E,WAAUy+E;AAC1B,UAAIr+E,MAAKwB,OAAOxB;AAEhB,UAAI6pD,MAAMjqD,WAAU2iF;AACpB,UAAK14B,CAAAA,IAAI7pD,GACR6pD;AAAAA,YAAI7pD,OAAM,CAGX;AAAA,UAAIP,MAAM+B,OAAO0qB;AAEjB,UAAI5C,WAAW9nB,OAAO8nB;AACtB,UAAI3nB,OAAOH,OAAOG;AAClBH,aAAOxB,KAAKA;AAEZ,UAAIspB,UAAU;AACb,iBAAS03D,YAAY13D,UAAU;AAC9B,cAAIA,SAASiB,eAAey2D,QAAAA,GAAW;AACtC,gBAAA,CAAK5C,UAAU4C,QAAAA;AACd5C,wBAAU4C,QAAAA,IAAY;AACvB,gBAAI4B,UAAUt5D,SAAS03D,QACvB;AAAA,gBAAI6B,iBAAiBzE,UAAU4C;AAC/B,gBAAK6B,CAAAA,eAAeD,OACnBC;AAAAA,6BAAeD,OAAW,IAAA;AAC3B,gBAAA,CAAKC,eAAeD,OAASnjF,EAAAA,GAAAA;AAC5BojF,6BAAeD,OAAAA,EAASnjF,GAAO,IAAA,CAAA;AAChC,gBAAA,CAAKojF,eAAeD,OAAAA,EAASnjF,GAAKkC,EAAAA,IAAAA,GAAM;AACvCkhF,6BAAeD,OAASnjF,EAAAA,GAAAA,EAAKkC,QAAQ,CACrC;AAAA,kBAAA,CAAI/B,WAAU6iF;AACb7iF,gBAAAA,WAAU6iF,0BAA0B;AACrC,mBAAI7iF,WAAU6iF,wBAAwB9gF,IACrC/B;AAAAA,gBAAAA,WAAU6iF,wBAAwB9gF,IAAAA,IAAQ;AAAA,YAC3C;AACD,gBAAImhF,cAAcD,eAAeD,OAASnjF,EAAAA,GAAAA,EAAKkC,IAC/CH;AAAAA,mBAAOuhF,SAASD;AAChBA,wBAAYn0E,KAAKnN,MACjBqoD;AAAAA,gBAAI7pD,GAAI2O,EAAAA,KAAKnN,MACb;AAAA,UAAA;AAAA,QACD;AAAA,MACJ,OAAS;AACN,YAAK48E,CAAAA,UAAUj9E,OAAQ1B,EAAAA,GAAAA;AACtB2+E,oBAAUj9E,OAAAA,EAAQ1B,OAAO,CAAA;AAC1B,YAAK2+E,CAAAA,UAAUj9E,OAAQ1B,EAAAA,GAAAA,EAAKkC,IAC3By8E;AAAAA,oBAAUj9E,SAAQ1B,GAAKkC,EAAAA,IAAAA,IAAQ,CAEhC;AAAA,YAAA,CAAI/B,WAAU6iF;AACb7iF,UAAAA,WAAU6iF,0BAA0B;AACrC,YAAA,CAAI7iF,WAAU6iF,wBAAwB9gF,IACrC/B;AAAAA,UAAAA,WAAU6iF,wBAAwB9gF,IAAAA,IAAQ;AAE3C,YAAImhF,cAAc1E,UAAUj9E,OAAAA,EAAQ1B,GAAKkC,EAAAA,IAAAA;AACzCH,eAAOuhF,SAASD;AAChBA,oBAAYn0E,KAAKnN,MACjBqoD;AAAAA,YAAI7pD,GAAI2O,EAAAA,KAAKnN,MACb;AAAA,MAAA;AAAA,IAEH;AAEC5B,IAAAA,WAAU2iF,wBAAwB;AAElC3iF,IAAAA,WAAU2D,oBAAoB,SAAS6+E,eAAAA;AACtC,UAAIY,UAAUpjF,WAAU6gF,0BAA0B2B,aAClD;AAAA,UAAA,CAAKY,QAAQn7E;AACZ;AAED,UAAI7H,MAAKgjF,QAAQ,CAAA,EAAGhjF;AACpB,eAAS4H,IAAE,GAAGA,IAAEo7E,QAAQn7E,QAAQD,KAAK;AACpChI,QAAAA,WAAU+iF,yBAAyBK,QAAQp7E;MAC3C;AACD,aAAO5H;AAAAA,IACT;AAECJ,IAAAA,WAAUy/E,sBAAsB,SAAS4D,eAAe9F,OACvD;AAAA,UAAI+F,kBAAkBD,cAAc91D,MACpCgwD;AAAAA,cAAQA,MAAMhwD,MAAAA;AAEd,WAAK+1D,gBAAgBr7E;AACpB,eAAOs1E;AAER,eAASv1E,IAAE,GAAGA,IAAEs7E,gBAAgBr7E,QAAQD,KAAG,GAAG;AAC7C,YAAIu7E,eAAeD,gBAAgBt7E;AACnC,YAAIw7E,aAAaF,gBAAgBt7E,IAAE,CACnC;AAAA,YAAIy7E,SAAUz7E,IAAE,KAAKs7E,gBAAgBr7E;AAErC,iBAASikC,IAAE,GAAGA,IAAEqxC,MAAMt1E,QAAQikC,KAAG,GAAG;AACnC,cAAIm0C,aAAa9C,MAAMrxC,CAAAA;AACvB,cAAIu1C,WAAWlE,MAAMrxC,IAAE,CAAA;AACvB,cAAKu1C,WAAW+B,cAAcnD,cAAcmD,cAAgBnD,aAAakD,gBAAgB9B,YAAY8B,cAAe;AACnHD,4BAAgBt7E,CAAK8K,IAAAA,KAAKqI,IAAIooE,cAAclD,UAAAA;AAC5CiD,4BAAgBt7E,IAAE,CAAK8K,IAAAA,KAAKC,IAAIywE,YAAY/B;AAC5Cz5E,iBAAK;AAAA,UACV,OAAW;AACN,gBAAKy7E,CAAAA;AACJ;AAED,gBAAIp8D,SAAUk8D,eAAelD,aAAY,IAAE;AAC3CiD,4BAAgBp5D,OAAOliB,IAAEqf,QAAQ,GAAGg5D,YAAYoB,QAAAA;AAAAA,UAChD;AACDlE,gBAAMrzD,OAAOgiB,KAAI,CACjB;AAAA;AAAA,QACA;AAAA,MACD;AACD,aAAOo3C;AAAAA,IACT;AACCtjF,IAAAA,WAAU0jF,2BAA2B,SAASL,eAAe9F,OAC5D;AAAA,UAAI+F,kBAAkBD,cAAc91D,MACpC;AAAA,eAASvlB,IAAE,GAAGA,IAAEs7E,gBAAgBr7E,QAAQD,KAAG,GAAI;AAC9C,YAAIu7E,eAAeD,gBAAgBt7E,CACnC;AAAA,YAAIw7E,aAAaF,gBAAgBt7E,IAAE,CAAA;AACnC,iBAASkkC,IAAE,GAAGA,IAAEqxC,MAAMt1E,QAAQikC,KAAG,GAAG;AACnC,cAAIm0C,aAAa9C,MAAMrxC,CACvB;AAAA,cAAIu1C,WAAWlE,MAAMrxC,IAAE,CAAA;AACvB,cAAIu1C,WAAW8B,gBAAgBlD,aAAamD,YAAY;AACvD,gBAAIG,cAAc;AAClB,gBAAIJ,gBAAgBlD,cAAcmD,cAAc/B,UAAU;AACzD6B,8BAAgBp5D,OAAOliB,GAAG,CAC1B;AAAA,YAAA;AACD,gBAAIu7E,eAAelD,YAAY;AAC9BiD,8BAAgBp5D,OAAOliB,GAAG,GAAGu7E,cAAclD,UAC3CsD;AAAAA,4BAAc;AAAA,YACd;AACD,gBAAIH,aAAa/B,UAAU;AAC1B6B,8BAAgBp5D,OAAQ,cAAeliB,IAAE,IAAGA,GAAG,cAAc,IAAE,GAAGy5E,UAAU+B,UAC5E;AAAA,YAAA;AACDx7E,iBAAK;AACL;AAAA,UACL,OAAW;AACN;AAAA,UACA;AAAA,QACD;AAAA,MACD;AACD,aAAOs7E;AAAAA,IACT;AACCtjF,IAAAA,WAAUmhF,cAAc,SAAS5D,OAAAA;AAChC,aAAOv9E,WAAU0jF,yBAAyB,CAAC,GAAG,IAAA,GAAOnG,MAAMhwD,MAC7D,CAAA;AAAA,IAAA;AACCvtB,IAAAA,WAAU4jF,gCAAgC,SAASxjF,KAAAA;AAClD,UAAIgjF,UAAUpjF,WAAU2iF,sBAAsBviF,GAAAA;AAC9C,UAAIgjF,SAAS;AACZ,iBAASp7E,IAAE,GAAGA,IAAEo7E,QAAQn7E,QAAQD,KAAK;AACpC,cAAIpG,SAASwhF,QAAQp7E,CACrB;AAAA,cAAI67E,eAAejiF,OAAOuhF;AAC1B,mBAASj3C,IAAE,GAAGA,IAAE23C,aAAa57E,QAAQikC,KAAK;AACzC,gBAAI23C,aAAa33C,CAAAA,KAAMtqC,QAAQ;AAC9BiiF,2BAAa35D,OAAOgiB,GAAG,CACvB;AAAA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACH;AACClsC,IAAAA,WAAU8jF,oCAAoC,SAASliF,QAAAA;AACtD,UAAI48E,YAAYx+E,WAAUy+E;AAC1B,UAAI/0D,WAAW9nB,OAAO8nB;AACtB,UAAI7pB,MAAM+B,OAAO0qB;AACjB,UAAIvqB,OAAOH,OAAOG,QAAMs7E;AACxB,UAAI0G;AACJ,UAAIr6D,UAAU;AACb,iBAAS03D,YAAY13D,UAAU;AAC9B,cAAIA,SAASiB,eAAey2D,QAAAA,KAAa5C,UAAU4C,QAAAA,GAAW;AAC7D,gBAAI4B,UAAUt5D,SAAS03D;AACvB,gBAAI5C,UAAU4C,QAAU4B,EAAAA,OAAAA,GAAS;AAChCe,0BAAYvF,UAAU4C,QAAAA,EAAU4B;YAChC;AAAA,UACD;AAAA,QACD;AAAA,MACJ,OAAS;AACNe,oBAAYvF,UAAUj9E;AAAAA,MACtB;AAED,UAAGwiF,WAAW;AACb,YAAIlkF,QAAQoT,QAAW;AACtB,cAAI8wE,UAAUlkF,GAAQkkF,KAAAA,UAAUlkF,GAAKkC,EAAAA,IAAAA,GAAO;AAC3C/B,YAAAA,WAAU+iF,yBAAyBnhF,MAAAA;AACnC5B,YAAAA,WAAUgkF,8BAA8BD,UAAUlkF,GAAKkC,EAAAA,IAAAA,GAAOH,MAC9D;AAAA,UAAA;AAAA,QACD,OACI;AACJ,mBAAS6X,KAAKsqE,WAAW;AACxB,gBAAIA,UAAUtqE,CAAG1X,EAAAA,IAAAA,GAAO;AACvB,kBAAIkiF,YAAYjkF,WAAUmhB,YAAYvf,MACtCA;AAAAA,qBAAO0qB,OAAO7S;AACdzZ,cAAAA,WAAU+iF,yBAAyBkB,SACnCjkF;AAAAA,cAAAA,WAAUgkF,8BAA8BD,UAAUtqE,CAAG1X,EAAAA,IAAAA,GAAOH;YAC5D;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACH;AACC5B,IAAAA,WAAUgkF,gCAAgC,SAASE,eAAetiF,QACjE;AAAA,eAASoG,IAAE,GAAGA,IAAEk8E,cAAcj8E,QAAQD,KAAK;AAC1C,YAAIm8E,MAAMD,cAAcl8E,CACxB;AAAA,YAAIu1E,QAAQv9E,WAAU0jF,yBAAyBS,IAAI5G,OAAO37E,OAAO27E,KACjE;AAAA,YAAIA,MAAMt1E;AACTk8E,cAAI5G,QAAQA;AAAAA,aACR;AACJ2G,wBAAch6D,OAAOliB,GAAE,CACvBA;AAAAA;AAEA,cAAIo8E,gBAAgBpkF,WAAU2iF,sBAAsBwB,IAAI/jF,EACxD;AAAA,mBAAS8rC,IAAE,GAAGA,IAAEk4C,cAAcn8E,QAAQikC,KAAK;AAC1C,gBAAIk4C,cAAcl4C,CAAAA,KAAMi4C,KAAK;AAC5BC,4BAAcl6D,OAAOgiB,GAAG,CAAA;AACxB;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACH;AACClsC,IAAAA,WAAU29E,uBAAuB,SAAS6E,eAEzC;AAAA,UAAA,CAAKp2E,UAAUnE,QAAQ;AACtBjI,QAAAA,WAAUy+E,oBAAoB,EAAEl9E,QAAQ,CAAE,EAAA;AAC1CvB,QAAAA,WAAU2iF,wBAAwB;AAClC3iF,QAAAA,WAAU6iF,0BAA0B;MACpC;AAED,iBAAWL,iBAAiB,UAAU;AACrCxiF,QAAAA,WAAU4jF,8BAA8BpB,aAAAA;AAAAA,MAC3C,OAAS;AAEN,cAAKA,cAAc5oE,cAAc4oE,cAActoE,WAAU;AACxD,cAAGsoE,cAAcl2D,SAASrZ,WAAcuvE,cAAczgF;AACrDygF,0BAAcl2D,OAAO;AACtB,cAAA,CAAIk2D,cAAcjF;AACjBiF,0BAAcjF,QAAQ;AAAA,QACvB;AAED,YAAI8G,QAAQ,CAAA;AACZ,YAAI7B,CAAAA,cAAczgF,MAAK;AAEtB,mBAAQA,QAAQ/B,WAAU6iF,yBAAwB;AACjDwB,kBAAMt1E,KAAKhN,IAAAA;AAAAA,UACX;AAAA,QACL,OAAQ;AACJsiF,gBAAMt1E,KAAKyzE,cAAczgF;QACzB;AAGD,YAAIqhF,UAAUpjF,WAAU6gF,0BAA0B2B,aAAAA;AAElD,iBAASx6E,IAAE,GAAGA,IAAEo7E,QAAQn7E,QAAQD,KAAK;AAEpC,cAAIpG,SAASwhF,QAAQp7E,CAAAA;AACrB,mBAASuN,IAAE,GAAGA,IAAI8uE,MAAMp8E,QAAQsN,KAAI;AACnC,gBAAI+uE,cAActkF,WAAUmhB,YAAYvf,MACxC0iF;AAAAA,wBAAYviF,OAAOsiF,MAAM9uE,CAAAA;AACzBvV,YAAAA,WAAU8jF,kCAAkCQ,WAC5C;AAAA,UAAA;AAAA,QACD;AAAA,MAED;AAAA,IACH;AACCtkF,IAAAA,WAAUukF,uBAAuB,SAASpsB,QAAQqsB,UACjD;AAAA,UAAIC,kBAAkB,SAAWzkF,WAAU8hB,WAAW,IAAGq2C,MAAU,IAAA;AACnE,eAASp2D,QAAQyiF,YAAU,IAAK;AAC/B,YAAIA,SAAS75D,eAAe5oB,OAAO;AAClC0iF,0BAAgB1iF,IAAQyiF,IAAAA,SAASziF,IACjC;AAAA,QAAA;AAAA,MACD;AACD,aAAO0iF;AAAAA,IACT;AACCzkF,IAAAA,WAAU0kF,yBAAyB,SAASL,OAC3C;AAAA,UAAIjB,UAAU,CAAA;AACd,eAASrhF,QAAQsiF,OAAO;AACvB,YAAIA,MAAM15D,eAAe5oB,IAAAA,GAAO;AAC/BqhF,kBAAQr0E,KAAK5C,MAAMi3E,SAASiB,MAAMtiF,IAAAA,CAAAA;AAAAA,QAClC;AAAA,MACD;AACD,aAAOqhF;AAAAA,IACT;AAECpjF,IAAAA,WAAUsiF,uBAAuB,SAASpsD,MAAMr2B,KAC/C;AAAA,UAAIG,WAAUuR,eAAevR,WAAUyV,SAAS;AAC/C;AAED,UAAIkpE,YAAY9+E,IAAI2+B,OACpB;AAAA,UAAIkgD,YAAY7+E,IAAI0X,QACpB;AAAA,UAAIzX,OAAOO,KAAKoV;AAChB,UAAI+oE,YAAYx+E,WAAUy+E;AAC1B,UAAIqC,YAAY,CAChB;AAAA,UAAIpV,OAAO,CACX;AAAA,UAAIrrE,KAAK2O,UAAU3O,KAAK2O,OAAOlP,IAAO,GAAA;AACrC,YAAIoD,OAAO7C,KAAK2O,OAAOlP,IAAAA;AACvB,YAAImsE,QAAQ/oE,KAAK2mB;AACjB,YAAI9d,QAAQ/L,WAAU2kF,gBAAgBzhF,MAAMrD,GAAAA;AAC5C,YAAI4C,OAAOwpE,MAAMlgE,KAEjB;AAAA,YAAA,EAAK7I,KAAKopB,OAAO,IAAG;AACnBzsB,gBAAMG,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAKrV,KAAKsV,KACjD,CAAA;AAAA,QAAA,OAAQ;AACJ,cAAIs8B,KAAK,KAAG,KAAG,KAAG;AAClB,cAAI2yC,UAAU9xE,KAAK+G,OAAOha,MAAMG,WAAU6V,aAAWo8B,EAAAA;AACrD,cAAI4yC,cAAc3hF,KAAKyvC,QAAQs5B,MAAMhkE;AACrCpI,gBAAMG,WAAUyF,KAAKT,IAAIhF,WAAU6V,WAAW/C,KAAKkI,MAAM4pE,UAAQC,WAAAA,GAAc,KAC/EhlF;AAAAA,gBAAMG,WAAUyF,KAAK4Z,UAAUxf,GAAAA;AAAAA,QAC/B;AACD8+E,oBAAY9+E,IAAI2+B,OAChBkgD;AAAAA,oBAAY7+E,IAAI0X,QAAAA;AAEhB,YAAIinE,UAAU1+E,SAAS0+E,UAAU1+E,IAAAA,EAAM2C,KAAKgnB,GAAAA,GAAM;AACjD,cAAIq7D,aAAatG,UAAU1+E,MAAM2C,KAAKgnB,GAAAA;AACtC,cAAIs7D,aAAa/kF,WAAUukF,qBAAqBO,WAAWnG,SAAAA,GAAYmG,WAAWpG,SAClFoC,CAAAA;AAAAA,oBAAU/xE,KAAK5C,MAAM20E,WAAW9gF,WAAU0kF,uBAAuBK,UAAAA,CAAAA;AAAAA,QACjE;AAAA,MACD;AAED,UAAIC,cAAcxG,UAAU,QAE5B;AAAA,UAAGx+E,WAAU4B,OAAOs7E,4BAA2B;AAC9C,YAAI+H,YAAYD,YAAYtG,SAAAA,KAAYsG,YAAYrG,SAAAA;AACpDmC,kBAAU/xE,KAAK5C,MAAM20E,WAAW9gF,WAAU0kF,uBAAuBO,SAAAA,CAAAA;AAAAA,MACpE,OAAS;AACN,YAAGD,YAAYtG,SAAAA,GAAW;AACzBoC,oBAAU/xE,KAAK5C,MAAM20E,WAAW9gF,WAAU0kF,uBAAuBM,YAAYtG,SAAAA,CAAAA,CAAAA;AAAAA,QAC7E;AACD,YAAGsG,YAAYrG,SAAAA,GAAW;AACzBmC,oBAAU/xE,KAAK5C,MAAM20E,WAAW9gF,WAAU0kF,uBAAuBM,YAAYrG,SAAAA,CAAAA,CAAAA;AAAAA,QAC7E;AAAA,MACD;AAED,eAAS32E,IAAE,GAAGA,IAAE84E,UAAU74E,QAAQD,KAAK;AACtC0jE,aAAK38D,KAAK5C,MAAMu/D,MAAO1rE,WAAU4gF,wBAAwBE,UAAU94E,CAAIkuB,GAAAA,MAAMr2B;MAC7E;AACD,aAAO6rE;AAAAA,IACT;AACC1rE,IAAAA,WAAUgE,YAAY,cAAc,WAAA;AACnChE,MAAAA,WAAUsiF,qBAAqBn2E,MAAMnM,YAAWoM,SAClD;AAAA,IAAA,CAAA;AAECpM,IAAAA,WAAUklF,+BAA+B,SAAS/wE,GAAES,KAAAA;AACnD5U,MAAAA,WAAU8B,UAAU,mBAAkB,CAAC9B,WAAU+W,cAAc5C,GAAG1O,MAAKmP,KAAIT,CAE3E,CAAA;AAAA,UAAInU,WAAU4B,OAAO2Y,iBAAgB;AACpCva,QAAAA,WAAUmZ,YAAYnZ,WAAU+W,cAAc5C,CAAAA,EAAG1O,MAAK,MAAK0O,CAC3D;AAAA,MAAA;AAAA,IACH;AAAA,EAEA;AACAnU,EAAAA,WAAUm9E,kBAGV;AAAA;ACnlCe,SAAQgI,SAACnlF,YAGxB;AAAA,MAAA,CAAIA,WAAUy5D,KAAI;AACjBz5D,IAAAA,WAAUy5D,MAAM;EACjB;AACAz5D,EAAAA,WAAUy5D,IAAI2rB,UAAU,EACvBC,UAAU,MACV7iF,KAAK,MACL8iF,QAAQ,MACRC,SAAS,MACTC,YAAY,MACZC,cAAc,SAAS7jF,QAAAA;AACtB,WAAO,IAAI8jF,OAAOC,KAAKC,OAAOhkF,MAAAA;AAAAA,EAC9B,EAIF5B;AAAAA,EAAAA,WAAU6I,GAAGg9E,iBAAiB;AAC9B7lF,EAAAA,WAAU6I,GAAG65C,iBAAiB;AAC9B1iD,EAAAA,WAAU6I,GAAGi9E,wBAAwB;AAErC9lF,EAAAA,WAAU4B,OAAOmkF,6BAA6B;AAC9C/lF,EAAAA,WAAU4B,OAAOokF,4BAA4B;AAE7ChmF,EAAAA,WAAU4B,OAAOqkF,uBAAuB,IAAIP,OAAOC,KAAKO,OAAO,QAAQ,KACvElmF;AAAAA,EAAAA,WAAU4B,OAAOukF,qBAAqB,IAAIT,OAAOC,KAAKO,OAAO,IAAI,EAAA;AAEjElmF,EAAAA,WAAU4B,OAAOwkF,2BAA2B;AAE5CpmF,EAAAA,WAAU4B,OAAOykF,WAAWX,OAAOC,KAAKW,UAAUC;AAElDvmF,EAAAA,WAAU4B,OAAO4kF,yBAAyB;AAE1CxmF,EAAAA,WAAU0T,OAAOC,OAAO8yE,qBAAqB;AAC7CzmF,EAAAA,WAAU0T,OAAOC,OAAO+yE,kBAAkB;AAE1C1mF,EAAAA,WAAU0iB,UAAUikE,cAAc3mF,WAAUyF,KAAKq7B,YAAY,gBAE7D9gC;AAAAA,EAAAA,WAAU0iB,UAAUkkE,cAAc,SAASxtE,OAAOC,KAAK1E,IACtD;AAAA,WAAO,aAAaA,GAAG3S,OAAO,oBAAoB2S,GAAGkyE,kBAAkB,MAAM,eAAe7mF,WAAU0iB,UAAUikE,YAAYvtE,KAAS,IAAA,QAAQpZ,WAAU0iB,UAAUikE,YAAYttE,GAAO,IAAA;AAAA,EACrL;AACArZ,EAAAA,WAAU8mF,wBAAwB,WAAA;AACjC,SAAKzmF,KAAKuB,OAAOoV,YAAY3W,KAAKuB,OAAO2Y;AACxCla,WAAK8Y,YAAY,EAChBS,YAAY5Z,WAAU2V,OACtBuE,UAAUla,WAAUyF,KAAKT,IAAIhF,WAAU2V,OAAO3V,WAAU4B,OAAO+X,WAAW,QAAA,EAAA,CAAA;AAAA,EAE7E;AACA3Z,EAAAA,WAAU0iB,UAAUqkE,WAAW,SAAS3tE,OAAOC,KAAK1E,IACnD;AAAA,QAAI3U,WAAU4B,OAAOgO,OAAQ+E,CAAAA,GAAG8F,QAAQ;AACvC,aAAOza,WAAU0iB,UAAU8L,SAASnV,GAAO,IAAA,cAAcrZ,WAAU0iB,UAAU8L,SAASpV,KACxF;AAAA,IAAA,WAAYzE,GAAG8F,QAAQ;AACrB,aAAOpa,KAAKmuB,SAAS7Z,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAM,IAAA,MAAMtU,KAAKklC,WAAWnsB,KAAAA;AAAAA,IAC/E,OAAQ;AACN,aAAOpZ,WAAU0iB,UAAU8L,SAASpV,KAAS,IAAA,cAAcpZ,WAAU0iB,UAAU8L,SAASnV,GAAAA;AAAAA,IACxF;AAAA,EACF;AACArZ,EAAAA,WAAU0iB,UAAUskE,WAAW,SAAS5tE,OAAOC,KAAK1E,IAAAA;AACnD,WAAOA,GAAG3S;AAAAA,EACX;AAEAhC,EAAAA,WAAUyF,KAAKwhF,YAAY,SAASxtE,GAAAA;AACnC,WAAOA;AAAAA,EACR;AACAzZ,EAAAA,WAAUyF,KAAKyhF,UAAU,SAASzhF,MAAM86B,KAAKzgC,MAC5C;AAAA,WAAA,IAAY4V,KAAKjQ,KAAK8R,QAAAA,CAAAA;AAAAA,EACvB;AAEAvX,EAAAA,WAAU0iB,UAAUykE,WAAW,SAASziE,IAAIC,IAAI7kB,MAC/C;AAAA,WAAO;AAAA,EACR;AAEAE,EAAAA,WAAUonF,gBAAgB;AAE1BpnF,EAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AACzChE,IAAAA,WAAUqnF,oBAAoB;AAE9B,UAAMC,OAAOpnF,SAASC,cAAc,KACpCmnF;AAAAA,SAAK7iF,YAAY;AACjB6iF,SAAKlnF,KAAK;AACVknF,SAAKngF,MAAMgC,UAAU;AAErBnJ,IAAAA,WAAUsP,KAAK7O,YAAY6mF,IAAAA;AAE3BtnF,IAAAA,WAAUgJ,KAAKu+E,WAAW,CAC1BvnF;AAAAA,IAAAA,WAAUgJ,KAAKu+E,SAASx4E,KAAKu4E,IAAAA;AAE7BE,gBAAY,UAEZ;AAAA,UAAMC,aAAa,EAClBC,MAAM1nF,WAAU4B,OAAO+lF,oBAAoB,IAC3CC,QAAQ5nF,WAAU4B,OAAOqkF,sBACzB4B,WAAW7nF,WAAU4B,OAAOykF,YAAYX,OAAOC,KAAKW,UAAUC,QAAAA;AAE/D,UAAM/jF,MAAM,IAAIkjF,OAAOC,KAAKmC,IAAI5nF,SAASqP,eAAe,UAAA,GAAak4E,UACrEjlF;AAAAA,QAAIulF,mBAAmB;AACvBvlF,QAAIwlF,yBAA0BhoF,CAAAA,WAAU4B,OAAOoV;AAE/C0uE,WAAOC,KAAK1/E,MAAMgiF,YAAYzlF,KAAK,YAAY,SAASyD,QACvD;AAAA,YAAMo/E,WAAWrlF,WAAUy5D,IAAI2rB,QAAQC;AAEvC,UAAA,CAAKrlF,WAAU4B,OAAOoV,YAAYhX,WAAU4B,OAAO2Y,iBAAiB;AACnE,YAAI2tE,QAAQjiF,OAAMkiF;AAClB9C,iBAAS+C,QACR,EAAED,QAAUD,SACZ,SAASG,SAAS9sD,QACjB;AAAA,cAAIA,UAAUmqD,OAAOC,KAAK2C,eAAeC,IAAI;AAC5CL,oBAAQG,QAAQ,CAAA,EAAGG,SAASC;AAC5BzoF,YAAAA,WAAUmZ,YAAY,EACrBuvE,KAAKR,MAAMQ,IAAAA,GACXC,KAAKT,MAAMS,IACX9B,GAAAA,gBAAgBwB,QAAQ,CAAGO,EAAAA,mBAC3BhvE,YAAY5Z,WAAU2V,OACtBuE,UAAUla,WAAUyF,KAAKT,IAAIhF,WAAU2V,OAAO3V,WAAU4B,OAAO+X,WAAW,QAAA,EAAA,CAAA;AAAA,UAE3E;AAAA,QACD,CAAA;AAAA,MAEF;AAAA,IACH,CAEC;AAAA,QAAIkvE,oBAAoB,EACvBnhE,SAAS,GAAA;AAGV,QAAI1nB,WAAU4B,OAAOwkF,0BAA0B;AAC9CyC,wBAAkBC,WAAW9oF,WAAU4B,OAAOwkF;AAAAA,IAC9C;AAEDpmF,IAAAA,WAAUwC,MAAM,EACfumF,SAAS,CAAA,GACTC,UAAU,CAAA,GACVC,aAAa,IAAIvD,OAAOC,KAAKuD,WAAWL,iBACxCM,GAAAA,sBAAsB,CACtBC,GAAAA,uBAAAA,IACA95E,MAAM9M;AAGPxC,IAAAA,WAAUy5D,IAAI2rB,QAAQC,WAAW,IAAIK,OAAOC,KAAK0D;AACjDrpF,IAAAA,WAAUy5D,IAAI2rB,QAAQ5iF,MAAMA;AAC5BxC,IAAAA,WAAUy5D,IAAI2rB,QAAQE,SAAStlF,WAAUwC,IAAIumF;AAC7C/oF,IAAAA,WAAUy5D,IAAI2rB,QAAQG,UAAUvlF,WAAUwC,IAAIwmF;AAC9ChpF,IAAAA,WAAUy5D,IAAI2rB,QAAQI,aAAaxlF,WAAUwC,IAAIymF;AAEjD,QAAIjpF,WAAU4B,OAAOokF,2BAA2B;AAC/C,UAAI/tD,UAAUqxD,aAAa;AAC1B,aAAKtpF,WAAUqnF,mBAAmB;AACjCpvD,oBAAUqxD,YAAYC,mBAAmB,SAASnjF,UAAAA;AACjD,gBAAIojF,gBAAgB,IAAI9D,OAAOC,KAAKO,OAAO9/E,SAASqjF,OAAOC,UAAUtjF,SAASqjF,OAAOE,SAAAA;AACrFnnF,gBAAIonF,UAAUJ,aACdhnF;AAAAA,gBAAIqnF,QAAQ7pF,WAAU4B,OAAO4kF,0BAA0B,EAAA;AACvDxmF,YAAAA,WAAUwC,IAAIymF,YAAYa,WAAW9pF,WAAU0T,OAAOC,OAAO8yE,kBAAAA;AAC7DzmF,YAAAA,WAAUwC,IAAIymF,YAAY7iF,WAAW5D,IAAIunF,UAAAA;AACzC/pF,YAAAA,WAAUwC,IAAIymF,YAAY3rD,KAAK96B,GAAAA;AAE/BxC,YAAAA,WAAUqnF,oBAAoB;AAAA,UAC9B,GACC;AACCrnF,YAAAA,WAAUwC,IAAIymF,YAAYa,WAAW9pF,WAAU0T,OAAOC,OAAO+yE,eAAAA;AAC7D1mF,YAAAA,WAAUwC,IAAIymF,YAAYe,YAAYxnF,IAAIunF,UAC1C/pF,CAAAA;AAAAA,YAAAA,WAAUwC,IAAIymF,YAAY3rD,KAAK96B,GAC/BxC;AAAAA,YAAAA,WAAUqnF,oBAAoB;AAAA,UACrC,CACI;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AACD3B,WAAOC,KAAK1/E,MAAMgiF,YAAYzlF,KAAK,UAAU,SAASyD,QACrDqhF;AAAAA,WAAKngF,MAAMynC,SAAS;AACpBpsC,UAAIqnF,QAAQrnF,IAAIynF,QAAAA,CAAAA;AAAAA,IAElB,CACCvE;AAAAA,WAAOC,KAAK1/E,MAAMgiF,YAAYzlF,KAAK,eAAe,SAASyD,QAAAA;AAC1DqhF,WAAKngF,MAAMynC,SAAS;AAAA,IACtB,CAEC04C;AAAAA,SAAKngF,MAAMgC,UAAU;AAErB,UAAM02B,MAAM7/B,WAAU0oC;AACtB1oC,IAAAA,WAAU0oC,cAAc,SAASR,KAAKC,MACrC;AAAA,UAAI9nC,KAAKoV,SAAS,OAAO;AACxBy0E,qBAAAA;AACA,YAAIr2C,SAAS7zC,WAAU4nC,mBAAAA;AACvB,iBAAS5/B,IAAI,GAAGA,IAAI6rC,OAAO5rC,QAAQD,KAAK;AACvC,cAAKhI,CAAAA,WAAUwC,IAAIwmF,SAASn1C,OAAO7rC,CAAAA,EAAG5H,EAAK,GAAA;AAC1C+pF,wBAAYt2C,OAAO7rC,CAAAA,GAAI,OAAO,KAAA;AAAA,UAC9B;AAAA,QACD;AAAA,MACD;AACA,eAAO63B,IAAI1zB,MAAM9L,MAAM+L,SAC1B;AAAA,IAAA;AAEC,aAASwwD,cAAc98D,MACtB;AAAA,UAAIA,MAAM;AACT,YAAI+8D,IAAI78D,WAAU0T,OAAOC;AACzB3T,QAAAA,WAAUgJ,KAAK,gBAAkB,EAAA,CAAA,EAAGzI,YAAY,8CAClCP,WAAU6I,GAAGg9E,iBAAiB7lF,WAAU6I,GAAGi9E,wBAAwB,KACpE,oDACA9lF,WAAU6I,GAAGg9E,iBAAiB,UAAUhpB,EAAEp3D,OAC1C,2DACAzF,WAAU6I,GAAGi9E,wBAAwB,UAAUjpB,EAAE3L,cAAc;AAC5ElxD,QAAAA,WAAUuR,cAAc;AACxBvR,QAAAA,WAAUiQ,UAAAA;AAAAA,MACV;AAAA,IACD;AAED,aAASm6E,gBAAAA;AACRpqF,MAAAA,WAAUqqF,qBAAqB;AAC/BrqF,MAAAA,WAAUwC,IAAIymF,YAAYqB,MAAAA;AAC1B,UAAI/E,UAAUvlF,WAAUwC,IAAIwmF;AAC5B,eAASv/D,OAAO87D,SAAS;AACxB,YAAIA,QAAQ56D,eAAelB,GAAAA,GAAM;AAChC87D,kBAAQ97D,GAAK8gE,EAAAA,OAAO,IACbvqF;AAAAA,iBAAAA,WAAUwC,IAAIwmF,SAASv/D,GAAAA;AAC9B,cAAIzpB,WAAUwC,IAAI2mF,qBAAqB1/D,GAC/BzpB;AAAAA,mBAAAA,WAAUwC,IAAI2mF,qBAAqB1/D,GAC3C;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAED,aAASygE,eAAAA;AAER,UAAIr2C,SAAS7zC,WAAU4nC,mBACvBiM;AAAAA,aAAO/c,KAAK,SAAS3yB,GAAGC,GAAAA;AACvB,YAAGD,EAAEyV,WAAWrC,QAAWnT,KAAAA,EAAEwV,WAAWrC,QAAAA;AACvC,iBAAOpT,EAAE/D,KAAGgE,EAAEhE,KAAG,IAAG;AACrB,eAAO+D,EAAEyV,aAAWxV,EAAEwV,aAAW,IAAA;AAAA,MACpC,CAAA;AAGE,UAAI01B,WAAWtvC,WAAU4T,SAASqc;AAElC,UAAI3oB,OAAO,UAAQgoC,WAAS;AAC5B,eAAStnC,IAAI,GAAGA,IAAI6rC,OAAO5rC,QAAQD,KAAK;AACvC,YAAI2M,KAAKk/B,OAAO7rC;AAChB,YAAI09B,cAAe/wB,GAAGvU,MAAMJ,WAAUqqF,qBAAsB,2BAA2B;AACvF,YAAIj5C,WAAYz8B,GAAGk6B,QAAS,sCAAsCl6B,GAAGk6B,QAAQ,MAAO;AACpF,YAAIA,QAASl6B,GAAG66B,YAAa,iCAAiC76B,GAAG66B,YAAY,MAAO;AAEpF,YAAIF,WAAWtvC,WAAU4T,SAASsc,iBAAiBvb,EAAAA;AACnD,YAAI61E,iBAAiBxqF,WAAU4T,SAASuc,oBAAAA;AAExC7oB,gBAAQ,UAAQgoC,WAAS,aAAa5J,cAAc,iBAAiB/wB,GAAGvU,KAAK,OAAKJ,WAAU4B,OAAO8iC,kBAAgB,OAAK/vB,GAAGvU,KAAG,cAAcgxC,WAAgBvC,SAAcl6B,GAAG+5B,eAAe,MAAM,cAAc1uC,WAAU6I,GAAGg9E,iBAAiB7lF,WAAU6I,GAAGi9E,wBAAwB,KAAK,wDAAwD9lF,WAAU6I,GAAGg9E,iBAAiB,WAAW7lF,WAAU0iB,UAAUqkE,SAASpyE,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,IAAM;AACxbrN,gBAAQ,QAAQkjF,cAAAA;AAAAA;AAAAA;AAGhBljF,gBAAQ,iDAAiDtH,WAAU6I,GAAGi9E,wBAAwB9lF,WAAU6I,GAAG65C,kBAAkB,UAAU1iD,WAAU0iB,UAAUskE,SAASryE,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAM,IAAA;AAAA,MACtM;AACDrN,cAAQ,sCAAoCtH,WAAU4B,OAAOgO,MAAM,aAAa,cAAc5P,WAAU6I,GAAGg9E,iBAAiB,KAAK;AAGjI7lF,MAAAA,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,EAAG+S,YAAY;AAC9C/b,MAAAA,WAAUgJ,KAAK,cAAA,EAAgB,CAAGzI,EAAAA,YAAY+G;AAG9C,UAAIiO,IAAIvV,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,EAAGtI,WAAWyvC;AAErD,UAAIqtB,cAAcx9D,WAAUomB,mBAAAA;AAC5B,UAAGo3C,aAAY;AACdA,oBAAYj9D,YAAUP,WAAU0iB,UAAU1iB,WAAUyV,QAAQ,OAASzV,EAAAA,WAAU6V,WAAW7V,WAAU+V,WAAW/V,WAAUyV,KACzH;AAAA,MAAA;AAEDzV,MAAAA,WAAU8mC,YAAY,CAAA;AACtB,eAAS9+B,IAAI,GAAGA,IAAIuN,EAAEtN,SAAS,GAAGD,KAAK;AACtChI,QAAAA,WAAU8mC,UAAU9+B,CAAAA,IAAKuN,EAAEvN,CAAAA;AAAAA,MAC3B;AAAA,IACD;AAED,aAASw/E,YAAYiD,SAAAA;AACpB,UAAIjoF,OAAMtC,SAASqP,eAAek7E;AAClC,YAAM3hF,aAAa9I,WAAUqI,WAAWC,cAAc,kBAAA,EAAoBoC;AAC1E,UAAItD,SAASpH,WAAUqR,KAAKvI;AAC5B,UAAI1B,SAAS;AACZA,iBAAS;AACV,UAAIH,QAAQjH,WAAUoR,KAAKpR,WAAU6I,GAAGg9E,iBAAiB7lF,WAAU6I,GAAGi9E,wBAAwB;AAC9F,UAAI7+E,QAAQ;AACXA,gBAAQ;AACTzE,MAAAA,KAAI2E,MAAMC,SAASA,SAAS;AAC5B5E,MAAAA,KAAI2E,MAAMF,QAAQA,QAAQ;AAC1BzE,MAAAA,KAAI2E,MAAMf,WAAW;AACrB5D,MAAAA,KAAI2E,MAAM+L,MAAMpK,aAAa;AAC7B,UAAI9I,WAAU4B,OAAOgO,KAAK;AACzBpN,QAAAA,KAAI2E,MAAMujF,cAAe1qF,WAAU6I,GAAGg9E,iBAAiB7lF,WAAU6I,GAAGi9E,wBAAwB,IAAK;AAAA,MACpG,OAAS;AACNtjF,QAAAA,KAAI2E,MAAMwjF,aAAc3qF,WAAU6I,GAAGg9E,iBAAiB7lF,WAAU6I,GAAGi9E,wBAAwB,IAAK;AAAA,MAChG;AACDtjF,MAAAA,KAAI2E,MAAMyjF,YAAa5qF,WAAU6I,GAAGC,aAAa,IAAK;AAAA,IACtD;AAED9I,IAAAA,WAAUmlF,WAAW,SAASrlF,MAC7BE;AAAAA,MAAAA,WAAUwC,IAAI4mF;AACd,UAAI9B,QAAOtnF,WAAUgJ,KAAKu+E,SAAS,CACnC;AAAA,UAAIsD;AAGJ7qF,MAAAA,WAAU6V,YAAY7V,WAAU4B,OAAOqlF,aAAcjnF,WAAUqP,aAAAA;AAC/DrP,MAAAA,WAAU+V,YAAY/V,WAAU4B,OAAOkpF,WAAW9qF,WAAUyF,KAAKT,IAAIhF,WAAUqP,gBAAgB,GAAG,MAAA;AAElGrP,MAAAA,WAAUuR,cAAc;AACxBqrD,oBAAc98D,IAEd;AAAA,UAAIA,MAAM;AACTsqF,sBAAAA;AACAF,qBACA5C;AAAAA,QAAAA,MAAKngF,MAAMgC,UAAU;AAGrBq+E,oBAAY;AACZqD,sBAAc7qF,WAAUwC,IAAI8M,KAAKy6E,UAEjC;AAAA,YAAIl2C,SAAS7zC,WAAU4nC;AACvB,iBAAS5/B,IAAI,GAAGA,IAAI6rC,OAAO5rC,QAAQD,KAAK;AACvC,cAAKhI,CAAAA,WAAUwC,IAAIwmF,SAASn1C,OAAO7rC,CAAAA,EAAG5H,EAAK,GAAA;AAC1C+pF,wBAAYt2C,OAAO7rC,CAAAA,CAAAA;AAAAA,UACnB;AAAA,QACD;AAAA,MAEJ,OAAS;AACNs/E,QAAAA,MAAKngF,MAAMgC,UAAU;AAAA,MACrB;AACDu8E,aAAOC,KAAK1/E,MAAM8kF,QAAQ/qF,WAAUwC,IAAI8M,MAAM,QAAA;AAE9C,UAAItP,WAAUwC,IAAI4mF,0BAA0B,KAAKyB,aAAa;AAC7D7qF,QAAAA,WAAUwC,IAAI8M,KAAKs6E,UAAUiB,WAC7B;AAAA,MAAA;AAED,UAAI7qF,WAAUqqF,oBAAoB;AACjCW,oBAAYhrF,WAAUqqF,kBAAAA;AAAAA,MACtB;AAAA,IACH;AAEC,QAAIW,cAAc,SAASxqB,UAAAA;AAC1BxgE,MAAAA,WAAUwC,IAAI8M,KAAKs6E,UAAU5pF,WAAUwC,IAAIumF,QAAQvoB,QACnDxgE,CAAAA;AAAAA,MAAAA,WAAU8B,UAAU,WAAW,CAAC0+D,QAAAA,CAAAA;AAAAA,IAClC;AAEC,QAAI2pB,cAAc,SAASlkF,QAAO2jF,WAAWqB,cAAAA;AAC5C,UAAI/C,QAAQloF,WAAU4B,OAAOukF;AAC7B,UAAIlgF,OAAMyiF,OAAOziF,OAAM0iF,KAAK;AAC3BT,gBAAQ,IAAIxC,OAAOC,KAAKO,OAAOjgF,OAAMyiF,KAAKziF,OAAM0iF,GAChD;AAAA,MAAA;AACD,UAAIhnF,WAAU3B,WAAU0iB,UAAUkkE,YAAY3gF,OAAM2T,YAAY3T,OAAMiU,UAAUjU;AAChF,UAAKjG,CAAAA,WAAUqW,YAAY;AAE1BrW,QAAAA,WAAUwC,IAAI2mF,qBAAqBljF,OAAM7F,MAAMuB;AAE/C,YAAI3B,WAAUwC,IAAIwmF,SAAS/iF,OAAM7F,EAChCJ;AAAAA,UAAAA,WAAUwC,IAAIwmF,SAAS/iF,OAAM7F,EAAImqF,EAAAA,OAAO,IAEzCvqF;AAAAA,QAAAA,WAAUwC,IAAIwmF,SAAS/iF,OAAM7F,EAAMJ,IAAAA,WAAUy5D,IAAI2rB,QAAQK,aAAa,EACrEr/E,UAAU8hF,OACV1lF,KAAKxC,WAAUwC,IAAI8M,KAGpBo2E,CAAAA;AAAAA,eAAOC,KAAK1/E,MAAMgiF,YAAYjoF,WAAUwC,IAAIwmF,SAAS/iF,OAAM7F,EAAK,GAAA,SAAS,WACxEJ;AAAAA,UAAAA,WAAUwC,IAAIymF,YAAYa,WAAW9pF,WAAUwC,IAAI2mF,qBAAqBljF,OAAM7F,EAAAA,CAAAA;AAC9EJ,UAAAA,WAAUwC,IAAIymF,YAAY3rD,KAAKt9B,WAAUwC,IAAI8M,MAAMtP,WAAUwC,IAAIwmF,SAAS/iF,OAAM7F;AAChFJ,UAAAA,WAAUqqF,qBAAqBpkF,OAAM7F;AACrCJ,UAAAA,WAAU0oC,YAAAA;AAAAA,QACd,CACG1oC;AAAAA,QAAAA,WAAUwC,IAAIumF,QAAQ9iF,OAAM7F,EAAM8nF,IAAAA;AAElC,YAAI0B;AAAW5pF,UAAAA,WAAUwC,IAAI8M,KAAKs6E,UAAU5pF,WAAUwC,IAAIumF,QAAQ9iF,OAAM7F,EACxE,CAAA;AAAA,YAAI6qF;AAAcjrF,UAAAA,WAAU8B,UAAU,WAAW,CAACmE,OAAM7F,EAAAA,CAAAA;AAAAA,MACxD;AAAA,IACH;AAECJ,IAAAA,WAAUgE,YAAY,WAAW,SAAS5D,KAAIqoE,UAC7C;AAAA,UAAIpoE,KAAKoV,SAAS,OAAO;AACxBzV,QAAAA,WAAUqqF,qBAAqBjqF;AAC/B,iBAAS4H,IAAI,GAAGA,IAAIhI,WAAU8mC,UAAU7+B,QAAQD,KAAK;AACpDhI,UAAAA,WAAU8mC,UAAU9+B,GAAGvD,YAAY;AACnC,cAAIzE,WAAU8mC,UAAU9+B,CAAAA,EAAGwL,aAAaxT,WAAU4B,OAAO8iC,eAAoBtkC,KAAAA,KAAI;AAChFJ,YAAAA,WAAU8mC,UAAU9+B,CAAAA,EAAGvD,aAAa;AAAA,UACpC;AAAA,QACD;AACD,YAAIzE,WAAUwC,IAAIumF,QAAQ3oF,GAAAA,KAAOJ,WAAUwC,IAAIwmF,SAAS5oF,GAAK,GAAA;AAC5DJ,UAAAA,WAAUwC,IAAI8M,KAAKs6E,UAAU5pF,WAAUwC,IAAIumF,QAAQ3oF,GACnDslF,CAAAA;AAAAA,iBAAOC,KAAK1/E,MAAM8kF,QAAQ/qF,WAAUwC,IAAIwmF,SAAS5oF,MAAK,OACtD;AAAA,QAAA;AAAA,MACD;AACD,aAAO;AAAA,IACT,CAAA;AAEC,QAAI8qF,qBAAqB,SAASjlF,QACjC;AAAA,YAAMo/E,WAAWrlF,WAAUy5D,IAAI2rB,QAAQC;AACvC,UAAIp/E,OAAM4gF,kBAAkBxB,UAAU;AACrCA,iBAAS+C,QACR,EACC+C,SAAWllF,OAAM4gF,gBACjBuE,UAAYprF,WAAUoa,IAAAA,EAAMgZ,SAE7B,EAAA,GAAA,SAASi1D,SAAS9sD,QAAAA;AACjB,cAAI2sD,QAAQ,CAAA;AACZ,cAAI3sD,UAAUmqD,OAAOC,KAAK2C,eAAeC,IAAI;AAC5CL,oBAAQloF,WAAU8B,UAAU,mBAAmB,CAACmE,OAAM7F,EAAAA,CAAAA;AACtD,gBAAK8nF,CAAAA,SAASA,UAAU;AACvBA,sBAAQloF,WAAU4B,OAAOukF;AAAAA,UAChC,OAAY;AACN+B,oBAAQG,QAAQ,CAAA,EAAGG,SAASC;AAAAA,UAC5B;AACDxiF,UAAAA,OAAMyiF,MAAMR,MAAMQ,IAAAA;AAClBziF,UAAAA,OAAM0iF,MAAMT,MAAMS,IAAAA;AAElB3oF,UAAAA,WAAUqqF,qBAAqBpkF,OAAM7F;AAErCJ,UAAAA,WAAUonF,gBAAgB;AAC1BpnF,UAAAA,WAAU8B,UAAU,kBAAkB,CAACmE,OAAM7F,IAAI6F,MACjDkkF,CAAAA;AAAAA,sBAAYlkF,QAAO,MAAM,IACzB;AAAA,QAAA,CAAA;AAAA,MAEL,OAAS;AACNkkF,oBAAYlkF,QAAO,MAAM,IACzB;AAAA,MAAA;AAAA,IACH;AAEC,QAAIolF,uBAAuB,SAASplF,QAAAA;AACnC,YAAMo/E,WAAWrlF,WAAUy5D,IAAI2rB,QAAQC;AACvC,UAAIp/E,OAAM4gF,kBAAkBxB,UAAU;AACrCA,iBAAS+C,QACR,EACC+C,SAAWllF,OAAM4gF,gBACjBuE,UAAYprF,WAAUoa,IAAAA,EAAMgZ,SAE7B,EAAA,GAAA,SAASi1D,SAAS9sD,QAAAA;AACjB,cAAI2sD,QAAQ,CAAA;AACZ,cAAI3sD,UAAUmqD,OAAOC,KAAK2C,eAAeC,IAAI;AAC5CL,oBAAQloF,WAAU8B,UAAU,mBAAmB,CAACmE,OAAM7F,EAAAA,CAAAA;AACtD,iBAAK8nF,SAASA,UAAU;AACvBA,sBAAQloF,WAAU4B,OAAOukF;AAAAA,UAChC,OAAY;AACN+B,oBAAQG,QAAQ,CAAA,EAAGG,SAASC;AAAAA,UAC5B;AACDxiF,UAAAA,OAAMyiF,MAAMR,MAAMQ,IAAAA;AAClBziF,UAAAA,OAAM0iF,MAAMT,MAAMS,IAAAA;AAClB3oF,UAAAA,WAAUonF,gBAAgB;AAC1BpnF,UAAAA,WAAU8B,UAAU,kBAAkB,CAACmE,OAAM7F,IAAI6F,MACjD,CAAA;AAAA,QAAA,CAAA;AAAA,MAEF;AAAA,IACH;AAEC,QAAIqlF,SAAS,SAAS9wD,QAAQrpB,QAAQq+C,QAAQ3xC,QAAAA;AAC7CzT,iBAAW,WACV;AAAA,YAAGpK,WAAUqK,YAAW;AACvB,iBAAO;AAAA,QACP;AACD,YAAIkhF,MAAM/wD,OAAOruB,MAAMgF,QAAQq+C,MAC/Bh1B;AAAAA,iBAASrpB,SAASq+C,SAAS;AAC3B,eAAO+7B;AAAAA,MACV,GAAK1tE,UAAS,CACd;AAAA,IAAA;AAEC7d,IAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAAI6F,QACpD;AAAA,UAAA,CAAK5F,KAAK+mF,eAAe;AACxB,YAAInhF,SAAQjG,WAAUwV,SAASpV,GAAAA;AAC/B,YAAK6F,OAAM2T,aAAa5Z,WAAU6V,aAAa5P,OAAMiU,WAAWla,WAAU6V,aAAe5P,OAAM2T,aAAa5Z,WAAU+V,aAAa9P,OAAMiU,WAAWla,WAAU+V,aAAe9P,OAAM2T,WAAWrC,QAAAA,KAAavX,WAAU6V,aAAa5P,OAAMiU,SAAS3C,QAAAA,KAAavX,WAAU+V,WAAY;AACnR,cAAI/V,WAAUwC,IAAIwmF,SAAS5oF,GAC1BJ;AAAAA,YAAAA,WAAUwC,IAAIwmF,SAAS5oF,GAAImqF,EAAAA,OAAO,IACnCW;AAAAA,6BAAmBjlF;QACvB,OAAU;AACNjG,UAAAA,WAAUqqF,qBAAqB;AAC/BrqF,UAAAA,WAAUwC,IAAIymF,YAAYqB;AAC1B,cAAItqF,WAAUwC,IAAIwmF,SAAS5oF,GAC1BJ;AAAAA,YAAAA,WAAUwC,IAAIwmF,SAAS5oF,KAAImqF,OAAO,IAAA;AAAA,QACnC;AAAA,MACD;AAEAlqF,aAAK+mF,gBAAgB;AACtB,aAAO;AAAA,IACT,CAAA;AAGCpnF,IAAAA,WAAUgE,YAAY,mBAAmB,SAASwnF,cAAcC,cAAAA;AAC/D,UAAIxlF,SAAQjG,WAAUwV,SAASi2E,YAAAA;AAC/B,UAAKxlF,OAAM2T,aAAa5Z,WAAU6V,aAAa5P,OAAMiU,WAAWla,WAAU6V,aAAe5P,OAAM2T,aAAa5Z,WAAU+V,aAAa9P,OAAMiU,WAAWla,WAAU+V,aAAe9P,OAAM2T,WAAWrC,QAAAA,KAAavX,WAAU6V,aAAa5P,OAAMiU,SAAS3C,QAAavX,KAAAA,WAAU+V,WAAY;AACnR,YAAI/V,WAAUwC,IAAIwmF,SAASwC,YAAAA,GAAe;AACzCxrF,UAAAA,WAAUwC,IAAIwmF,SAASwC,YAAcjB,EAAAA,OAAO;iBACrCvqF,WAAUwC,IAAIwmF,SAASwC,YAAAA;AAAAA,QAC9B;AACD,YAAIxrF,WAAUwC,IAAI2mF,qBAAqBqC,YAC/BxrF;AAAAA,iBAAAA,WAAUwC,IAAI2mF,qBAAqBqC,YAC3CN;AAAAA,2BAAmBjlF,MACnB;AAAA,MAAA;AACD,aAAO;AAAA,IACT,CAECjG;AAAAA,IAAAA,WAAUgE,YAAY,gBAAgB,SAAS5D,KAAI6F;AAClD,UAAKjG,CAAAA,WAAU6rD,gBAAgB;AAC9B,YAAK5lD,OAAM2T,aAAa5Z,WAAU6V,aAAa5P,OAAMiU,WAAWla,WAAU6V,aAAe5P,OAAM2T,aAAa5Z,WAAU+V,aAAa9P,OAAMiU,WAAWla,WAAU+V,aAAe9P,OAAM2T,WAAWrC,QAAAA,KAAavX,WAAU6V,aAAa5P,OAAMiU,SAAS3C,QAAAA,KAAavX,WAAU+V,WAAY;AACnR,cAAI/V,WAAUwC,IAAIwmF,SAAS5oF,GAC1BJ;AAAAA,YAAAA,WAAUwC,IAAIwmF,SAAS5oF,GAAImqF,EAAAA,OAAO,IACnCW;AAAAA,6BAAmBjlF;QACnB;AAAA,MACD;AACD,aAAO;AAAA,IACT,CAQCjG;AAAAA,IAAAA,WAAUgE,YAAY,uBAAuB,SAAS5D,KAAI6F,QAAAA;AACzD,UAAIjG,WAAUwC,IAAIwmF,SAAS5oF,GAAK,GAAA;AAC/BJ,QAAAA,WAAUwC,IAAIwmF,SAAS5oF,GAAAA,EAAImqF,OAAO,IAAA;AAAA,MAClC;AACDvqF,MAAAA,WAAUqqF,qBAAqB;AAC/BrqF,MAAAA,WAAUwC,IAAIymF,YAAYqB,MAC1B;AAAA,aAAO;AAAA,IACT,CAAA;AAECtqF,IAAAA,WAAU0rF,uBAAuB;AACjC1rF,IAAAA,WAAUgE,YAAY,kBAAkB,SAASiC,QAChD;AAAA,UAAIjG,WAAU4B,OAAOmkF,8BAA8B9/E,OAAM4gF,kBAAAA,CAAmB5gF,OAAMyiF,OAAAA,CAAQziF,OAAM0iF,KAAK;AACpG3oF,QAAAA,WAAU0rF,wBAAwB;AAClCJ,eAAOD,sBAAsBhrF,MAAM,CAAC4F,SAAQjG,WAAU0rF,oBAAAA;AAAAA,MACtD;AACD,aAAO;AAAA,IACT,CAAA;AAEC1rF,IAAAA,WAAUgE,YAAY,iBAAiB,SAAS5D,KAAIyhB,QACnD;AAAA,UAAIA,QAAQ;AACX,YAAI7hB,WAAUwC,IAAIwmF,SAAS5oF,GAAAA;AAC1BJ,UAAAA,WAAUwC,IAAIwmF,SAAS5oF,GAAAA,EAAImqF,OAAO,IAAA;AACnCvqF,QAAAA,WAAUwC,IAAIymF,YAAYqB,MAAAA;AAAAA,MAC1B;AACD,aAAO;AAAA,IACT,CAAA;AAAA,EACA;AAGA;ACrhBe,SAAQqB,QAAC3rF,YAAAA;AAExB,QAAM4rF,mBAAmB5rF,WAAU+T,qBAAAA;AAGnC/T,EAAAA,WAAU4B,OAAOghD,eAAe,EAC/BipC,aAAa,KAEd7rF;AAAAA,EAAAA,WAAU8rF,wBAAwB,CAAA;AAClC9rF,EAAAA,WAAU4D,iBAAiB,SAAS3D,KAAK8rF,OAAOC,YAC/C;AAAA,QAAIrS,MAAM;AACV,QAAIl0E,OAAOxF,IAAIwF,QAASzF,WAAUqP,aAClC;AAAA,QAAA,OAAW5J,QAAQ;AAClBA,aAAOpF,KAAKqiB,UAAUkgB,SAASn9B,IAAAA;AAEhC,QAAKsmF,CAAAA,OAAO;AACX,UAAIE,OAAOhsF,IAAIwI;AACf,UAAIyS,MAAMjb,IAAImG;AAEd,UAAW6lF,OAAAA,QAAQ;AAClBA,eAAO/rF,SAASqP,eAAe08E,IAAAA;AAEhC,UAAW/wE,OAAAA,OAAO;AACjBA,cAAMhb,SAASqP,eAAe2L,GAC/B;AAAA,UAAIA,QAAeA,OAAAA,IAAI9I,QAAQ,eAAA,OAAsB8I,IAAI7I,SAAS,cAAc;AAC/E,YAAI65E,OAAOlsF,WAAUkc,YAAY2b,UAAU3c;AAC3CA,cAAM,EACLhI,KAAKg5E,KAAKh5E,MAAMgI,IAAIxQ,cACpB0H,MAAM85E,KAAK95E,KAEZ;AAAA,MAAA;AACD,UAAK65E,CAAAA;AACJA,eAAOjsF,WAAUmsF,cAAcjxE,GAAAA;AAEhCy+D,YAAMt5E,KAAK+rF,iBAAiBH,MAAMxmF,MAAMxF,GAAAA;AAExC,UAAK05E,CAAAA,IAAI3zE,iBAAiB;AACzB2zE,YAAI3zE,kBAAkB;AACtB4lF,yBAAiB13E,OAAOylE,KAAK,UAAS,SAAUxlE,GAC/C;AAAA,cAAIS,MAAMT,EAAEU,UAAUV,EAAEW;AAExB,cAAIu3E,OAAOrsF,WAAUkc;AACrB,cAAImwE,KAAKn1E,QAAQtC,KAAK,iBAAoB,GAAA;AACzC,gBAAKy3E,CAAAA,KAAKn1E,QAAQtC,KAAK,YAAkBy3E,KAAAA,CAAAA,KAAKn1E,QAAQtC,KAAK,gBAAgB;AAE1E,kBAAI03E,WAAWD,KAAKn1E,QAAQtC,KAAK,kBACjC;AAAA,kBAAI23E,gBAAgBD,SAAS94E,aAAa,gBAC1C;AAAA,kBAAI4hD,UAAUp1D,WAAU0iB,UAAU4G,WAAWijE;AAE7CvsF,cAAAA,WAAUwsF,eAAensF,IACzBL;AAAAA,cAAAA,WAAUysF,aAAapsF,MAAM+0D,SAAS,oBAAA;AACtC/0D,mBAAKqsF,aAAat3B;AAClB,kBAAI/0D,KAAKssF,KAAKpmF;AAASlG,qBAAKssF,KAAKpmF,QAAQmU,KAAK1a,YAAWo1D,SAAS/0D,IAAAA;AAAAA,YAClE;AAAA,UACD;AAAA,QACD,GAAE4M,KAAK0sE;MACR;AAAA,IAEH,OAAQ;AACNA,YAAMt5E,KAAK+rF,iBAAiBL,MAAMziF,YAAY7D,MAAMxF,KAAK8rF,KAAAA;AACzD/rF,MAAAA,WAAUwsF,eAAe7S,GACzB;AAAA,IAAA;AAED,QAAI35E,WAAU4B,OAAOghD,aAAaipC,aAAa;AAC9C,UAAIzyE,QAAQpZ,WAAUyF,KAAKy6B,YAAYz6B,IACvC;AAAA,UAAI4T,MAAMrZ,WAAUyF,KAAKT,IAAIoU,OAAO,GAAG;AACvC,UAAI8uB,MAAM7nC,KAAK+oC,UAAUhwB,OAAOC,GAAAA;AAChC,UAAI2uB,SAAS3nC,KAAK,YAAYA,KAAKoV,KACnC;AAAA,UAAIm3E,cAAc,CAAA;AAClB,eAAS5kF,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,YAAI2M,KAAKuzB,IAAIlgC,CAAAA;AACb,YAAIggC,UAAAA,CAAWA,OAAOrzB,GAAGvU,IAAIuU,EAAAA;AAC5B;AACD,YAAI8E,IAAI9E,GAAGiF;AACX,YAAIH,EAAElC,QAAY6B,IAAAA,MAAM7B;AACvBkC,cAAIL;AACLK,YAAIzZ,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAK+D,EAAElC,QAAAA,CAAAA,CAAAA;AACxC,eAAOkC,IAAI9E,GAAGuF,UAAU;AACvB,cAAA,CAAI0yE,aAAanzE,CAAI,GAAA;AACpBmzE,wBAAanzE,CAAAA,CAAAA,IAAK;AAClBpZ,iBAAKosF,aAAa9S,KAAKlgE,GAAG,gBAC1B;AAAA,UAAA;AACDA,cAAIpZ,KAAKoF,KAAKT,IAAIyU,GAAG,GAAG;AACxB,cAAIA,EAAElC,QAAa8B,KAAAA,IAAI9B,QACtB;AAAA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEDlX,SAAKwsF,yBAAyBlT,GAE9BA;AAAAA,QAAIgT,OAAO1sF;AACX,QAAIA,IAAI6sF,SAASd;AAChB3rF,WAAKyrF,sBAAsB/8E,KAAK4qE,GAEjC;AAAA,QAAA,CAAIA,IAAIgT,KAAKI,iBAAgB;AAC5BpT,UAAIgT,KAAKI,kBAAkB/sF,WAAUgE,YAAY,SAAS,SAASgpF;AAClEhtF,QAAAA,WAAUitF,eAAetT,KAAKA,IAAIgT,KAAKlnF,IAAAA;AAAAA,MAC1C,CACE;AAAA,IAAA;AAED,QAAGpF,KAAKuB,OAAOwJ,uBAAuB/K,KAAKuB,OAAO6N,2BAA0B;AAC3EkqE,UAAIv0E,aAAa,QAAQ,aACzB;AAAA,IAAA;AAED,WAAOu0E;AAAAA,EACR;AACA35E,EAAAA,WAAUmsF,gBAAgB,SAASjxE,KAAAA;AAClC,QAAK7a,CAAAA,KAAKy5E,YAAY;AACrBz5E,WAAKy5E,aAAa55E,SAASC,cAAc,KAAA;AACzCE,WAAKy5E,WAAWr1E,YAAY;AAC5BzE,MAAAA,WAAUiG,MAAM5F,KAAKy5E,YAAY,SAAS,SAAS3lE,GAAKA;AAAAA,UAAE0C,eAAe;AAAA,MAAO;AAChF3W,eAASM,KAAKC,YAAYJ,KAAKy5E,UAC/B;AAAA,IAAA;AAED,QAAG5+D,IAAI9I,MAAK;AACX/R,WAAKy5E,WAAW3yE,MAAMiL,OAAO8I,IAAI9I,OAAO;AAAA,IACxC;AACD,QAAG8I,IAAI7I,OAAM;AACZhS,WAAKy5E,WAAW3yE,MAAMkL,QAAQ6I,IAAI7I,QAAQ;AAAA,IAC1C;AACD,QAAG6I,IAAIhI,KAAI;AACV7S,WAAKy5E,WAAW3yE,MAAM+L,MAAMgI,IAAIhI,MAAM;AAAA,IACtC;AACD,QAAGgI,IAAIqZ,QAAO;AACbl0B,WAAKy5E,WAAW3yE,MAAMotB,SAASrZ,IAAIqZ,SAAS;AAAA,IAC5C;AAEDl0B,SAAKy5E,WAAWoT,WAAW,oBAAIx3E;AAE/B,WAAOrV,KAAKy5E;AAAAA,EACb;AACA95E,EAAAA,WAAUmtF,kBAAkB,SAASxT,KAAKl0E,MAAAA;AACzC,QAAWA,OAAAA,QAAQ;AAClBA,aAAOzF,WAAU0iB,UAAUkgB,SAASn9B,IAErC;AAAA,QAAA,CAAIA,OAAQk0E,CAAAA,IAAI5jE,cAActQ,OAAQk0E,CAAAA,IAAI9jE;AACzC,aAAO;AAER,QAAI6S,QAAQixD,IAAIrxE,cAAc,gBAAkB6nC,EAAAA,WAAW,CAE3D;AAAA,QAAIi9C,UAAU;AACd,QAAIC,MAAM,IAAI33E,KAAKikE,IAAI9jE,SAAAA;AACvB,WAAOxV,CAAAA,KAAKoF,KAAKT,IAAIqoF,KAAK,GAAG,MAAA,KAAA,CAAY5nF,MAAK;AAC7C4nF,YAAMhtF,KAAKoF,KAAKT,IAAIqoF,KAAK,GAAG,MAAA;AAC5BD;AAAAA,IACA;AAED,QAAIt/C,KAAK9tC,WAAU4B,OAAOq+B;AAC1B,QAAIpgC,OAAO4F,KAAK+4B,OAAAA,MAAasP,KAAK,IAAI,OAAOA,KAAK,IAAI;AAEtD,UAAMw/C,UAAU5kE,MAAMpgB,cAAc,gCAAgC8kF,UAAU,oCAAoCvtF,MAAM,CAAA,GAAA;AACxH,QAAGytF,SAAS;AACX,aAAOA,QAAQ5sF;AAAAA,IACjB,OAAQ;AACN,aAAO;AAAA,IACP;AAAA,EACF;AACAV,EAAAA,WAAUysF,eAAe,SAAS9S,KAAKl0E,MAAMuB,KAAAA;AAC5C,QAAI1D,MAAMjD,KAAK8sF,gBAAgBxT,KAAKl0E,IAAAA;AACpC,QAAInC,CAAAA;AACH;AAEDA,QAAImB,aAAa,MAAMuC;AAAAA,EACxB;AACAhH,EAAAA,WAAUwsF,iBAAiB,SAAS7S,KAAKl0E,MAAMuB,KAC9CvB;AAAAA,WAAOA,QAAQk0E,IAAI+S;AACnB1lF,UAAMA,OAAO;AACb,QAAA,CAAKvB;AAAM;AACX,QAAIwI,MAAK5N,KAAK8sF,gBAAgBxT,KAAKl0E,IACnC;AAAA,QAAA,CAAIwI;AACH;AACDA,IAAAA,IAAGxJ,aAAawJ,IAAGxJ,aAAa,IAAI6S,QAAQuW,OAAO7mB,KAAK,GAAA,CAAA;AAAA,EACzD;AACAhH,EAAAA,WAAUutF,iBAAiB,SAAStmF,OAAAA;AACnC,QAAI4d,OAAQ5d,SAAS;AACrB,QAAImL,OAAO;AAEX,QAAIo7E,gBAAgBttF,SAASC,cAAc,KAC3C;AAAA,QAAIstF,aAAaptF,KAAKoF,KAAKghB,WAAWzmB,WAAUqP,aAChD,CAAA;AAAA,aAASrH,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3B3H,WAAKya,MAAM9S,CAAAA,IAAK8K,KAAKkI,MAAM6J,QAAQ,IAAI7c,EAAAA;AACvC3H,WAAKwjB,iBAAiB7b,GAAGoK,MAAMq7E,YAAYD,aAAAA;AAC3CC,mBAAaptF,KAAKoF,KAAKT,IAAIyoF,YAAY,GAAG,KAAA;AAC1C5oE,cAAQxkB,KAAKya,MAAM9S,CACnBoK;AAAAA,cAAQ/R,KAAKya,MAAM9S,CACnB;AAAA,IAAA;AACDwlF,kBAAch7C,UAAU/tC,aAAa;AACrC,WAAO+oF;AAAAA,EACR;AACAxtF,EAAAA,WAAUitF,iBAAiB,SAAShtF,KAAKklB,IACxCllB;AAAAA,QAAI0sF,KAAKlnF,OAAO0f;AAChB9kB,SAAKuD,eAAe3D,IAAI0sF,MAAM1sF,KAAK,IAAA;AAAA,EACpC;AACAD,EAAAA,WAAU0tF,mBAAmB,CAAC,UAAU,QAAA;AACxC1tF,EAAAA,WAAUosF,mBAAmB,SAASnsF,KAAKklB,IAAIwnE,MAAMgB,UAAAA;AAEpD,QAAIC,KAAK5tF,WAAU0iB;AACnB,QAAI0c,OAAO/+B,KAAKya;AAChBza,SAAKya,QAAQ;AACb,QAAI+yE,QAAQxtF,KAAKoV;AACjBpV,SAAKoV,QAAQ;AACb,QAAIq4E,QAAQztF,KAAK4b;AACjB5b,SAAK4b,SAAS,EAAC7U,QAAQ,EACvB;AAAA,QAAI2mF,QAAQ,IAAIr4E,KAAKrV,KAAKwV,SAAAA;AAC1B,QAAIm4E,QAAQ,IAAIt4E,KAAKrV,KAAK0V,SAC1B;AAAA,QAAIk4E,QAAQ,IAAIv4E,KAAK1V,WAAU2V,KAC/B;AAAA,QAAIu4E,QAAQN,GAAG3kE;AACf,QAAIklE,QAAQ9tF,KAAKkc;AAAmBlc,SAAKkc,oBAAoB;AAC7DqxE,OAAG3kE,YAAY2kE,GAAGxnD;AAElBjhB,SAAK9kB,KAAKoF,KAAKy6B,YAAY/a;AAC3B,QAAIqoE,gBAAgBntF,KAAKktF,eAAettF,IAAI2K,cAAc,IAAIvK,KAAKuB,OAAOghD,aAAaC,OAEvF;AAAA,QAAIppC;AACJ,QAAIk0E,UAAS;AACZl0E,UAAIk0E;AAAAA,IACN,OAAQ;AACNl0E,UAAIvZ,SAASC,cAAc,KAC3BsZ;AAAAA,QAAEhV,YAAY;AAAA,IACd;AACDgV,MAAErU,aAAa,QAAQ/E,KAAKukC,SAASG,WAAW5f;AAChD1L,MAAElZ,YAAY,iEAEXP,WAAU4B,OAAOgO,MAAM,oBAAoB,QAC5C,iCAA+B49E,gBAAgBA,cAAcjtF,YAAY,MAAI;AAG/E,QAAIiO,SAASiL,EAAEnR,cAAc,iBAAA;AAC7B,QAAI8lF,aAAa30E,EAAEnR,cAAc;AACjC,QAAI9H,OAAOiZ,EAAEnR,cAAc,gBAE3BkG;AAAAA,WAAOjO,YAAYF,KAAKqiB,UAAUwjB,eAAe/gB,EAAAA;AACjD,QAAIwnE,KAAKrmF,YAAY;AACpB,UAAI+nF,yBAAyB,SAAS7nF,UAAUgX,MAC/C;AAAA,YAAI/X,OAAOzF,WAAUyF,KAAKT,IAAIwB,SAASmP,OAAO6H,MAAM,OACpDxd;AAAAA,QAAAA,WAAUitF,eAAezmF,UAAUf,IACnC;AAAA,YAAIzF,WAAU2V,MAAMgQ,SAAAA,KAAcnf,SAASmP,MAAMgQ,SAAc3lB,KAAAA,WAAU2V,MAAM+P,YAAAA,KAAiBlf,SAASmP,MAAM+P,YAAAA,GAAe;AAC7H1lB,UAAAA,WAAU6sF,yBAAyBrmF,QAAAA;AAAAA,QACnC;AAAA,MACJ;AAEE,UAAI8nF,iBAAiB,CAAC,uBAAuB,qBAAA;AAC7C,UAAIC,YAAY,CAAC,uCAAuC;AACxD,UAAIC,QAAQ,CAAE,IAAG,CACjB;AAAA,UAAIjoF,UAAU,SAASiX;AACtB,eAAO,WAAA;AACN,cAAImvE,KAAKG,MAAM;AACd,gBAAIvxB,YAAYv7D,WAAU8rF;AAC1B,qBAAS5/C,IAAI,GAAGA,IAAIqvB,UAAUtzD,QAAQikC,KAAK;AAC1CmiD,qCAAuB9yB,UAAUrvB,CAAI1uB,GAAAA,IAAAA;AAAAA,YACrC;AAAA,UACN,OAAW;AACN,gBAAIxd,WAAU4B,OAAOgO,KAAK;AACzB4N,qBAAAA,CAAQA;AAAAA,YACR;AACD6wE,mCAAuB50E,GAAG+D,IAAAA;AAAAA,UAC1B;AAAA,QACL;AAAA,MACA;AACE,UAAI7J,SAAS,CAAC3T,WAAU0T,OAAOC,OAAOoP,MAAM/iB,WAAU0T,OAAOC,OAAOzL,IACpE;AAAA,eAAS4a,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3B,YAAI2rE,QAAQvuF,SAASC,cAAc,KAEnCsuF;AAAAA,cAAMhqF,YAAY6pF,eAAexrE,CAEjC9iB;AAAAA,QAAAA,WAAU4T,SAASoP,wBAAwByrE,OAAO96E,OAAOmP,CAAAA,CAAAA;AAEzD2rE,cAAMtnF,MAAM6nC,UAAUu/C,UAAUzrE;AAChC2rE,cAAMluF,YAAYF,KAAKqtF,iBAAiB5qE,CACxCtU;AAAAA,eAAO/N,YAAYguF,KAAAA;AACnB7C,yBAAiB13E,OAAOu6E,OAAO,SAASloF,QAAQioF,MAAM1rE,CACtD,CAAA,CAAA;AAAA,MAAA;AAAA,IACD;AACDrJ,MAAE9D,QAAQ,IAAID,KAAKyP,EAEnB1L;AAAAA,MAAEgN,cAActB,GAAGqZ,YAAYn+B,KAAKuB,OAAOq+B,kBAAkB,IAAI,KAAK,KAAK;AAE3E,QAAIvb,KAAKjL,EAAE5D,YAAYxV,KAAKoF,KAAKghB,WAAWtB,EAAAA;AAC5C1L,MAAE1D,YAAY1V,KAAKoF,KAAKT,IAAIyU,EAAE5D,WAAW,GAAG,MAAA;AAE5CxV,SAAKwmB,mBAAmBrmB,MAAM2kB,IAAIT,IAAI,CAEtC;AAAA,QAAA,CAAKipE;AACJ1tF,UAAIQ,YAAYgZ,CAAAA;AAEjB20E,eAAWjnF,MAAMC,SAAUgnF,WAAWj+C,WAAW,CAAGzlC,EAAAA,eAAe,IAAK;AAExE,QAAI2lB,WAAWrwB,WAAUoa,IACzBpa;AAAAA,IAAAA,WAAU4T,SAASwc,cAAc5hB,QAAQ6hB,QAAAA;AACzCrwB,IAAAA,WAAU4T,SAAS0c,YAAY7W,EAAEnR,cAAc,gBAAA,GAAmB+nB,QAClErwB;AAAAA,IAAAA,WAAU4T,SAAS2c,WAAW69D,UAAAA;AAE9B,QAAIM,aAAaN,WAAW/kE,iBAAiB,gBAC7C;AAAA,aAAQrhB,IAAI,GAAGA,IAAI0mF,WAAWzmF,QAAQD,KAAI;AACzChI,MAAAA,WAAU4T,SAAS8c,gBAAgBg+D,WAAW1mF,CAC9C,CAAA;AAAA,IAAA;AACD,QAAI2mF,WAAWnuF,KAAK6oB,iBAAiB,qBACrC;AAAA,QAAI4tC,YAAY,IAAIvhD,KAAKgP,EAAAA;AACzB,aAAQ1c,IAAI,GAAGA,IAAI2mF,SAAS1mF,QAAQD,KAAI;AAEvChI,MAAAA,WAAU4T,SAAS4c,eAAem+D,SAAS3mF,CAAAA,GAAI,IAAI0N,KAAKuhD,SACxDA,CAAAA;AAAAA,kBAAYj3D,WAAUyF,KAAKT,IAAIiyD,WAAW,GAAG,KAC7C;AAAA,IAAA;AAEDj3D,IAAAA,WAAU4T,SAASwc,cAAc5hB,QAAQ6hB,QAGzChwB;AAAAA,SAAKya,QAAQskB;AACb/+B,SAAKoV,QAAQo4E;AACbxtF,SAAK4b,SAAS6xE;AACdztF,SAAKwV,YAAYk4E;AACjB1tF,SAAK0V,YAAYi4E;AACjBhuF,IAAAA,WAAU2V,QAAQs4E;AAClBL,OAAG3kE,YAAYilE;AACf7tF,SAAKkc,oBAAoB4xE;AACzB,WAAO10E;AAAAA,EACR;AACAzZ,EAAAA,WAAUmG,kBAAkB,SAASwzE,KAAK1lD,OAAAA;AACzC,QAAK0lD,CAAAA,OAAOt5E,KAAKy5E,cAAcz5E,KAAKy5E,WAAWp5E,YAAY;AAC1D,UAAIuzB,UAAS,oBAAKve,QAAQ6B,QAAYlX,IAAAA,KAAKy5E,WAAWoT,SAAS31E,QAAY,IAAA;AAC1EoiE,cAAMt5E,KAAKy5E,WAAWp5E;AAAAA,IACvB;AACD,QAAKi5E,CAAAA;AAAK;AACViS,qBAAiB53E,UAEjB2lE;AAAAA,QAAIp5E,YAAY;AAChB,QAAIo5E,IAAIrwE;AACPqwE,UAAIrwE,WAAWiC,YAAYouE,GAAAA;AAC5B,QAAIt5E,KAAKy5E;AACRz5E,WAAKy5E,WAAW3yE,MAAM+L,MAAM;AAE7B,QAAGymE,IAAIgT,QAAQhT,IAAIgT,KAAKI;AACvB/sF,MAAAA,WAAU0N,YAAYisE,IAAIgT,KAAKI,eACjC;AAAA,EAAA;AACA/sF,EAAAA,WAAUkG,oBAAoB,WAC7B;AAAA,QAAI7F,KAAKy5E,cAAcz0D,SAAShlB,KAAKy5E,WAAW3yE,MAAM+L,KAAK,EAAM,IAAA;AAChE,aAAO7S,KAAKy5E;AACb,WAAO;AAAA,EACR;AAEA95E,EAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AACzChE,IAAAA,WAAUiG,MAAM/F,SAASM,MAAM,SAAS,WAAaR;AAAAA,MAAAA,WAAUmG,gBAAkB;AAAA,IAAA,CAAA;AAAA,EAClF,GAAG,EAACqG,MAAM,KAIVxM,CAAAA;AAAAA,EAAAA,WAAUq3C,YAAYhR,gBAAgB,EACrC93B,QAAQ,SAAS0pC,KAChB;AAAA,QAAI3wC,OAAO;AAEX,QAAIixC,MAAMv4C,WAAU4B;AACpB,QAAI42C,KAAKn4C,KAAKoF,KAAK4Z,UAAUrf,WAAUqP,aAEvC,CAAA;AAAA,QAAIopC,OAAO,KAAK,IAAI3c,QAAQ;AAC5B,QAAIyc,IAAIG,mBAAmB;AAC1B5c,cAAQ,KAAKyc,IAAIx+B;AACjB0+B,aAAO,KAAKF,IAAIn6B,YAAY;AAAA,IAC5B;AACDo6B,OAAGv+B,SAAS6hB,QAAQ,EAAA;AAEpBmc,QAAIiB,eAAe,CACnB5xC;AAAAA,YAAQ;AACR,aAASU,IAAI8zB,OAAO9zB,IAAIywC,MAAMzwC,KAAK3H,KAAKuB,OAAO+X,YAAY,GAAG;AAC7D,UAAIq+B,OAAO33C,KAAKqiB,UAAU4iB,YAAYkT;AACtClxC,cAAQ,oBAAoBU,IAAI,OAAOgwC,OAAO;AAC9CC,UAAIiB,aAAanqC,KAAK/G,CACtBwwC;AAAAA,WAAKn4C,KAAKoF,KAAKT,IAAIwzC,IAAIn4C,KAAKuB,OAAO+X,WAAW,QAAA;AAAA,IAC9C;AACDrS,YAAQ;AAIR,WAAO,wDAAwDA,OAAO,2EAA2EA,OAAO;AAAA,EACxJ,GACDkwC,WAAW,SAASllC,MAAMpL,OAAOyN,IAAI/S;AAEpC,QAAIgtF,SAASt8E,KAAKc,qBAAqB,OACvC;AAAA,QAAIy7E,UAAUv8E,KAAKc,qBAAqB,QACxC;AAAA,QAAIwG,YACHM;AAED,QAAI/L,aAAa,SAAS2gF,KAAKrpF,MAAMspF,QAAAA;AACpC/uF,MAAAA,WAAUiG,MAAM6oF,KAAK,SAAS,WAC7B9uF;AAAAA,QAAAA,WAAUmG,gBAAgB,MAAM,IAAA;AAChCnG,QAAAA,WAAU4D,eAAe,EACxBwC,UAAU0oF,KACVrpF,MAAM,IAAIiQ,KAAKrV,KAAKsV,KACpBrP,GAAAA,YAAY,MACZC,SAAS,SAASyoF,UAAAA;AACjBF,cAAI5nF,QAAQlH,WAAU0iB,UAAU2jB,cAAc2oD,QAC9CF;AAAAA,cAAIn5E,QAAQ,IAAID,KAAKs5E,QAAAA;AACrBhvF,UAAAA,WAAUmG,gBAAAA;AACV,cAAInG,WAAU4B,OAAO8X,kBAAkB1Z,WAAU4B,OAAO63C,iBAAiBs1C,WAAW,GAAG;AACtFE,mCAAAA;AAAAA,UACA;AAAA,QACD,EAAA,CAAA;AAAA,MAEN;IACA;AAEE,QAAIjvF,WAAU4B,OAAOw3C,UAAU;AAC9B,UAAK9mC,CAAAA,KAAK+mC,WAAW;AACpB,YAAI/xC,OAAO,qFAAqFtH,WAAU0T,OAAOC,OAAOylC,WAAW;AACnI,YAAKp5C,CAAAA,WAAU4B,OAAOmhC;AACrBz7B,iBAAOgL,KAAKmgC,gBAAgBlyC,YAAY+G;AACzCgL,aAAKmgC,gBAAgBlyC,YAAY+G;AACjCgL,aAAK+mC,YAAY;AAAA,MACjB;AACD,UAAI9iB,QAAQjkB,KAAKmgC,gBAAgBr/B,qBAAqB,OAAS,EAAA,CAAA;AAE/D,UAAI87E,iBAAkBlvF,WAAUyF,KAAKuZ,UAAUrK,GAAGiF,UAAAA,MAAgB,KAAK5Z,WAAUyF,KAAKuZ,UAAUrK,GAAGuF,QAAAA,MAAc;AACjHqc,YAAM+iB,UAAU41C;AAEhBL,cAAQ,CAAA,EAAGt1C,WAAWhjB,MAAM+iB;AAC5Bu1C,cAAQ,CAAA,EAAGt1C,WAAWhjB,MAAM+iB;AAE5B,UAAA,CAAK/iB,MAAMvwB,iBAAiB;AAC3BuwB,cAAMvwB,kBAAkB;AACxBhG,QAAAA,WAAUiG,MAAMswB,OAAO,SAAS,WAC/B;AAAA,cAAIA,MAAM+iB,YAAY,MAAM;AAC3B,gBAAIr5C,MAAM,CAAA;AACVD,YAAAA,WAAUq3C,YAAYhR,cAAciR,UAAUhlC,MAAMrS,GAAAA;AAEpD2Z,yBAAa5Z,WAAUyF,KAAK4Z,UAAUpf,IAAI2Z,UAC1CM;AAAAA,uBAAWla,WAAUyF,KAAK4Z,UAAUpf,IAAIia,QAAAA;AAExC,gBAAKA,CAAAA,YAAAA,CAAaN,cAAgBM,CAAAA,YAAAA,CAAaN,eAAejF,GAAGuF,SAASF,SAAe,MAAA,KAAKrF,GAAGuF,SAASmE,WAAiB,MAAA;AAC1HnE,yBAAWla,WAAUyF,KAAKT,IAAIkV,UAAU,GAAG,KAC5C;AAAA,UAAA;AAED,cAAId,QAAQQ,cAAcjF,GAAGiF;AAC7B,cAAIP,MAAMa,YAAYvF,GAAGuF;AACzBi1E,yBAAeP,OAAO,CAAIx1E,GAAAA,KAAAA;AAC1B+1E,yBAAeP,OAAO,CAAIv1E,GAAAA,GAAAA;AAC1Bw1E,kBAAQ,CAAA,EAAG3nF,QAAQkS,MAAMY,SAAAA,IAAa,KAAKZ,MAAMiF,WACjDwwE;AAAAA,kBAAQ,CAAG3nF,EAAAA,QAAQmS,IAAIW,SAAa,IAAA,KAAKX,IAAIgF,WAAAA;AAE7CwwE,kBAAQ,CAAA,EAAGt1C,WAAWhjB,MAAM+iB;AAC5Bu1C,kBAAQ,CAAA,EAAGt1C,WAAWhjB,MAAM+iB;AAAAA,QAEjC,CAAA;AAAA,MACI;AAAA,IACD;AACD,QAAIt5C,WAAU4B,OAAO8X,kBAAkB1Z,WAAU4B,OAAO63C,eAAe;AAEtE,UAAIw1C,yBAAyB,WAC5B;AAAA,YAAA,EAAMjvF,WAAU4B,OAAO63C,iBAAiBz5C,WAAU4B,OAAO8X,iBAAgB;AAExE;AAAA,QACA;AACDE,qBAAa5Z,WAAUyF,KAAKT,IAAI4pF,OAAO,GAAGj5E,OAAOk5E,QAAQ,CAAG3nF,EAAAA,OAAO,QACnEgT;AAAAA,mBAAW,IAAIxE,KAAKkE,WAAWyR,QAAarrB,IAAAA,WAAU4B,OAAO8X,iBAAiB,KAAK,GAAA;AAEnFk1E,eAAO,CAAA,EAAG1nF,QAAQlH,WAAU0iB,UAAU2jB,cAAcnsB,QAAAA;AACpD00E,eAAO,CAAA,EAAGj5E,QAAQ3V,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAKwE,QAEpD20E,CAAAA;AAAAA,gBAAQ,CAAG3nF,EAAAA,QAAQgT,SAASF,SAAa,IAAA,KAAKE,SAASmE,WAAAA;AAAAA,MAC3D;AAEG,UAAA,CAAIwwE,QAAQ,CAAA,EAAG7oF,iBAAgB;AAC9B6oF,gBAAQ,CAAGxnF,EAAAA,iBAAiB,UAAU4nF,sBAAAA;AAAAA,MACtC;AAAA,IACD;AAED,aAASE,eAAeL,KAAKrpF,MAAMspF,QAAAA;AAClC5gF,iBAAW2gF,KAAKrpF,MAAMspF,MAAAA;AACtBD,UAAI5nF,QAAQlH,WAAU0iB,UAAU2jB,cAAc5gC,IAAAA;AAC9CqpF,UAAIn5E,QAAQ3V,WAAUyF,KAAK4Z,UAAU,IAAI3J,KAAKjQ,IAC9C,CAAA;AAAA,IAAA;AAED0pF,mBAAeP,OAAO,IAAIj6E,GAAGiF,YAAY,CACzCu1E;AAAAA,mBAAeP,OAAO,CAAA,GAAIj6E,GAAGuF,UAAU;AACvC/L,iBAAa,WAAA;AAAA,IAAW;AAExB,aAASihF,eAAe3pF,MAAAA;AACvB,UAAIk0C,cAAc/3C,OAAOs3C;AACzB,UAAIU,eAAen0C,KAAKuU,SAAa,IAAA,KAAKvU,KAAK4Y,WAAAA;AAC/C,UAAIw7B,cAAcD;AAClB,UAAIE,cAAc;AAElB,eAAS5N,IAAI,GAAGA,IAAIyN,YAAY1xC,QAAQikC,KAAK;AAC5C,YAAI6N,MAAMJ,YAAYzN;AACtB,YAAI6N,QAAQH,cAAc;AACzBE,wBAAc;AACd;AAAA,QACA;AACD,YAAIC,MAAMH;AACTC,wBAAcE;AAAAA,MACf;AAED,UAAKD,EAAAA,eAAeD;AACnB,eAAQ;AAET,aAAO,cAAgBD,eAAeC;AAAAA,IACtC;AAEDg1C,YAAQ,GAAG3nF,QAAQkoF,eAAez6E,GAAGiF,UAAAA;AACrCi1E,YAAQ,CAAA,EAAG3nF,QAAQkoF,eAAez6E,GAAGuF,QAErC;AAAA,EAAA,GACDo9B,WAAW,SAAShlC,MAAMqC,IAAAA;AACzB,QAAIi6E,SAASt8E,KAAKc,qBAAqB,OACvC;AAAA,QAAIy7E,UAAUv8E,KAAKc,qBAAqB,QAAA;AAExCuB,OAAGiF,aAAa5Z,WAAUyF,KAAKT,IAAI4pF,OAAO,CAAA,EAAGj5E,OAAOk5E,QAAQ,GAAG3nF,OAAO,QAAA;AACtEyN,OAAGuF,WAAWla,WAAUyF,KAAKT,IAAI4pF,OAAO,GAAGj5E,OAAOk5E,QAAQ,CAAG3nF,EAAAA,OAAO,QAEpE;AAAA,QAAIyN,GAAGuF,YAAYvF,GAAGiF;AACrBjF,SAAGuF,WAAWla,WAAUyF,KAAKT,IAAI2P,GAAGiF,YAAY5Z,WAAU4B,OAAO+X,WAAW,QAAA;AAC7E,WAAO,EACNC,YAAY,IAAIlE,KAAKf,GAAGiF,UAAAA,GACxBM,UAAU,IAAIxE,KAAKf,GAAGuF,QAEvB,EAAA;AAAA,EAAA,GACD8Q,OAAO,SAAS1Y,MAAAA;AAAAA,EACf,EAEFtS;AAAAA,EAAAA,WAAUqvF,eAAe,SAAS7oF,UAAU8oF,UAAAA;AAC3C,QAAIpzC,SAAS,WAAA;AACZ,UAAIz2C,OAAOzF,WAAU2V;AACrB,UAAI45E,UAAU,IAAI75E,KAAKjQ,KAAK8R,QAC5B,CAAA;AAAA,UAAI+3E;AAAUC,kBAAUD,SAASC,OAAAA;AACjCA,cAAQpvD,QAAQ,CAAA;AAChBngC,MAAAA,WAAUitF,eAAezmF,UAAU+oF,OAAAA;AACnC,aAAO;AAAA,IACT;AAECvvF,IAAAA,WAAUgE,YAAY,gBAAgBk4C,MAAAA;AACtCl8C,IAAAA,WAAUgE,YAAY,SAASk4C,MAAAA;AAC/Bl8C,IAAAA,WAAUgE,YAAY,gBAAgBk4C,MAAAA;AACtCl8C,IAAAA,WAAUgE,YAAY,kBAAkBk4C,MAAAA;AACxCl8C,IAAAA,WAAUgE,YAAY,kBAAkBk4C,MACxCA;AAAAA,WAAAA;AAAAA,EACD;AAEAl8C,EAAAA,WAAU6sF,2BAA2B,SAASrmF;AAC7C,QAAIqmB,QAAQ7sB,WAAUqG,SAAAA;AACtB,QAAI+d,OAAOyI,MAAMjX;AACjB,QAAIyO,KAAKwI,MAAM/W;AACf,QAAIhW,OAAO+sB,MAAM/sB;AAEjB,QAAIogC,cAAclgC,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKlP,SAASmP,KAC/D,CAAA;AAAA,QAAI65E,YAAYxvF,WAAUyF,KAAKT,IAAIk7B,aAAa,GAAG,OAAA;AAEnD,QAAIuvD,cAAc,EACjB19D,OAAQ,MACRnvB,MAAO,MACPN,QAAS,MACTC,MAAO,KAAA;AAGR,QAAGktF,YAAY3vF,IAAAA,KAAUskB,KAAK7M,QAAAA,KAAa2oB,YAAY3oB,QAAAA,KAAa8M,GAAG9M,QAAAA,KAAai4E,UAAUj4E,QAAAA,GAAW;AACxG;AAAA,IACA;AAED,QAAIw8D,UAAU3vD;AACd,WAAM2vD,QAAQx8D,QAAAA,IAAY8M,GAAG9M,QAAAA,GAAU;AACtC,UAAI2oB,YAAY3oB,QAAAA,KAAaw8D,QAAQx8D,QAAai4E,KAAAA,YAAYzb,SAAS;AACtE/zE,QAAAA,WAAUysF,aAAajmF,UAAUutE,SAAS;MAC1C;AACDA,gBAAU/zE,WAAUyF,KAAKT,IAAI+uE,SAAS,GAAG,KAAA;AAAA,IACzC;AAAA,EACF;AAEA/zE,EAAAA,WAAUgE,YAAY,iBAAiB,WACtChE;AAAAA,IAAAA,WAAUmG,gBAAgB,MAAM;EACjC,CAEAnG;AAAAA,EAAAA,WAAUgE,YAAY,aAAa,WAClChE;AAAAA,IAAAA,WAAUmG,gBACX;AAAA,EAAA,CAAA;AAEA;AC7jBe,SAAQupF,YAAC1vF,YAExBA;AAAAA,EAAAA,WAAUgE,YAAY,oBAAmB,WACxChE;AAAAA,IAAAA,WAAU6I,GAAGyH,eAAe;AAE5B,QAAIuvB,MAAM7/B,WAAUkiB;AACpBliB,IAAAA,WAAUkiB,mBAAiB,WAC1B;AAAA,UAAIiY,OAAO95B,KAAK2I,KAAK,cAAA,EAAgB,CACrCmxB;AAAAA,WAAKz5B,WAAWmhE,SAAS;AAEzBhiC,UAAI1zB,MAAMnM,YAAUoM,SAAAA;AAIpB,UAAIhF,SAASie,SAAS8U,KAAKhzB,MAAMC,MACjC+yB;AAAAA,WAAKhzB,MAAMC,SAAO;AAClB+yB,WAAKhzB,MAAMC,SAAO+yB,KAAKuQ,eAAa;AAEpCrqC,WAAKiP,KAAKnI,MAAMC,SAAS/G,KAAKiP,KAAKxF,eAAeqwB,KAAKuQ,eAAetjC,SAAS;AAAA,IACjF;AAEC,QAAIuoF,QAAM3vF,WAAU6mB;AACpB7mB,IAAAA,WAAU6mB,qBAAmB,SAAS1iB,GAAEC,GAAEC,GAAEoV,GAC3C;AAAA,UAAI/B,QAAQ,EAAC5N,cAAa,IAAA;AAC1B6lF,YAAMxjF,MAAMnM,YAAU,CAAC0X,OAAMtT,GAAEC,GAAEoV,CACjCtV,CAAAA;AAAAA,QAAE5D,YAAYmX,MAAMnX;AAAAA,IACtB;AAAA,EAEA,CAEA;AAAA;AC5Be,SAAQqvF,wBAAC5vF,YACvBkkE;AAAAA,iBAAe1/D,MAAM,gBAAgBxE,WAAUyB,MAChD;AAAA;ACJe,SAAQouF,YAAC7vF,YAGxB;AAAA,WAAS8vF,gBAAgB/8C,QAAQnxC,QAAAA;AAChC,QAAIiG,QAAQ7H,WAAU66B,KAAKa,MAAM,eAAeqX,OAAO3V,MACvD;AAAA,QAAI6sB,MAAM,CAAA;AACV,aAASjiD,IAAI,GAAGA,IAAIH,MAAMI,QAAQD,KAAK;AACtCiiD,UAAIpiD,MAAMG,CAAAA,EAAGwL,aAAa5R,OAAOgoB,MAAAA,CAAAA,IAAW;AAAA,IAC5C;AACD,WAAOqgC;AAAAA,EACR;AAEA,WAAS8lC,iBAAiBh9C,QAAQnxC,QAAAA;AACjC,QACC;AAAA,UAAIiG,QAAQ6H,KAAKqrB,MAAMgY,OAAO3V,OAAO94B,YACrC;AAAA,UAAI2lD,MAAM,CAAA;AACV,eAASjiD,IAAI,GAAGA,IAAIH,MAAMI,QAAQD,KAAK;AACtC,YAAIisC,SAASpsC,MAAMG,CAEnBiiD;AAAAA,YAAIhW,OAAO/sC,SAAS+sC,OAAOxqB,OAAOwqB,OAAO7zC,EAAAA,IAAM;AAAA,MAC/C;AACD,aAAO6pD;AAAAA,IACP,SAAM91C,GAAAA;AACN,aAAO;AAAA,IACP;AAAA,EACF;AAEAnU,EAAAA,WAAUq3C,YAAY,aAAA,IAAe,EACpC9oC,QAAO,SAAS0pC,KAAAA;AACf,QAAIjxC,MAAM,+CAA6CixC,IAAI5qC;AAC3D,QAAA,CAAA,CAAK4qC,IAAI8tB,UAAS;AACjB/+D,aAAO;AAAA,IACP;AAED,QAAIgpF,UAAU,iBAAehpF,MAAI,0CAAwCixC,IAAI7wC,SAAO;AACpF,aAASY,IAAE,GAAGA,IAAEiwC,IAAIpuB,QAAQ5hB,QAAQD,KAAK;AACxCgoF,iBAAW,0CAAwC/3C,IAAIpuB,QAAQ7hB,CAAAA,EAAGyhB,MAAI,QAAMwuB,IAAIpuB,QAAQ7hB,CAAGyL,EAAAA,QAAM;AAAA,IACjG;AACDu8E,eAAW;AACX,WAAOA;AAAAA,EACP,GACDx4C,WAAU,SAASllC,MAAKpL,OAAMyN,IAAG/S,QAEhC;AAAA,QAAIquF,YAAY39E,KAAKc,qBAAqB,OAAA;AAC1C,aAAQpL,IAAE,GAAEA,IAAEioF,UAAUhoF,QAAOD,KAAK;AACnCioF,gBAAUjoF,CAAAA,EAAGsxC,UAAU;AAAA,IACvB;AAED,aAAS42C,aAAajmC,KACrB;AAAA,UAAIgmC,aAAY39E,KAAKc,qBAAqB,OAC1C;AAAA,eAAQpL,KAAE,GAAEA,KAAEioF,WAAUhoF,QAAQD,MAAK;AACpCioF,QAAAA,WAAUjoF,EAAGsxC,EAAAA,UAAAA,CAAAA,CAAa2Q,IAAIgmC,WAAUjoF,EAAGd,EAAAA,KAAAA;AAAAA,MAC3C;AAAA,IACD;AAED,QAAIipF,OAAO,CAAA;AACX,QAAIx7E,GAAG/S,OAAOgoB,MAAS,GAAA;AACtB,UAAIy+D,WAAW1zE,GAAG/S,OAAOgoB,MAAU,IAAA,IAAIhlB,MAAMhD,OAAOwuF,aAAapwF,WAAU4B,OAAOkwC,qBAAqB,GAAA;AACvG,eAAS9pC,IAAI,GAAGA,IAAIqgF,QAAQpgF,QAAQD,KAAK;AACxCmoF,aAAK9H,QAAQrgF,MAAM;AAAA,MACnB;AACDkoF,mBAAaC,IAAAA;AAAAA,IAChB,OAAS;AACN,UAAInwF,WAAUqW,cAAezU,CAAAA,OAAOyuF;AACnC;AACD,UAAIC,aAAapwF,SAASC,cAAc;AACxCmwF,iBAAW7rF,YAAY;AACvB6rF,iBAAWnpF,MAAM6nC,UAAU;AAC3B18B,WAAK7R,YAAY6vF,UAEjB;AAAA,UAAI71D,OAAM,CACT74B,OAAOyuF,YACNzuF,OAAOyuF,WAAWj5E,QAAQ,GAAS,KAAA,KAAI,MAAM,KAC9C,mBAAmBxV,OAAOgoB,SAAS,MAAMjV,GAAGvU,KAAK,UAAUJ,WAAUoa,IACpEtW,CAAAA,EAAAA,KAAK,EAEP9D;AAAAA,MAAAA,WAAU66B,KAAK0B,IAAI9B,MAAK,SAASsY,QAAAA;AAChC,YAAIlpB,UAAUkmE,iBAAiBh9C,MAAAA;AAC/B,aAAIlpB,SAAQ;AACXA,oBAAUimE,gBAAgB/8C,QAAQnxC,MAAAA;AAAAA,QAClC;AACDsuF,qBAAarmE;AACbvX,aAAK/G,YAAY+kF,UACrB;AAAA,MAAA,CAAA;AAAA,IACG;AAAA,EACD,GACDh5C,WAAU,SAAShlC,MAAKqC,IAAG/S,QAAAA;AAC1B,QAAIouF,UAAU,CACd;AAAA,QAAIC,YAAY39E,KAAKc,qBAAqB,OAC1C;AAAA,aAAQpL,IAAE,GAAEA,IAAEioF,UAAUhoF,QAAOD,KAAK;AACnC,UAAGioF,UAAUjoF,CAAAA,EAAGsxC;AACf02C,gBAAQjhF,KAAKkhF,UAAUjoF,GAAGd,KAC3B;AAAA,IAAA;AACD,WAAO8oF,QAAQlsF,KAAKlC,OAAOwuF,aAAapwF,WAAU4B,OAAOkwC,qBAAqB,GAC9E;AAAA,EAAA,GAED9mB,OAAM,SAAS1Y,MACd;AAAA,EAAA,EAAA;AAGF;ACpGe,SAAQi+E,YAACvwF,YAGvB;AAAA,WAASwwF,OAAOvwF,KAAAA;AACf,QAAIsV,IAAI;;AACRA,MAAEmV,YAAYzqB;AACd,WAAOsV;AAAAA,EACP;AAED,MAAIsqB,MAAM7/B,WAAUqiB;AACpBriB,EAAAA,WAAUqiB,QAAM,SAASoY,MAAIrW,MAC5BqW;AAAAA,IAAAA,OAAIA,QAAKp6B,KAAK+0C;AACd,QAAW3a,OAAAA,QAAO,UAAS;AAC1B,UAAIllB,IAAIi7E,OAAOnwF,KAAKkmC,OAAAA;AACpB,eAASv+B,IAAE,GAAGA,IAAIyyB,KAAIxyB,QAAQD,KAAK;AAClC3H,aAAKkmC,UAAQ,IAAIhxB;AACjBsqB,YAAInlB,KAAKra,MAAKo6B,KAAIzyB,CAAAA,GAAGoc,IACrB;AAAA,MAAA;AAAA,IACD;AACAyb,UAAI1zB,MAAM9L,MAAK+L,SAClB;AAAA,EAAA;AAEA;ACtBe,SAAQqkF,IAACzwF,YAAAA;AAEvB,MAAIu4C,MAAM,EACTm4C,QAAS,MAAA;AAIV,WAASC,SAASh8E,IACjB;AAAA,QAAI1U,MAAM,CAAA;AACV,aAASwpB,OAAO9U;AACf,UAAI8U,IAAIrS,QAAQ,GAAA,MAAS;AACxBnX,YAAIwpB,GAAAA,IAAO9U,GAAG8U,GAAAA;AAEhB,QAAK8uB,CAAAA,IAAIm4C;AACDzwF,aAAAA,IAAIG;AAEZ,WAAOH;AAAAA,EACP;AAED,MAAI2wF;AACJ,WAAS/vE,cACR1W;AAAAA,iBAAaymF;AACbA,mBAAexmF,WAAW,WACzB;AAAA,UAAGpK,WAAUqK,YAAW;AACvB,eAAO;AAAA,MACP;AACDrK,MAAAA,WAAUiB,WACV;AAAA,IAAA,GAAC,CACF;AAAA,EAAA;AAED,WAAS4vF,gBAAgBlX;AACxBA,QAAIt/D,WAAW;AACfs/D,QAAItxC,cAAc;AAElBsxC,QAAI73E,UAAU,SAAS,CAAA,CAAA;AAAA,EACvB;AACD,WAASgvF,iBAAiBnX,KAAAA;AACzBA,QAAItxC,cAAc;AAClB,QAAIsxC,IAAIr3D;AACPq3D,UAAIz3D,iBACLy3D;AAAAA,QAAIt/D,WAAW;AAEfs/D,QAAI73E,UAAU,SAAS,CACvB,CAAA;AAAA,EAAA;AAGD,WAASivF,QAAQC,OAChB;AAAA,WAAOz4C,IAAIm4C,SAASM,MAAM5wF,KAAK4wF,MAAMC;AAAAA,EACrC;AAEFjxF,EAAAA,WAAUkxF,WAAW,SAASr9C,QAAQjyC,QACrC;AAAA,QAAIA;AAAQ22C,YAAM32C;AAElBiyC,WAAO5mC,KAAK,UAAU,SAAS+jF,OAAOxiC,MAAAA;AACrC,UAAIyiC,MAAMF,QAAQC,KAAAA;AAClB,UAAIr8E,KAAK3U,WAAUsmC,QAAQ2qD,GAAAA,IAAOD,MAAMG,OAAAA;AACxCx8E,SAAGvU,KAAK6wF;AAERjxF,MAAAA,WAAU0zC,YAAY/+B,EACtBkM;AAAAA,kBAAAA;AAAAA,IACF,CACCgzB;AAAAA,WAAO5mC,KAAK,UAAU,SAAS+jF,OAAOI,SACrC;AAAA,UAAIH,MAAMF,QAAQC,KAClB;AAAA,UAAIhxF,WAAUsmC,QAAQ2qD,GAAAA;AACrBjxF,QAAAA,WAAUuY,YAAY04E,GACzB;AAAA,IAAA,CAAA;AAEC,QAAII,QAAQ;AACZ,aAASC,iBAAAA;AACR,UAAGtxF,WAAUqK,YAAW;AACvB,eAAO;AAAA,MACP;AACD,UAAIgnF,MAAMppF,QAAO;AAChBjI,QAAAA,WAAU+6B,MAAMs2D,OAAO,MAAA;AACvBA,gBAAQ,CACR;AAAA,MAAA;AAAA,IACD;AAEDx9C,WAAO5mC,KAAK,OAAO,SAAS+jF,OAAOI;AAClC,UAAIH,MAAMF,QAAQC,KAAAA;AAClB,UAAKhxF,CAAAA,WAAUsmC,QAAQ2qD,GAAAA,GAAK;AAC3B,YAAIt8E,KAAMq8E,MAAMG,OAAAA;AAChBx8E,WAAGvU,KAAK6wF;AACRjxF,QAAAA,WAAU0zC,YAAY/+B,EAEtB08E;AAAAA,cAAMtiF,KAAK4F,EAAAA;AACX,YAAI08E,MAAMppF,UAAU;AACnBmC,qBAAWknF,gBAAe,CAC3B;AAAA,MAAA;AAAA,IACH,CAECz9C;AAAAA,WAAO5mC,KAAK,WAAW,SAAShN,KAC/B;AAAA,UAAIA,eAAesxF,SAASC;AAC3BX,wBAAgB7wF,UACnB;AAAA,IAAA,CAAA;AACC6zC,WAAO5mC,KAAK,QAAQ,SAAShN,KAAAA;AAC5B,UAAIA,eAAesxF,SAASC;AAC3BV,yBAAiB9wF,UACpB;AAAA,IAAA,CAAA;AACC6zC,WAAO5mC,KAAK,SAAS,SAAShN,KAC7B;AAAA,UAAIA,eAAesxF,SAASC;AAC3BV,yBAAiB9wF,UACpB;AAAA,IAAA,CAAA;AAGCA,IAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAAAA;AAChD,UAAIuU,KAAK,IAAIk/B,OAAOm9C,MAAMhxF,WAAUwV,SAASpV,GAC7CJ,CAAAA;AAAAA,MAAAA,WAAUsmC,QAAQlmC,GAAAA,IAAMuU,GAAGw8E,OAAAA;AAC3BnxF,MAAAA,WAAUsmC,QAAQlmC,KAAIA,KAAKA;AAE3B,aAAO;AAAA,IACT,CAECJ;AAAAA,IAAAA,WAAUgE,YAAY,gBAAgB,SAAS5D,KAAAA;AAC9C,UAAKyzC,CAAAA,OAAOtX,IAAIn8B,GAAAA,GAAI;AACnB,YAAI+5B,OAAOw2D,SAAS3wF,WAAUwV,SAASpV,GAAAA,CAAAA;AACvC,YAAI4wF,QAAQ,IAAIn9C,OAAOm9C,MAAM72D,IAE7B;AAAA,YAAI82D,MAAMF,QAAQC,KAClB;AAAA,YAAIC,OAAO7wF;AACVC,eAAK0mC,cAAc3mC,KAAI6wF,GACxBp9C;AAAAA,eAAO7uC,IAAIgsF,KAAAA;AACXn9C,eAAOk3C,QAAQ,iBAAiBiG,KAChC;AAAA,MAAA;AACD,aAAO;AAAA,IACT,CACChxF;AAAAA,IAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAChD;AAAA,UAAIuU,KAAKk/B,OAAOtX,IAAIn8B,GAAAA;AACpB,UAAIklD,MAAMqrC,SAAS3wF,WAAUwV,SAASpV,GAEtCuU,CAAAA;AAAAA,SAAGwqB,IAAImmB,GAAAA;AACPzR,aAAOk3C,QAAQ,oBAAoBp2E,EAEnC;AAAA,aAAO;AAAA,IACT,CAAA;AACC3U,IAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAChD;AAAA,UAAI4wF,QAAQn9C,OAAOtX,IAAIn8B,GAAAA;AACvB,UAAI4wF,OAAM;AACTn9C,eAAOk3C,QAAQ,oBAAoBiG,KAAAA;AACnCn9C,eAAOjwB,OAAOxjB,GACd;AAAA,MAAA;AACD,aAAO;AAAA,IACT,CAAA;AAAA,EACA;AAEA;ACjJe,SAAQ45D,UAACh6D,YAIvBA;AAAAA,EAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AACzC,QAAIytF,UAAO,IAAQC;AACnB,QAAI7xD,MAAM4xD,QAAQE;AAClB,QAAIC;AACJH,YAAQE,WAAW,SAASx9E,GAAAA;AAC3By9E,mBAAaz9E;AACb,aAAO0rB,IAAI1zB,MAAM9L,MAAM+L,SAAAA;AAAAA,IAC1B;AAEE,aAASylF,QAAQC,kBAAkBC,aAAaC,kBAAkBC,YAAAA;AAEjE,UAAIjyF,WAAUyN,WAAW,wBAAA,KAAA,CAA8BzN,WAAU8B,UAAU,0BAA0B,CAACgwF,kBAAkBC,aAAaC,kBAAkBC,YAAYL,UAAAA,CAAAA;AAClK;AAED,UAAIxyD,OAAOp/B,WAAUgE,YAAY,kBAAkB,SAAU5D,KAAAA;AAC5D,aAAKJ,WAAU8B,UAAU,oBAAoB,CAAC1B,KAAI0xF,kBAAkBF,UAAc,CAAA,GAAA;AACjFvxF,eAAKsW,aAAatW,KAAKoW,WAAW;AAClCpW,eAAKkY,YAAYnY,GACjB;AAAA,QAAA;AAAA,MACL;AAEG,UAAI8xF,cAAclyF,WAAU+W,cAAc66E,UAC1C;AAAA,UAAIO,aAAa,EAChBv4E,YAAY,IAAIlE,KAAKw8E,YAAYzsF,IAAAA,EAAAA;AAIlC,UAAIzF,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUyV,KAAAA,GAAQ;AAC1D,YAAI28E,eAAepyF,WAAU8O,OAAO9O,WAAUyV;AAC9C08E,mBAAWC,aAAazlE,UAAculE,IAAAA,YAAYpnE;AAElD,YAAI5P,MAAMlb,WAAUqyF,sBAAsBT,UAC1CO;AAAAA,mBAAWv4E,aAAaw4E,aAAa9kB,SAASpyD,IAAI3I,CAClD4/E;AAAAA,mBAAWj4E,WAAWla,WAAUyF,KAAKT,IAAImtF,WAAWv4E,YAAYw4E,aAAaz1E,QAAQy1E,aAAax1E,MAClG;AAAA,MAAA;AACD,UAAI5c,WAAUgP,UAAUhP,WAAUgP,OAAOhP,WAAUyV,QAAQ;AAC1D08E,mBAAWnyF,WAAUgP,OAAOhP,WAAUyV,KAAAA,EAAOmU,MAAUsoE,IAAAA,YAAYpnE;AAAAA,MACnE;AAED9qB,MAAAA,WAAUmZ,YAAYg5E,UAAAA;AAEtBnyF,MAAAA,WAAU0N,YAAY0xB,IACtB;AAAA,IAAA;AAEDqyD,YAAQa,eAAetyF,WAAUgJ,KAAK,cAAA,EAAgB,CAAI,GAAA,EACzDupF,OAAO,SAAST,kBAAkBC,aAAaC,kBAAkBC,YAChEJ;AAAAA,cAAQC,kBAAkBC,aAAaC,kBAAkBC,UAAAA;AAAAA,IACzD,GACDO,SAAS,SAAS56D,YAAY66D,aAAAA;AAC7B,aAAO76D;AAAAA,IACP,GACD86D,UAAU,SAAS96D,YAClB;AAAA,aAAOv3B;AAAAA,IACP,EAAA,CAAA;AAGF,QAAGX,OAAOizF,aAAa;AACtBjzF,aAAOizF,YAAYC,QAAQ5yF,WAAUgJ,KAAK,cAAA,EAAgB,CAAI,GAAA,EAC7D6pF,QAAQ,SAAUjoE,QAAQ/V,QAAQ4E,GAAGtF,GACpC;AAAA,YAAI2+E,eAAepzF,OAAOizF,YAAYI,UAAUnoE,MAAAA;AAChDgnE,qBAAaz9E;AACb09E,gBAAQjnE,QAAQkoE,cAAcj+E,QAAQV,EAAEU,UAAUV,EAAEW,UACpD;AAAA,MAAA,GAEDk+E,UAAU,SAAUpoE,QAAQ/V,QAAQV;AACnC,eAAOU;AAAAA,MACP,EACC,GAAA,IAAA;AAAA,IACH;AAAA,EACH,CAAA;AAEA;AC3Ee,SAAQo+E,IAACjzF,YAEvB;AAAA,MAAIiyC,IAAI51B,IACP62E,cAAc,IAAIrlE,OAAO,WAAW,MACpCslE,iBAAiB,IAAItlE,OAAO,aAAa,GAE1C;AAAA,WAASulE,WAAW1gF,KAAAA;AACnB,WAAOA,IAAI4E,QAAQ67E,gBAAgB,IAAA,EAAM77E,QAAQ47E,aAAa,EAC9D;AAAA,EAAA;AAED,WAASG,OAAO9gF,GAAG8U,QAAAA;AAClB9U,QAAI+gF,WAAW/gF,CACf8U;AAAAA,aAASisE,WAAWjsE,MACpB;AAAA,QAAA,CAAKzU,MAAMyU,MAAAA;AAAS9U,WAAK8U;AAEzB,QAAI7d,IAAI+pF,UAAUhhF,CAClBA;AAAAA,QAAIA,IAAI/I,EAAEvC,QAAQuC,EAAE1C,OAAKmrC;AACzB,WAAOr/B,MAAML,CAAAA,IAAG,SAAQ,MAAIA,IAAC;AAAA,EAC7B;AAED,WAASihF,aAAajhF,GAAG8U,QAAQosE,SAAAA;AAChClhF,QAAI+gF,WAAW/gF,CACf8U;AAAAA,aAASisE,WAAWjsE,MACpB;AAAA,QAAA,CAAKzU,MAAMyU,MAAAA,KAAWosE;AAASlhF,WAAK8U;AAEpC,QAAI7d,IAAI+pF,UAAUhhF,CAAAA;AAClBA,QAAIA,IAAI/I,EAAEvC,QAAQuC,EAAE1C,OAAKmrC;AACzB,WAAOr/B,MAAML,CAAG,IAAA,SAAQ,MAAIA,KAAG0/B,MAAKr/B,CAAAA,MAAMyU,MAAQA,IAAAA,SAAO;AAAA,EACzD;AACD,WAASksE,UAAUtsF,OAClB;AAAA,QAAI8Z,IAAI;AACR,QAAIvS,SAASxO,WAAUgJ,KAAK0qF,eAAe,CAAGvjD,EAAAA;AAC9C,QAAIh9B,MAAM3E,OAAO,CAAKA,IAAAA,OAAO,CAAG2hC,EAAAA,aAAa3hC,OAAO,CAAA,EAAG2hC;AACvD,aAASnoC,IAAI,GAAGA,IAAImL,IAAIlL,QAAQD,KAAK;AACpC,UAAIiG,MAAKkF,IAAInL,CAAAA,EAAGb,QAAQgM,IAAInL,CAAKmL,IAAAA,IAAInL,GAAGsB;AACxC,UAAIE,IAAI8pF,WAAWrlF,IAAG9G,MAAMF,KAC5B;AAAA,UAAIA,QAAQuC,GAAE;AACbvC,iBAAUuC,IAAE;AACZuX,aAAIvX,IAAE;AAAA,MACN;AAEA;AAAA,IACD;AACD,WAAO,EAAEvC,OAAO8Z,GAAGja,MAAMkB,EAAAA;AAAAA,EACzB;AAED,WAAS2rF,OAAOnhF,GAAAA;AACfA,QAAI8gF,WAAW9gF,CACf;AAAA,QAAII,MAAMJ,CAAI;AAAA,aAAO;AACrB,WAAO,MAAMA,IAAI6J;AAAAA,EACjB;AAED,WAASu3E,UAAUthF,MAAMnL,OACxB;AAAA,YAAQ7F,OAAO0J,mBAAkB1J,OAAO0J,iBAAiBsH,MAAM,IAAMnL,EAAAA,KAAAA,IAASmL,KAAKsjB,eAAatjB,KAAKsjB,aAAazuB,KAAO,IAAA,SAAQ;AAAA,EACjI;AAED,WAAS0sF,OAAOvhF,MAAMyV,GAAAA;AACrB,QAAIxV,IAAI8S,SAAS/S,KAAKnL,MAAMiL,MAAM,EAAA;AAElC,aAAS6/B,MAAK,GAAGA,MAAKjyC,WAAU8a,MAAM7S,QAAQgqC,OAAM;AACnD1/B,WAAKvS,WAAU8a,MAAMm3B;AACrB,UAAI1/B,IAAI;AAAG,eAAO0/B;AAAAA,IAClB;AACD,WAAOlqB;AAAAA,EACP;AAED,WAAS+rE,QAAQxhF,MAAMyV,GACtB;AAAA,QAAIvV,IAAI6S,SAAS/S,KAAKnL,MAAM+L,KAAK,EACjC;AAAA,aAASmJ,MAAK,GAAGA,MAAKrc,WAAUic,OAAOK,QAAQrU,QAAQoU;AACtD,UAAIrc,WAAUic,OAAOK,QAAQD,OAAM7J;AAAG,eAAO6J;AAC9C,WAAO0L;AAAAA,EACP;AAED,WAASgsE,UAAU7zC;AAClB,WAAOA,MAAM,MAAIA,MAAI,MAAM;AAAA,EAC3B;AACD,WAAS8zC,QAAQ9zC,KAChB;AAAA,WAAOA,MAAM,OAAKA,MAAI,MAAM;AAAA,EAC5B;AAED,WAAS+zC,QAAQ/zC,KAAKg0C,SAAS1lF,QAAQ2lF,QACtC;AAAA,QAAI34D,MAAM,MAAI0kB,MAAI,eAAeg0C,UAAU;AAC3C,QAAI1lF;AACHgtB,aAAO,cAAchtB,SAAS;AAC/B,QAAI2lF;AACH34D,aAAO,cAAc24D,SAAS;AAC/B34D,WAAO;AACP,WAAOA;AAAAA,EACP;AAED,WAAS44D,kBACR;AAAA,QAAI54D,MAAM;AAEV,QAAI17B,OAAOE,WAAUyV;AACrB,QAAIzV,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUyV,KAClD3V;AAAAA,aAAQE,WAAU8O,OAAO9O,WAAUyV,KAAAA,EAAOlH,UAAU,SAAU,WAAW;AAC1EitB,WAAO,kBAAkB17B,OAAO,cAAcE,WAAUgJ,KAAKqrF,aAAa,CAAG9zF,EAAAA,YAAY;AAEzF,QAAIP,WAAUyV,SAAS,eAAe;AACrC,UAAI6+E,KAAKt0F,WAAUgJ,KAAK4N,aAAa,CAAGxD,EAAAA,qBAAqB,KAC7D;AAAA,eAASpL,IAAI,GAAGA,IAAIssF,GAAGrsF,QAAQD;AAC9B,YAAIssF,GAAGtsF,CAAGvD,EAAAA,aAAa;AACtB+2B,iBAAO,aAAa43D,WAAWkB,GAAGtsF,CAAAA,EAAGzH,aAAa;AAAA,IACvD,WAAaP,WAAUyV,SAAS,YAAYzV,WAAUyV,SAAS,OAAO;AACnE,UAAI6+E,KAAKt0F,WAAUgJ,KAAK0qF,eAAe,CAAGvjD,EAAAA,WAAW,GAAGA;AAExD3U,aAAO,aAAa43D,WAAWkB,GAAG,CAAA,EAAG/zF,SAAa,IAAA,sBAAsB6yF,WAAWkB,GAAG,CAAA,EAAG/zF,SAAa,IAAA;AAAA,IACzG,WAAaP,WAAUyV,SAAS,QAAQ;AACrC,UAAI6+E,KAAKt0F,WAAUgJ,KAAK4N,aAAa,CAAGu5B,EAAAA;AACxC,eAASnoC,IAAI,GAAGA,IAAIssF,GAAGrsF,QAAQD,KAAK;AACnCwzB,eAAO,mBAAmB43D,WAAWkB,GAAGtsF,CAAAA,EAAGM,cAAc,iBAAA,EAAmB/H,SAAa,IAAA;AACzFi7B,eAAO+4D,gBAAgBD,GAAGtsF,CAAAA,EAAGM,cAAc,gBAAA,EAAkB6nC,UAC7D3U;AAAAA,eAAOg5D,UAAUF,GAAGtsF,CAAAA,EAAGM,cAAc,gBAAA,CAAA;AACrCkzB,eAAO;AAAA,MACP;AAAA,IACJ,OAAS;AACNA,aAAO;AACP,UAAI84D,KAAKt0F,WAAUgJ,KAAK0qF,eAAe,CAAA,EAAGvjD;AAC1C3U,aAAO+4D,gBAAgBD,EACvB94D;AAAAA,aAAO;AAEP,UAAIi5D,KAAKz0F,WAAUgJ,KAAK4N,aAAa,CACrC;AAAA,UAAI5W,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUyV,KAAQ,GAAA;AAC1D+lB,eAAO;AACP,iBAASxzB,IAAI,GAAGA,IAAIysF,GAAG/zF,WAAWmG,KAAKoB,QAAQD,KAAK;AACnD,cAAIiG,MAAKwmF,GAAG/zF,WAAWmG,KAAKmB,CAC5BwzB;AAAAA,iBAAO,mBAAmB43D,WAAWnlF,IAAGmb,MAAM,CAAG7oB,EAAAA,SAAAA,IAAa;AAAA,QAC9D;AACDi7B,eAAO;AACPnf,aAAKo4E,GAAG/zF,WAAWmG,KAAK,CAAA,EAAGuiB,MAAM,CAAA,EAAG1e;AAAAA,MACpC,WAAU+pF,GAAG/zF,WAAW00B,WAAW,SAAS;AAC5CoG,eAAOg5D,UAAUC,EAAAA;AAAAA,MACrB,OAAU;AACNA,aAAKA,GAAGtkD,WAAWskD,GAAGtkD,WAAWloC,SAAS,CAAA;AAC1C,eAAOwsF,GAAGhwF,UAAU2S,QAAQ,kBAAA,KAAA;AAC3Bq9E,eAAKA,GAAGhiD;AACTgiD,aAAKA,GAAGtkD;AAER3U,eAAO;AACP,iBAASxzB,IAAI,GAAGA,IAAIysF,GAAGxsF,QAAQD;AAC9BwzB,iBAAO,qBAAqB43D,WAAWqB,GAAGzsF,CAAAA,EAAGzH,SAAa,IAAA;AAC3Di7B,eAAO;AACPnf,aAAKo4E,GAAG,CAAA,EAAG/pF;AAAAA,MACX;AAAA,IACD;AACD8wB,WAAO;AACP,WAAOA;AAAAA,EACP;AAED,WAASg5D,UAAUC,IAClB;AAAA,QAAIj5D,MAAM;AACV,QAAIza,IAAI0zE,GAAGprE,iBAAiB,IAAA;AAC5B,aAASrhB,IAAI,GAAGA,IAAI+Y,EAAE9Y,QAAQD,KAAK;AAClC,UAAIskB,OAAO;AACX,UAAIlD,QAAQrI,EAAE/Y,CAAAA,EAAGqhB,iBAAiB,IAAA;AAElC,eAASvG,IAAI,GAAGA,IAAIsG,MAAMnhB,QAAQ6a;AACjCwJ,aAAKvd,KAAKqa,MAAMtG,CAAGxa,EAAAA,cAAc,iBAAmB/H,EAAAA,SAAAA;AAErDi7B,aAAO,oBAAoBpS,MAAM,CAAA,EAAG1e,eAAe,gBAAgB0oF,WAAW9mE,KAAKxoB,KAAK,GAAQ,CAAA,IAAA;AAChGuY,WAAK+M,MAAM,GAAG1e;AAAAA,IACd;AACD,WAAO8wB;AAAAA,EACP;AAED,WAAS+4D,gBAAgBD,IAAAA;AACxB,QAAII,KACHl5D,MAAM;AACP,QAAIx7B,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUyV,KAAAA,GAAQ;AAC1D,UAAIzV,WAAU8O,OAAO9O,WAAUyV,KAAAA,EAAOk/E;AACrCD,cAAMJ,GAAG,CAAGnkD,EAAAA;AAEbmkD,WAAKA,GAAG,CAAGnkD,EAAAA;AAAAA,IACX;AAED,aAASnoC,IAAI,GAAGA,IAAIssF,GAAGrsF,QAAQD;AAC9BwzB,aAAO,wBAAwB43D,WAAWkB,GAAGtsF,CAAAA,EAAGzH,SAAa,IAAA;AAC9D0xC,SAAKqiD,GAAG,GAAG1pF;AAEX,QAAI8pF,KAAK;AACR,UAAIztF,QAAQ;AACZ,UAAI2tF,YAAYN,GAAG,CAAA,EAAG1pF;AACtB,UAAIiqF,UAAU;AACd,eAAS7sF,IAAI,GAAGA,IAAI0sF,IAAIzsF,QAAQD,KAAK;AACpCwzB,eAAO,6BAA6Bq5D,UAAU,gBAAgBzB,WAAWsB,IAAI1sF,CAAGzH,EAAAA,SAAAA,IAAa;AAC7F0G,iBAASytF,IAAI1sF,CAAG4C,EAAAA;AAChB,YAAI3D,SAAS2tF,WAAW;AACvBA,uBAAcN,GAAGO,WAAWP,GAAGO,OAAAA,EAASjqF,cAAc;AACtDiqF;AAAAA,QACA;AACD5iD,aAAKyiD,IAAI,GAAG9pF;AAAAA,MACZ;AAAA,IACD;AACD,WAAO4wB;AAAAA,EACP;AAED,WAASs5D,SAASC,QACjB;AAAA,QAAIv5D,MAAM;AACV,QAAI0M,MAAMloC,WAAU8mC;AACpB,QAAIh4B,SAAS9O,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUyV,KAE5D;AAAA,QAAIzV,WAAUyV,SAAS,YAAYzV,WAAUyV,SAAS,OAAO;AAE5D,eAASzN,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD;AACnBwzB,eAAO,2BAA2B43D,WAAWlrD,IAAIlgC,CAAAA,EAAGmoC,WAAW,CAAA,EAAG5vC,SAAa,IAAA,8BAA8B6yF,WAAWlrD,IAAIlgC,GAAGmoC,WAAW,CAAA,EAAG5vC,SAAa,IAAA;AAAA,IAE1K,WAAaP,WAAUyV,SAAS,eAAe;AAE5C,eAASzN,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD;AAC/BwzB,eAAO,iBAAiB0M,IAAIlgC,CAAAA,EAAGsB,WAAWkK,aAAa,KAAS,IAAA,aAAa4/E,WAAWlrD,IAAIlgC,CAAAA,EAAGzH,SAAa,IAAA;AAAA,IAEhH,WAAaP,WAAUyV,SAAS,QAAQ;AAErC,UAAIyyB,MAAMloC,WAAU4nC,mBACpB;AAAA,eAAS5/B,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,YAAIyR,IAAIyuB,IAAIlgC,GAAG4R;AACf,YAAIH,EAAElC,QAAAA,IAAYvX,WAAU6V,UAAU0B,QACrCkC;AAAAA,cAAIzZ,WAAU6V;AAEf,eAAO4D,IAAIyuB,IAAIlgC,CAAAA,EAAGkS,UAAU;AAC3B,cAAIm4B,IAAI54B,EAAEkM,SAAa,IAAA,MAAMlM,EAAEiM,YAAAA,IAAgB1lB,WAAU6V,UAAU6P,iBAAiB1lB,WAAUg1F,YAAYC;AAC1G,cAAIp1F,MAAMG,WAAUg1F,YAAY3iD,CAAAA,IAAK54B,EAAEgH,QAAY,IAAA;AACnD,cAAIy0E,aAAaH,SAASnB,UAAU5zF,WAAUgtE,eAAevzD,CAAI,GAAA,OAAA,IAAW;AAC5E,cAAI23B,WAAW2jD,SAASnB,UAAU5zF,WAAUgtE,eAAevzD,CAAI,GAAA,iBAAA,IAAqB;AAEpF+hB,iBAAO,iBAAkB37B,MAAM,IAAK,aAAaiT,KAAKkI,MAAMnb,MAAM,CAAK,IAAA,cAAcwyC,IAAI,wBAAwBjB,WAAW,cAAc8jD,aAAa;AACvJz7E,cAAIzZ,WAAUyF,KAAKT,IAAIyU,GAAG,GAAG,KAAA;AAC7B,cAAIA,EAAElC,QAAavX,KAAAA,WAAU+V,UAAUwB,QAAAA;AACtC;AAAA,QACD;AAAA,MACD;AAAA,IACD,WAAUzI,UAAUA,OAAOP,UAAU,QAAQ;AAC7C,UAAI25B,MAAMloC,WAAUgJ,KAAK4N,aAAa,CAAA,EAAGxD,qBAAqB,IAAA;AAC9D,eAASpL,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,YAAIktF,aAAaH,SAASnB,UAAU1rD,IAAIlgC,CAAI,GAAA,OAAA,IAAW;AACvD,YAAIopC,WAAW2jD,SAASnB,UAAU1rD,IAAIlgC,CAAAA,GAAI,iBAAqB,IAAA;AAC/DwzB,eAAO,qCAAqC4V,WAAW,cAAc8jD,aAAa,gBAAgB9B,WAAWlrD,IAAIlgC,CAAAA,EAAGzH,SAAa,IAAA;AAAA,MACjI;AAAA,IACJ,OAAS;AACN,eAASyH,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,YAAImtF,IAAIC;AACR,YAAIp1F,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUyV,KAAAA,GAAQ;AAE1D0/E,eAAK9B,OAAOnrD,IAAIlgC,CAAGb,EAAAA,MAAMiL;AACzBgjF,gBAAM/B,OAAOnrD,IAAIlgC,CAAAA,EAAG4C,WAAa,IAAA;AAAA,QACtC,OAAW;AAEN,cAAIyqF,YAAYr1F,WAAU4B,OAAOqhC,wBAAwB,IAAI;AAC7DkyD,eAAK3B,aAAatrD,IAAIlgC,CAAGb,EAAAA,MAAMiL,MAAMijF,WAAW,IAChDD;AAAAA,gBAAM5B,aAAatrD,IAAIlgC,GAAGb,MAAMF,OAAOouF,SAAW,IAAA;AAAA,QAClD;AACD,YAAIziF,MAAMwiF,MAAM;AAAI;AACpB,YAAIE,KAAK3B,OAAOzrD,IAAIlgC,CAAAA,EAAGb,MAAM+L,GAAAA;AAC7B,YAAIqiF,MAAM5B,OAAOzrD,IAAIlgC,CAAAA,EAAGb,MAAMC,MAAAA;AAE9B,YAAIouF,SAASttD,IAAIlgC,CAAAA,EAAGvD,UAAUG,MAAM,GAAK,EAAA,CAAA,EAAG0S,QAAQ,YAAY;AAChE,YAAIk+E,WAAW;AAAoB;AAEnC,YAAIC,OAAOz1F,WAAUwV,SAAS0yB,IAAIlgC,CAAGwL,EAAAA,aAAaxT,WAAU4B,OAAO8iC,eACvD,CAAA;AAAA,YAAA,CAAK+wD;AAAM;AACvB,YAAI51F,MAAM41F,KAAKzsD;AACf,YAAI0sD,OAAOD,KAAKtsD;AAChB,YAAIlhC,SAASwtF,KAAKjoD,WAAW;AAE7B,YAAIxtC,WAAUyV,SAAS,SAAS;AAC/B8/E,gBAAMlwE,SAAS6iB,IAAIlgC,CAAG0C,EAAAA,cAAc,EACpC4qF;AAAAA,eAAKjwE,SAAS6iB,IAAIlgC,GAAGb,MAAM+L,KAAK,EAAMlT,IAAAA,WAAU6I,GAAGgI;AAEnDhR,gBAAMg0F,OAAO3rD,IAAIlgC,CAAInI,GAAAA,GAAAA;AACrB61F,iBAAO5B,QAAQ5rD,IAAIlgC,CAAAA,GAAI0tF,IAC5B;AAAA,QAAA,WAAe11F,WAAU8O,UAAU9O,WAAU8O,OAAO9O,WAAUyV,KAAQ,GAAA;AACjE5V,gBAAM;AACN,cAAIoO,MAAKi6B,IAAIlgC,CAAGsB,EAAAA,WAAWA,WAAWA;AACtCosF,iBAAOznF,IAAGurE;AACV,cAAImc,UAAUt5E;AACdA,eAAK6rB,IAAIlgC,CAAAA,EAAGsB,WAAWoB;AACvB4qF,eAAK3B,OAAOzrD,IAAIlgC,CAAGb,EAAAA,MAAM+L,GACzBoiF;AAAAA,gBAAMA,KAAK;AACXj5E,eAAKs5E;AAAAA,QACV,OAAW;AACN,cAAIztD,IAAIlgC,GAAGsB,cAActJ,WAAUgJ,KAAK4N,aAAa,CAAI;AAAA;AACzD,cAAI+hB,SAAS34B,WAAUgJ,KAAK,cAAA,EAAgB,CAAGmnC,EAAAA,WAAW,CAC1D;AAAA,cAAI9oB,SAASisE,WAAW36D,OAAOl0B,UAAU2S,QAAQ,kBAAwB,KAAA,KAAIuhB,OAAOxxB,MAAMiL,OAAO,CAAA;AACjG+iF,gBAAM9B,OAAOnrD,IAAIlgC,CAAAA,EAAGsB,WAAWnC,MAAMiL,MAAMiV,MAAAA;AAAAA,QAC3C;AAEDmU,eAAO,oBAAoBk6D,OAAO,YAAY71F,MAAM,aAAa21F,SAAS,UAAUL,KAAK,UAAUG,KAAK,cAAcF,MAAM,eAAeG,MAAM,YAAYttF,SAAS;AAEtK,YAAIutF,UAAU,SAAS;AACtBh6D,iBAAO,sBAAsB43D,WAAWlrD,IAAIlgC,GAAGmoC,WAAW,CAAA,EAAG5vC,SAAa,IAAA;AAC1E,cAAI20F,aAAaH,SAASnB,UAAU1rD,IAAIlgC,CAAGmoC,EAAAA,WAAW,CAAI,GAAA,OAAA,IAAW;AACrE,cAAIiB,WAAW2jD,SAASnB,UAAU1rD,IAAIlgC,CAAAA,EAAGmoC,WAAW,CAAA,GAAI,iBAAqB,IAAA;AAC7E3U,iBAAO,4BAA4B4V,WAAW,cAAc8jD,aAAa,gBAAgB9B,WAAWlrD,IAAIlgC,CAAAA,EAAGmoC,WAAW,CAAA,EAAG5vC,SAAa,IAAA;AAAA,QAC3I,OAAW;AACN,cAAI20F,aAAaH,SAASnB,UAAU1rD,IAAIlgC,CAAI,GAAA,OAAA,IAAW;AACvD,cAAIopC,WAAW2jD,SAASnB,UAAU1rD,IAAIlgC,IAAI,iBAAqB,IAAA;AAC/DwzB,iBAAO,4BAA4B4V,WAAW,cAAc8jD,aAAa,gBAAgB9B,WAAWlrD,IAAIlgC,CAAAA,EAAGzH,SAAa,IAAA;AAAA,QACxH;AACDi7B,eAAO;AAAA,MACP;AAAA,IACA;AAEF,WAAOA;AAAAA,EACP;AAED,WAASo6D,MAAMx8E,OAAOC,KAAKnW,MAAMpD,MAAM0O,QAAQ2lF,QAC9C;AAAA,QAAIY,SAAS;AACb,QAAIj1F,QAAQ,aAAa;AACxBi1F,eAAS;AACTj1F,aAAO;AAAA,IACP;AAEDA,WAAOA,QAAQ;AAEf,QAAI07B,MAAM;AACV,QAAIpiB,OAAO;AAEV,UAAIy8E,gBAAgB71F,WAAU2V;AAC9B,UAAImgF,gBAAgB91F,WAAUyV;AAC9B4D,YAAMrZ,WAAUyF,KAAKvC,OAAK,QAAA,EAAUmW,GACpCA;AAAAA,YAAMrZ,WAAUyF,KAAK,SAAOvC,OAAK,UAAUlD,WAAUyF,KAAK,SAAOvC,OAAK,MAAQmW,EAAAA,GAAAA,IAAOrZ,WAAUyF,KAAKT,IAAIqU,KAAK,GAAGnW,IAEhHs4B;AAAAA,YAAMy4D,QAAQ,SAASn0F,MAAM0O,QAAQ2lF;AACrC,eAAS4B,YAAY,IAAIrgF,KAAK0D,KAAAA,GAAAA,CAAS28E,YAAa18E,CAAAA,KAAK08E,YAAY11F,KAAKoF,KAAKT,IAAI+wF,WAAW,GAAG7yF,IAAAA,GAAO;AACvG7C,aAAKoG,eAAesvF,WAAW7yF,IAAAA;AAC/Bs4B,eAAOu4D,UAAU,MAAUK,IAAAA,gBAAAA,EAAkB98E,QAAQ,KAAU,OAAOw9E,SAASC,MAAAA,IAAUf,QAAQ,MAAA;AAAA,MACjG;AACDx4D,aAAOw4D,QAAQ,OAAA;AAEf3zF,WAAKoG,eAAeovF,eAAeC,aAAAA;AAAAA,IACtC,OAAS;AACNt6D,YAAMy4D,QAAQ,QAAQn0F,MAAM0O,QAAQ2lF,MAAUC,IAAAA,gBAAAA,EAAkB98E,QAAQ,KAAU,GAAOw9E,IAAAA,SAASC,UAAUf,QAAQ,MAAA;AAAA,IACpH;AACD,WAAOx4D;AAAAA,EACP;AACDx7B,EAAAA,WAAUg2F,aAAaJ;AACvB,WAASK,SAASz6D,KAAKf,MAAAA;AACtB,QAAIrgB,OAAMpa,WAAUoa,IAAAA;AACpB,QAAIX,IAAIvZ,SAASC,cAAc,KAC/BsZ;AAAAA,MAAEtS,MAAMgC,UAAU;AAClBjJ,aAASM,KAAKC,YAAYgZ,CAAAA;AAE1BA,MAAElZ,YAAY,eAAe6Z,OAAM,6CAA6CqgB,OAAM;AACtFv6B,aAASqP,eAAe6K,IAAK1Z,EAAAA,WAAWwG,QAAQmzB,mBAAmBmB;AACnEt7B,aAASqP,eAAe6K,IAAK87E,EAAAA,OAAAA;AAC7Bz8E,MAAEnQ,WAAWiC,YAAYkO,CAAAA;AAAAA,EACzB;AAED,WAAS08E,OAAO/8E,OAAOC,KAAKnW,MAAMu3B,MAAK36B,MAAM0O,QAAQ2lF,QACpD;AAAA,QAAI34D,MAAM;AACV,QAAU17B,OAAAA,QAAQ,UAAS;AAC1B07B,YAAM46D,gBAAgBt2F,IAAAA;AAAAA,IACzB,OAAO;AACJ07B,YAAMo6D,MAAMzpF,MAAM9L,MAAM,CAAC+Y,OAAOC,KAAKnW,MAAMpD,MAAM0O,QAAQ2lF,MAAAA,CAAAA;AAAAA,IACzD;AAED8B,aAASz6D,KAAKf,IACd;AAAA,EAAA;AAED,WAAS27D,gBAAgBC,SACxB;AAAA,QAAI76D,MAAM;AACV,aAAQxzB,IAAE,GAAGA,IAAIquF,QAAQpuF,QAAQD,KAAI;AACpCwzB,aAAO66D,QAAQruF,CAAAA,EAAG4iB,OAAOorE,WAAWK,QAAQruF,CAAAA,EAAGoR,OAAOi9E,QAAQruF,GAAGqR,KAAKg9E,QAAQruF,CAAG9E,EAAAA,MAAMmzF,QAAQruF,CAAAA,EAAGlI,MAAMu2F,QAAQruF,CAAGwG,EAAAA,QAAQ6nF,QAAQruF,CAAAA,EAAGmsF,MACtI;AAAA,IAAA;AACD34D,WAAO;AACP,WAAOA;AAAAA,EACP;AAaDx7B,EAAAA,WAAUs2F,QAAQ,SAAS77D,MAAK36B,MAAM0O,QAAQ2lF;AAC7C,WAAOgC,OAAOhqF,MAAM9L,MAAM,CAAC,MAAM,MAAM,MAAMo6B,MAAK36B,MAAM0O,QAAQ2lF,MAClE,CAAA;AAAA,EAAA;AACCn0F,EAAAA,WAAUu2F,aAAa,SAASn9E,OAAOC,KAAKnW,MAAMu3B,MAAK36B,MAAM0O,QAAQ2lF,QACpE;AAAA,QAAA,OAAW/6E,SAAS,UAAU;AAC7BA,cAAQpZ,WAAU0iB,UAAUkgB,SAASxpB,KACrCC;AAAAA,YAAMrZ,WAAU0iB,UAAUkgB,SAASvpB,GACnC;AAAA,IAAA;AAED,WAAO88E,OAAOhqF,MAAM9L,MAAM+L,SAC5B;AAAA,EAAA;AAEA;ACvYe,SAAQoqF,WAACx2F,YAExBA;AAAAA,EAAAA,WAAU4B,OAAOwiC,eAAe,CAAC,aAAa,aAC9CpkC;AAAAA,EAAAA,WAAU4B,OAAOogB,oBAAoB;AACrChiB,EAAAA,WAAU4B,OAAO60F,kBAAkB;AACnCz2F,EAAAA,WAAU6I,GAAG4H,aAAa;AAE1BzQ,EAAAA,WAAUgE,YAAY,WAAW,SAAS5D;AACzC,QAAIJ,CAAAA,WAAU4B,OAAO60F,iBAAgB;AACpC;AAAA,IACA;AACDz2F,IAAAA,WAAU02F,cAAct2F,GACxB;AAAA,WAAO;AAAA,EACR,CAAA;AAAA,GAEA,WAGC;AAAA,QAAIyzC,SAAS,CAAC,gBAAgB,gBAAgB,cAAc,uBAAuB,cAAA;AACnF,QAAI8iD,kBAAkB,WACrB32F;AAAAA,MAAAA,WAAU42F,cAAc,IACxB;AAAA,aAAO;AAAA,IACT;AACC,aAAS5uF,IAAE,GAAGA,IAAE6rC,OAAO5rC,QAAQD,KAAI;AAClChI,MAAAA,WAAUgE,YAAY6vC,OAAO7rC,CAAAA,GAAI2uF;IACjC;AAAA,EACD,GAED32F;AAAAA,EAAAA,WAAU0iB,UAAUm0E,mBAAmB,SAASz9E,OAAOC,KAAK1E,IAAAA;AAAK,WAAOA,GAAG3S,KAAK8yC,OAAO,GAAE,EAAA;AAAA,EAAI;AAC7F90C,EAAAA,WAAU0iB,UAAUo0E,qBAAqB,SAAS19E,OAAOC,KAAK1E,IAAK;AAAA,WAAOA,GAAGiE,WAAW;AAAA,EAAG;AAC3F5Y,EAAAA,WAAU0iB,UAAUq0E,kBAAkB,SAAS39E,OAAOC,KAAK1E,IAC1D;AAAA,QAAI3U,WAAUiiB,cAActN,EAAO3U,KAAAA,WAAU4B,OAAOgO,KAAI;AACvD,aAAO5P,WAAU0iB,UAAU8L,SAASpV,OAAOC,KAAK1E,EAAAA,IAAM,MAAK3U,WAAU0iB,UAAU+iB,aAAapsB,KAAKD,OAAOzE,EAAAA;AAAAA,IACxG,WAAU3U,WAAUiiB,cAActN,EAAAA,GAAK;AACvC,aAAO3U,WAAU0iB,UAAU8L,SAASpV,OAAOC,KAAK1E,EAAM,IAAA,MAAK3U,WAAU0iB,UAAU+iB,aAAarsB,OAAOC,KAAK1E,EAAAA;AAAAA,IAC1G,WAAY3U,WAAU4B,OAAOgO,KAAK;AAChC,aAAO5P,WAAU0iB,UAAU+f,UAAUppB,KAAKD,OAAOzE,EAAAA;AAAAA,IACnD,OAAQ;AACN,aAAO3U,WAAU0iB,UAAU+f,UAAUrpB,OAAOC,KAAK1E,EAAAA;AAAAA,IACjD;AAAA,EACF;AAEA3U,EAAAA,WAAU02F,gBAAgB,SAASt2F,KAClC;AAAA,QAAIA,OAAMC,KAAK22F;AAAoB;AACnC32F,SAAKu2F,cAAc;AACnB,QAAGv2F,KAAKyB,UAAU,qBAAqB,CAAC1B,GAAAA,CAAAA,MAAS,OAAM;AACtD;AAAA,IACA;AACD,QAAI8a,MAAM7a,KAAK42F,wBAAwB72F,GAAAA;AAEvC,QAAI8a,KAAI;AACP7a,WAAK62F,kBAAkB72F,KAAK82F,iBAAiBj8E,GAC7C7a;AAAAA,WAAK+2F,iBAAiBh3F,GAAAA;AACtBC,WAAKg3F,iBAAiBn8E,GAAAA;AAEtB7a,WAAKyB,UAAU,eAAe,CAAC1B,GAC/B,CAAA;AAAA,IAAA;AAAA,EACF;AAEA,GAAA,WAAA;AAEA,aAASk3F,YAAYt/C,MACpBA;AAAAA,aAAOA,QAAQ;AAEf,UAAInX,MAAMyyD,WAAWt7C,IACpBv1C,GAAAA,OAAOu1C,KAAK9a,MAAM,KAClBq6D,GAAAA;AAED,UAAI90F,MAAM;AACTA,eAAOA,KAAK,CACZ;AAAA,MAAA;AAED,cAAQA,MAAAA;AAAAA,QACP,KAAK;AACJ80F,yBAAe12D,MAAM;AACrB;AAAA,QACD,KAAK;AACJ02D,yBAAe12D;AACf;AAAA,QACD;AACC02D,yBAAe;AACf;AAAA,MAAA;AAGF,aAAOA;AAAAA,IACR;AAEAv3F,IAAAA,WAAU42F,gBAAgB,SAASY,QAAAA;AAClC,UAAIC,KAAKp3F,KAAK62F;AACd,UAAItpF,UAAUvN,KAAK22F;AACnB32F,WAAK22F,qBAAqB;AAE1B,UAAIS,MAAMA,GAAGnuF,YAAW;AACvB,YAAIrC,QAAQwwF,GAAG7sF;AACf,YAAI5K,WAAU4B,OAAOqiC,qBAAqB;AACzC5jC,eAAKyB,UAAU,oBAAoB,CAAC8L,OAAAA,CAAAA;AACpC,iBAAO6pF,GAAGnuF,WAAWiC,YAAYksF,EAAAA;AAAAA,QACjC;AAED,YAAIA,GAAGtwF,MAAMkL,SAAS;AACrBolF,aAAGtwF,MAAMiL,OAAAA,CAAQnL,QAAQ;AAAA;AAEzBwwF,aAAGtwF,MAAMkL,SAASpL,QAAQ;AAE3B,YAAIuwF,QAAQ;AACXC,aAAGnuF,WAAWiC,YAAYksF;QAC7B,OAAO;AAEJ,cAAItwF;AACJ,cAAG7F,OAAO0J,kBAAiB;AAC1B7D,oBAAQ7F,OAAO0J,iBAAiBysF,IAAI,IAAA;AAAA,UACxC,WAAYA,GAAG7hE,cAAa;AACxBzuB,oBAAQswF,GAAG7hE;AAAAA,UACX;AACD,cAAI/X,SAAQy5E,YAAYnwF,MAAM,uBAAuBmwF,YAAYnwF,MAAM,qBACvEiD,CAAAA;AAAAA,qBAAW,WACV;AAAA,gBAAGqtF,GAAGnuF,YAAW;AAChBmuF,iBAAGnuF,WAAWiC,YAAYksF,EAC1B;AAAA,YAAA;AAAA,UACD,GAAE55E,MAAAA;AAAAA,QACH;AAEDxd,aAAKyB,UAAU,oBAAoB,CAAC8L,OACpC,CAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAEC;AAED5N,EAAAA,WAAUiG,MAAM3E,QAAQ,WAAW,SAAS6S,GAAAA;AAC3C,QAAIA,EAAEg7B,WAAW;AAChBnvC,MAAAA,WAAU42F,cACZ;AAAA,EAAA,CAAA;AAEA52F,EAAAA,WAAUq3F,mBAAmB,SAASn8E,KAAAA;AACrC,QAAIu8E,KAAKz3F,WAAUk3F;AACnBl3F,IAAAA,WAAUsP,KAAK7O,YAAYg3F,EAAAA;AAC3B,QAAIxwF,QAAQwwF,GAAG7sF;AACf,QAAIxD,SAASqwF,GAAG/sF;AAEhB,QAAI1K,WAAU4B,OAAOqiC,qBAAoB;AACxC,UAAI7xB,OAAO8I,IAAI9I,OAAO8I,IAAI+2B,MAAIhrC,QAAQiU,IAAIjU;AAC1C,UAAIoL,QAAQD,OAAOnL;AACnB,UAAGoL,QAAQ/Q,OAAOmI,YAAW;AAC5B2I,eAAO9Q,OAAOmI,aAAaxC;AAAAA,MAC3B;AACDmL,aAAOU,KAAKC,IAAI,GAAGX,IAEnBqlF;AAAAA,SAAGtwF,MAAMiL,OAAOA,OAAO;AACvBqlF,SAAGtwF,MAAM+L,MAAMgI,IAAIhI,OAAOgI,IAAImB,KAAGjV,UAAQ8T,IAAI9T,UAAU;AAAA,IACzD,OAAQ;AACNqwF,SAAGtwF,MAAM+L,MAAM7S,KAAKwI,GAAG0H,eAAalQ,KAAKwI,GAAGC,aAAa,KAAK;AAC9D,UAAIoS,IAAI+2B,MAAM,GAAE;AACfwlD,WAAGtwF,MAAMkL,QAAQ;AACjBolF,WAAGtwF,MAAMiL,OAAQnL,CAAAA,QAAQ;AAEzBmD,mBAAW,WACVqtF;AAAAA,aAAGtwF,MAAMiL,OAAO;AAAA,QAChB,GAAC,CAAA;AAAA,MACL,OAAS;AACNqlF,WAAGtwF,MAAMiL,OAAO;AAChBqlF,WAAGtwF,MAAMkL,QAASpL,CAAAA,QAAQ;AAE1BmD,mBAAW,WACVqtF;AAAAA,aAAGtwF,MAAMkL,QAAQ;AAAA,QACjB,GAAC,CAAA;AAAA,MACF;AACDolF,SAAGhzF,YAAYgzF,GAAGhzF,UAAU6S,QAAQ,gBAAe,EAAIA,EAAAA,QAAQ,iBAAgB,EAAA,IAAI,cAAY4D,IAAI+2B,MAAI,IAAE,SAAO;AAAA,IAChH;AAAA,EACF;AACAjyC,EAAAA,WAAUgE,YAAY,oBAAoB;AACzChE,IAAAA,WAAU42F,cAAAA;AACV,QAAGv2F,KAAK62F,iBAAgB;AACvB,UAAIziE,MAAMp0B,KAAK62F;AACf,UAAGziE,IAAInrB,YAAW;AACjBmrB,YAAInrB,WAAWiC,YAAYkpB;MAC3B;AACDp0B,WAAK62F,kBAAkB;AAAA,IACvB;AAAA,EACF,CAAA;AACAl3F,EAAAA,WAAU03F,+BAA+B,SAASvjF,GACjDnU;AAAAA,IAAAA,WAAU42F,cACX;AAAA,EAAA;AACA52F,EAAAA,WAAUm3F,mBAAmB,WAC5B;AAAA,QAAA,CAAK92F,KAAK62F,iBAAgB;AAGzB,UAAIO,KAAKp3F,KAAK62F,kBAAkBh3F,SAASC,cAAc,KAEvDE;AAAAA,WAAKuT,SAAS0e,cAAcmlE,EAE5BA;AAAAA,SAAGhzF,YAAY;AACf,UAAIzE,WAAU23F;AACbF,WAAGhzF,aAAa;AACjB,UAAIzE,WAAU4B,OAAOgO;AAAK6nF,WAAGhzF,aAAa;AAE1C,UAAI6qC,WAAWjvC,KAAKuT,SAAS2e,0BAAAA;AAC7B,UAAIjrB,OAAO;AAAA;AAAA;AAAA;AAAA,kCAIqBgoC,QAQhChoC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,cAAQ;AACR,UAAI+P,UAAUrX,WAAU4B,OAAOwiC;AAC9B,eAASp8B,IAAI,GAAGA,IAAIqP,QAAQpP,QAAQD,KAAK;AACxC,YAAIsnC,WAAWjvC,KAAKuT,SAAS6e,0BAA0BpyB,KAAKqT,OAAOC,OAAO0D,QAAQrP,CAAAA,CAAAA,CAAAA;AAClFV,gBAAQ,QAAQgoC,QAAmCj4B,2BAAAA,QAAQrP,CAAchI,CAAAA,YAAAA,WAAU0T,OAAOC,OAAO0D,QAAQrP,CAAAA,CAAAA,CAAAA;AAAAA,gCAC7EqP,QAAQrP,CAAAA,CAAAA,gBAAkBhI,WAAU0T,OAAOC,OAAO0D,QAAQrP,CAAAA,CAAAA,CAAAA;AAAAA,MACtF;AAEFV,cAAQ;AAERmwF,SAAGl3F,YAAY+G;AACftH,MAAAA,WAAUiG,MAAMwxF,IAAI,SAAS,SAAS9iF,IACrC3U;AAAAA,QAAAA,WAAU43F,iBAAiBjjF,GAAGE,UAAUF,GAAGG,UAAAA;AAAAA,MAC9C,CACE;AAAA,UAAI9U,WAAU4B,OAAOqiC,qBAAoB;AACxCjkC,QAAAA,WAAUgO,gBAAgBhO,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,GAAI,UAAUhJ,WAAU03F;AACjF13F,QAAAA,WAAUiG,MAAMjG,WAAUgJ,KAAK,cAAgB,EAAA,CAAA,GAAI,UAAUhJ,WAAU03F;MACvE;AAAA,IACD;AAED,WAAOr3F,KAAK62F;AAAAA,EACb;AAEAl3F,EAAAA,WAAU43F,mBAAmB,SAAStlF,MACrC;AAAA,QAAImiB,MAAMz0B,WAAUk3F;AACpB,QAAA,CAAK5kF,QAAQA,QAAQmiB;AAAK;AAE1B,QAAGniB,KAAK4E,QAAQ,uBAAA,GAAyB;AACxClX,MAAAA,WAAU42F;AACV;AAAA,IACA;AAED,QAAIz/E,OAAOnX,WAAUsT,cAAchB,IACnC;AAAA,QAAI6E,KAAKC,QAAQ,OAAA,KAAA,IAAa;AAC7B,UAAIhX,MAAKJ,WAAUg3F;AACnBh3F,MAAAA,WAAUiU,OAAOoD,QAAQF,KAAKvS,MAAM,GAAK,EAAA,CAAA,EAAG0S,QAAQ,SAAQ,KAAKlX,GACjE;AAAA,IAAA;AACAJ,MAAAA,WAAU43F,iBAAiBtlF,KAAKhJ,UAAAA;AAAAA,EAClC;AACAtJ,EAAAA,WAAUi3F,0BAA0B,SAAS72F,KAAAA;AAC5C,QAAIy3F,QAAQ73F,WAAUuxC,iBAAiBnxC,GACvC;AAAA,QAAIgS,OAAO;AACX,QAAIc,MAAM;AAEV,QAAIZ,OAAOulF;AACX,WAAOvlF,QAAQA,QAAQtS,WAAUsP,MAAK;AACrC8C,cAAQE,KAAKuiB;AACb3hB,aAAOZ,KAAKT,YAAUS,KAAKyJ;AAC3BzJ,aAAOA,KAAKwiB;AAAAA,IACZ;AACD,QAAGxiB,MAAK;AACP,UAAI2/B,KAAM7/B,OAAOylF,MAAMjtF,cAAY,IAAM5K,WAAUoR,KAAG,IAAK,IAAI;AAC/D,UAAIiL,KAAMnJ,MAAM2kF,MAAMntF,eAAa,IAAM1K,WAAUqR,KAAG,IAAK,IAAI;AAE/D,aAAO,EAAEe,MAAWc,KAAS++B,IAAO51B,IACnCpV,OAAM4wF,MAAMjtF,aAAaxD,QAAOywF,MAAMntF,aACvC;AAAA,IAAA;AACD,WAAO;AAAA,EACR;AAEA1K,EAAAA,WAAUo3F,mBAAoB,SAASh3F,KAAAA;AACtC,QAAIuU,KAAK3U,WAAUwV,SAASpV;AAC5B,QAAIq3F,KAAKz3F,WAAUk3F;AAEnBl3F,IAAAA,WAAUg3F,qBAAqB52F;AAI/B,QAAIoO,SAAS,EACZkZ,SAAS1nB,WAAU0iB,UAAUm0E,iBAAiBliF,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,GAC1ElP,MAAMzF,WAAU0iB,UAAUq0E,gBAAgBpiF,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA,EAAAA;AAEvE,QAAImjF,eAAeL,GAAGnvF,cAAc,sBACpCwvF;AAAAA,iBAAav3F,YAAY,SAASiO,OAAOkZ,OACzC;AAAA,QAAIqwE,YAAYN,GAAGnvF,cAAc,mBAAA;AACjCyvF,cAAUx3F,YAAYiO,OAAO/I;AAE7BzF,IAAAA,WAAU4T,SAAS4e,gBAAgBilE,IAAI,CAACjpF,OAAOkZ,SAASlZ,OAAO/I,IAAM3B,EAAAA,KAAK,GAG1E,CAAA;AAAA,QAAIk0F,OAAOP,GAAGnvF,cAAc,qBAC5B;AAAA,UAAM2vF,cAAcj4F,WAAU0iB,UAAUo0E,mBAAmBniF,GAAGiF,YAAYjF,GAAGuF,UAAUvF,EAAAA;AACvF,QAAGsjF,aAAY;AACdD,WAAKjzF,UAAU6e,OAAO,YACtBo0E;AAAAA,WAAKz3F,YAAY03F;AAAAA,IACnB,OAAM;AACJD,WAAKjzF,UAAUC,IAAI,YACnB;AAAA,IAAA;AAAA,EACF;AAGA;AC3Se,SAAQgS,SAAChX,YAExBA;AAAAA,EAAAA,WAAUgE,YAAY,oBAAoB,WAAA;AACzC,QAAIk0F;AACJ,QAAIl4F,WAAUq3C,YAAYsF,WAAW;AACpCu7C,kCAA4Bl4F,WAAUq3C,YAAYsF,UAAUnF;AAAAA,IAC5D;AACD,QAAI2gD,wBAAwBn4F,WAAU4B,OAAOyiC,aAAa9W,MAAAA;AAC1D,QAAI6qE,yBAAyBp4F,WAAU4B,OAAO0iC,cAAc/W,MAE5DvtB;AAAAA,IAAAA,WAAUgE,YAAY,oBAAoB,SAAS5D,KAAAA;AAClD,UAAIC,KAAKuB,OAAOy2F,iBAAiBh4F,KAAKmV,SAASpV,GAAAA,EAAI4W,UAAU;AAC5D3W,aAAKuB,OAAOu6C,kBAAkB;AAAA,MAC9B,OACI;AACJ97C,aAAKuB,OAAOu6C,kBAAkB;AAC9Bn8C,QAAAA,WAAU4B,OAAOyiC,eAAe8zD,sBAAsB5qE,MAAAA;AACtDvtB,QAAAA,WAAU4B,OAAO0iC,gBAAgB8zD,uBAAuB7qE;AAGxD,YAAGvtB,WAAUq3C,YAAYsF,WAAW;AACnC38C,UAAAA,WAAUq3C,YAAYsF,UAAUnF,YAAY0gD;AAAAA,QAC5C;AAAA,MACD;AAED,UAAIjgD,MAAM53C,KAAKuB,OAAO+nB,SAASD;AAC/B,UAAIrpB,KAAKuB,OAAOu6C,iBAAiB;AAChC,iBAASn0C,IAAI,GAAGA,IAAIiwC,IAAIhwC,QAAQD,KAAK;AACpC,cAAIiwC,IAAIjwC,CAAAA,EAAGjG,QAAQ,aAAa;AAC/B,gBAAI1B,KAAKuB,OAAOu6C,mBAAmBn8C,WAAUq3C,YAAYsF,WAAW;AACnE38C,cAAAA,WAAUq3C,YAAYsF,UAAUnF,YAAY,SAASllC,MAAMpL,OAAOyN;AACjE,oBAAI8iD,UAAUz3D,WAAUkc,YAAYhF,QAAQ5E,MAAM,mBAClD;AAAA,oBAAInL,QAAQ;AACZswD,wBAAQnvD,cAAc,mBAAqBa,EAAAA,UAAUhC;AACrDswD,wBAAQnvD,cAAc,kBAAoBa,EAAAA,UAAUhC;AACpDswD,wBAAQtwD,MAAMgC,UAAUhC;AAExBnH,gBAAAA,WAAUo8C;cACjB;AAAA,YACM;AAAA,UACD;AAAA,QACD;AAED,YAAIk8C,oBAAoB,CAAC,kBAAkB;AAC3C,YAAIC,gBAAgB,CAACv4F,WAAU4B,OAAOyiC,cAAcrkC,WAAU4B,OAAO0iC,aACrE;AAAA,iBAASt8B,IAAI,GAAGA,IAAIswF,kBAAkBrwF,QAAQD,KAAK;AAClD,cAAIwwF,mBAAmBF,kBAAkBtwF,CACzC;AAAA,mBAASkkC,IAAI,GAAGA,IAAIqsD,cAActwF,QAAQikC,KAAK;AAC9C,gBAAIusD,eAAeF,cAAcrsD;AACjC,gBAAIngC,QAAAA;AACJ,qBAAS4sC,IAAI,GAAGA,IAAI8/C,aAAaxwF,QAAQ0wC,KAAK;AAC7C,kBAAI8/C,aAAa9/C,CAAM6/C,KAAAA,kBAAkB;AACxCzsF,wBAAQ4sC;AACR;AAAA,cACA;AAAA,YACD;AACD,gBAAI5sC,SAAU,IAAG;AAChB0sF,2BAAavuE,OAAOne,OAAO,CAAA;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAED1L,WAAK8pB,cAEL;AAAA,aAAO;AAAA,IACT,CAAA;AAEC,aAASuuE,YAAYx4C,KAAKzmC,GAAGsO,GAAG/lB,MAC/B;AAAA,UAAI22F,OAAOl/E,EAAErG,qBAAqB8sC,GAAAA;AAClC,UAAI04C,OAAO7wE,EAAE3U,qBAAqB8sC,GAAAA;AAClC,eAASl4C,IAAI4wF,KAAK3wF,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAC1C,YAAI+f,IAAI6wE,KAAK5wF,CACb;AAAA,YAAA,CAAKhG,MAAK;AACT+lB,YAAEwxB,WAAW;AAEb,cAAG9/B,EAAE6/B;AACJvxB,cAAEuxB,UAAU;AAAA,QACjB,OAAS;AACL,cAAI/jC,IAAIrV,SAASC,cAAc;AAC/BoV,YAAE9Q,YAAY;AACd8Q,YAAEhV,YAAYyB,KAAK22F,KAAK3wF,CAAAA,CAAAA;AACxB+f,YAAEze,WAAWqI,aAAa4D,GAAGwS,CAAAA;AAC7BA,YAAEze,WAAWiC,YAAYwc,CAAAA;AAAAA,QACzB;AAAA,MACD;AAAA,IACD;AAED,QAAI8X,MAAM7/B,WAAUw6C;AACpBx6C,IAAAA,WAAUw6C,iBAAiB,WAE1B;AAAA,UAAIgC,KAAKn8C,KAAK82C,YACd;AAAA,UAAI92C,KAAKuB,OAAOu6C,iBAAiB;AAChCK,WAAGr1C,MAAM+f,aAAa;AAGtBs1B,WAAGr1C,MAAMgC,UAAU;AAAA,MACnB;AACD,UAAIyV,MAAMihB,IAAI1zB,MAAM9L,MAAM+L,SAC1B;AAAA,UAAI/L,KAAKuB,OAAOu6C,iBAAiB;AAEhCK,WAAGr1C,MAAM+f,aAAa;AACtBs1B,WAAGr1C,MAAMgC,UAAU;AAAA,MACnB;AAED,UAAI9I,KAAKuB,OAAOu6C,iBAAiB;AAEhC,YAAI08C,eAAex4F,KAAK82C,YAAAA;AACxB,YAAI2hD,eAAez4F,KAAK04F,cAAcF,aAAarxE,UAAU,IAAA;AAC7DsxE,qBAAa14F,KAAKJ,WAAUoa,IAAAA;AAC5B0+E,qBAAar0F,aAAa;AAC1Bi0F,oBAAY,YAAYG,cAAcC,cAAc,SAAS30F,GAAAA;AAC5D,iBAAOA,EAAE+C;AAAAA,QACb,CACGwxF;AAAAA,oBAAY,SAASG,cAAcC,cAAc,KAAA;AACjDJ,oBAAY,UAAUG,cAAcC,cAAc,SAAS30F,GAC1D;AAAA,cAAA,CAAIA,EAAE0lB,QAAQ5hB;AAAQ,mBAAO;AAC7B,iBAAO9D,EAAE0lB,QAAQ/W,KAAKC,IAAK5O,EAAE61C,iBAAiB,GAAI,IAAIh4C;AAAAA,QAC1D,CAAA;AAEG62F,qBAAavvF,WAAWqI,aAAamnF,cAAcD,YAEnDx4F;AAAAA,aAAKg6C,UAAUy+C,YAAAA;AACf,YAAI94F,WAAU8R;AACb9R,UAAAA,WAAU8R,UAAUxI,WAAWiC,YAAYvL,WAAU8R,SAAAA;AACtDzR,aAAKyR,YAAYgnF;AAEjB,YAAI94F,WAAU4B,OAAO+hC;AACpB3jC,UAAAA,WAAUiG,MAAM6yF,aAAap4F,YAAY,aAAaV,WAAU08C,aAEjE18C;AAAAA,QAAAA,WAAU87C;AACVz7C,aAAK+7C,gBAAAA;AAAAA,MACL;AACD,aAAOx9B;AAAAA,IACT;AAEC,QAAIupB,OAAOnoC,WAAUm7C;AACrBn7C,IAAAA,WAAUm7C,gBAAgB,WACzB;AAAA,UAAI96C,KAAK04F,aAAa;AACrB14F,aAAK04F,YAAYzvF,WAAWiC,YAAYlL,KAAK04F,WAAAA;AAC7C14F,aAAK04F,cAAc14F,KAAKyR,YAAY;AAAA,MACpC;AAED,aAAOq2B,KAAKh8B,MAAM9L,MAAM+L,SAAAA;AAAAA,IAC1B;AAAA,EACA,CAGA;AAAA;ACpJe,SAAQuwC,UAAC38C,YAExBA;AAAAA,EAAAA,WAAU4B,OAAOo3F,8BAA8B;AAC/Ch5F,EAAAA,WAAU4B,OAAOq3F,qBAAqB,CAAC,GAAE,GAAE,GAAE,GAAE,CAC/Cj5F;AAAAA,EAAAA,WAAUq3C,YAAY,WAAA,IAAe,EACpC6hD,WAAY,SAAS5mF,MAAAA;AACpB,eAAWA,QAAQ,UAAS;AAC3B,UAAI5N,UAAU1E,WAAU8R,UAAUxJ,cAAc,IAAIgK,IACpD,EAAA;AAAA,UAAA,CAAI5N,SAAQ;AAGXA,kBAAUxE,SAASqP,eAAe+C,IAAAA;AAAAA,MAClC;AACDA,aAAO5N;AAAAA,IACP;AACD,QAAI4N,KAAKnL,MAAMgC,WAAW;AACzBmJ,WAAKnL,MAAMgC,UAAU;AACtB,WAAOmJ;AAAAA,EACP,GACD6mF,aAAa,SAAS7mF;AACrB,WAAOA,KAAK8mF,aAAaC,aAAa/mF,IAGtC;AAAA,aAAS+mF,aAAatxE,GAAAA;AACrB,UAAIzkB,MAAMpD,SAASC,cAAc,KAAA,GAAQyJ;AACzCtG,UAAI7C,YAAasnB,EAAEP,UAAU,IAAA,CAAA;AAC7B5d,UAAItG,IAAI/C;AACR+C,YAAM;AACN,aAAOsG;AAAAA,IACP;AAAA,EACD,GACD2E,QAAO,SAAS0pC,KACf;AAAA,QAAGA,IAAIn/B,MAAK;AACX,UAAIwgF,MAAMt5F,WAAUq3C,YAAY,WAChC;AAAA,UAAIv+B,OAAOwgF,IAAIJ,UAAUjhD,IAAIn/B,IAAAA;AAC7B,UAAIxR,OAAOgyF,IAAIH,YAAYrgF,IAC3BA;AAAAA,WAAK3R,MAAMgC,UAAU;AACrB,aAAO7B;AAAAA,IACP;AACD,QAAIiyF,MAAMv5F,WAAU0T,OAAOC;AAC3B,WAAO,6JAGsF4lF,IAAIloC,mBAAiB,yGACrBkoC,IAAIjoC,oBAAkB,mHACZioC,IAAIhoC,qBAAmB,0GAChCgoC,IAAI/nC,oBAAkB,sOAMvB+nC,IAAI9nC,wBAAsB,4FAC/B8nC,IAAI7nC,wBAAsB,gHACb6nC,IAAI5nC,yBAAuB,uFAG3G4nC,IAAI3nC,cAAY,4FACtB2nC,IAAI1nC,yBAAuB,wJAGgE0nC,IAAI1mC,kBAAkB,CAAA,IAAG,+GAC7B0mC,IAAI1mC,kBAAkB,CAAG,IAAA,wHACrB0mC,IAAI1mC,kBAAkB,CAAG,IAAA,+GAC7B0mC,IAAI1mC,kBAAkB,CAAA,IAAG,wHACrB0mC,IAAI1mC,kBAAkB,CAAA,IAAG,+GAC7B0mC,IAAI1mC,kBAAkB,KAAG,wHACrB0mC,IAAI1mC,kBAAkB,CAAG,IAAA,mMAKH0mC,IAAIznC,0BAAwB,4FACnEynC,IAAIvnC,wBAAsB,8FACxBunC,IAAItnC,0BAAwB,mJACkBsnC,IAAIxnC,2BAAyB,qJAI9H/xD,WAAU0T,OAAOjO,KAAKg5B,SAAS,KAC9D,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CAAA,IACpD,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CACpD,IAAA,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,KACpD,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CAAA,IACpD,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CACpD,IAAA,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,KACrD,cACA86D,IAAIrnC,kCACL,+FACqFqnC,IAAIpnC,iCAA+B,iMAGDonC,IAAI9nC,wBAAsB,2FACjE8nC,IAAIjnC,uBAAqB,0EAGzEinC,IAAI3mC,oBAAoB,CACvD,IAAA,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAC7C,IAAA,uBAAqB2mC,IAAI3mC,oBAAoB,CAC7C,IAAA,uBAAqB2mC,IAAI3mC,oBAAoB,KAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAC7C,IAAA,uBAAqB2mC,IAAI3mC,oBAAoB,CAC7C,IAAA,wBAAsB2mC,IAAI3mC,oBAAoB,EAAA,IAC9C,wBAAsB2mC,IAAI3mC,oBAAoB,EAAA,IAC/C,cACA2mC,IAAIhnC,oBACL,iJACgIgnC,IAAInnC,oBAAkB,2IAGtHpyD,WAAU0T,OAAOjO,KAAKg5B,SAAS,CAAA,IAC9D,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CAAA,IACpD,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CAAA,IACpD,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CACpD,IAAA,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CAAA,IACpD,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CAAA,IACpD,uBAAqBz+B,WAAU0T,OAAOjO,KAAKg5B,SAAS,CACrD,IAAA,cACA86D,IAAIlnC,mBACJ,4DACgCknC,IAAI3mC,oBAAoB,CACvD,IAAA,uBAAqB2mC,IAAI3mC,oBAAoB,KAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAC7C,IAAA,uBAAqB2mC,IAAI3mC,oBAAoB,CAC7C,IAAA,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,uBAAqB2mC,IAAI3mC,oBAAoB,CAAA,IAC7C,wBAAsB2mC,IAAI3mC,oBAAoB,EAC9C,IAAA,wBAAsB2mC,IAAI3mC,oBAAoB,EAC/C,IAAA,sLAM+E2mC,IAAI/mC,mBAAiB,0FAC5B+mC,IAAI7mC,oBAAkB,4FACb6mC,IAAI9mC,+BAA6B,kFAC1C8mC,IAAI5mC,oBAAkB,kFACvB3yD,WAAU4B,OAAO43F,qBAAmB;AAAA,EAKjH,GACDC,KAAK,CAAE,GACPC,gBAAgB,SAASvmF,KAAK9F,MAAMnG;AACnC,QAAI60B,MAAM5oB,IAAI9F,IAAAA;AACd,QAAI0uB,CAAAA;AAAK,aAAO;AAChB,QAAGA,IAAI5F;AAAU,aAAO4F;AAExB,QAAGA,IAAI9zB,QAAO;AACb,eAAQD,IAAE,GAAGA,IAAI+zB,IAAI9zB,QAAQD,KAAI;AAChC,YAAG+zB,IAAI/zB,CAAGd,EAAAA,SAASA;AAClB,iBAAO60B,IAAI/zB,CAAAA;AAAAA,MACZ;AAAA,IACD;AAAA,EACD,GACD2xF,iBAAiB,SAASxmF,KAAK9F,MAAMwiF,cACpC;AAAA,QAAI9zD,MAAM5oB,IAAI9F,IAAAA;AACd,QAAI0uB,CAAAA;AAAK,aAAO;AAChB,QAAGA,IAAI9zB,QAAO;AACb,UAAG4nF,cAAY;AACd,YAAIjxE,MAAM,CAAA;AACV,iBAAS5W,IAAI,GAAGA,IAAI+zB,IAAI9zB,QAAQD;AAC/B,cAAI+zB,IAAI/zB,CAAGsxC,EAAAA;AAAS16B,gBAAI7P,KAAKgtB,IAAI/zB,CAAAA,EAAGd,KAErC;AAAA,eAAO0X;AAAAA,MACX,OAAQ;AACJ,iBAAS5W,IAAI,GAAGA,IAAI+zB,IAAI9zB,QAAQD;AAC/B,cAAI+zB,IAAI/zB,CAAGsxC,EAAAA;AAAS,mBAAOvd,IAAI/zB,GAAGd;AAAAA,MACnC;AAAA,IACD;AAED,QAAG60B,IAAI70B;AACN,aAAQ2oF,CAAAA,eAAc9zD,IAAI70B,QAAQ,CAAC60B,IAAI70B,KAAAA;AAAAA,EACxC,GAED0yF,yBAAyB,SAASzmF,KAAK9F;AACtC,QAAInG,QAAQlH,WAAUq3C,YAAY,WAAasiD,EAAAA,gBAAgBxmF,KAAK9F,IAAAA;AACpE,WAASnG,QAAQ,KAAM;AAAA,EACvB,GAED2yF,iBAAiB,SAAS1mF,KAAK9F,MAAMnG;AACpC,QAAI60B,MAAM5oB,IAAI9F,IAAAA;AACd,QAAI0uB,CAAAA;AAAK;AAET,QAAGA,IAAI1uB,QAAQA,MAAK;AACnB0uB,UAAI70B,QAAQA;AAAAA,IACf,WAAW60B,IAAI9zB,QAAO;AACnB,UAAI6xF,aAAAA,OAAoB5yF,SAAS;AACjC,eAASc,IAAI,GAAGA,IAAI+zB,IAAI9zB,QAAQD;AAC/B,YAAI8xF,cAAc/9D,IAAI/zB,CAAGd,EAAAA,SAASA,OAAM;AACvC60B,cAAI/zB,CAAAA,EAAGsxC,UAAUwgD,aAAAA,CAAAA,CAAe5yF,MAAM60B,IAAI/zB,CAAAA,EAAGd,KAAWA,IAAAA,CAAAA,CAAAA;AAAAA,QACxD;AAAA,IACF;AAAA,EACD,GAED6yF,iBAAgB,SAASznF,MAAMpL,OAAOyN,IACrC;AAAA,QAAIomC,QAAQ/6C,WAAUq3C,YAAY,WAAA;AAClC,QAAIC,YAAYyD,MAAM4+C;AACtB,QAAIniD,YAAYuD,MAAM8+C;AACtB75F,IAAAA,WAAUq3C,YAAY,WAAA,EAAaoiD,MAAM,EAACrgF,OAAMzE,GAAGiF,YAAYP,KAAI1E,GAAGqlF,UAEtE;AAAA,QAAIC,kBAAkBj6F,WAAUyF,KAAKs7B,YAAY/gC,WAAU4B,OAAOs4F,aAAa,OAAO,IAAA;AACtF,QAAIC,WAAW,SAASA,WAAAA;AACvB,UAAI10F,OAAOw0F,gBAAgBE,SAAAA;AAC3B,UAAIn6F,WAAU4B,OAAOw4F;AACpB30F,eAAOzF,WAAUyF,KAAKT,IAAIS,MAAM,GAAG,KAAA;AACpC,aAAOA;AAAAA,IACV;AAEE,QAAI40F,WAAWr6F,WAAUyF,KAAKq7B,YAAY9gC,WAAU4B,OAAOs4F,WAAAA;AAE3D,QAAIhnF,MAAMZ,KAAKc,qBAAqB,MAAA,EAAQ,CAC5C;AAAA,QAAID,MAAM,CAAA;AAEV,aAASmnF,aAAaC,MACrB;AAAA,eAASvyF,KAAI,GAAGA,KAAIuyF,KAAKtyF,QAAQD,MAAK;AACrC,YAAI8mF,MAAMyL,KAAKvyF,EAEf;AAAA,YAAG8mF,IAAIzhF,MAAK;AACX,cAAI8F,CAAAA,IAAI27E,IAAIzhF,IAAAA,GAAM;AACjB8F,gBAAI27E,IAAIzhF,IAAAA,IAAQyhF;AAAAA,UAChB,WAAQ37E,IAAI27E,IAAIzhF,IAAM6rB,EAAAA,UAAS;AAC/B,gBAAI5mB,QAAOa,IAAI27E,IAAIzhF,IAAAA;AACnB8F,gBAAI27E,IAAIzhF,IAAQ,IAAA,CAACiF,OAAMw8E,GAE7B;AAAA,UAAA,OAAU;AACJ37E,gBAAI27E,IAAIzhF,IAAAA,EAAM0B,KAAK+/E,GAAAA;AAAAA,UACnB;AAAA,QAED;AAAA,MACD;AAAA,IACD;AAEDwL,iBAAapnF,IAAIE,qBAAqB,OACtCknF,CAAAA;AAAAA,iBAAapnF,IAAIE,qBAAqB,QAAA,CAAA;AAEtC,QAAKpT,CAAAA,WAAU4B,OAAO43F,oBAAoB;AACzC,UAAIgB,YAAYx6F,WAAUyF,KAAKq7B,YAAY9gC,WAAU4B,OAAOs4F,WAAAA;AAC5Dl6F,MAAAA,WAAU4B,OAAO43F,qBAAqBgB,UAAUx6F,WAAUyF,KAAKT,IAAIhF,WAAUqP,aAAAA,GAAgB,IAAI,KAAA,CAAA;AAAA,IACjG;AACDmoC,cAAUrkC,KAAK,eAAenT,WAAU4B,OAAO43F,kBAAAA;AAE/C,QAAIj2C,IAAI,SAASp/C,GAChB;AAAA,aAAOnE,WAAU8R,UAAUxJ,cAAc,IAAInE,CAAQ,EAAA,KAAA,EAAEgD,OAAM,CAAA,EAChE;AAAA,IAAA;AAEE,aAASszF,sBAAAA;AACRl3C,QAAE,gBAAA,EAAkBp8C,MAAMgC,UAAU;AACpCo6C,QAAE,iBAAA,EAAmBp8C,MAAMgC,UAAU;AACrCo6C,QAAE,oBAAoBp8C,MAAMgC,UAAU;AACtCo6C,QAAE,iBAAmBp8C,EAAAA,MAAMgC,UAAU;AACrCo6C,QAAE,gBAAgBljD,KAAK6G,KAAOC,EAAAA,MAAMgC,UAAU;AAC9CnJ,MAAAA,WAAUo8C,gBAAAA;AAAAA,IACV;AAED,aAASs+C,gBAAgBj8B,OACxB;AAAA,UAAIzgC,OAAO,CAACsZ,UAAUnkC,KAAK;AAC3BwnF,gBAAU38D,KAAK,CAAIA,CAAAA,EAAAA,MAAMygC,KAEzB;AAAA,aAAOzgC,KAAK/1B,SAAS;AAAG+1B,aAAKjvB,KAAK,EAClC;AAAA,UAAI6rF,SAAS;AAEb,UAAIvhF,MAAMwhF,aAAa1nF,GAEvB;AAAA,UAAIkG,OAAO,MAAM;AAChBolD,cAAMplD,MAAM,IAAI3D,KAAK,MAAM,GAAG,CAAA;AAC9BklF,iBAAS;AAAA,MACT,WACQvhF,OAAO,eAAe;AAC9BolD,cAAMplD,MAAM8gF,SAAS7iD,UAAUnkC,KAAK,aAAA,CAAA;AAAA,MACpC,OACI;AACJnT,QAAAA,WAAU86F,eAAe98D,KAAKl6B,KAAK,GAAA,CAAA;AACnC82F,iBAAS9nF,KAAKC,IAAI,GAAGukC,UAAUnkC,KAAK,kBAAA,CAAA;AAEpC,YAAI4nF,SAAS;AAmBbt8B,cAAMplD,MAAMrZ,WAAUyF,KAAK,SAASu4B,KAAKl6B,KAAK,GAAM,CAAA,EAAA,IAAI4R,KAAK+oD,MAAMrlD,KAAAA,GAAQwhF,SAASG,QAAQ,EAACnhF,YAAY6kD,MAAMrlD,MAAAA,CAAAA,KAAWqlD,MAAMrlD;AAAAA,MAChI;AAED,aAAO4kB,KAAKl6B,KAAK,GAAA,IAAO,MAAM82F;AAAAA,IAC9B;AACD,aAASC,aAAa1nF,MACrB;AAAA,UAAIkG,MAAMlG,KAAI,KACd;AAAA,UAAGkG,IAAIpR,QAAO;AACb,iBAAQD,KAAG,GAAGA,KAAIqR,IAAIpR,QAAQD,MAAI;AACjC,cAAGqR,IAAIrR,EAAAA,EAAGsxC,SAAQ;AACjB,gBAAGjgC,IAAIrR,EAAAA,EAAGd,SAASmS,IAAIrR,EAAGd,EAAAA,SAAS,MAAK;AACvC,qBAAOmS,IAAIrR,EAAAA,EAAGd;AAAAA,YACrB,OAAW;AACJ,kBAAA,CAAIc,IAAE;AACL,uBAAO;AAAA,cACf,WAAgBA,MAAK,GAAE;AACf,uBAAO;AAAA,cACf,OAAY;AACJ,uBAAO;AAAA,cACP;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACL,OAAQ;AACJ,YAAGqR,IAAInS;AACN,iBAAOmS,IAAInS;AAAAA,MACZ;AACD,aAAO;AAAA,IACP;AACD,aAAS8zF,aAAa7nF,MAAKjM,QAC1B;AAAA,UAAImS,MAAMlG,KAAI,KAEd;AAAA,UAAGkG,IAAIpR,QAAO;AACb,YAAIgzF,aAAe5hF,CAAAA,CAAAA,IAAI,GAAGnS,SAASmS,IAAI,CAAGnS,EAAAA,SAAS;AACnD,YAAG+zF,YAAW;AACb,mBAAQjzF,KAAG,GAAGA,KAAIqR,IAAIpR,QAAQD,MAAI;AACjC,gBAAGqR,IAAIrR,EAAAA,EAAGd,SAASA;AAClBmS,kBAAIrR,EAAAA,EAAGsxC,UAAU;AAAA,UAClB;AAAA,QACN,OAAS;AACJ,cAAI7jB,MAAM;AACV,kBAAOvuB,QAAAA;AAAAA,YACN,KAAK;AACJuuB,oBAAM;AACN;AAAA,YACD,KAAK;AACJA,oBAAM;AACN;AAAA,YACD;AACCA,oBAAM;AACN;AAAA,UAAA;AAEFpc,cAAIoc,GAAAA,EAAK6jB,UAAU;AAAA,QACnB;AAAA,MACL,OAAQ;AACJjgC,YAAInS,QAAQA;AAAAA,MACZ;AAAA,IACD;AAGDlH,IAAAA,WAAUq3C,YAAY,WAAA,EAAa6jD,mBAAmBR;AACtD,QAAIC,YAAY,EACf5oE,OAAM,SAASiM,MAAMygC,OAAAA;AACpB,UAAInnB,aAAYt3C,WAAUq3C,YAAY,WAAasiD,EAAAA;AACnD,UAAIwB,oBAAoBn7F,WAAUq3C,YAAY,WAAA,EAAauiD;AAE3D,UAAItiD,WAAUnkC,KAAK,iBAAiB,KAAK;AACxC6qB,aAAKjvB,KAAK+D,KAAKC,IAAI,GAAGooF,kBAAkBhoF,KAAK,aAC7CsrD,CAAAA,CAAAA;AAAAA,cAAMrlD,MAAM+mB,QAAQmX,WAAUnkC,KAAK,WACxC,CAAA;AAAA,MAAA,OAAW;AACN6qB,aAAKjvB,KAAK+D,KAAKC,IAAI,GAAGooF,kBAAkBhoF,KAAK,cAAA,CAAA,CAAA;AAC7C6qB,aAAKjvB,KAAMuoC,WAAUnkC,KAAK,YAAA,CAAA;AAC1B6qB,aAAKjvB,KAAK+D,KAAKC,IAAI,GAAGooF,kBAAkBhoF,KAAK,aAC7C,CAAA,CAAA;AAAA,YAAA,CAAKnT,WAAU4B,OAAOw5F,gBAAe;AACpC38B,gBAAMrlD,MAAM+mB,QAAQ,CAAA;AAAA,QACpB;AAAA,MACD;AACDs+B,YAAM48B,SAAS;AAAA,IACf,GACD3F,MAAK,SAAS13D,MAAMygC,OACnB;AAAA,UAAInnB,aAAYt3C,WAAUq3C,YAAY,WAAasiD,EAAAA;AACnD,UAAIwB,oBAAoBn7F,WAAUq3C,YAAY,WAAauiD,EAAAA;AAE3D57D,WAAKjvB,KAAK+D,KAAKC,IAAI,GAAGooF,kBAAkBhoF,KAAK,YAC7C6qB,CAAAA,CAAAA;AAAAA,WAAKjvB,KAAK,EAAA;AACVivB,WAAKjvB,KAAK,EACV;AAAA,UAAIwG,IAAI,CAAA;AAER,UAAIwmB,MAAMub,WAAUnkC,KAAK,YAAY,IAErC;AAAA,UAAItT,MAAM4+D,MAAMrlD,MAAMolB,OACtB;AAAA,UAAI88D,eAAe;AAEnB,eAAStzF,KAAI,GAAGA,KAAI+zB,IAAI9zB,QAAQD,MAAI;AACnCuN,UAAExG,KAAKgtB,IAAI/zB,EAAAA,CAAAA;AACXszF,uBAAeA,gBAAgBv/D,IAAI/zB,EAAAA,KAAMnI;AAAAA,MACzC;AACD,UAAK0V,CAAAA,EAAEtN,QAAO;AACbsN,UAAExG,KAAKlP,GAAAA;AACPy7F,uBAAe;AAAA,MACf;AACD/lF,QAAEuhB;AAGF,UAAK92B,CAAAA,WAAU4B,OAAOw5F,gBAAe;AACpC38B,cAAMrlD,QAAQpZ,WAAUyF,KAAKghB,WAAWg4C,MAAMrlD,KAC9CqlD;AAAAA,cAAM48B,SAAS;AAAA,MACpB,WAAW,CAAKC,cAAa;AACxBt7F,QAAAA,WAAUu7F,mBAAmB98B,MAAMrlD,OAAO7D,GAAG,GAAG,CAAA;AAChDkpD,cAAM48B,SAAS;AAAA,MACf;AAEDr9D,WAAKjvB,KAAKwG,EAAEzR,KAAK,GAAA,CAAA;AAAA,IACjB,GACDjE,KAAI,SAASm+B,MACZ;AAAA,UAAIsZ,aAAYt3C,WAAUq3C,YAAY,WAAA,EAAasiD;AACnD,UAAIwB,oBAAoBn7F,WAAUq3C,YAAY,WAAauiD,EAAAA;AAE3D,UAAItiD,WAAUnkC,KAAK,UAAA,KAAe,KAAK;AACtC6qB,aAAKjvB,KAAK+D,KAAKC,IAAI,GAAGooF,kBAAkBhoF,KAAK,WAC7C,CAAA,CAAA;AAAA,MAAA,OACI;AACJ6qB,aAAKjvB,KAAK,MAAA;AACVivB,aAAKjvB,KAAK,CAAA;AACVivB,aAAKjvB,KAAK,EACVivB;AAAAA,aAAKjvB,KAAK,EAAA;AACVivB,aAAKjvB,KAAK/O,WAAU4B,OAAOq3F,mBAAmBn1F,KAAK,GAAA,CAAA;AACnDk6B,aAAK9T,OAAO,GAAG,CACf;AAAA,MAAA;AAAA,IACD,GACDtnB,MAAK,SAASo7B,MAAMygC,OACnB;AAAA,UAAInnB,aAAYt3C,WAAUq3C,YAAY,WAAasiD,EAAAA;AAEnD,UAAIriD,WAAUnkC,KAAK,WAAA,KAAgB,KAAK;AACvC6qB,aAAKjvB,KAAK,GAAA;AACV0vD,cAAMrlD,MAAMinB,SAAS,CAAA;AACrBo+B,cAAMrlD,MAAM+mB,QAAQmX,WAAUnkC,KAAK,UACnCsrD,CAAAA;AAAAA,cAAMrlD,MAAMinB,SAASiX,WAAUnkC,KAAK,YAEzC,CAAA;AAAA,MAAA,OAAW;AACN6qB,aAAKjvB,KAAK,GAAA;AACVivB,aAAKjvB,KAAKuoC,WAAUnkC,KAAK,WAAA,CAAA;AACzB6qB,aAAKjvB,KAAKuoC,WAAUnkC,KAAK;AACzBsrD,cAAMrlD,MAAM+mB,QAAQ,CAAA;AACpBs+B,cAAMrlD,MAAMinB,SAASiX,WAAUnkC,KAAK,aACpC,CAAA;AAAA,MAAA;AACDsrD,YAAM48B,SAAS;AAAA,IACf,EAAA;AAEF,QAAIG,YAAY,EACf9F,MAAK,SAAS13D,MAAMygC,OAAAA;AACnB,UAAIjnB,aAAYx3C,WAAUq3C,YAAY,aAAawiD;AACnDriD,MAAAA,WAAUrkC,KAAK,cAAc6qB,KAAK,CAAA,CAAA;AAElC,UAAIzoB,IAAIyoB,KAAK,CAAGp5B,EAAAA,MAAM,GACtB;AAAA,UAAI6U,IAAI,CAAA;AACR,eAASzR,KAAI,GAAGA,KAAIuN,EAAEtN,QAAQD;AAAKyR,UAAElE,EAAEvN,EAAM,CAAA,IAAA;AAE7CwvC,MAAAA,WAAUrkC,KAAK,YAAYsG,CAAAA;AAAAA,IAI3B,GACDsY,OAAM,SAASiM,MAAMygC,OAAAA;AACpB,UAAIjnB,aAAYx3C,WAAUq3C,YAAY,WAAawiD,EAAAA;AAEnD,UAAI77D,KAAK,CAAA,MAAO,IAAI;AACnBwZ,QAAAA,WAAUrkC,KAAK,cAAc,GAAA;AAC7BqkC,QAAAA,WAAUrkC,KAAK,eAAe6qB,KAAK,CAAA,CAAA;AACnCwZ,QAAAA,WAAUrkC,KAAK,aAAasrD,MAAMrlD,MAAMqH,QAAAA,CAAAA;AAAAA,MAC7C,OAAW;AACN+2B,QAAAA,WAAUrkC,KAAK,cAAc,GAAA;AAC7BqkC,QAAAA,WAAUrkC,KAAK,gBAAgB6qB,KAAK,CAAA,CAAA;AACpCwZ,QAAAA,WAAUrkC,KAAK,eAAgB6qB,KAAK;AACpCwZ,QAAAA,WAAUrkC,KAAK,cAAc6qB,KAAK,CAClC,CAAA;AAAA,MAAA;AAAA,IACD,GACDn+B,KAAI,SAASm+B,MAAMygC,OAAAA;AAClB,UAAIjnB,aAAYx3C,WAAUq3C,YAAY,WAAawiD,EAAAA;AACnDriD,MAAAA,WAAUrkC,KAAK,YAAY,GAAA;AAC3BqkC,MAAAA,WAAUrkC,KAAK,aAAa6qB,KAAK;IACjC,GACDp7B,MAAK,SAASo7B,MAAMygC,OACnB;AAAA,UAAIjnB,aAAYx3C,WAAUq3C,YAAY,WAAawiD,EAAAA;AAEnD,UAAI77D,KAAK,CAAO,MAAA,IAAI;AACnBwZ,QAAAA,WAAUrkC,KAAK,aAAa,GAAA;AAC5BqkC,QAAAA,WAAUrkC,KAAK,YAAYsrD,MAAMrlD,MAAMqH,QAAAA,CAAAA;AACvC+2B,QAAAA,WAAUrkC,KAAK,cAAcsrD,MAAMrlD,MAAMuM,SAE9C,CAAA;AAAA,MAAA,OAAW;AACN6xB,QAAAA,WAAUrkC,KAAK,aAAa,GAAA;AAC5BqkC,QAAAA,WAAUrkC,KAAK,cAAc6qB,KAAK,CAClCwZ,CAAAA;AAAAA,QAAAA,WAAUrkC,KAAK,aAAa6qB,KAAK,CACjCwZ,CAAAA;AAAAA,QAAAA,WAAUrkC,KAAK,eAAesrD,MAAMrlD,MAAMuM;MAC1C;AAAA,IACD,EAAA;AAGF,aAAS81E,gBAAgBz9D,MAAMygC,OAAAA;AAC9B,UAAIjnB,aAAYx3C,WAAUq3C,YAAY,WAAawiD,EAAAA;AACnD,UAAI1/D,OAAO6D,KAAKp5B,MAAM;AACtBo5B,aAAO7D,KAAK,CAAGv1B,EAAAA,MAAM,GACrB42F;AAAAA,gBAAUx9D,KAAK,CAAA,CAAA,EAAIA,MAAMygC,KAEzB;AAAA,cAAQtkC,KAAK,CAAA,GAAA;AAAA,QACZ,KAAK;AACJ6gE,uBAAa7nF,KAAK;AAClB;AAAA,QACD,KAAK;AACJ6nF,uBAAa7nF,KAAK,aAAA;AAElB,cAAI+G,WAAWukD,MAAMplD;AACrB,cAAIrZ,WAAU4B,OAAOw4F,gBAAe;AACnClgF,uBAAWla,WAAUyF,KAAKT,IAAIkV,UAAW,IAAG,KAC5C;AAAA,UAAA;AACDs9B,UAAAA,WAAUrkC,KAAK,eAAeknF,SAASngF,QAAAA,CAAAA;AAEvC;AAAA,QACD;AACC8gF,uBAAa7nF,KAAK,kBAClBqkC;AAAAA,UAAAA,WAAUrkC,KAAK,oBAAoBgnB,KAAK,CAExC,CAAA;AAAA;AAAA,MAAA;AAGFqd,MAAAA,WAAUrkC,KAAK,UAAU6qB,KAAK,CAG9B,CAAA;AAAA,UAAI1rB,QAAOtS,WAAUq3C,YAAY,WAAA,EAAaqiD,eAAevmF,KAAK,UAAU6qB,KAAK,CAAA,CAAA;AACjF,UAAG1rB,MAAK6jB,YAAY,UAA8B;AAEjD7jB,QAAAA,MAAKopF,cAAc,IAAIzsB,MAAM,QAC7B38D,CAAAA;AAAAA,QAAAA,MAAKopF,cAAc,IAAIC,WAAW,OAAA,CAAA;AAAA,MACtC,OAAQ;AACJrpF,QAAAA,MAAKopF,cAAc,IAAIC,WAAW,OAAA,CAAA;AAAA,MAClC;AAAA,IACD;AAED37F,IAAAA,WAAUq3C,YAAY,WAAA,EAAaukD,mBAAmBH;AAEtD,aAASzzF,IAAI,GAAGA,IAAIkL,IAAI2oF,SAAS5zF,QAAQD,KAAK;AAC7C,UAAIiG,MAAKiF,IAAI2oF,SAAS7zF,CACtB;AAAA,cAAQiG,IAAGZ,MAAAA;AAAAA,QACV,KAAK;AACJ,cAAIY,IAAGkoB,YAAY,YAAaloB,CAAAA,IAAGjI,iBAAiB;AACnDiI,YAAAA,IAAGjI,kBAAkB;AACrBiI,YAAAA,IAAG5G,iBAAiB,UAAUozF,mBACpC;AAAA,UAAA,WAAgBxsF,CAAAA,IAAGjI,iBAAgB;AAC7BiI,YAAAA,IAAGjI,kBAAkB;AACrBiI,YAAAA,IAAG5G,iBAAiB,SAASozF,mBAAAA;AAAAA,UAC7B;AACD;AAAA,MAAA;AAAA,IAEF;AACDz6F,IAAAA,WAAU8R,UAAUgqF,iBAAiB;AAAA,EACrC,GACDtkD,WAAU,SAASllC,MAAMpL,OAAOyN,IAC/B;AAAA,QAAIonF,KAAK/7F,WAAUq3C,YAAY,WAAA;AAC/B,QAAKr3C,CAAAA,WAAU8R,UAAUgqF;AACxBC,SAAGhC,gBAAgBznF,MAAMpL,OAAOyN,EACjCrC;AAAAA,SAAKgrB,QAAQ3oB,GAAGmxC;AAEhBxzC,SAAK0pF,UAAU37F,KAAK47F,uBAAuBtnF,EAE3C;AAAA,QAAImoC,KAAKi/C,GAAGtC;AACZ38C,OAAG1jC,QAAQzE,GAAGiF;AACdkjC,OAAGzjC,MAAM1E,GAAGqlF;AAEZ+B,OAAGG,cAEH;AAAA,QAAIh1F;AACH60F,SAAGH,iBAAiB10F,OAAO41C,EAC5B;AAAA,EAAA,GACDxF,WAAU,SAAShlC,MAAMqC,IAAAA;AACxB,QAAIrC,KAAKgrB,MAAM;AACd,UAAIwf,KAAK98C,WAAUq3C,YAAY,WAAA,EAAaoiD;AAC5C,UAAI0C,eAAe,CAAA;AAEnB,UAAIC,cAAcC,eAElBD;AAAAA,kBAAYhlD,SAAS+kD,YAAAA;AACrBr/C,SAAG1jC,QAAQ+iF,aAAaviF;AACxBjF,SAAGmxC,WAAW9lD,WAAUq3C,YAAY,WAAA,EAAa6jD,iBAAiBp+C,EAClE;AAAA,UAAIA,GAAGu+C,QAAQ;AACd1mF,WAAGiF,aAAa,IAAIlE,KAAKonC,GAAG1jC,KAAAA;AAC5BzE,WAAG2nF,cAAc,IAAI5mF,KAAKonC,GAAG1jC,KAAAA;AAC7B0jC,WAAGu+C,SAAS;AAAA,MACZ;AACA1mF,WAAG2nF,cAAc;AAElB3nF,SAAGqlF,YAAYl9C,GAAGzjC;AAClB1E,SAAGoxC,cAAcpxC,GAAGmxC,SAASlhD,MAAM,GAAK,EAAA,CAAA;AAAA,IAC3C,OAAS;AACN+P,SAAGmxC,WAAWnxC,GAAGoxC,cAAc;AAC/BpxC,SAAGqlF,YAAYrlF,GAAGuF;AAAAA,IAClB;AACD,WAAOvF,GAAGmxC;AAAAA,EACV,GACDy2C,aAAa;AACZ,QAAIjqF,OAAOkqF,oBAAsBhuF,EAAAA;AACjC,WAAO8D,KAAK5R,WAAWA;AAAAA,EACvB,GACD+7F,WAAW,WAAA;AACV,WAAOD,oBAAAA,EAAsBlqF;AAAAA,EAC7B,GACDgrB,MAAK,WAAA;AACJ,QAAIyd,QAAQ/6C,WAAUq3C,YAAYsF;AAElC,QAAIsvC,OAAOlxC,MAAM0hD;AACjB,QAAIxQ,CAAAA,KAAK3uD;AACRyd,YAAMmhD,cACP;AAAA,EAAA,GACD5R,OAAO,WAAA;AACN,QAAIvvC,QAAQ/6C,WAAUq3C,YAAYsF;AAElC,QAAIsvC,OAAOlxC,MAAM0hD,UAAAA;AAEjB,QAAGxQ,KAAK3uD;AACPyd,YAAMmhD,cAAAA;AAAAA,EACP,GACDA,eAAe,WACd;AAAA,QAAInhD,QAAQ/6C,WAAUq3C,YAAYsF;AAElC,QAAIsvC,OAAOlxC,MAAM0hD,UAAAA,GAChBxuF,MAAK8sC,MAAMwhD,YAAAA;AACZ,QAAKtQ,CAAAA,KAAK3uD,QAAS2uD,CAAAA,KAAK+P,SAAS;AAChC/P,WAAK9kF,MAAMC,SAAS;AACpB,UAAG6G,KAAG;AACLA,QAAAA,IAAG9G,MAAMu1F,qBAAqB;AAC9BzuF,QAAAA,IAAGuqB,YAAYj4B,YAAYP,WAAU0T,OAAOC,OAAOi9C;AAAAA,MACnD;AAAA,IACJ,OAAS;AACNq7B,WAAK9kF,MAAMC,SAAS;AACpB,UAAG6G,KAAG;AACLA,QAAAA,IAAG9G,MAAMu1F,qBAAqB;AAC9BzuF,QAAAA,IAAGuqB,YAAYj4B,YAAYP,WAAU0T,OAAOC,OAAOg9C;AAAAA,MACnD;AAAA,IACD;AACDs7B,SAAK3uD,OAAAA,CAAQ2uD,KAAK3uD;AAElBt9B,IAAAA,WAAUo8C,gBACV;AAAA,EAAA,GACDpxB,OAAM,SAAS1Y,MACd;AAAA,EAAA,GACD2pC,cAAa,SAAS3pC,MAAM5M,QAAQO,QACnC;AAAA,QAAI80C,QAAQ/6C,WAAUq3C,YAAYsF;AAClC,QAAIsvC,OAAOlxC,MAAM0hD,UACjB;AAAA,QAAA,CAAKxQ,KAAK+P;AACTh8F,MAAAA,WAAUq3C,YAAYsF,UAAUu/C,cACjC;AAAA,EAAA,EAAA;AAGF,WAASG,iBAAAA;AACR,QAAID,cAAcp8F,WAAUk3C,YAAY;AACxC,QAAIklD,CAAAA,aAAY;AACfA,oBAAcO,sBAAsB,MAAA;AAAA,IACpC;AACD,QAAA,CAAIP,aAAY;AACfA,oBAAcO,sBAAsB,eACpC;AAAA,IAAA;AAGD,QAAKP,CAAAA,aAAa;AACjB,YAAM,IAAI54F,MAAM,CAAC,iLACnB,yLACA,8DACA,IACA,0CACA,gEACCM,EAAAA,KAAK,IACJ,CAAA;AAAA,IAAA;AAED,WAAOs4F;AAAAA,EACR;AAEA,WAASI;AACR,QAAI1mE,mBAAmB91B,WAAUk3C,YAAY,WAC7C;AAAA,QAAA,CAAIphB,kBAAiB;AACpBA,yBAAmB6mE,sBAAsB,WACzC;AAAA,IAAA;AAED,QAAK7mE,CAAAA,kBAAkB;AACtB,YAAM,IAAItyB,MAAM,CAAC,4CACjB,0JACA,wDACF,IACA,0CACA,6BACA,MAAMM,KAAK,IAAA,CAAA;AAAA,IAET;AAED,WAAOgyB;AAAAA,EACR;AAEA,WAAS6mE,sBAAsB56F;AAC9B,aAAQiG,IAAI,GAAGA,IAAIhI,WAAU4B,OAAO+nB,SAASD,SAASzhB,QAAQD,KAAI;AACjE,UAAI8iB,UAAU9qB,WAAU4B,OAAO+nB,SAASD,SAAS1hB,CACjD;AAAA,UAAG8iB,QAAQ/oB,SAASA,MAAK;AACxB,eAAO/B,WAAUk3C,YAAYpsB,QAAQzd,IAAAA;AAAAA,MACrC;AAAA,IACD;AACD,WAAO;AAAA,EACR;AAGArN,EAAAA,WAAU48F,eAAe,CAAA;AACzB58F,EAAAA,WAAU68F,oBAAoB,CAAA;AAC9B78F,EAAAA,WAAUylD,kBAAkB,SAAS9wC,IAAIqjC,MACxCrjC;AAAAA,OAAGmoF,YAAY9kD;AACf33C,SAAKu8F,aAAajoF,GAAGvU,EAAMuU,IAAAA;AAC3B,QAAKtU,CAAAA,KAAKw8F,kBAAkBloF,GAAGoqD,SAAY1+D;AAAAA,WAAKw8F,kBAAkBloF,GAAGoqD,SAAAA,IAAa,CAAA;AAClF1+D,SAAKw8F,kBAAkBloF,GAAGoqD,SAAAA,EAAW/mB,QAAQrjC;AAAAA,EAC9C;AACA3U,EAAAA,WAAU+8F,kBAAkB,SAAS/kD,MAAM53C,KAC1C;AAAA,QAAI48F,KAAK38F,KAAKw8F,kBAAkBz8F,GAAAA;AAChC,QAAI48F;AAAI,aAAOA,GAAGhlD;AAClB,WAAO;AAAA,EACR;AACAh4C,EAAAA,WAAUi9F,mBAAmB,SAAS78F,KACrC;AAAA,WAAQC,KAAKw8F,kBAAkBz8F,GAAAA,KAAO,CACvC;AAAA,EAAA;AAEA,WAAS88F,kBAAkBz3F,MAE1B;AAAA,WAAO,IAAIiQ,KACVjQ,KAAKigB,YACLjgB,GAAAA,KAAKkgB,SACLlgB,GAAAA,KAAKgb,QACLhb,GAAAA,KAAKuU,SACLvU,GAAAA,KAAK4Y,WACL5Y,GAAAA,KAAKs5B,WACL,GAAA,CAAA;AAAA,EAEF;AAEA/+B,EAAAA,WAAUm9F,YAAY,CACtB;AAAA,GAAA,WAAA;AACC,QAAIC,gBAAgBp9F,WAAUqM;AAC9BrM,IAAAA,WAAUqM,WAAW,SAASuN,YAAYM,UAAUlY,MAAM5B,KAAIqmC,YAC7D;AAAA,UAAI42D,QAAQD,cAAcjxF,MAAM9L,MAAM+L,SAAAA;AAEtC,UAAIixF,SAASr9F,WAAUwV,SAAS6nF,KAAQ,GAAA;AACvC,YAAI1oF,KAAK3U,WAAUwV,SAAS6nF,KAAAA;AAE5B,YAAG1oF,GAAGiF,YAAW;AAChBjF,aAAGiF,aAAasjF,kBAAkBvoF,GAAGiF,UAAAA;AAAAA,QACrC;AACD,YAAGjF,GAAGuF,UAAS;AACdvF,aAAGuF,WAAWgjF,kBAAkBvoF,GAAGuF,QACnC;AAAA,QAAA;AACD,YAAI7Z,KAAK47F,uBAAuBtnF,EAC/B3U;AAAAA,UAAAA,WAAUylD,gBAAgB9wC,IAAIA,GAAGsqD,eAAe,GACjD;AAAA,YAAItqD,GAAGmxC;AACNnxC,aAAGoxC,cAAcpxC,GAAGmxC,SAASlhD,MAAM,GAAA,EAAK;MACzC;AACD,aAAOy4F;AAAAA,IACT;AAAA,EACC,GArBD;AAuBAr9F,EAAAA,WAAUgE,YAAY,mBAAmB,SAAS5D,KAAI4mC,QACrD;AAAA,QAAI3mC,KAAKi9F;AAAc;AACvBj9F,SAAKi9F,eAAe;AAEpB,QAAGt9F,WAAU48F,aAAax8F,GAAI,GAAA;AAE7BJ,MAAAA,WAAU48F,aAAa51D,MAAUhnC,IAAAA,WAAU48F,aAAax8F,GAAAA;AAAAA,aACjDJ,WAAU48F,aAAax8F,GAC9B;AAAA,IAAA;AAED,QAAGJ,WAAU68F,kBAAkBz8F,GAAI,GAAA;AAClCJ,MAAAA,WAAU68F,kBAAkB71D,MAAUhnC,IAAAA,WAAU68F,kBAAkBz8F,GAC3DJ;AAAAA,aAAAA,WAAU68F,kBAAkBz8F,GAAAA;AAAAA,IACnC;AAED,aAAS4H,IAAI,GAAGA,IAAI3H,KAAK88F,UAAUl1F,QAAQD,KAAK;AAC/C,UAAIu1F,MAAMl9F,KAAK88F,UAAUn1F,CACzB;AAAA,UAAIu1F,IAAIx+B,aAAa3+D,KAAI;AACxBm9F,YAAIx+B,YAAY/3B;AAChB3mC,aAAK0mC,cAAcw2D,IAAIn9F,IAAI4mC,SAAS,MAAMu2D,IAAIn9F,GAAGwE,MAAM,GAAK,EAAA,CAAA,CAAA;AAAA,MAC5D;AAAA,IACD;AAED,aAAQoD,KAAK3H,KAAKu8F,cAAa;AAC9B,UAAIW,MAAMl9F,KAAKu8F,aAAa50F,CAAAA;AAC5B,UAAGu1F,IAAIx+B,aAAa3+D,KAAG;AACtBm9F,YAAIx+B,YAAY/3B;AAChBu2D,YAAIC,eAAe;AAAA,MACnB;AAAA,IACD;AAED,QAAIvvF,MAAKjO,WAAU48F,aAAa51D,MAAAA;AAChC,QAAG/4B,OAAMA,IAAGuvF,cAAc;AAAA,aAClBvvF,IAAGuvF;AACVpzF,iBAAW,WAAA;AACV,YAAGpK,WAAUqK,YAAW;AACvB,iBAAO;AAAA,QACP;AACDrK,QAAAA,WAAU8B,UAAU,kBAAkB,CAACklC,QAAQhnC,WAAUwV,SAASwxB,MAAAA,CAAAA,CAAAA;AAAAA,MAClE,GAAE,CAAA;AAAA,IACH;WAEM3mC,KAAKi9F;AAAAA,EACb,CACAt9F;AAAAA,EAAAA,WAAUgE,YAAY,gCAAgC,SAAS5D,KAAAA;AAC9D,QAAIuU,KAAKtU,KAAKmV,SAASpV,GAAAA;AACvB,QAAIC,KAAKslD,kBAAkBvlD,GAAAA,KAAQC,KAAK47F,uBAAuBtnF,EAAAA,KAAOA,GAAGmxC,YAAYnxC,GAAGmxC,YAAY,QAAS;AAC5G1lD,MAAAA,MAAKA,IAAGwE,MAAM,GACd;AAAA,UAAI64F,MAAMp9F,KAAK+Z,IACf;AAAA,UAAIqvC,MAAOrpD,IAAG,CAAA,IAAMA,IAAG,CAAA,IAAK0S,KAAK+G,MAAMlF,GAAGmoF,YAAY;AAEtD,UAAIY,MAAMr9F,KAAKisC,YAAY33B,EAC3B+oF;AAAAA,UAAIt9F,KAAKq9F;AACTC,UAAI3+B,YAAYpqD,GAAGoqD,aAAa3+D,IAAG,CACnC;AAAA,UAAIyc,YAAY4sC;AAChBi0C,UAAIz+B,eAAepiD;AACnB6gF,UAAI53C,WAAW43C,IAAI33C,cAAc;AACjC1lD,WAAKgM,SAASqxF,GAAAA;AAEdr9F,WAAKolD,gBAAgBi4C,KAAK7gF,YAAY,GACxC;AAAA,IAAA,OAAQ;AACN,UAAIlI,GAAGmxC,YAAYzlD,KAAK8V;AACvB9V,aAAKugE,iBAAiBjsD,EAAAA;AACvB,UAAIgpF,MAAMt9F,KAAK48F,iBAAiB78F,GAAAA;AAChC,eAAS4H,KAAK21F,KAAK;AAClB,YAAIA,IAAIhzE,eAAe3iB,CAAAA,GAAI;AAC1B5H,UAAAA,MAAKu9F,IAAI31F,CAAAA,EAAG5H;AACZ,cAAIC,KAAKmV,SAASpV,GAAAA;AACjBC,iBAAKkY,YAAYnY,KAAI,IAAA;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AACD,WAAO;AAAA,EACR,CACAJ;AAAAA,EAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAAIuU,IAAAA;AACpD,QAAItU,CAAAA,KAAKslD,kBAAkBvlD,GAAAA,KAAOC,KAAK47F,uBAAuBtnF,EAAI,GAAA;AACjE,UAAI3U,CAAAA,WAAUsmC,QAAQlmC,GAAAA,GAAI;AACzBuU,WAAGmxC,WAAWnxC,GAAGoxC,cAAc;AAC/B1lD,aAAKumC,SAASxmC,KAAIuU,EAClB;AAAA,MAAA;AAAA,IACD;AAAA,EACF,CACA3U;AAAAA,EAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAAI6F,QACpD;AAAA,QAAI5F,KAAKga;AAAU,aAAO;AAE1B,QAAI1F,KAAKtU,KAAKmV,SAASpV,GAAAA;AAEvB,QAAIC,KAAKslD,kBAAkBvlD,GAAAA,GAAK;AAC/B,UAAIA,MAAKA,IAAGwE,MAAM,GAClB;AAAA,UAAI64F,MAAMp9F,KAAK+Z,IACf/Z;AAAAA,WAAKgoC,cAAc;AAEnB,UAAIq1D,MAAMr9F,KAAKisC,YAAYrmC,MAAAA;AAC3By3F,UAAIt9F,KAAKq9F;AACTC,UAAI3+B,YAAY3+D,IAAG,CAAA;AACnB,UAAIyc,YAAYzc,IAAG,CAAA;AACnBs9F,UAAIz+B,eAAepiD;AACnB6gF,UAAI53C,WAAW43C,IAAI33C,cAAc;AAEjC1lD,WAAKolD,gBAAgBi4C,KAAK7gF,YAAY,GAAA;AACtCxc,WAAKgM,SAASqxF,GAEdr9F;AAAAA,WAAKgoC,cAAc;AAAA,IAErB,OAAQ;AACN,UAAG1zB,GAAGiF,YAAW;AAChBjF,WAAGiF,aAAasjF,kBAAkBvoF,GAAGiF,UACrC;AAAA,MAAA;AACD,UAAGjF,GAAGuF,UAAS;AACdvF,WAAGuF,WAAWgjF,kBAAkBvoF,GAAGuF,QAAAA;AAAAA,MACnC;AAED,UAAIvF,GAAGmxC,YAAYzlD,KAAK8V,cAAa;AACpC9V,aAAKugE,iBAAiBjsD,EACtB;AAAA,MAAA;AACD,UAAIgpF,MAAMt9F,KAAK48F,iBAAiB78F;AAChC,eAAS4H,KAAK21F,KAAK;AAClB,YAAIA,IAAIhzE,eAAe3iB,IAAI;AACnB3H,iBAAAA,KAAKu8F,aAAae,IAAI31F,CAAG5H,EAAAA,EAAAA;AAChCC,eAAKkY,YAAYolF,IAAI31F,CAAAA,EAAG5H,IAAI,IAAA;AAAA,QAC5B;AAAA,MACD;AAAA,aACMC,KAAKw8F,kBAAkBz8F;AAG9B,UAAIw9F,eAAe;AACnB,eAAS1xD,IAAI,GAAGA,IAAI7rC,KAAKymC,UAAU7+B,QAAQikC,KAAK;AAC/C,YAAI7rC,KAAKymC,UAAUoF,CAAAA,EAAG14B,aAAanT,KAAKuB,OAAO8iC,eAAoBtkC,KAAAA;AAClEw9F,yBAAe;AAAA,MAChB;AACD,UAAA,CAAKA;AACJv9F,aAAK6U,aAAa;AAAA,IACnB;AACD,WAAO;AAAA,EACR,CAAA;AACAlV,EAAAA,WAAUgE,YAAY,gBAAgB,SAAS5D,KAAAA;AAC9C,QAAKC,CAAAA,KAAKga,UAAU;AACnB,UAAI1F,KAAKtU,KAAKmV,SAASpV,GAAAA;AACvB,UAAIuU,GAAGmxC,YAAanxC,CAAAA,GAAGsqD,cAAa;AACnC5+D,aAAKugE,iBAAiBjsD,EAAAA;AAAAA,MACtB;AAAA,IACD;AACD,WAAO;AAAA,EACR,CACA3U;AAAAA,EAAAA,WAAUgE,YAAY,eAAe,SAAS5D,KAAI+5B,MAAM0lD,cAAAA;AACvD,QAAIlrE,KAAKtU,KAAKmV,SAASpV,GAAAA;AACvB,QAAKuU,CAAAA,GAAGmxC,YAAY3rB,KAAK2rB,aAAazlD,KAAKslD,kBAAkBvlD,GAC5DC;AAAAA,WAAK6U,aAAa;AACnB,WAAO;AAAA,EACR;AACAlV,EAAAA,WAAUgE,YAAY,kBAAkB,SAAS5D,KAChD;AAAA,QAAIuU,KAAKtU,KAAKmV,SAASpV,GACvB;AAAA,QAAA,CAAKuU,GAAGmxC;AACPnxC,SAAGmxC,WAAWnxC,GAAGoxC,cAAcpxC,GAAGsqD,eAAetqD,GAAGoqD,YAAY;AACjE,WAAO;AAAA,EACR,CACA/+D;AAAAA,EAAAA,WAAUgE,YAAY,iBAAiB,SAAS5D,KAC/C;AAAA,QAAIuU,KAAKtU,KAAKmV,SAASpV,GAAAA;AACvB,QAAIuU,GAAGmxC,UAAU;AAChBzlD,WAAKugE,iBAAiBjsD,EAAAA;AAEtBtU,WAAK6hB,iBAAAA;AAAAA,IACL;AAAA,EACF,CAAA;AACAliB,EAAAA,WAAU4gE,mBAAmB,SAASjsD,IAAAA;AACrC,QAAGA,GAAGiF,YAAW;AAChBjF,SAAGiF,aAAasjF,kBAAkBvoF,GAAGiF,UAAAA;AAAAA,IACrC;AACD,QAAGjF,GAAGuF,UAAS;AACdvF,SAAGuF,WAAWgjF,kBAAkBvoF,GAAGuF,QACnC;AAAA,IAAA;AACDvF,OAAGsqD,eAAensD,KAAK+G,OAAOlF,GAAGuF,SAAS3C,QAAAA,IAAY5C,GAAGiF,WAAWrC,QAAa,KAAA,GAAA;AACjF5C,OAAGuF,WAAWvF,GAAGqlF;AACjB,QAAIrlF,GAAG2nF,aAAa;AACnB3nF,SAAGiF,WAAWymB,SAAS,CACvB1rB;AAAAA,SAAGiF,WAAWumB,QAAQxrB,GAAG2nF,YAAY77E,QAAAA,CAAAA;AACrC9L,SAAGiF,WAAWymB,SAAS1rB,GAAG2nF,YAAY32E,SAAAA,CAAAA;AACtChR,SAAGiF,WAAWy7C,YAAY1gD,GAAG2nF,YAAY52E,YAEzC,CAAA;AAAA,IAAA;AAAA,EACF;AAEA1lB,EAAAA,WAAU2lD,oBAAoB,SAASvlD,KACtC;AAAA,WAAOA,IAAGgzB,SAAAA,EAAWhc,QAAQ,GAAA,KAAA;AAAA,EAC9B;AACApX,EAAAA,WAAUi8F,yBAAyB,SAAStnF,IAC3C;AAAA,WAAQA,GAAGoqD,aAAapqD,GAAGoqD,aAAa;AAAA,EACzC;AAEA/+D,EAAAA,WAAU69F,mBAAmB79F,WAAU6Y;AACvC7Y,EAAAA,WAAU6Y,eAAe,SAASzY,KAAAA;AACjC,QAAIsT,SAASrT,KAAKqT;AAClB,QAAIrP,IAAIrE,WAAU4B,OAAOk8F;AACzB,QAAInpF,KAAKtU,KAAKmV,SAASpV,GACvB;AAAA,QAAI29F,MAAMppF,GAAGoqD;AACb,QAAIi/B,YAAY39F,KAAKslD,kBAAkBvlD,GACvC;AAAA,QAAI49F;AACHD,YAAM39F,IAAGwE,MAAM,GAAA,EAAK,CAGrB;AAAA,QAAIq5F,aAAa,SAAS79F;AACzB,UAAI6F,SAAQjG,WAAUwV,SAASpV,GAC/B6F;AAAAA,MAAAA,OAAM+zF,YAAY/zF,OAAMiU;AACxBjU,MAAAA,OAAMiU,WAAW,IAAIxE,KAAKzP,OAAM2T,WAAWrC,QAAAA,IAAYtR,OAAMg5D,eAAe,GAAA;AAC5E,aAAOj/D,WAAU69F,iBAAiBz9F,GAAAA;AAAAA,IACpC;AAEC,SAAM29F,OAAOA,MAAI,MAAM,MAAMppF,GAAGmxC,UAAU;AAEzC,aAAOm4C,WAAW79F;IAClB;AACD,QAAA,CAAM29F,OAAOA,QAAQ,QAAWrqF,CAAAA,OAAOC,OAAO88C,qBAAqBpsD,KAAK,cAAgBA,KAAK,YAAa25F,CAAAA,YAAc;AAEvH,aAAO39F,KAAKw9F,iBAAiBz9F;IAC7B;AACD,QAAIiE,KAAK,OAAO;AACf,UAAIknD,OAAOlrD;AACXL,MAAAA,WAAUgwD,SAAS,EAClBhuD,MAAM0R,OAAOC,OAAO88C,mBACpBp4C,OAAO3E,OAAOC,OAAOuqF,yBACrBj3F,OAAO,SACPb,UAAU,UACViR,SAAQ,CAAC3D,OAAOC,OAAOk9C,oBAAoBn9C,OAAOC,OAAOm9C,wBAAwBp9C,OAAOC,OAAO28C,WAAAA,GAC/FljD,UAAU,SAASrB,OAAAA;AAClB,gBAAQA,CAAAA,OAAAA;AAAAA,UACP,KAAK;AACJ,mBAAOkyF,WAAWF;UACnB,KAAK;AACJ,mBAAOxyC,KAAKsyC,iBAAiBz9F,GAAAA;AAAAA,UAC9B,KAAK;AACJ;AAAA;MAEF,EAEJ,CAAA;AAAA,IAAA,OAAQ;AACN69F,iBAAWF,GACX;AAAA,IAAA;AAAA,EACF;AAGA/9F,EAAAA,WAAUm+F,yBAAyBn+F,WAAU4nC;AAC7C5nC,EAAAA,WAAU4nC,qBAAqB,SAASC,YAAAA;AACvC,aAAS7/B,IAAI,GAAGA,IAAI3H,KAAK88F,UAAUl1F,QAAQD;AAAAA,aACnC3H,KAAKimC,QAAQjmC,KAAK88F,UAAUn1F,CAAAA,EAAG5H,EACvCC;AAAAA,SAAK88F,YAAY,CAAA;AAEjB,QAAIr1D,QAAQznC,KAAK89F,uBAAuBt2D,UAAAA;AACxC,QAAImF,MAAM,CACV;AAAA,aAAShlC,IAAI,GAAGA,IAAI8/B,MAAM7/B,QAAQD,KAAK;AACtC,UAAI8/B,MAAM9/B,GAAG89C,UAAU;AAEtB,YAAIhe,MAAM9/B,CAAG+9C,EAAAA,eAAe;AAC3B1lD,eAAK65F,YAAYpyD,MAAM9/B,CAAAA,GAAIglC,GAC5B;AAAA,MAAA;AACIA,YAAIj+B,KAAK+4B,MAAM9/B,CAAAA,CAAAA;AAAAA,IACpB;AACD,WAAOglC;AAAAA,EACR;AAGA,GAAA,WAAA;AACC,QAAInN,MAAM7/B,WAAUiiB;AACpBjiB,IAAAA,WAAUiiB,gBAAgB,SAAStN,IAAAA;AAClC,UAAIA,GAAGmxC;AAAU,eAAO;AACxB,aAAOjmB,IAAInlB,KAAKra,MAAMsU,EACxB;AAAA,IAAA;AACC,QAAIypF,mBAAmBp+F,WAAUsV;AACjCtV,IAAAA,WAAUsV,cAAc,SAASlV,KAChC;AAAA,UAAIuU,KAAK3U,WAAUwV,SAASpV,GAC5B;AAAA,UAAGuU,MAAMA,GAAGmxC,UAAS;AAGpBnxC,WAAGoxC,eAAepxC,GAAGmxC,YAAY,IAAIlhD,MAAM,GAAK,EAAA,CAAA;AAAA,MAChD;AACD,UAAI+P,MAAMA,GAAGmxC,YAAAA,CAAazlD,KAAKslD,kBAAkBvlD,GAAK,GAAA;AACrDJ,QAAAA,WAAU6gB,YAAAA;AAAAA,MACb,OAAS;AACNu9E,yBAAiB1jF,KAAKra,MAAMD,GAC5B;AAAA,MAAA;AAAA,IACH;AAAA,EACC;AAEDJ,EAAAA,WAAUq+F,kBAAkB,EAC3Bx+F,KAAI,GAAG61F,MAAK,GAAG3jE,OAAM,GAAGnvB,MAAK,GAAA;AAE9B5C,EAAAA,WAAUyF,KAAK64F,WAAW,SAASn5E,IAAItlB,KAAK61F;AAC3CvwE,OAAGgb,QAAQ,CACX;AAAA,QAAIo+D,gBAAgBv+F,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKyP,EAAAA,CAAAA;AACxDuwE,YAAQA,OAAO,KAAK;AACpB,QAAI8I,OAAOr5E,GAAGqZ,OACd;AAAA,QAAIwD,OAAOniC,MAAM,IAAI61F,OAAO8I,OAAO;AACnCr5E,OAAGgb,QAAQ6B,QAAQ0zD,OAAQ1zD,OAAO,IAAKA,IACvC;AAAA,QAAIy8D,WAAWz+F,WAAUyF,KAAKy6B,YAAY,IAAIxqB,KAAKyP,EAAAA,CAAAA;AACnD,QAAGo5E,cAAchnF,cAAcknF,SAASlnF,QAAAA,GAAU;AACjD,aAAO;AAAA,IACP;AACD,WAAO;AAAA,EACR;AACAvX,EAAAA,WAAUu7F,qBAAqB,SAASp2E,IAAIxX,MAAM+wF,KAAK/rD,MAAMgsD,MAAAA;AAC5D,QAAIH,QAAQr5E,GAAGqZ,OAAAA,MAAax+B,WAAU4B,OAAOq+B,kBAAkB,IAAI,MAAMy+D;AACzE,aAAS12F,IAAI,GAAGA,IAAI2F,KAAK1F,QAAQD,KAAK;AACrC,UAAI2F,KAAK3F,CAAAA,IAAKw2F;AACb,eAAOr5E,GAAGgb,QAAQhb,GAAG1E,QAAY9S,IAAAA,KAAK3F,CAAK,IAAA,IAAIw2F,QAAQ7rD,OAAO+rD,MAAMC,KAAAA;AAAAA,IACrE;AACDt+F,SAAKk7F,mBAAmBp2E,IAAIxX,MAAM+wF,MAAM/rD,MAAM,MAAM+rD;EACrD;AACA1+F,EAAAA,WAAU86F,iBAAiB,SAAS/4F,MACnC;AAAA,QAAI68F,qBAAqB,eAAe78F;AACxC,QAAK1B,CAAAA,KAAKoF,KAAKm5F,kBAAAA,GAAqB;AACnC,UAAIC,iBAAiB98F,KAAK6C,MAAM,GAChC;AAAA,UAAIk6F,gBAAgB,KAAK,KAAK,KAAK;AACnC,UAAIC,eAAe,SAASh9F;AAC5B,UAAIi9F,oBAAoB3+F,KAAKg+F,gBAAgBQ,eAAe,CAAA,CAAA,IAAMA,eAAe,CAEjF;AAAA,UAAIA,eAAe,CAAA,KAAM,SAASA,eAAe,CAAM,KAAA,QAAQ;AAC9D,YAAII,WAAW;AACf,YAAIJ,eAAe,CAAA,GAAI;AACtBI,qBAAWJ,eAAe,CAAGj6F,EAAAA,MAAM,GACnC;AAAA,cAAI5E,WAAU4B,OAAOq+B,iBAAiB;AACrC,qBAASj4B,IAAI,GAAGA,IAAIi3F,SAASh3F,QAAQD;AACpCi3F,uBAASj3F,CAAMi3F,IAAAA,SAASj3F,CAAK,IAAA,KAAM;AACpCi3F,qBAASnoE,KACT;AAAA,UAAA;AAAA,QACD;AAEDz2B,aAAKoF,KAAKm5F,kBAAsB,IAAA,SAAS7gB,IAAItE,IAAAA;AAC5C,cAAImI,QAAQ9uE,KAAKkI,OAAOy+D,GAAGliE,QAAYwmE,IAAAA,GAAGxmE,QAAcunF,MAAAA,gBAAgBE,kBACxE;AAAA,cAAIpd,QAAQ;AACX7D,eAAG59C,QAAQ49C,GAAGt9D,QAAAA,IAAYmhE,QAAQod,iBAAAA;AACnC,cAAIC;AACHj/F,YAAAA,WAAUu7F,mBAAmBxd,IAAIkhB,UAAU,GAAGD,iBAE/C;AAAA,iBAAOjhB;AAAAA,QACX;AACG19E,aAAKoF,KAAKs5F,YAAAA,IAAgB,SAAS55E,IAAIob,KACtC;AAAA,cAAIw9C,KAAK,IAAIroE,KAAKyP,GAAG5N,QAAAA,CAAAA;AACrB,cAAI0nF,UAAU;AACb,qBAAS36E,QAAQ,GAAGA,QAAQic,KAAKjc;AAChCtkB,cAAAA,WAAUu7F,mBAAmBxd,IAAIkhB,UAAU,GAAGD,iBAC/C;AAAA,UAAA;AACAjhB,eAAG59C,QAAQ49C,GAAGt9D,QAAAA,IAAY8f,MAAMy+D,iBAEjC;AAAA,iBAAOjhB;AAAAA,QACX;AAAA,MACG,WACQ8gB,eAAe,CAAA,KAAM,WAAWA,eAAe,CAAA,KAAM,QAAQ;AACrEx+F,aAAKoF,KAAKm5F,kBAAsB,IAAA,SAAS7gB,IAAItE,IAAIylB,gBAAAA;AAChD,cAAItd,QAAQ9uE,KAAKsI,MAAOq+D,GAAG/zD,YAAAA,IAAgB,KAAK+zD,GAAG9zD,SAAAA,IAAa,IAAI,KAAMo4D,GAAGr4D,YAAAA,IAAgB,KAAKq4D,GAAGp4D,aAAa,IAAI,MAAE,oBAA0B,CAAA;AAElJ,cAAIi8D,SAAS,GAAE;AACd7D,eAAG59C,QAAQ,CAAA;AACX49C,eAAG19C,SAAS09C,GAAGp4D,SAAAA,IAAai8D,QAAQod,iBAAAA;AAAAA,UACpC;AAED,iBAAOh/F,WAAUyF,KAAKs5F,YAAchhB,EAAAA,IAAI,GAAGmhB,cAAAA;AAAAA,QAI/C;AACG7+F,aAAKoF,KAAKs5F,YAAgB,IAAA,SAAS55E,IAAIob,KAAK2+D,gBAAgBC,cAAAA;AAC3D,eAAIA,cAAa;AAChBA,2BAAe;AAAA,UACpB,OAAS;AACJA;AAAAA,UACA;AACD,cAAIC,WAAW;AACf,cAAGD,eAAeC,UAAS;AAC1B,mBAAO;AAAA,UACP;AAED,cAAIrhB,KAAK,IAAIroE,KAAKyP,GAAG5N,QAAAA,CAAAA;AACrBwmE,aAAG59C,QAAQ;AAGX49C,aAAG19C,SAAS09C,GAAGp4D,SAAAA,IAAa4a,MAAMy+D,iBAAAA;AAClC,cAAIK,YAAYthB,GAAGp4D,SACnB;AAAA,cAAI25E,WAAWvhB,GAAGr4D,YAClBq4D;AAAAA,aAAG59C,QAAQ++D,eAAetlF,WAAW6G,QACrC,CAAA;AAAA,cAAIo+E,eAAe,CAAA,GAAG;AACrB7+F,YAAAA,WAAUyF,KAAK64F,SAASvgB,IAAI8gB,eAAe,CAAIA,GAAAA,eAAe,CAC9D,CAAA;AAAA,UAAA;AAED,cAAIU,2BAA2Bv/F,WAAU4B,OAAO49F;AAChD,cAAGzhB,GAAGp4D,SAAc05E,KAAAA,aAAaE,4BAA4B,QAAO;AAEnE,gBAAGA,6BAA6B,WAAU;AAEzCxhB,mBAAK,IAAIroE,KAAK4pF,UAAUD,YAAY,GAAG,GAAGthB,GAAG/jE,SAAAA,GAAY+jE,GAAG1/D,WAAAA,GAAc0/D,GAAGh/C,WAAAA,GAAcg/C,GAAG0hB,gBACpG,CAAA;AAAA,YAAA,OAAU;AAEJ1hB,mBAAK/9E,WAAUyF,KAAKs5F,YAAc,EAAA,IAAIrpF,KAAK4pF,UAAUD,YAAY,GAAG,CAAA,GAAI9+D,OAAK,GAAG2+D,gBAAgBC,YAAAA;AAAAA,YAEhG;AAAA,UACD;AACD,iBAAOphB;AAAAA,QACX;AAAA,MACG;AAAA,IACD;AAAA,EACF;AACA/9E,EAAAA,WAAUk6F,cAAc,SAASvlF,IAAImzB,OAAO43D,YAAYt7E,MAAMC,IAAI+6E,UAEjEh7E;AAAAA,WAAOA,QAAQ/jB,KAAKwV;AACpBwO,SAAKA,MAAMhkB,KAAK0V;AAChB,QAAIhD,MAAMqsF,YAAa;AACvB,QAAI3lB,KAAK,IAAI/jE,KAAKf,GAAGiF,WAAWrC;AAEhC,QAAIooF,YAAYlmB,GAAGz/D,SAAAA;AAEnB,QAAI4lF,eAAe;AAEnB,QAAA,CAAKjrF,GAAGoxC,eAAepxC,GAAGmxC;AACzBnxC,SAAGoxC,cAAcpxC,GAAGmxC,SAASlhD,MAAM,GAAK,EAAA,CAAA;AAEzCvE,SAAKy6F,eAAenmF,GAAGoxC,WAAAA;AACvB0zB,SAAKz5E,WAAUyF,KAAK,eAAekP,GAAGoxC,WAAa0zB,EAAAA,IAAIr1D,MAAMzP,EAAAA;AAC7D,WAAQ8kE,OACPA,KAAK9kE,GAAGiF,cACR5Z,WAAU6/F,0BAA0BpmB,IAAGr1D,MAAKzP,IAAG8kE,IAAG,IAAI/jE,KAAK+jE,GAAGliE,QAAY5C,IAAAA,GAAGsqD,eAAe,GAAA,CAAA,EAAO1nD,QAAa6M,KAAAA,KAAK7M,QACrHkiE,KAAAA,GAAGliE,QAAY5C,IAAAA,GAAGsqD,eAAe,OAAQ76C,KAAK7M,QAAAA,IAAW;AACxDkiE,WAAKp5E,KAAKoF,KAAK,SAASkP,GAAGoxC,WAAAA,EAAa0zB,IAAI,GAAG9kE;IAEhD;AACD,WAAO8kE,OAAOA,KAAKp1D,MAAMo1D,KAAK9kE,GAAGuF,aAAanH,MAAM,KAAK6sF,eAAe7sF,OAAO;AAC9E0mE,SAAGx/D,SAAS0lF,SAEZ;AAAA,UAAI9iF,YAAa7c,WAAU4B,OAAkC,8BAAI8T,KAAK6pB,IAAIk6C,GAAG/zD,YAAe+zD,GAAAA,GAAG9zD,YAAY8zD,GAAGh5D,QAAAA,GAAWg5D,GAAGz/D,SAAAA,GAAYy/D,GAAGp7D,WAAAA,GAAco7D,GAAG16C,WAAAA,CAAAA,IAAgB06C,GAAGliE,QAC/K;AAAA,UAAIylF,KAAK38F,KAAK08F,gBAAgBlgF,WAAWlI,GAAGvU,EAAAA;AAC5C,WAAK48F,IAAI;AACR,YAAI8C,MAAM,IAAIpqF,KAAK+jE,GAAGliE,QAAAA,IAAY5C,GAAGsqD,eAAe,GACpD;AAAA,YAAI9qC,QAAO9zB,KAAKisC,YAAY33B,EAAAA;AAE5Bwf,QAAAA,MAAKnyB,OAAO2S,GAAG3S;AACfmyB,QAAAA,MAAKva,aAAa6/D;AAClBtlD,QAAAA,MAAK4qC,YAAYpqD,GAAGvU;AACpB+zB,QAAAA,MAAK/zB,KAAKuU,GAAGvU,KAAK,MAAM0S,KAAK+G,MAAMgD,YAAY,GAC/CsX;AAAAA,QAAAA,MAAKja,WAAW4lF;AAEhB3rE,QAAAA,MAAKja,WAAWla,WAAU6/F,0BAA0B1rE,MAAKva,YAAYua,MAAKja,UAAUvF,IAAI8kE,IAAItlD,MAAKja,QAAAA;AAEjGia,QAAAA,MAAK1Z,SAASpa,KAAK4hB,cAAckS,KAAAA;AAEjC,YAAKA,CAAAA,MAAK1Z,UAAWpa,CAAAA,KAAKkR,gBAAgBlR,KAAKuB,OAAOmlB;AAAW;AACjE+gB,cAAM/4B,KAAKolB,KAEX;AAAA,YAAA,CAAKurE,YAAY;AAChBr/F,eAAKimC,QAAQnS,MAAK/zB,EAAM+zB,IAAAA;AACxB9zB,eAAK88F,UAAUpuF,KAAKolB,KAAAA;AAAAA,QACpB;AAEDyrE;AAAAA,MAEA,WACGF,YAAW;AACd,YAAG1C,GAAGl3C,YAAY,QAAO;AACxB85C;AAAAA,QACA;AACD93D,cAAM/4B,KAAKiuF;MACX;AAEDvjB,WAAKp5E,KAAKoF,KAAK,SAASkP,GAAGoxC,WAAa0zB,EAAAA,IAAI,GAAG9kE,EAI/C;AAAA,IAAA;AAAA,EACF;AACA3U,EAAAA,WAAU6/F,4BAA4B,SAASjmF,YAAYM,UAAUvF,IAAI6uC,SAASlhB,cAAAA;AACjF,QAAIriB,QAAQrG,WAAWwD,kBAAAA,IAAsBlD,SAASkD,kBAAAA;AACtD,QAAI6C,OAAO;AACV,UAAIA,QAAQ,GAAG;AAEd,eAAO,IAAIvK,KAAK8tC,QAAQjsC,QAAAA,IAAY5C,GAAGsqD,eAAe,MAAOh/C,QAAQ,KAAK,GAAA;AAAA,MAC1E,OACI;AAEJ,eAAO,IAAIvK,KAAKwE,SAAS3C,QAAAA,IAAY0I,QAAQ,KAAK,GAClD;AAAA,MAAA;AAAA,IACD;AACD,WAAO,IAAIvK,KAAK4sB,aAAa/qB,QAAAA,CAAAA;AAAAA,EAC9B;AACAvX,EAAAA,WAAUghE,cAAc,SAAS5gE,KAAI2S,KACpC;AAAA,QAAI4B,KAAYvU,OAAAA,OAAM,WAAWA,MAAKJ,WAAUwV,SAASpV,GAAAA;AACzD,QAAI2/F,aAAa,CACjBhtF;AAAAA,UAAMA,OAAO;AAEb,QAAA,CAAK4B,GAAGmxC,UAAU;AACjB,aAAO,CACN,EAAElsC,YAAYjF,GAAGiF,YAAYM,UAAUvF,GAAGuF,SAAAA,CAAAA;AAAAA,IAE3C;AACD,QAAIvF,GAAGmxC,YAAY,QAAQ;AAC1B,aAAO,CACP;AAAA,IAAA;AAED9lD,IAAAA,WAAUk6F,YAAYvlF,IAAIorF,YAAY,MAAMprF,GAAGiF,YAAYjF,GAAGuF,UAAUnH,GAExE;AAAA,QAAIkG,SAAS,CACb;AAAA,aAAQjR,IAAI,GAAGA,IAAI+3F,WAAW93F,QAAQD,KAAI;AACzC,UAAG+3F,WAAW/3F,CAAG89C,EAAAA,YAAY,QAAO;AACnC7sC,eAAOlK,KAAK,EAAC6K,YAAYmmF,WAAW/3F,CAAG4R,EAAAA,YAAYM,UAAU6lF,WAAW/3F,GAAGkS,SAC3E,CAAA;AAAA,MAAA;AAAA,IACD;AAED,WAAOjB;AAAAA,EACR;AACAjZ,EAAAA,WAAUopC,YAAY,SAAShlB,MAAMC,IAAAA;AACpC,QAAIpL,SAAS,CACb;AAAA,aAAS9U,KAAK9D,KAAKimC,SAAS;AAC3B,UAAI3xB,KAAKtU,KAAKimC,QAAQniC,CACtB;AAAA,UAAIwQ,MAAMA,GAAGiF,aAAayK,MAAM1P,GAAGuF,WAAWkK,MAAM;AACnD,YAAIzP,GAAGoxC,aAAa;AACnB,cAAIpxC,GAAGoxC,eAAe;AAAQ;AAC9B,cAAIi6C,MAAM,CACV3/F;AAAAA,eAAK65F,YAAYvlF,IAAIqrF,KAAK,MAAM57E,MAAMC,EAAAA;AACtC,mBAASrc,IAAI,GAAGA,IAAIg4F,IAAI/3F,QAAQD,KAAK;AAEpC,gBAAKg4F,CAAAA,IAAIh4F,CAAG+9C,EAAAA,eAAei6C,IAAIh4F,CAAAA,EAAG4R,aAAayK,MAAM27E,IAAIh4F,CAAGkS,EAAAA,WAAWkK,QAAS/jB,CAAAA,KAAKu8F,aAAaoD,IAAIh4F,CAAG5H,EAAAA,EAAAA,GAAK;AAC7G6Y,qBAAOlK,KAAKixF,IAAIh4F,CAAAA,CAAAA;AAAAA,YAChB;AAAA,UACD;AAAA,QACD,WAAM,CAAK3H,KAAKslD,kBAAkBhxC,GAAGvU,EAAAA,GAAK;AAC1C6Y,iBAAOlK,KAAK4F,EAAAA;AAAAA,QACZ;AAAA,MACD;AAAA,IACD;AACD,WAAOsE;AAAAA,EACR;AAEAjZ,EAAAA,WAAU4B,OAAOs4F,cAAc;AAC/Bl6F,EAAAA,WAAU4B,OAAO+nB,SAASD,WAAW,CACpC,EAACrc,MAAK,eAAeuc,QAAO,QAAQ7nB,MAAK,YAAaipB,OAAM,KAC5D,GAAA,EAAC3d,MAAK,aAAatL,MAAK,aAAa6nB,QAAO,YAAYlkB,QAAO,YAAA,GAC/D,EAAC2H,MAAK,QAAQjG,QAAO,IAAIrF,MAAK,QAAQ6nB,QAAO,OAAA,CAAA;AAK9C5pB,EAAAA,WAAU4tC,cAAc,SAASj5B,IAChC;AAAA,QAAIiF,aAAa,IAAIlE,KAAKrV,KAAKuZ,UAC/B;AAAA,QAAIM,WAAW,IAAIxE,KAAKrV,KAAK6Z,QAAAA;AAC7B7Z,SAAKuZ,aAAaA;AAClBvZ,SAAK6Z,WAAWA;AAChB7Z,SAAK4+D,eAAe5+D,KAAK0+D,YAAY1+D,KAAK0lD,cAAc1lD,KAAKylD,WAAW;AAAA,EACzE;AAEA9lD,EAAAA,WAAU4B,OAAOw4F,iBAAiB;AAClCp6F,EAAAA,WAAU4B,OAAOk8F,qBAAqB;AAEtC99F,EAAAA,WAAUgE,YAAY,cAAc,WACnChE;AAAAA,IAAAA,WAAU48F,eAAe;AACzB58F,IAAAA,WAAU68F,oBAAoB;AAC9B78F,IAAAA,WAAUm9F,YAAY,CACvB;AAAA,EAAA,CAAA;AAEA;ACryCe,SAAQviE,UAAC56B,YAAAA;AAGxB,QAAMs2C,sBAAsBnB,gBAAgBn1C,UAAAA;AAG5CA,EAAAA,WAAUigG,kBAAgB,WAAA;AACzB,QAAItwE,QAAQ,CACZ;AAAA,QAAIkO,SAAS79B,WAAU4kC,SAASG;AAChC,QAAIm7D,aAAa5pD,oBAAAA;AACjB,aAASnyC,KAAK+7F,YAAW;AACxB,UAAIvrF,KAAKurF,WAAW/7F,CAAAA;AACpB,eAASkJ,QAAQsH;AAChB,YAAItH,KAAKynC,OAAO,GAAE,CAAK,KAAA;AACtBnlB,gBAAM5gB,KAAK,CAAC1B,MAAOA,QAAQ,gBAAgBA,QAAQ,aAAYwwB,SAAO,IACxE,CAAA;AAAA;AAAA,IACA;AACD,WAAOlO;AAAAA,EACR;AAEA3vB,EAAAA,WAAU41F,QAAQ,SAASpnF,QAC1B;AAAA,QAAIgtB,MAAM,CACV;AAAA,QAAI7L,QAAQtvB,KAAK4/F,gBACjB;AAAA,QAAIC,aAAa5pD,oBAAAA;AACjB,aAASnyC,KAAK+7F,YAAW;AACxB,UAAIvrF,KAAKurF,WAAW/7F;AAEpBq3B,UAAIzsB,KAAK,SACT;AAAA,eAAS/G,IAAE,GAAGA,IAAI2nB,MAAM1nB,QAAQD;AAC/BwzB,YAAIzsB,KAAK,MAAI4gB,MAAM3nB,CAAG,EAAA,CAAA,IAAG,gBAAc2nB,MAAM3nB,CAAAA,EAAG,CAAG2nB,IAAAA,MAAM3nB,CAAG,EAAA,CAAA,EAAG2M,GAAGgb,MAAM3nB,GAAG,CAAK2M,CAAAA,CAAAA,IAAAA,GAAGgb,MAAM3nB,CAAAA,EAAG,CAAK,CAAA,KAAA,UAAQ2nB,MAAM3nB,CAAAA,EAAG,KAAG,GAEtHwzB;AAAAA,UAAIzsB,KAAK,UAAA;AAAA,IACT;AACD,YAAQP,UAAQ,MAAI,WAASgtB,IAAI13B,KAAK,IAAM,IAAA;AAAA,EAC7C;AAEA9D,EAAAA,WAAUmgG,wBAAwB,SAASj5F;AAC1C,QAAGA,UAAU,QAAeA,OAAAA,UAAU,WAAU;AAC/CA,cAAQ,KAAKA;AAAAA,IACf,OAAM;AACJ,UAAA,CAAIA,SAASA,UAAU,GAAE;AACxBA,gBAAQ;AAAA,MACR;AACDA,cAAQ,MAAMA,MAAMksB,SAAAA,EACnB9b,QAAQ,OAAM,IACdA,QAAQ,OAAM,MACdA,EAAAA,QAAQ,MAAM,KAAA,IAAS;AAAA,IACxB;AACD,WAAOpQ;AAAAA,EACR;AAIAlH,EAAAA,WAAUmxF,SAAS,WAClB;AAAA,WAAOzhF,KAAKC,UAAUtP,KAAKu6B,UAAAA,CAAAA;AAAAA,EAC5B;AAGA56B,EAAAA,WAAUogG,SAAS,SAAS5xF,QAC3B;AAAA,QAAI4K,QAAQ;AACZ,QAAIC,MAAM;AACV,QAAIwkB,SAAS79B,WAAUyF,KAAKq7B,YAAY,eACxC;AAAA,QAAIu/D,kBAAkBrgG,WAAUyF,KAAKq7B,YAAY,QAEjD;AAAA,QAAIqT,OAAO,CACX;AAAA,QAAI+rD,aAAa5pD,oBAAAA;AACjB,aAASnyC,KAAK+7F,YAAW;AACxB,UAAIvrF,KAAKurF,WAAW/7F,CAGpBgwC;AAAAA,WAAKplC,KAAK,cAAA;AACV,WAAK4F,GAAG8F,UAAAA,CAAY9F,GAAGiF,WAAWI,SAAerF,KAAAA,CAAAA,GAAGiF,WAAWyE,WAAAA;AAC9D81B,aAAKplC,KAAK,aAAWsxF,gBAAgB1rF,GAAGiF,UAExCu6B,CAAAA;AAAAA;AAAAA,aAAKplC,KAAK,aAAW8uB,OAAOlpB,GAAGiF,UAAAA,CAAAA;AAChC,UAAKjF,CAAAA,GAAG8F,UAAY9F,CAAAA,GAAGuF,SAASF,SAAAA,KAAAA,CAAerF,GAAGuF,SAASmE,WAAAA;AAC1D81B,aAAKplC,KAAK,WAASsxF,gBAAgB1rF,GAAGuF,QAAAA,CAAAA;AAAAA;AAEtCi6B,aAAKplC,KAAK,WAAS8uB,OAAOlpB,GAAGuF,QAC9Bi6B,CAAAA;AAAAA,WAAKplC,KAAK,aAAW4F,GAAG3S,IACxBmyC;AAAAA,WAAKplC,KAAK,YAAA;AAAA,IACV;AACD,WAAOqK,SAAO5K,UAAQ,MAAI,OAAK2lC,KAAKrwC,KAAK,IAAA,IAAM,OAAKuV;AAAAA,EACrD;AAEA;ACpFe,SAAQinF,oBAACtgG,YACvBkkE;AAAAA,iBAAe1/D,MAAM,YAAYxE,WAAUyB,MAAAA;AAC5C;ACQO,MAAM8+F,QAAAA;AAAAA,EAKZ,YAAYvgG,YACXK;AAAAA,SAAKmgG,aAAaxgG;AAAAA,EACnB;AAAA,EAEA,UAAAkvE;AACC,UAAMlvE,aAAYK,KAAKmgG;AACnB,QAACngG,CAAAA,KAAKogG,cAAa;AACjBpgG,WAAAogG,eAAevgG,SAASC,cAAc,KAAA;AAC3CE,WAAKogG,aAAah8F,YAAY;AAEpBzE,MAAAA,WAAA4T,SAAS8e,YAAYryB,KAAKogG,YACrC;AAAA,IAAA;AACG,QAAAzgG,WAAU4B,OAAOgO,KAAI;AAClBvP,WAAAogG,aAAa17F,UAAUC,IAAI;IAAmB,OAC9C;AACA3E,WAAAogG,aAAa17F,UAAU6e,OAAO,mBACpC;AAAA,IAAA;AACA,WAAOvjB,KAAKogG;AAAAA,EACb;AAAA,EAEA,YAAYnuF,MAAAA;AACXjS,SAAKqgG,QAAQpuF;AACN,WAAAjS;AAAAA,EACR;AAAA,EAIA,KAAK+R,MAA2Bc,KAAAA;AAC/B,UAAMlT,aAAYK,KAAKmgG;AACvB,UAAMtyC,aAAaluD,WAAUkc;AAC7B,UAAMzT,YAAYvI,SAASM;AACrB,UAAA8R,OAAOjS,KAAK6uE,QAAAA;AAElB,QAAIhhB,CAAAA,WAAWz1B,UAAUnmB,MAAM7J,SAAAA,GAAW;AACzCpI,WAAKwtD,KACLplD;AAAAA,gBAAUhI,YAAY6R,IAAAA;AAAAA,IACvB;AAEI,QAAAjS,KAAKsgG,kBAAkBvuF,IAAAA,GAAO;AAC3B,YAAAhM,WAAW/F,KAAKugG,0BAA0BxuF,IAChDc;AAAAA,YAAM9M,SAAS8M;AACfd,aAAOhM,SAASgM;AAAAA,IACjB;AAEKE,SAAAnL,MAAM+L,MAAMA,MAAM;AAClBZ,SAAAnL,MAAMiL,OAAOA,OAAO;AAEfpS,IAAAA,WAAA4T,SAAS+e,mBAAmBrgB,IAAAA;AAC/B,WAAAjS;AAAAA,EACR;AAAA,EACA,OACC;AAAA,UAAML,aAAYK,KAAKmgG;AACjB,UAAAluF,OAAOjS,KAAK6uE;AACf,QAAA58D,QAAQA,KAAKhJ,YAAW;AACrBgJ,WAAAhJ,WAAWiC,YAAY+G;IAC7B;AACUtS,IAAAA,WAAA4T,SAASgf,kBAAkBtgB,IAC9B;AAAA,WAAAjS;AAAAA,EACR;AAAA,EAEA,WAAWiH,MAAAA;AACJ,UAAAgL,OAAOjS,KAAK6uE,QAAAA;AAClB58D,SAAK/R,YAAY+G;AACV,WAAAjH;AAAAA,EACR;AAAA,EAGQ,kBAAkB4F,QAAAA;AACzB,QAAKA,CAAAA,UAAAA,OAAgBA,WAAU,UAAU;AACjC,aAAA;AAAA,IACR;AACO,WAAA,aAAaA,UAAS,aAAaA;AAAAA,EAC3C;AAAA,EAEQ,eAAA46F;AACA,WAAAxgG,KAAKqgG,SAASxgG,SAASM;AAAAA,EAC/B;AAAA,EAGQ,0BAA0ByF,QAAAA;AACjC,UAAMjG,aAAYK,KAAKmgG;AACvB,UAAMtyC,aAAaluD,WAAUkc;AAEvB,UAAA4kF,WAAYzgG,KAAK0gG,iBAAAA;AACjB,UAAAC,cAAc3gG,KAAK6uE,QACzB;AAAA,UAAM+xB,WAAoB,EACzB/tF,KAAI,GACJd,MAAM,GACNnL,OAAO+5F,YAAYp2F,aACnBxD,QAAQ45F,YAAYt2F,cACpB6pB,QAAQ,GACRliB,OAAO,EAAA;AAGF,UAAA6uF,UAAUlhG,WAAU4B,OAAOu/F;AAC3B,UAAAC,UAAUphG,WAAU4B,OAAOy/F;AAEjC,UAAM54F,YAAYvI,SAASM;AAC3B,UAAM8gG,QAAQpzC,WAAWn5B,yBAAyB9uB,QAAOwC,SAAAA;AACnD,UAAA84F,eAAerzC,WAAWl5B,gBAAgBvsB;AAChD64F,UAAM9uF,KAAK+uF,aAAa/uF;AAExByuF,IAAAA,SAAQ/tF,MAAMouF,MAAM9uF;AACpByuF,IAAAA,SAAQ7uF,OAAOkvF,MAAM/uF;AACrB0uF,IAAAA,SAAQ/tF,OAAOkuF;AACfH,IAAAA,SAAQ7uF,QAAQ8uF;AACRD,IAAAA,SAAA1sE,SAAS0sE,SAAQ/tF,MAAM+tF,SAAQ75F;AAC/B65F,IAAAA,SAAA5uF,QAAQ4uF,SAAQ7uF,OAAO6uF,SAAQh6F;AAEjC,UAAA8U,YAAYza,OAAOkgG,UAAU/4F,UAAUsT;AAE7C,QAAGklF,SAAQ/tF,MAAM4tF,SAAS5tF,MAAM6I,WAAU;AACzCklF,MAAAA,SAAQ/tF,MAAM4tF,SAAS5tF;AACf+tF,MAAAA,SAAA1sE,SAAS0sE,SAAQ/tF,MAAM+tF,SAAQ75F;AAAAA,IAC/B,WAAA65F,SAAQ1sE,SAASusE,SAASvsE,QAAO;AACzC0sE,MAAAA,SAAQ1sE,SAASusE,SAASvsE;AAClB0sE,MAAAA,SAAA/tF,MAAM+tF,SAAQ1sE,SAAS0sE,SAAQ75F;AAAAA,IACxC;AAEG,QAAA65F,SAAQ7uF,OAAO0uF,SAAS1uF,MAAK;AAC/B6uF,MAAAA,SAAQ7uF,OAAO0uF,SAAS1uF;AAChB6uF,MAAAA,SAAA5uF,QAAQyuF,SAAS1uF,OAAO6uF,SAAQh6F;AAAAA,IAChC,WAAAg6F,SAAQ5uF,QAAQyuF,SAASzuF,OAAM;AACvC4uF,MAAAA,SAAQ5uF,QAAQyuF,SAASzuF;AACjB4uF,MAAAA,SAAA7uF,OAAO6uF,SAAQ5uF,QAAQ4uF,SAAQh6F;AAAAA,IACxC;AAEA,QAAGq6F,MAAM/uF,KAAK0uF,SAAQ7uF,QAAQkvF,MAAM/uF,KAAK0uF,SAAQ5uF,OAAO;AACvD4uF,MAAAA,SAAQ7uF,OAAOkvF,MAAM/uF,IAAI0uF,SAAQh6F,QAAQi6F;AACjCD,MAAAA,SAAA5uF,QAAQ4uF,SAAQ7uF,OAAO6uF,SAAQh6F;AAAAA,IACxC;AAEA,QAAGq6F,MAAM9uF,KAAKyuF,SAAQ/tF,OAAOouF,MAAM9uF,KAAKyuF,SAAQ1sE,QAAQ;AACvD0sE,MAAAA,SAAQ/tF,MAAMouF,MAAM9uF,IAAIyuF,SAAQ75F,SAASg6F;AACjCH,MAAAA,SAAA1sE,SAAS0sE,SAAQ/tF,MAAM+tF,SAAQ75F;AAAAA,IACxC;AAEO,WAAA65F;AAAAA,EACR;AAAA,EAEQ,mBAAAF;AACP,UAAM/gG,aAAYK,KAAKmgG;AACvB,UAAMtyC,aAAaluD,WAAUkc;AACvB,UAAAzT,YAAYpI,KAAKwgG,aACvB;AAAA,QAAIC,WAAWr4F;AACf,QAAIsT,YAAYza,OAAOkgG,UAAUthG,SAASM,KAAKub;AAC/C,QAAIH,aAAata,OAAOmgG,UAAUvhG,SAASM,KAAKob;AAC5C,QAAAV;AAED,QAAAzS,cAAczI,WAAU0hG,aAAY;AACtCZ,iBAAW9gG,WAAU2hG;AACT5lF,kBAAA;AACCH,mBAAA;AACPV,YAAAgzC,WAAWl5B,gBAAgBh1B,WAAU2hG,MAAAA;AAAAA,IAAM,OAC7C;AACEzmF,YAAAgzC,WAAWl5B,gBAAgB8rE,QAClC;AAAA,IAAA;AACO,WAAA,EACN1uF,MAAK8I,IAAI3I,IAAIqJ,YACb1I,KAAKgI,IAAI1I,IAAIuJ,WACb9U,OAAOiU,IAAIjU,OACXG,QAAQ8T,IAAI9T,QACZmtB,QAAQrZ,IAAI1I,IAAI0I,IAAI9T,SAAS2U,WAC7B1J,OAAO6I,IAAI3I,IAAI2I,IAAIjU,QAAQ2U,WAAAA;AAAAA,EAE7B;ACrKM;AAAA,MAAMgmF,eAQZ;AAAA,EAAA,YAAY5hG,YALZK;AAAAA,SAAQwhG,aAAqB;AAMvBxhG,SAAA4gG,UAAU,IAAIV,QAAQvgG,UAC3BK;AAAAA,SAAKmgG,aAAaxgG;AACbK,SAAA00D,aAAa/0D,WAAU+T,qBAAAA;AAC5B1T,SAAKyhG,sBACN;AAAA,EAAA;AAAA,EAEA,aAAA5gG;AACCb,SAAK4gG,QAAQpzC,KACbxtD;AAAAA,SAAK00D,WAAW/gD,UACjB;AAAA,EAAA;AAAA,EACA,cAAA+tF;AACC1hG,SAAK2hG,UAAAA;AAAAA,EACN;AAAA,EACA,OAAOpgG,QACN;AAAA,QAAIyH,OAAOnJ,SAASM;AACpB,UAAMR,aAAYK,KAAKmgG;AACvB,UAAMtyC,aAAaluD,WAAUkc;AAC1B,QAACta,CAAAA,OAAOL,QAAO;AACjB8H,aAAOrJ,WAAUwK;AAAAA,IAClB;AAEA,QAAIy3F,kBAAkB;AAChB,UAAA17F,UAAWN,CAAAA,WACV;AAAA,YAAAi8F,cAAch0C,WAAW/4B,cAAclvB,MAAAA;AAC7C,YAAMk8F,aAAaj0C,WAAWh3C,QAAQgrF,aAAatgG,OAAOw2B,QAAAA;AAC1D,UAAG81B,WAAWz1B,UAAUypE,aAAa7hG,KAAK4gG,QAAQ/xB,QAAAA,CAAAA,GAAW;AAC5D;AAAA,MACD;AAEA,YAAMkzB,iBAAiB,MAAA;AACJH,0BAAAE;AACXvgG,eAAAygG,aAAap8F,QAAOk8F,UAAAA;AAAAA,MAAU;AAGtC,UAAGF,iBAAgB;AACf,YAAAE,cAAcA,eAAeF,iBAAgB;AACxCrgG,iBAAA0gG,YAAYr8F,QAAOk8F,UAAU;AAAA,QAAA,OAChC;AACGvgG,iBAAA2gG,aAAat8F,QAAOg8F,eACTA;AAAAA,4BAAA;AAEf,cAAAE,cAAcA,eAAeF,iBAAgB;AAChCG,2BAAAA;AAAAA,UAChB;AAAA,QACD;AAAA,MAAA,OACI;AACJ,YAAGD,YAAW;AACEC,yBAAAA;AAAAA,QAChB;AAAA,MACD;AAAA,IAAA;AAGI/hG,SAAAgtB,OAAOzrB,OAAOw2B,QACnB/3B;AAAAA,SAAK00D,WAAW7gD,OAAO7K,MAAM,aAAa9C;AACrClG,SAAAwhG,WAAWjgG,OAAOw2B,QAAAA,IAAY,EAClC9lB,MAAMjJ,MACN9C,QAAAA;AAAAA,EAEF;AAAA,EAEA,OAAO6xB,UACA;AAAA,UAAAoqE,WAAWniG,KAAKwhG,WAAWzpE,QAAAA;AACjC,QAAGoqE,UAAS;AACXniG,WAAK00D,WAAW1nC,OAAOm1E,SAASlwF,MAAM,aAAakwF,SAASj8F,OAC7D;AAAA,IAAA;AAAA,EACD;AAAA,EAEA,WAAW3E,QAAAA;AACJ,UAAA6gG,gBAAiBx8F,CAAAA;AACtB,UAAI8rE,QAAQ9rE;AAGZ,UAAG/F,SAAS,mBAAA,KAAA,CAAyBA,SAASy9C,aAAY;AAEjDo0B,gBAAA7xE,SAAS,mBAAqB+F,EAAAA,MAAAA;AAAAA,MACvC;AACO,aAAA8rE;AAAAA,IAAA;AAER1xE,SAAKyhG,sBAAAA;AACLzhG,SAAK6T,OAAO,EACXkkB,UAAUx2B,OAAOw2B,UACjB72B,QAAQK,OAAOL,QACf8gG,cAAa,CAACp8F,QAAmBqM,SAAAA;AAChC,YAAMhL,OAAO1F,OAAO0F,KAAKrB,QAAOqM,IAChC;AAAA,UAAGhL,MAAK;AACPjH,aAAKqiG,UAAUD,cAAcx8F,MAAQqB,GAAAA,IAAAA;AAAAA,MACtC;AAAA,IAEDg7F,GAAAA,aAAY,CAACr8F,QAAmBqM,SAC/B;AAAA,YAAMhL,OAAO1F,OAAO0F,KAAKrB,QAAOqM,IAAAA;AAChC,UAAGhL,MAAK;AACPjH,aAAKqiG,UAAUD,cAAcx8F,MAAAA,GAAQqB,IAAI;AAAA,MAAA,OACrC;AACJjH,aAAKqiG,UAAU/uE,eAAAA;AACftzB,aAAK2hG,UACN;AAAA,MAAA;AAAA,IAAA,GAEDO,cAAa,MAAA;AACZliG,WAAKqiG,UAAU/uE,eACftzB;AAAAA,WAAK2hG;IAAU,EAGlB,CAAA;AAAA,EAAA;AAAA,EAEQ,wBAAAF;AACP,UAAM9hG,aAAYK,KAAKmgG;AAEvB,QAAGngG,KAAKqiG,WAAU;AACjBriG,WAAKqiG,UAAU/uE,eAChB;AAAA,IAAA;AACA,QAAGtzB,KAAK2hG,WAAU;AACjB3hG,WAAK2hG,UAAUruE,eAAAA;AAAAA,IAChB;AACAtzB,SAAK4gG,QAAQpzC,KAEbxtD;AAAAA,SAAKqiG,YAAaC,MAAsB9kF,MAAM,CAAC5X,QAAmBqB,SAAAA;AACjE,UAAGtH,WAAU8B,UAAU,mBAAmB,CAACmE,MAAY,CAAA,MAAA,OAAO;AAC7D5F,aAAK4gG,QAAQpzC,KAAK;AAAA,MAAA,OACZ;AACDxtD,aAAA4gG,QAAQnX,WAAWxiF,IACnBjH;AAAAA,aAAA4gG,QAAQ2B,KAAK38F,MAAAA;AAAAA,MACnB;AAAA,IACEjG,GAAAA,WAAU4B,OAAOihG,mBAAmB,CAEvCxiG;AAAAA,SAAK2hG,YAAaW,MAAsB9kF,MAAM,MAC7Cxd;AAAAA,WAAKqiG,UAAU/uE,eAAAA;AACftzB,WAAK4gG,QAAQpzC;IAAK,GAChB7tD,WAAU4B,OAAOkhG,wBAAwB,CAC7C;AAAA,EAAA;AAAA;ACxJD,SAAA7B,QAAyBjhG,YAExBA;AAAAA,EAAAA,WAAU4B,OAAOihG,kBAAkB;AACnC7iG,EAAAA,WAAU4B,OAAOy/F,mBAAmB;AACpCrhG,EAAAA,WAAU4B,OAAOu/F,mBAAmB;AACpCnhG,EAAAA,WAAU4B,OAAOkhG,uBAAuB;AAElC,QAAAC,iBAAiB,IAAInB,eAAe5hG,UAAAA;AAE1CA,EAAAA,WAAUy5D,IAAIupC,WAAWD;AAEf/iG,EAAAA,WAAAgE,YAAY,oBAAoB,WAEzC++F;AAAAA,mBAAeE,WAAW,EACzB7qE,UAAU,MAAMp4B,WAAU4B,OAAO8iC,kBAAkB,KACnDp9B,MAAOrB,CAAAA,WAAAA;AACN,UAAIjG,WAAU0hB,YAAY1hB,WAAU4B,OAAOshG,eAAe;AACzD;AAAA,MACD;AAEA,YAAMC,gBAAgBnjG,WAAUgV,cAAc/O,OAAM4O,MAChD;AAAA,UAAA7U,WAAUwV,SAAS2tF,aAAgB,GAAA;AAChCl9F,cAAAA,UAAQjG,WAAUwV,SAAS2tF,aAAAA;AACjC,eAAOnjG,WAAU0iB,UAAUujB,aAAahgC,QAAM2T,YAAY3T,QAAMiU,UAAUjU,OAC3E;AAAA,MAAA;AACO,aAAA;AAAA,IAAA,GAER1E,QAAQ,MAAA,CAAA;AAAA,EACR,CAGQvB;AAAAA,EAAAA,WAAAgE,YAAY,aAAa,WAClC++F;AAAAA,mBAAe7hG;EAAW,CAGjBlB;AAAAA,EAAAA,WAAAgE,YAAY,cAAc,WACnC++F;AAAAA,mBAAehB,YAAY;AAAA,EAAA,CAAA;AAGlB/hG,EAAAA,WAAAgE,YAAY,gBAAgB,WACrC++F;AAAAA,mBAAehB,YACR;AAAA,WAAA;AAAA,EAAA,CAAA;AAEE/hG,EAAAA,WAAAgE,YAAY,kBAAkB,WACvC++F;AAAAA,mBAAehB,YACR;AAAA,WAAA;AAAA,EAAA,CAAA;AAGT;AChDe,SAAQqB,wBAACpjG,YACvBkkE;AAAAA,iBAAe1/D,MAAM,iBAAiBxE,WAAUyB,MAAAA;AACjD;ACFe,SAAQ4hG,iBAACrjG,YACvBkkE;AAAAA,iBAAe1/D,MAAM,SAASxE,WAAUyB,MAAAA;AACzC;ACJe,SAAQg5B,IAACz6B,YAExBA;AAAAA,EAAAA,WAAU4jE,eAAe,WAAA;AACxB,QAAIjrB,IAAI,CAAA;AACR,QAAIxe,QAAQj6B,SAASuoF,SAAS5hD,QAAQ,IAAIvvB,QAAQ,KAAK,EAAA,EAAI1S,MAAM,GAAA;AACjE,aAASoD,IAAI,GAAGA,IAAImyB,KAAKlyB,QAAQD,KAAK;AACrC,UAAI23B,IAAIxF,KAAKnyB,CAAAA,EAAGpD,MAAM,GACtB;AAAA,UAAI+6B,EAAE13B,UAAU;AACf0wC,UAAEhZ,EAAE,CAAA,CAAA,IAAMA,EAAE,CAAA;AAAA,IACb;AACD,WAAOgZ;AAAAA,EACR;AAEA34C,EAAAA,WAAUgE,YAAY,oBAAoB,WACzC;AAAA,QAAI83B,QAAQ;AACZ,QAAIwnE,MAAMtjG,WAAUyF,KAAKs7B,YAAY,UACrC;AAAA,QAAIwiE,MAAMvjG,WAAUyF,KAAKq7B,YAAY,UACrC;AAAA,QAAI0iE,eAAgBxjG,WAAU4jE,aAAAA,EAAe39D,SAAS;AAEtDjG,IAAAA,WAAUgE,YAAY,uBAAuB,SAAS2Q,IACrD6uF;AAAAA,qBAAe;AACf,aAAO;AAAA,IACT,CAAA;AAECxjG,IAAAA,WAAUgE,YAAY,sBAAsB,SAAU45E,IAAIC,IAAIxrC,GAAG54B,GAChE;AAAA,UAAIqiB,OAAO;AACVA,gBAAQ;AACR,YAAI6c,IAAI34C,WAAU4jE,aAElB;AAAA,YAAIjrB,EAAE1yC,OAAM;AACX,cACC;AAAA,gBAAGjG,WAAUwV,SAASmjC,EAAE1yC,KAAAA,GAAO;AAC9BmE,yBAAW;AACVsnC,0BAAUiH,EAAE1yC,KACnB;AAAA,cAAA,CAAA;AACM,qBAAO;AAAA,YACb,OAAU;AACJ,kBAAIM,UAAUvG,WAAUgE,YAAY,SAAS,WAC5CoG;AAAAA,2BAAW,WACVsnC;AAAAA,4BAAUiH,EAAE1yC,KACpB;AAAA,gBAAA,CAAA;AACOjG,gBAAAA,WAAU0N,YAAYnH,OAC7B;AAAA,cAAA,CAAA;AAAA,YACM;AAAA,UACN,SAAa4N,GAAI;AAAA,UAAA;AAAA,QACb;AAED,YAAIwkC,EAAElzC,QAAQkzC,EAAE74C,MAAM;AACrB,cAAA;AACCO,iBAAKoG,eAAgBkyC,EAAElzC,OAAO69F,IAAI3qD,EAAElzC,QAAQ,MAAQkzC,EAAE74C,QAAQ,IAAA;AAAA,UAC9D,SAAQqU,GAER9T;AAAAA,iBAAKoG,eAAgBkyC,EAAElzC,OAAO69F,IAAI3qD,EAAElzC,IAAQ,IAAA,MAAO4sC,CACnD;AAAA,UAAA;AACD,iBAAO;AAAA,QACP;AAAA,MACD;AAED,UAAI9jB,SAAS,CACZ,UAAUg1E,IAAI9pF,KAAKokE,EAAAA,GACnB,WAAWxrC,KAAKurC,GAGjB;AAAA,UAAG4lB,cAAa;AACfj1E,eAAOxf,KAAK,WAAWy0F,YACvB;AAAA,MAAA;AAED,UAAIxhG,OAAO,MAAMusB,OAAOzqB,KAAK,GAC7B5D;AAAAA,eAASuoF,SAAS5hD,OAAO7kC;AACzB,aAAO;AAAA,IACT,CAAA;AAEC,aAAS0vC,UAAUv9B,GAAAA;AAClB,UAAGnU,WAAUqK,YAAW;AACvB,eAAO;AAAA,MACP;AACDm5F,qBAAervF;AACf,UAAGnU,WAAUwV,SAASrB,CAAG,GAAA;AACxBnU,QAAAA,WAAU0xC,UAAUv9B,CAAAA;AAAAA,MACpB;AAAA,IACD;AAAA,EACF,CACA;AAAA;AChFe,SAAQsvF,uBAACzjG;AACvBkkE,iBAAe1/D,MAAM,eAAexE,WAAUyB,MAC/C;AAAA;ACJe,SAAQiiG,GAAC1jG;AACxBA,EAAAA,WAAUgE,YAAY,cAAa,WAAA;AAClC,QAAI3D,KAAKk6C,QAAO;AACf;AACCl6C,aAAKk6C,OAAOpzC,MAAMC,SAAS/G,KAAKkW,WAAW,UAAWrW,SAASM,KAAK8I,cAAYpJ,SAASM,MAAMkqC,eAAa;AAAA,MAC5G,SAAOv2B,GAAAA;AAAAA,MAEP;AAAA,IACD;AAAA,EACF,CAAA;AAEAnU,EAAAA,WAAUq3C,YAAYpiC,OAAOuiC,YAAU,SAASllC,MAAKpL,OAAMyN,IAC1D;AAAA,QAAA,OAAWzN,SAAS,eAAeA,UAAU;AAC5CA,eAASoL,KAAK5R,WAAWmpB,QAAQ,CAAI,KAAA,CAAE,GAAE3iB;AAC1CoL,SAAK5R,WAAWwG,QAAMA,SAAO;AAAA,EAC9B;AAEA;ACjBe,SAAQy8F,UAAC3jG,YAMvBA;AAAAA,EAAAA,WAAU0iB,UAAUkhF,YAAY,SAASn+F,MACxC;AAAA,WAAOzF,WAAUyF,KAAKq7B,YAAY9gC,WAAU0T,OAAOC,OAAOw9C,WAAW,KAA9DnxD,EAAqEyF,IAC9E;AAAA,EAAA;AACCzF,EAAAA,WAAU0iB,UAAUmhF,aAAa7jG,WAAUyF,KAAKq7B,YAAY,IAAA;AAC5D9gC,EAAAA,WAAU0iB,UAAUohF,kBAAkB9jG,WAAUyF,KAAKq7B,YAAY,IAAA;AACjE9gC,EAAAA,WAAU0iB,UAAUqhF,eAAe,SAASpkE,GAAGxrB,GAAGQ;AACjD,WAAOA,GAAG3S;AAAAA,EACZ;AAEC,QAAMgiG,aAAa,WAClB;AAAA,WAAOhkG,WAAUyV,SAAS;AAAA,EAC5B;AAEC,QAAMwuF,cAAc,SAAS3xF,MAC5B;AAAA,QAAIzS,MAAMG,WAAUkc,YAAYhF,QAAQ5E,MAAM,kBAAA;AAC9C,QAAIzS,CAAAA,OAAAA,CAAQA,IAAI42B,aAAa,gBAAA;AAAmB,aAAO;AACvD,WAAOz2B,WAAU0iB,UAAU4G,WAAWzpB,IAAI2T,aAAa,gBAAA,CAAA;AAAA,EACzD;AAGCxT,EAAAA,WAAUkkG,0BAA0B,SAAS/vF,GAC5C;AAAA,QAAI6vF,cAAc;AACjB,YAAMnvF,SAASV,EAAEU;AACjB,UAAG7U,WAAUkc,YAAYhF,QAAQrC,QAAQ,aAAA,KAAkB7U,WAAUkc,YAAYhF,QAAQrC,QAAQ,YAAc,GAAA;AAC9G,eAAO;AAAA,MACP;AAED,YAAMpP,OAAOw+F,YAAYpvF,MAAAA;AAEzB,UAAGpP,MAAK;AACP,cAAM2T,QAAQ3T;AACd,cAAM4T,MAAMhZ,KAAKoF,KAAKT,IAAIoU,OAAO,GAAG,KAAA;AACpC,YAAK/Y,CAAAA,KAAKuB,OAAOoV,YAAY3W,KAAKuB,OAAO2Y,iBAAgB;AACxDla,eAAK8Y,YAAYC,MAAM7B,QAAAA,GAAW8B,IAAI9B,QAAAA,GAAWpD;QACjD;AAAA,MACD;AAAA,IACD;AAAA,EACH;AAECnU,EAAAA,WAAUgE,YAAY,mBAAmB,WAAA;AACxC,QAAIggG,WACH3jG;AAAAA,WAAKsjG,UAAU,IAAA;AAAA,EAClB,CAGC;AAAA,MAAI9jE,MAAM7/B,WAAU0oC;AACpB1oC,EAAAA,WAAU0oC,cAAc,SAASR,KAAAA;AAChC,QAAK87D,CAAAA,WAAAA;AAAc,aAAOnkE,IAAI1zB,MAAM9L,MAAM+L,SAC1C;AAAA,aAASpE,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD;AAC/B3H,WAAK8jG,mBAAmBj8D,IAAIlgC,CAAAA,CAAAA;AAAAA,EAC/B;AAEC,MAAI2E,QAAQ3M,WAAUwmC;AACtBxmC,EAAAA,WAAUwmC,aAAa,WACtB;AAAA,QAAA,CAAKw9D,WAAc;AAAA,aAAOr3F,MAAMR,MAAM9L,MAAM+L,SAC5C;AAAA,QAAIqyD,QAAQz+D,WAAUokG,oBACrB9gG,MAAM;AACP,aAASmC,QAAQg5D,OAAO;AACvB,UAAIA,MAAM9zC,eAAellB,IAAO,GAAA;AAC/BnC,cAAMm7D,MAAMh5D,IACZnC;AAAAA,YAAIyB,UAAU6e,OAAO,kBAAkB,0BAIvC;AAAA,MAAA;AAAA,IACD;AACD5jB,IAAAA,WAAUokG,qBAAqB;EACjC;AAECpkG,EAAAA,WAAUqkG,eAAe,WAAA;AACxB,QAAIhkG,KAAKikG,UAAU;AAClBjkG,WAAKikG,SAASn9F,MAAMgC,UAAU;AAC9B9I,WAAKikG,SAAS7+F,OAAO,IAAIiQ,KAAK,MAAM,GAAG,CACvC;AAAA,IAAA;AAAA,EACH;AAEC1V,EAAAA,WAAUukG,eAAe,SAAS9+F,MAAMyV,KAAK/G,GAAGS,KAC/C;AAAA,QAAIvU,KAAKikG,UAAU;AAClB,UAAIjkG,KAAKikG,SAAS7+F,KAAK8R,QAAa9R,KAAAA,KAAK8R,QAAW;AAAA;AACpDlX,WAAKikG,SAAS/jG,YAAY;AAAA,IAC7B,OAAS;AACN,UAAIgV,IAAIlV,KAAKikG,WAAWpkG,SAASC,cAAc;AAC/CoV,QAAE9Q,YAAY;AACd,UAAIpE,KAAKuB,OAAOgO;AAAK2F,UAAE9Q,aAAa;AACpCvE,eAASM,KAAKC,YAAY8U,CAC1BA;AAAAA,QAAElO,iBAAiB,SAASrH,WAAUiU,OAAO2C,YAAAA;AAC7CrB,QAAElO,iBAAiB,SAAS,SAAS8M,IACpC;AAAA,YAAGA,GAAEU,OAAOqC,QAAQ,IAAIlX,WAAU4B,OAAO8iC,eAAoB,GAAA,GAAA;AAC5D,gBAAMtkC,MAAK+T,GAAEU,OAAOqC,QAAQ,IAAIlX,WAAU4B,OAAO8iC,eAAAA,GAAAA,EAAoBlxB,aAAaxT,WAAU4B,OAAO8iC,eACnG1kC;AAAAA,UAAAA,WAAU6Y,aAAazY,GAAAA;AAAAA,QACvB;AAAA,MACL,CAAA;AAAA,IACG;AACD,QAAI8nC,MAAM7nC,KAAK+oC,UAAU3jC,MAAMpF,KAAKoF,KAAKT,IAAIS,MAAM,GAAG,KACtD,CAAA;AAAA,QAAI6B,OAAO;AAEX,aAASU,IAAI,GAAGA,IAAIkgC,IAAIjgC,QAAQD,KAAK;AACpC,UAAI2M,KAAKuzB,IAAIlgC,CACb;AAAA,UAAA,CAAI3H,KAAK0nC,aAAapzB,GAAGvU,IAAIuU,EAC5B;AAAA;AAED,UAAIy8B,WAAYz8B,GAAGk6B,QAAS,sCAAsCl6B,GAAGk6B,QAAQ,MAAO;AACpF,UAAIA,QAASl6B,GAAG66B,YAAa,iCAAiC76B,GAAG66B,YAAY,MAAO;AAEpFloC,cAAQ,0CAA0C8pC,WAAgBvC,QAAQ,iBAAiB3G,IAAIlgC,CAAG5H,EAAAA,KAAK,OAAKC,KAAKuB,OAAO8iC,kBAAgB,OAAKwD,IAAIlgC,CAAAA,EAAG5H,KAAG;AACvJkH,cAAQ,0CAA0C8pC,WAAgBvC,QAAQ,QAAQ3G,IAAIlgC,CAAGyS,EAAAA,SAASpa,KAAKqiB,UAAU6iB,WAAW2C,IAAIlgC,CAAG4R,EAAAA,UAAAA,IAAc,MAAM;AACvJtS,cAAQ;AACRA,cAAQjH,KAAKqiB,UAAUqhF,aAAa77D,IAAIlgC,CAAG4R,EAAAA,YAAYsuB,IAAIlgC,CAAGkS,EAAAA,UAAUguB,IAAIlgC,CAAAA,CAAAA,IAAM;AAAA,IAClF;AAED3H,SAAKikG,SAASn9F,MAAMgC,UAAU;AAC9B9I,SAAKikG,SAASn9F,MAAM+L,MAAM;AAG1B,QAAIhT,SAASM,KAAKoK,cAAcsQ,IAAI9I,OAAO/R,KAAKikG,SAAS15F,cAAc;AACtEvK,WAAKikG,SAASn9F,MAAMiL,OAAO8I,IAAI9I,OAAO/R,KAAKikG,SAAS15F,cAAc;AAAA;AAElEvK,WAAKikG,SAASn9F,MAAMiL,OAAO8I,IAAI9I,OAAOwC,IAAIhK,cAAc;AAEzDvK,SAAKikG,SAAS7+F,OAAOA;AACrBpF,SAAKikG,SAAS/jG,YAAY+G;AAE1B,QAAIpH,SAASM,KAAKkK,eAAewQ,IAAIhI,MAAM7S,KAAKikG,SAAS55F,eAAe;AACvErK,WAAKikG,SAASn9F,MAAM+L,MAAMgI,IAAIhI,MAAM7S,KAAKikG,SAAS55F,eAAekK,IAAIlK,eAAe;AAAA;AAEpFrK,WAAKikG,SAASn9F,MAAM+L,MAAMgI,IAAIhI,MAAM;AAAA,EACvC;AAEClT,EAAAA,WAAUwkG,6BAA6B,SAASrwF,GAAAA;AAC/C,SAAK6vF,WAAc;AAAA;AAEnB,QAAIpvF,MAAMT,EAAEU,UAAUV,EAAEW;AACxB,QAAIF,IAAIwgB,QAAQroB,YAAiB,KAAA;AAChC6H,YAAMA,IAAItL;AACX,QAAItJ,WAAUsT,cAAcsB,GAAAA,EAAKwC,QAAQ,gBAAA,KAAA;AACxCpX,MAAAA,WAAUukG,aAAavkG,WAAU0iB,UAAU4G,WAAW1U,IAAIpB,aAAa,gBAAA,CAAA,GAAoBxT,WAAUkc,YAAY2b,UAAUjjB,GAAAA,GAAMT,GAAGS,GAAAA;AAAAA;AAEpI5U,MAAAA,WAAUqkG,aAAAA;AAAAA,EACb;AACCrkG,EAAAA,WAAUykG,qBAAqB,WAAA;AAC9BzkG,IAAAA,WAAUgO,gBAAgBhO,WAAUgJ,KAAK,cAAA,EAAgB,CAAI,GAAA,aAAahJ,WAAUwkG,0BAAAA;AACpFxkG,IAAAA,WAAUiG,MAAMjG,WAAUgJ,KAAK,cAAA,EAAgB,CAAI,GAAA,aAAahJ,WAAUwkG,0BAAAA;AAAAA,EAC5E;AAECxkG,EAAAA,WAAUgtE,iBAAiB,SAASvzD,GAAAA;AACnC,QAAImV,aAAa5uB,WAAU0iB,UAAUkD,YAAYnM,CACjD;AAAA,QAAI2P,QAAQ/oB,KAAKmK,MAAM6e,iBAAiB,0DAA0DuF,UAAAA,IAAAA;AAClG,aAAQ5mB,IAAI,GAAGA,IAAIohB,MAAMnhB,QAAQD,KAAI;AACpC,WAAIhI,WAAUkc,YAAYhF,QAAQkS,MAAMphB,CAAI,GAAA,yBAAA,GAA2B;AACtE,eAAOohB,MAAMphB,CACb;AAAA,MAAA;AAAA,IACD;AACD,WAAO;AAAA,EACT;AAEChI,EAAAA,WAAUokG,qBAAqB;AAC/BpkG,EAAAA,WAAU0kG,kBAAkB,SAASj/F,MAAMQ,QAC1C;AAAA,QAAI2oB,aAAa5uB,WAAU0iB,UAAUkD,YAAYngB,IAAAA;AACjD,QAAIkjB,OAAOtoB,KAAK2sE,eAAevnE;AAC/B,QAAKkjB,CAAAA,MAAM;AACV;AAAA,IACA;AACD,QAAIu0C,WAAW78D,KAAKqiB,UAAUgjB,YAAYz/B,OAAM2T,YAAY3T,OAAMiU,UAAUjU,MAAAA;AAC5E,QAAKjG,CAAAA,WAAUokG,mBAAmBx1E,UAAa,GAAA;AAC9CjG,WAAK5jB,UAAUC,IAAI,kBAAkB,0BACrC2jB;AAAAA,WAAKvjB,aAAa,kBAAkBwpB,UAAAA;AACpCjG,WAAKvjB,aAAa,QAAQwpB,UAAAA;AAC1B5uB,MAAAA,WAAUokG,mBAAmBx1E,cAAcjG;AAAAA,IAC3C;AACD,QAAGu0C,UAAS;AACXv0C,WAAK5jB,UAAUC,IAAIk4D;IACnB;AAAA,EACH;AACCl9D,EAAAA,WAAU2kG,oBAAoB,SAASl/F,MAAAA;AACtC,QAAIkjB,OAAOtoB,KAAK2sE,eAAevnE,IAC/B;AAAA,QAAA,CAAKkjB,MAAM;AACV;AAAA,IACA;AACDA,SAAK5jB,UAAU6e,OAAO,kBAAkB,0BAAA;AAAA,EAE1C;AACC5jB,EAAAA,WAAUmkG,qBAAqB,SAASl+F;AACvC,QAAIR,OAAOQ,OAAM2T;AACjB,QAAInU,KAAK8R,QAAYlX,IAAAA,KAAKwV,UAAU0B,QAAU,GAAA;AAC7C9R,aAAOpF,KAAKwV;AAAAA,IACf,OAAS;AACNpQ,aAAOpF,KAAKoF,KAAK4Z,UAAU,IAAI3J,KAAKjQ,IAAAA,CAAAA;AAAAA,IACpC;AAED,WAAOA,OAAOQ,OAAMiU,UAAU;AAC7B7Z,WAAKqkG,gBAAgBj/F,MAAMQ,MAC3BR;AAAAA,aAAOpF,KAAKoF,KAAKT,IAAIS,MAAM,GAAG,KAC9B;AAAA,UAAIA,KAAK8R,QAAAA,KAAalX,KAAK0V,UAAUwB,QAAAA;AACpC;AAAA,IACD;AAAA,EACH;AAECvX,EAAAA,WAAU2jG,YAAY,SAAS7jG,MAE9BE;AAAAA,IAAAA,WAAUiQ,UAEVjQ;AAAAA,IAAAA,WAAUuR,cAAczR;AAExB,QAAIO,KAAK+hB,cAAc/hB,KAAKgiB,MAAAA;AAAS;AAErC,QAAIviB,MAAM;AACTE,MAAAA,WAAUykG,mBAAAA;AACVzkG,MAAAA,WAAU4kG,kBACV;AAAA,UAAI5kG,WAAUoiB,cAAcpiB,WAAUqiB,MAAAA,GAAQ;AAC7CriB,QAAAA,WAAUsiB,eAAe;AACzB;AAAA,MACA;AACDtiB,MAAAA,WAAUkiB,iBACb;AAAA,IAAA,OAAS;AACNliB,MAAAA,WAAUqkG;IACV;AAAA,EACH;AACCrkG,EAAAA,WAAU4kG,oBAAoB,WAC7BvkG;AAAAA,SAAKya,QAAQ,CAAA;AACbza,SAAK4b,SAAS;AACd,QAAI+4E,cAAc,CAAA;AAClB,QAAIvmF,WAAWpO,KAAK2I,KAAK,cAAA,EAAgB,CAEzC;AAAA,QAAI3E,IAAIhE,KAAKuB;AACb6M,aAASsN,YAAY;AACrBtN,aAASlO,YAAY;AAErB,QAAI0xC,KAAKn/B,KAAKkI,MAAMqK,SAAS5W,SAAStH,MAAMF,KAAAA,IAAS5C,EAAEwgG,MAAAA;AACvD,QAAIxoF,KAAKvJ,KAAKkI,OAAOqK,SAAS5W,SAAStH,MAAMC,MAAUpH,IAAAA,WAAU6I,GAAGi8F,YAAYzgG,EAAEi+D,MAClF;AAAA,QAAIjmD,KAAK,KAAK;AACbA,WAAK;AACL41B,WAAKn/B,KAAKkI,OAAOqK,SAAS5W,SAAStH,MAAMF,KAASjH,IAAAA,WAAU6I,GAAGyH,gBAAgBjM,EAAEwgG,MAAAA;AAAAA,IACjF;AAED,QAAIrX,gBAAgBttF,SAASC,cAAc,KAAA;AAC3C,QAAIstF,aAAaptF,KAAKoF,KAAKghB,WAAWzmB,WAAUqP,aAAAA,CAAAA;AAEhDhP,SAAKykB,iBAAiB2oE,YAAY,GAAG,OAAO,CAE5C;AAAA,aAASzlF,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3B,UAAK3H,EAAAA,KAAK0a,YAAY1a,KAAK0a,SAAS/S,CAAAA,IAAK;AACxC3H,aAAKya,MAAM9S,CAAAA,IAAK;AAChB3H,aAAKwjB,iBAAiB7b,GAAG,GAAGylF,YAAYD,aAAAA;AAAAA,MAExC;AACDC,mBAAaptF,KAAKoF,KAAKT,IAAIyoF,YAAY,GAAG,KAC1C;AAAA,IAAA;AACDD,kBAAch7C,UAAU/tC,aAAa;AAErC,aAAQuD,IAAI,GAAGA,IAAIwlF,cAAcr9C,WAAWloC,QAAQD,KAAI;AACvD3H,WAAKuT,SAASud,aAAaq8D,cAAcr9C,WAAWnoC,CAAAA,CAAAA;AAAAA,IACpD;AAED,QAAImd,KAAK9kB,KAAKoF,KAAKpF,KAAKoV,QAAQ,QAAUpV,EAAAA,KAAKoF,KAAK0uB,KAAK9zB,KAAKsV,KAAAA,CAAAA;AAC9D,QAAIovF,MAAM5/E;AACV,QAAI6/E,UAAU;AACd,UAAMvtC,UAAUv3D,SAASC,cAAc,KACvCs3D;AAAAA,YAAQ1yD,UAAUC,IAAI,kBACtB;AAAA,aAASgD,IAAI,GAAGA,IAAI3D,EAAEi+D,QAAQt6D,KAAI;AACjC,eAAS8a,IAAI,GAAGA,IAAIze,EAAEwgG,QAAQ/hF,KAAK;AAClCkiF,kBAAU9kG,SAASC,cAAc,KACjC6kG;AAAAA,gBAAQvgG,YAAY;AAEpB,YAAIpE,CAAAA,KAAK4R,aAAe,GAAA;AACvB+yF,kBAAQ79F,MAAM6nC,UAAU;AAAA,QACxB;AAEDg2D,gBAAQ5/F,aAAa,QAAQ/E,KAAKukC,SAASG,WAAW5f,EACtD6/E,CAAAA;AAAAA,gBAAQ5/F,aAAa,mBAAmB/E,KAAKukC,SAASG,WAAW5f,EACjE6/E,CAAAA;AAAAA,gBAAQzkG,YAAY,6FAA6FitF,cAAcjtF,YAAY;AAE3I,YAAIiO,SAASw2F,QAAQ18F,cAAc,iBACnC;AAAA,YAAI/F,OAAOyiG,QAAQ18F,cAAc,gBAAA;AACjC,YAAI8lF,aAAa4W,QAAQ18F,cAAc,gBAAA;AACvC,YAAI9H,OAAOwkG,QAAQ18F,cAAc,gBAEjC;AAAA,YAAI+nB,WAAWrwB,WAAUoa,IACzB/Z;AAAAA,aAAKuT,SAASqd,WAAWziB,QAAQ6hB,QACjChwB;AAAAA,aAAKuT,SAASsd,SAAS3uB,MAAM8tB,QAAAA;AAG7B7hB,eAAOjO,YAAYF,KAAKqiB,UAAUmhF,WAAW1+E,EAI7C;AAAA,YAAIT,KAAKrkB,KAAKoF,KAAKghB,WAAWtB;AAC9B9kB,aAAKwmB,mBAAmBrmB,MAAM2kB,IAAIT,IAAI,CAAA;AAEtC,YAAI4H,OAAO9rB,KAAK6oB,iBAAiB,IAAA;AACjC,iBAAQxpB,MAAM,GAAGA,MAAMysB,KAAKrkB,QAAQpI,OAAM;AACzCQ,eAAKuT,SAASyd,YAAY/E,KAAKzsB,GAC/B,CAAA;AAAA,QAAA;AAID43D,gBAAQh3D,YAAYukG,OAAAA;AACpB,YAAI3kG,CAAAA,KAAK4R,aAAe,GAAA;AACvBm8E,qBAAWjnF,MAAMC,SAASgnF,WAAWj+C,WAAW,CAAGzlC,EAAAA,eAAe;AAGlE,cAAI8tC,KAAK1lC,KAAK+G,OAAOwC,KAAK,OAAO,CAAA;AACjC2oF,kBAAQ79F,MAAMyjF,YAAYpyC,KAAK;AAC/Bn4C,eAAKuR,OAAOozF,SAAS/yD,KAAK,IAAI51B,KAAKm8B,KAAK,IAAIvG,KAAKnvB,IAAI,GAAGzG,KAAKrU,IAAI,IAAIhI,WAAU6I,GAAGi8F,QAAAA;AAAAA,QAClF;AAED9P,oBAAYhtF,IAAI3D,EAAEwgG,SAAS/hF,CAAMqC,KAAAA,GAAGqZ,OAAYn+B,KAAAA,KAAKuB,OAAOq+B,kBAAkB,IAAI,KAAK,KAAK;AAC5F9a,aAAK9kB,KAAKoF,KAAKT,IAAImgB,IAAI,GAAG,OAE1B;AAAA,MAAA;AAAA,IACD;AAED1W,aAAShO,YAAYg3D,OAAAA;AAErB,QAAI+F,cAAcn9D,KAAK+lB,mBACvB;AAAA,QAAGo3C,aAAY;AACdA,kBAAYj9D,YAAYF,KAAKqiB,UAAUriB,KAAKoV,QAAQ,OAAA,EAASsvF,KAAK5/E,IAAI9kB,KAAKoV,KAAAA;AAAAA,IAC3E;AAEDpV,SAAK20F,cAAcA;AACnBA,gBAAYC,SAAS8P,IAAIp/E,SAAAA;AACzBtlB,SAAKwV,YAAYkvF;AACjB1kG,SAAK0V,YAAYoP;AAAAA,EACnB;AAECnlB,EAAAA,WAAU4kG,oBAAoB;AAE7B,QAAIn2F,WAAWpO,KAAK2I,KAAK,cAAgB,EAAA,CAAA;AAEzCyF,aAASsN,YAAY;AACrBtN,aAASlO,YAAY;AAErB,QAAI0kG,YAAY5kG,KAAKoF,KAAK26B,WAAW,IAAI1qB,KAAKrV,KAAKsV,KAEnDtV,CAAAA;AAAAA,SAAKwV,YAAYxV,KAAKoF,KAAKghB,WAAW,IAAI/Q,KAAKuvF,SAAAA,CAAAA;AAE/C,UAAMxtC,UAAUv3D,SAASC,cAAc,KACvCs3D;AAAAA,YAAQ1yD,UAAUC,IAAI,kBAAA;AAEtB,QAAIsxD,cAAc2uC;AAClB,aAAQj9F,IAAI,GAAGA,IAAI,IAAIA,KAAI;AAC1B,UAAIg9F,UAAU9kG,SAASC,cAAc,KACrC6kG;AAAAA,cAAQvgG,YAAY;AAEpBugG,cAAQ5/F,aAAa,QAAQ/E,KAAKukC,SAASG,WAAWuxB,WAAAA,CAAAA;AACtD0uC,cAAQ5/F,aAAa,mBAAmB/E,KAAKukC,SAASG,WAAWuxB;AACjE0uC,cAAQzkG,YAAY,+BAA+BF,KAAKqiB,UAAUmhF,WAAWvtC,WAG7E,CAAA;AAAA;AAAA,YAAMplC,WAAW8zE,QAAQ18F,cAAc,gBACvC;AAAA,YAAM48F,aAAallG,WAAUu4D,kBAAkB,MAAM,EACpD9yD,MAAM6wD,aACNI,UAAU,EAEXwuC,CAAAA;AAAAA,iBAAWhvC,eAAehlC,QAAAA;AAC1Bg0E,iBAAWhkG,WAEXu2D;AAAAA,cAAQh3D,YAAYukG,OAAAA;AAEpB1uC,oBAAcj2D,KAAKoF,KAAKT,IAAIsxD,aAAa,GAAG,OAAA;AAAA,IAE5C;AACD7nD,aAAShO,YAAYg3D,OAAAA;AAErB,QAAIL,WAAW/2D,KAAKoF,KAAKT,IAAIigG,WAAW,GAAG,MAC3C;AAAA,QAAG7tC,SAAS7/C,QAAAA,KAAalX,KAAKoF,KAAKghB,WAAW,IAAI/Q,KAAK0hD,QAAAA,CAAAA,EAAW7/C,QAAU,GAAA;AAC3E6/C,iBAAW/2D,KAAKoF,KAAKghB,WAAW,IAAI/Q,KAAK0hD,QAAAA,CAAAA;AACzCA,iBAAW/2D,KAAKoF,KAAKT,IAAIoyD,UAAU,GAAG,MAAA;AAAA,IACtC;AACD/2D,SAAK0V,YAAYqhD;AACjB,QAAIoG,cAAcn9D,KAAK+lB,mBACvB;AAAA,QAAGo3C,aAAY;AACdA,kBAAYj9D,YAAYF,KAAKqiB,UAAUriB,KAAKoV,QAAQ,OAAA,EAASwvF,WAAW7tC,UAAU/2D,KAAKoV,KAAAA;AAAAA,IACvF;AAAA,EACH;AAEC,MAAIsB,gBAAgB/W,WAAU+W;AAC9B/W,EAAAA,WAAU+W,gBAAgB,SAAS8T;AAClC,QAAIm5E,CAAAA,WAAAA,GAAa;AAChB,aAAOjtF,cAAc5K,MAAMnM,YAAWoM,SAAAA;AAAAA,IACtC;AAED,QAAI3G,OAAOw+F,YAAYp5E,KAAKhW,MAC5B;AAAA,WAAO,EACNpP,MACAqlB,SAAQ,KAEX;AAAA,EAAA;AAEC,MAAIq6E,cAAcnlG,WAAUgV;AAC5BhV,EAAAA,WAAUgV,gBAAgB,SAAS1C,MAClC;AAAA,QAAIlS,MAAK+kG,YAAYh5F,MAAMnM,YAAWoM;AACtC,QAAIhM,CAAAA,KAAG;AAEN,UAAIqF,OAAOw+F,YAAY3xF,IACvB;AAAA,UAAA,CAAI7M;AAAM,eAAO;AACjB,UAAIyiC,MAAMloC,WAAUopC,UAAU3jC,MAAMzF,WAAUyF,KAAKT,IAAIS,MAAM,GAAG,KAChE,CAAA;AAAA,UAAA,CAAIyiC,IAAIjgC;AAAQ,eAAO;AAGvB7H,MAAAA,MAAK8nC,IAAI,CAAA,EAAG9nC;AAAAA,IACZ;AACD,WAAOA;AAAAA,EACT;AAECJ,EAAAA,WAAUgE,YAAY,aAAa,WAAA;AAClChE,IAAAA,WAAUqkG,aAAAA;AAAAA,EACZ,CACA;AAAA;AC7Ze,SAAQe,WAACplG,YAAAA;AAAAA,GAGxB,WAEA;AAAA,aAAS83C,SAAS73C,KAAKolG,KACtB;AAAA,eAAS57E,OAAO47E;AACf,YAAA,CAAKplG,IAAIwpB,GAAAA;AACRxpB,cAAIwpB,GAAAA,IAAO47E,IAAI57E,GACjB;AAAA,aAAOxpB;AAAAA,IACR;AAEA,aAASqlG,gBAAgB5gG,SAAS1E,YAAAA;AACjC,UAAIulG,QAAQ,CAAA;AACZ7gG,gBAAU1E,WAAUgJ,KAAKtE,OACzB;AAAA,UAAIA,WAAWA,QAAQ,CAAA,GAAI;AAC1B6gG,cAAMhzF,IAAI7N,QAAQ,CAAGm+D,EAAAA;AACrB0iC,cAAM/yF,IAAI9N,QAAQ,CAAGgmC,EAAAA;AAAAA,MACvB,OAAQ;AACN66D,cAAMhzF,IAAI;AACVgzF,cAAM/yF,IAAI;AAAA,MACV;AACD,aAAO+yF;AAAAA,IACR;AAGA,QAAA,CAAIjkG,OAAOkkG,YAAW;AACrBlkG,aAAOkkG,aAAa,EACnB3oE,MAAM,SAASpC,MAAKN,MAAM/sB,UACzB;AAAA,eAAO9L,OAAOmkG,KAAK5qE,KAAKgC,KAAKpC,MAAKN,MAAM/sB,QACxC;AAAA,MAAA,GACDmvB,KAAK,SAAS9B,MAAKrtB,UAAAA;AAClB,eAAO9L,OAAOu5B,KAAK0B,IAAI9B,MAAKrtB,QAC5B;AAAA,MAAA,EAAA;AAAA,IAEH;AAEA,aAASs4F,mBAAmB1lG,YAAAA;AAE3BA,MAAAA,WAAU+D,cAAc,SAASnC,QAChCA;AAAAA,iBAASk2C,SAAUl2C,UAAU,IAAK,EACjCyL,MAAK,gBACLwwB,QAAO,MACP8nE,aAAY,aACZC,KAAI,IACJle,MAAK,GACL93E,KAAK5P,WAAU4B,OAAOgO,IAAAA,CAAAA;AAEvBhO,eAAO0F,OAAOjH,KAAKwlG,aAAajkG,MAAAA;AAChCA,eAAO9B,OAAOO,KAAKgG,SAAAA,EAAWvG;AAC9BO,aAAKylG,gBAAgBlkG,QAAQ,KAAA;AAAA,MAC/B;AAEC5B,MAAAA,WAAU6D,cAAc,SAASjC,QAChCA;AAAAA,iBAASk2C,SAAUl2C,UAAU,IAAK,EACjCyL,MAAK,gBACLwwB,QAAO,MACP8nE,aAAY,aACZC,KAAI,IACJle,MAAK,GACL93E,KAAK5P,WAAU4B,OAAOgO,IAEvBhO,CAAAA;AAAAA,eAAO0F,OAAOjH,KAAKwlG,aAAajkG,MAAAA;AAChCA,eAAO9B,OAAOO,KAAKgG,SAAWvG,EAAAA;AAC9BO,aAAKylG,gBAAgBlkG,QAAQ,KAAA;AAAA,MAC/B;AAEC5B,MAAAA,WAAU+lG,eAAe,SAASnkG,QAAAA;AACjCA,iBAASk2C,SAAUl2C,UAAU,IAAK,EACjCyL,MAAK,iBACL8sB,MAAK95B,KAAK2lG,iBAAiB,MAAMpkG,MAAAA,EAAAA,CAAAA;AAElCvB,aAAKylG,gBAAgBlkG,QAAQ,MAC/B;AAAA,MAAA;AAEC5B,MAAAA,WAAUimG,gBAAgB,SAASrkG,QAAAA;AAClCA,iBAASk2C,SAAUl2C,UAAU,IAAK,EACjCyL,MAAK,iBACLgL,OAAM,UACN8hB,MAAK95B,KAAK2lG,iBAAkB3lG,KAAKqiB,UAAUsiB,YAAYpjC,MACvD+uC,GAAAA,SAAQtwC,KAAK6lG,mBAAAA,EAAAA,CAAAA;AAEd7lG,aAAKylG,gBAAgBlkG,QAAQ,OAAA;AAAA,MAC/B;AAEC5B,MAAAA,WAAUmmG,kBAAkB,SAAShsE,MAAMp4B,MAAMqL,UAAAA;AAAAA,eACzC+sB,KAAK/sB;AACZ,YAAIqtB,OAAMN,KAAKisE,UAAU;AAEzB9kG,eAAOkkG,WAAW3oE,KAAKpC,MACtB,UAAQ14B,OAAK,mBAAiBs4B,mBAAmB3qB,KAAKC,UAAUwqB,IAAAA,CAAAA,GAChE,SAAS4Y,QAAAA;AACR,cAAIszD,OAAOtzD,OAAO3V,OAAO7B,SAAS;AAClC,cAAIizB,OAAO;AAEX,cAAK63C,CAAAA,MAAK;AACT,gBAAA;AACC73C,qBAAO9+C,KAAKqrB,MAAMgY,OAAO3V,OAAO94B,YAChC;AAAA,YAAA,SAAM6P,GAAAA;AAAAA,YAAI;AAAA,UACX;AACD/G,mBAASohD,IACT;AAAA,QAAA,CAAA;AAAA,MAEJ;AAECxuD,MAAAA,WAAUsmG,qBAAqB,SAAS17E,QAAQiT,QAC/C;AAAA,YAAIhpB,SAAS,CAAA;AACb,iBAAS4U,OAAOmB;AACf/V,iBAAO4U,GAAOmB,IAAAA,OAAOnB,GAEtB5U;AAAAA,eAAO+E,aAAaikB,OAAOhpB,OAAO+E,UAClC/E;AAAAA,eAAOqF,WAAW2jB,OAAOhpB,OAAOqF,QAAAA;AAChCrF,eAAO0xF,QAAQlmG,KAAKqiB,UAAUqM,WAAWnE,OAAOhR,YAAYgR,OAAO1Q,UAAU0Q,MAE7E;AAAA,eAAO/V;AAAAA,MACT;AAEC7U,MAAAA,WAAUgmG,mBAAmB,SAASnoE,QAAQj8B,QAAAA;AAC7Ci8B,iBAASA,UAAU79B,WAAUyF,KAAKq7B,YAAY,iBAAiB,IAAA;AAE/D,YAAI+S;AACJ,YAAIjyC,UAAUA,OAAOwX,SAASxX,OAAOyX;AACpCw6B,mBAAS7zC,WAAUopC,UAAUxnC,OAAOwX,OAAOxX,OAAOyX,GAElDw6B;AAAAA;AAAAA,mBAAS7zC,WAAUopC,UAAAA;AAEpB,YAAIjP,OAAO,CACX;AAAA,iBAASnyB,IAAI,GAAGA,IAAG6rC,OAAO5rC,QAAQD;AACjCmyB,eAAKnyB,CAAAA,IAAK3H,KAAKimG,mBAAmBzyD,OAAO7rC,CAAAA,GAAI61B,MAE9C;AAAA,eAAO1D;AAAAA,MACT;AAECn6B,MAAAA,WAAUkmG,qBAAqB,WAAA;AAC9B,eAAO,CACN,EAAE9lG,IAAG,cAAcoO,QAAO,cAAcvH,OAAM,GAAA,GAC9C,EAAE7G,IAAG,YAAYoO,QAAO,YAAYvH,OAAM,MAC1C,EAAE7G,IAAG,SAASoO,QAAO,QAAQvH,OAAM,IAEtC,CAAA;AAAA,MAAA;AAECjH,MAAAA,WAAU8lG,kBAAkB,SAAS3rE,MAAMp4B,MAC1C;AAAA,YAAA,CAAIo4B,KAAKyyB,SAAQ;AAChBzyB,eAAKyyB,UAAU5sD,WAAU4sD;AAAAA,QACzB;AAED,YAAA,CAAIzyB,KAAKomB,MAAK;AACbpmB,eAAKomB,OAAOvgD,WAAUugD;AAAAA,QACtB;AAED,YAAIpmB,KAAK/sB;AACP,iBAAOpN,WAAUmmG,gBAAgBhsE,MAAMp4B,MAAMo4B,KAAK/sB,QAAAA;AAEpD,YAAI0L,OAAOzY,KAAKmmG,oBAAAA;AAEhB1tF,aAAKpY,WAAWw7C,SAAS/hB,KAAKisE,UAAU;AACxCttF,aAAKpY,WAAWyvC,WAAW,CAAGjpC,EAAAA,QAAQwI,KAAKC,UAAUwqB,IACrDrhB;AAAAA,aAAKpY,WAAWyvC,WAAW,CAAA,EAAGjpC,QAAQnF;AACtC+W,aAAKpY,WAAWw1F,OAClB;AAAA,MAAA;AAECl2F,MAAAA,WAAUwmG,sBAAsB,WAAA;AAC/B,YAAKnmG,CAAAA,KAAKomG,qBAAoB;AAC7B,cAAIlxF,IAAIlV,KAAKomG,sBAAsBvmG,SAASC,cAAc,KAAA;AAC1DoV,YAAEpO,MAAMgC,UAAU;AAClBoM,YAAEhV,YAAY;AACdL,mBAASM,KAAKC,YAAY8U,CAAAA;AAAAA,QAC1B;AACD,eAAOlV,KAAKomG;AAAAA,MACd;AAECzmG,MAAAA,WAAU0mG,mBAAmB,SAAS7oE,QAAQ8nE,aAAaje,MAAMke,KAAKp3F,QAAQ2lF,QAAQ7uE,QAErFsgF;AAAAA,cAAMvgF,SAASugF,GAAAA,IAAK,QAAQ;AAE5B,YAAIL,QAAQ,EACXoB,IAAK,EAAEp0F,GAAE,KAAKC,GAAE,OAChBo0F,IAAK,EAAEr0F,GAAE,KAAKC,GAAE,IAAA,GAChBq0F,IAAK,EAAEt0F,GAAE,KAAKC,GAAE,IAChBs0F,GAAAA,IAAK,EAAEv0F,GAAE,KAAKC,GAAE,OAChBu0F,IAAK,EAAEx0F,GAAE,KAAKC,GAAE,IAAA,GAChBw0F,IAAK,EAAEz0F,GAAE,KAAKC,GAAE,KAAA,EAAA;AAGjB,YAAIy0F,QAAQ3B,gBAAgB,gBAAgBjlG,MAAMkS;AAClD,YAAI20F,QAAQ5B,gBAAgB,gBAAgBjlG,IAAAA,EAAMmS;AAClD,YAAI20F,QAAQ7B,gBAAgB,kBAAkBjlG,IAAMmS,EAAAA;AACpD,YAAI40F,QAAQ9B,gBAAgB,iBAAiBjlG,MAAMmS;AAEnD,YAAI60F,QAAQ,EACX70F,GAAG00F,QAAQC,QAAQC,MAAAA;AAGpB,YAAIvpE,WAAW,QAAQ;AACtBwpE,gBAAM90F,IAAI00F;AAAAA,QACb,OAAS;AACNI,gBAAM90F,IAAIO,KAAKkI,OAAQ2qF,gBAAgB,cAAcJ,MAAM1nE,MAAAA,EAAQrrB,IAAI+yF,MAAM1nE,MAAAA,EAAQtrB,KAAKqzF,GAAAA;AAAAA,QAC1F;AAED,YAAItgF,QAAQ;AACX+hF,gBAAM90F,KAAM+gF,WAAWhuE,OAAO/S,CAAAA,KAAM;AACpC80F,gBAAM70F,KAAM8gF,WAAWhuE,OAAO9S,CAAM,KAAA;AAAA,QACpC;AAED,eAAO60F;AAAAA,MACT;AAEC,eAASC,cAAAA;AACR,YAAIxnG,OAAOE,WAAUqG,SAAWvG,EAAAA;AAChC,YAAIE,WAAU8O,UAAU9O,WAAU8O,OAAOhP,IAAO,GAAA;AAC/C,iBAAOE,WAAU8O,OAAOhP,IAAAA;AAAAA,QACxB;AACD,eAAO;AAAA,MACP;AAED,eAASynG,kBACR;AAAA,YAAIC,iBAAiBv0F,QACpB6rC,aAAa7rC;AAEd,YAAIvQ,WAAW4kG,YACf;AAAA,YAAI5kG,UAAU;AACbo8C,uBAAap8C,SAASo8C;AACtB0oD,2BAAiB9kG,SAAS6vE;AAAAA,QAC1B;AAED,eAAO,EACNzpE,YAAY9I,WAAU6I,GAAGC,YACzBwH,cAActQ,WAAU6I,GAAGyH,cAC3Bm3F,aAAaznG,WAAUsP,KAAKnI,MAAMF,OAClCygG,cAAc1nG,WAAUsP,KAAKnI,MAAMC,QACnCugG,qBAAqB7oD,YACrB8oD,0BAA0BJ,eAAAA;AAAAA,MAE3B;AAED,eAASK,eAAel1D,MAAMm1D,cAC7B9nG;AAAAA,QAAAA,WAAUsP,KAAKnI,MAAMF,QAAS0rC,KAAKpgC,IAAI;AACvCvS,QAAAA,WAAUsP,KAAKnI,MAAMC,SAASurC,KAAKngC,IAAI;AAEvCxS,QAAAA,WAAU6I,GAAGC,aAAa;AAC1B9I,QAAAA,WAAU6I,GAAGyH,eAAe;AAE5B,YAAI5N,WAAW4kG,YACf;AAAA,YAAIQ,aAAaH,uBAAuBG,aAAaF,0BAA0B;AAE9EllG,mBAASo8C,aAAa;AACtBp8C,mBAAS6vE,kBAAkB;AAAA,QAC3B;AAAA,MACD;AAED,eAASw1B,gBAAgBD,cACxB9nG;AAAAA,QAAAA,WAAU6I,GAAGyH,eAAew3F,aAAax3F;AACzCtQ,QAAAA,WAAU6I,GAAGC,aAAag/F,aAAah/F;AACvC9I,QAAAA,WAAUsP,KAAKnI,MAAMF,QAAS6gG,aAAaL;AAC3CznG,QAAAA,WAAUsP,KAAKnI,MAAMC,SAAS0gG,aAAaJ;AAE3C,YAAIhlG,WAAW4kG,YACf;AAAA,YAAIQ,aAAaH,uBAAuBG,aAAaF,0BAA0B;AAC9EllG,mBAASo8C,aAAagpD,aAAaH;AACnCjlG,mBAAS6vE,kBAAkBu1B,aAAaF;AAAAA,QACxC;AAAA,MACD;AAED5nG,MAAAA,WAAU6lG,eAAe,SAAU5lG,KAClC;AAAA,YAAI6nG,eAAeP,gBAAAA;AACnB,YAAI50D,OAAO3yC,WAAU0mG,iBAAiBzmG,IAAI49B,QAAQ59B,IAAI0lG,aAAa1lG,IAAIynF,MAAMznF,IAAI2lG,KAAK3lG,IAAIuO,QAAQvO,IAAIk0F,QAAQl0F,IAAIqlB;AAElH,YAAIhe,OAAO;AACX,YAAA;AACCugG,yBAAel1D,MAAMm1D,YACrB9nG;AAAAA,UAAAA,WAAUyG;AACVa,iBAAOtH,WAAUsP,KAAK/O;AAAAA,QACtB,SAAQ4T,GAGRjS;AAAAA,kBAAQsN,MAAM2E,CACjB;AAAA,QAAA,UAAY;AACT4zF,0BAAgBD,YAChB9nG;AAAAA,UAAAA,WAAUyG,eACV;AAAA,QAAA;AAED,eAAOa;AAAAA,MACT;AAAA,IAEA;AAEAo+F,uBAAmB1lG,UAGlB;AAAA,EAAA,GAED;AAAA;AC5PA,MAAegoG,gBAAA,EACdvsC,cACAQ,eACA4B,aACAx9C,WACA8/C,WACAiB,sBACAmC,QACAxJ,aAAaoK,wBACb8jC,cAAc7jC,yBACdC,SACAkC,QACA6+B,YACAj+B,WACAC,gBACA8P,SACA4D,OACA/3E,OACAoiF,UACAwG,SACA+D,aACA/X,cAAciY,yBACdC,aACAU,aACAE,KACAz2B,WACAi5B,KACAuD,YACAx/E,UACA2lC,WACA/hB,WACAl4B,UAAU49F,qBACVW,SACAnnC,cAAcspC,yBACdn3B,OAAOo3B,kBACP5oE,KACA93B,aAAa8gG,wBACbC,IACAC,UC1ED;AAAA,MAAMuE,UAAU,IAAIrtC,iBAAiBmtC,aAAAA;AAEhC,MAAChoG,YAAYkoG,QAAQpkD,qBACrB;AAAA,MAACD,cAAY,EACjBqW,QAAQl6D,UAAUiN,KAAKi7F,QAAQhuC,QAAQguC,OAGxC5mG,EAAAA;AAAAA,OAAOtB,YAAYA;AACnBsB,OAAOuiD,YAAYA;AAEnB,IAAIviD,CAAAA,OAAO6mG,MAAM;AAChB7mG,SAAO6mG,OAAO;AACf;AAEA7mG,OAAO6mG,KAAKnoG,YAAYA;AACxBsB,OAAO6mG,KAAKtkD,YAAYA;"}
|