@rocketshow/designer 1.32.0 → 1.33.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/esm2022/lib/array-sort-pipe.mjs +30 -0
- package/esm2022/lib/designer.component.mjs +605 -0
- package/esm2022/lib/designer.module.mjs +183 -0
- package/esm2022/lib/designer.service.mjs +14 -0
- package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +569 -0
- package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +36 -0
- package/esm2022/lib/effect/effect.component.mjs +174 -0
- package/esm2022/lib/error-dialog/error-dialog.component.mjs +75 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +222 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +147 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +213 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +78 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +119 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +169 -0
- package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +160 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +365 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +151 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +46 -0
- package/esm2022/lib/fixture/fixture.component.mjs +138 -0
- package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +145 -0
- package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +589 -0
- package/esm2022/lib/intro/intro.component.mjs +95 -0
- package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +66 -0
- package/esm2022/lib/models/cached-fixture-capability.mjs +9 -0
- package/esm2022/lib/models/cached-fixture-channel.mjs +7 -0
- package/esm2022/lib/models/cached-fixture.mjs +6 -0
- package/esm2022/lib/models/color.mjs +8 -0
- package/esm2022/lib/models/composition.mjs +46 -0
- package/esm2022/lib/models/effect-curve-profile-channel.mjs +15 -0
- package/esm2022/lib/models/effect-curve.mjs +69 -0
- package/esm2022/lib/models/effect-pan-tilt.mjs +19 -0
- package/esm2022/lib/models/effect.mjs +12 -0
- package/esm2022/lib/models/fixture-capability-value.mjs +15 -0
- package/esm2022/lib/models/fixture-capability.mjs +84 -0
- package/esm2022/lib/models/fixture-channel-value.mjs +11 -0
- package/esm2022/lib/models/fixture-channel.mjs +24 -0
- package/esm2022/lib/models/fixture-mode.mjs +14 -0
- package/esm2022/lib/models/fixture-profile.mjs +70 -0
- package/esm2022/lib/models/fixture-wheel-slot.mjs +26 -0
- package/esm2022/lib/models/fixture-wheel.mjs +15 -0
- package/esm2022/lib/models/fixture.mjs +40 -0
- package/esm2022/lib/models/preset-region-scene.mjs +8 -0
- package/esm2022/lib/models/preset.mjs +56 -0
- package/esm2022/lib/models/project.mjs +68 -0
- package/esm2022/lib/models/scene-playback-region.mjs +11 -0
- package/esm2022/lib/models/scene.mjs +27 -0
- package/esm2022/lib/models/universe.mjs +11 -0
- package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +194 -0
- package/esm2022/lib/preset/preset.component.mjs +131 -0
- package/esm2022/lib/preview/models/color-changer-3d.mjs +167 -0
- package/esm2022/lib/preview/models/fixture-3d.mjs +150 -0
- package/esm2022/lib/preview/models/moving-head-3d.mjs +243 -0
- package/esm2022/lib/preview/preview.component.mjs +212 -0
- package/esm2022/lib/project/project-browser/project-browser.component.mjs +143 -0
- package/esm2022/lib/project/project-import/project-import.component.mjs +107 -0
- package/esm2022/lib/project/project-save/project-save.component.mjs +178 -0
- package/esm2022/lib/project/project-share/project-share.component.mjs +71 -0
- package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +146 -0
- package/esm2022/lib/scene/scene.component.mjs +110 -0
- package/esm2022/lib/services/animation.service.mjs +16 -0
- package/esm2022/lib/services/config.service.mjs +27 -0
- package/esm2022/lib/services/effect.service.mjs +14 -0
- package/esm2022/lib/services/error-dialog.service.mjs +39 -0
- package/esm2022/lib/services/fixture-pool.service.mjs +30 -0
- package/esm2022/lib/services/fixture.service.mjs +431 -0
- package/esm2022/lib/services/hotkey-target-exclude.service.mjs +24 -0
- package/esm2022/lib/services/intro.service.mjs +140 -0
- package/esm2022/lib/services/preset.service.mjs +400 -0
- package/esm2022/lib/services/preview-mesh.service.mjs +57 -0
- package/esm2022/lib/services/preview.service.mjs +496 -0
- package/esm2022/lib/services/project-load.service.mjs +149 -0
- package/esm2022/lib/services/project.service.mjs +97 -0
- package/esm2022/lib/services/scene.service.mjs +164 -0
- package/esm2022/lib/services/timeline.service.mjs +726 -0
- package/esm2022/lib/services/universe.service.mjs +23 -0
- package/esm2022/lib/services/user-ensure-login.service.mjs +38 -0
- package/esm2022/lib/services/user.service.mjs +89 -0
- package/esm2022/lib/services/uuid.service.mjs +23 -0
- package/esm2022/lib/services/warning-dialog.service.mjs +38 -0
- package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +334 -0
- package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +216 -0
- package/esm2022/lib/timeline/timeline.component.mjs +418 -0
- package/esm2022/lib/user/user-login/user-login.component.mjs +144 -0
- package/esm2022/lib/user/user-register/user-register.component.mjs +220 -0
- package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +26 -0
- package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +68 -0
- package/esm2022/public_api.mjs +7 -0
- package/esm2022/rocketshow-designer.mjs +5 -0
- package/fesm2022/rocketshow-designer.mjs +10626 -0
- package/fesm2022/rocketshow-designer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/array-sort-pipe.d.ts +3 -0
- package/lib/designer.component.d.ts +15 -12
- package/lib/designer.module.d.ts +54 -0
- package/lib/designer.service.d.ts +3 -0
- package/lib/effect/effect-curve/effect-curve.component.d.ts +4 -1
- package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +3 -0
- package/lib/effect/effect.component.d.ts +3 -0
- package/lib/error-dialog/error-dialog.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +4 -1
- package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +5 -2
- package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +3 -0
- package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +3 -0
- package/lib/fixture/fixture.component.d.ts +3 -0
- package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +3 -0
- package/lib/fixture-pool/fixture-pool.component.d.ts +3 -0
- package/lib/intro/intro.component.d.ts +3 -0
- package/lib/master-dimmer/master-dimmer.component.d.ts +3 -0
- package/lib/preset/preset-settings/preset-settings.component.d.ts +3 -0
- package/lib/preset/preset.component.d.ts +3 -0
- package/lib/preview/preview.component.d.ts +4 -4
- package/lib/project/project-browser/project-browser.component.d.ts +3 -0
- package/lib/project/project-import/project-import.component.d.ts +3 -0
- package/lib/project/project-save/project-save.component.d.ts +3 -0
- package/lib/project/project-share/project-share.component.d.ts +3 -0
- package/lib/scene/scene-settings/scene-settings.component.d.ts +3 -0
- package/lib/scene/scene.component.d.ts +3 -0
- package/lib/services/animation.service.d.ts +3 -0
- package/lib/services/config.service.d.ts +3 -0
- package/lib/services/effect.service.d.ts +3 -0
- package/lib/services/error-dialog.service.d.ts +3 -0
- package/lib/services/fixture-pool.service.d.ts +3 -0
- package/lib/services/fixture.service.d.ts +3 -0
- package/lib/services/hotkey-target-exclude.service.d.ts +3 -0
- package/lib/services/intro.service.d.ts +3 -0
- package/lib/services/preset.service.d.ts +3 -0
- package/lib/services/preview-mesh.service.d.ts +3 -0
- package/lib/services/preview.service.d.ts +4 -0
- package/lib/services/project-load.service.d.ts +3 -0
- package/lib/services/project.service.d.ts +3 -0
- package/lib/services/scene.service.d.ts +3 -0
- package/lib/services/timeline.service.d.ts +4 -1
- package/lib/services/universe.service.d.ts +3 -0
- package/lib/services/user-ensure-login.service.d.ts +3 -0
- package/lib/services/user.service.d.ts +3 -0
- package/lib/services/uuid.service.d.ts +3 -0
- package/lib/services/warning-dialog.service.d.ts +3 -0
- package/lib/timeline/composition-settings/composition-settings.component.d.ts +3 -0
- package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +3 -0
- package/lib/timeline/timeline.component.d.ts +3 -0
- package/lib/user/user-login/user-login.component.d.ts +3 -0
- package/lib/user/user-register/user-register.component.d.ts +3 -0
- package/lib/wait-dialog/wait-dialog.component.d.ts +3 -0
- package/lib/warning-dialog/warning-dialog.component.d.ts +3 -0
- package/package.json +20 -22
- package/rocketshow-designer-1.33.0.tgz +0 -0
- package/bundles/rocketshow-designer.umd.js +0 -9966
- package/bundles/rocketshow-designer.umd.js.map +0 -1
- package/bundles/rocketshow-designer.umd.min.js +0 -17
- package/bundles/rocketshow-designer.umd.min.js.map +0 -1
- package/esm2015/lib/array-sort-pipe.js +0 -28
- package/esm2015/lib/designer.component.js +0 -411
- package/esm2015/lib/designer.module.js +0 -117
- package/esm2015/lib/designer.service.js +0 -16
- package/esm2015/lib/effect/effect-curve/effect-curve.component.js +0 -325
- package/esm2015/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -30
- package/esm2015/lib/effect/effect.component.js +0 -73
- package/esm2015/lib/error-dialog/error-dialog.component.js +0 -42
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -141
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -128
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -163
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -60
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -87
- package/esm2015/lib/fixture/fixture-capability/fixture-capability.component.js +0 -97
- package/esm2015/lib/fixture/fixture-channel/fixture-channel.component.js +0 -66
- package/esm2015/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -200
- package/esm2015/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -31
- package/esm2015/lib/fixture/fixture-settings/fixture-settings.component.js +0 -35
- package/esm2015/lib/fixture/fixture.component.js +0 -70
- package/esm2015/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -128
- package/esm2015/lib/fixture-pool/fixture-pool.component.js +0 -331
- package/esm2015/lib/intro/intro.component.js +0 -25
- package/esm2015/lib/master-dimmer/master-dimmer.component.js +0 -41
- package/esm2015/lib/models/cached-fixture-capability.js +0 -9
- package/esm2015/lib/models/cached-fixture-channel.js +0 -7
- package/esm2015/lib/models/cached-fixture.js +0 -6
- package/esm2015/lib/models/color.js +0 -8
- package/esm2015/lib/models/composition.js +0 -46
- package/esm2015/lib/models/effect-curve-profile-channel.js +0 -15
- package/esm2015/lib/models/effect-curve.js +0 -69
- package/esm2015/lib/models/effect-pan-tilt.js +0 -19
- package/esm2015/lib/models/effect.js +0 -12
- package/esm2015/lib/models/fixture-capability-value.js +0 -15
- package/esm2015/lib/models/fixture-capability.js +0 -84
- package/esm2015/lib/models/fixture-channel-value.js +0 -11
- package/esm2015/lib/models/fixture-channel.js +0 -24
- package/esm2015/lib/models/fixture-mode.js +0 -14
- package/esm2015/lib/models/fixture-profile.js +0 -70
- package/esm2015/lib/models/fixture-wheel-slot.js +0 -26
- package/esm2015/lib/models/fixture-wheel.js +0 -15
- package/esm2015/lib/models/fixture.js +0 -40
- package/esm2015/lib/models/preset-region-scene.js +0 -8
- package/esm2015/lib/models/preset.js +0 -56
- package/esm2015/lib/models/project.js +0 -68
- package/esm2015/lib/models/scene-playback-region.js +0 -11
- package/esm2015/lib/models/scene.js +0 -27
- package/esm2015/lib/models/universe.js +0 -11
- package/esm2015/lib/preset/preset-settings/preset-settings.component.js +0 -66
- package/esm2015/lib/preset/preset.component.js +0 -85
- package/esm2015/lib/preview/models/color-changer-3d.js +0 -167
- package/esm2015/lib/preview/models/fixture-3d.js +0 -150
- package/esm2015/lib/preview/models/moving-head-3d.js +0 -233
- package/esm2015/lib/preview/preview.component.js +0 -242
- package/esm2015/lib/project/project-browser/project-browser.component.js +0 -73
- package/esm2015/lib/project/project-import/project-import.component.js +0 -89
- package/esm2015/lib/project/project-save/project-save.component.js +0 -105
- package/esm2015/lib/project/project-share/project-share.component.js +0 -43
- package/esm2015/lib/scene/scene-settings/scene-settings.component.js +0 -52
- package/esm2015/lib/scene/scene.component.js +0 -56
- package/esm2015/lib/services/animation.service.js +0 -17
- package/esm2015/lib/services/config.service.js +0 -28
- package/esm2015/lib/services/effect.service.js +0 -16
- package/esm2015/lib/services/error-dialog.service.js +0 -44
- package/esm2015/lib/services/fixture-pool.service.js +0 -34
- package/esm2015/lib/services/fixture.service.js +0 -443
- package/esm2015/lib/services/hotkey-target-exclude.service.js +0 -26
- package/esm2015/lib/services/intro.service.js +0 -144
- package/esm2015/lib/services/preset.service.js +0 -416
- package/esm2015/lib/services/preview-mesh.service.js +0 -58
- package/esm2015/lib/services/preview.service.js +0 -500
- package/esm2015/lib/services/project-load.service.js +0 -171
- package/esm2015/lib/services/project.service.js +0 -113
- package/esm2015/lib/services/scene.service.js +0 -174
- package/esm2015/lib/services/timeline.service.js +0 -738
- package/esm2015/lib/services/universe.service.js +0 -24
- package/esm2015/lib/services/user-ensure-login.service.js +0 -44
- package/esm2015/lib/services/user.service.js +0 -93
- package/esm2015/lib/services/uuid.service.js +0 -25
- package/esm2015/lib/services/warning-dialog.service.js +0 -43
- package/esm2015/lib/timeline/composition-settings/composition-settings.component.js +0 -197
- package/esm2015/lib/timeline/timeline-grid/timeline-grid.component.js +0 -55
- package/esm2015/lib/timeline/timeline.component.js +0 -239
- package/esm2015/lib/user/user-login/user-login.component.js +0 -64
- package/esm2015/lib/user/user-register/user-register.component.js +0 -89
- package/esm2015/lib/wait-dialog/wait-dialog.component.js +0 -16
- package/esm2015/lib/warning-dialog/warning-dialog.component.js +0 -42
- package/esm2015/public_api.js +0 -7
- package/esm2015/rocketshow-designer.js +0 -61
- package/esm5/lib/array-sort-pipe.js +0 -31
- package/esm5/lib/designer.component.js +0 -468
- package/esm5/lib/designer.module.js +0 -120
- package/esm5/lib/designer.service.js +0 -17
- package/esm5/lib/effect/effect-curve/effect-curve.component.js +0 -386
- package/esm5/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -31
- package/esm5/lib/effect/effect.component.js +0 -75
- package/esm5/lib/error-dialog/error-dialog.component.js +0 -43
- package/esm5/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -159
- package/esm5/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -130
- package/esm5/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -215
- package/esm5/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -61
- package/esm5/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -88
- package/esm5/lib/fixture/fixture-capability/fixture-capability.component.js +0 -130
- package/esm5/lib/fixture/fixture-channel/fixture-channel.component.js +0 -68
- package/esm5/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -306
- package/esm5/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -32
- package/esm5/lib/fixture/fixture-settings/fixture-settings.component.js +0 -36
- package/esm5/lib/fixture/fixture.component.js +0 -71
- package/esm5/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -127
- package/esm5/lib/fixture-pool/fixture-pool.component.js +0 -430
- package/esm5/lib/intro/intro.component.js +0 -26
- package/esm5/lib/master-dimmer/master-dimmer.component.js +0 -42
- package/esm5/lib/models/cached-fixture-capability.js +0 -11
- package/esm5/lib/models/cached-fixture-channel.js +0 -9
- package/esm5/lib/models/cached-fixture.js +0 -8
- package/esm5/lib/models/color.js +0 -10
- package/esm5/lib/models/composition.js +0 -60
- package/esm5/lib/models/effect-curve-profile-channel.js +0 -29
- package/esm5/lib/models/effect-curve.js +0 -95
- package/esm5/lib/models/effect-pan-tilt.js +0 -24
- package/esm5/lib/models/effect.js +0 -14
- package/esm5/lib/models/fixture-capability-value.js +0 -17
- package/esm5/lib/models/fixture-capability.js +0 -86
- package/esm5/lib/models/fixture-channel-value.js +0 -13
- package/esm5/lib/models/fixture-channel.js +0 -38
- package/esm5/lib/models/fixture-mode.js +0 -16
- package/esm5/lib/models/fixture-profile.js +0 -114
- package/esm5/lib/models/fixture-wheel-slot.js +0 -28
- package/esm5/lib/models/fixture-wheel.js +0 -29
- package/esm5/lib/models/fixture.js +0 -42
- package/esm5/lib/models/preset-region-scene.js +0 -10
- package/esm5/lib/models/preset.js +0 -90
- package/esm5/lib/models/project.js +0 -122
- package/esm5/lib/models/scene-playback-region.js +0 -13
- package/esm5/lib/models/scene.js +0 -29
- package/esm5/lib/models/universe.js +0 -13
- package/esm5/lib/preset/preset-settings/preset-settings.component.js +0 -67
- package/esm5/lib/preset/preset.component.js +0 -86
- package/esm5/lib/preview/models/color-changer-3d.js +0 -194
- package/esm5/lib/preview/models/fixture-3d.js +0 -196
- package/esm5/lib/preview/models/moving-head-3d.js +0 -250
- package/esm5/lib/preview/preview.component.js +0 -280
- package/esm5/lib/project/project-browser/project-browser.component.js +0 -77
- package/esm5/lib/project/project-import/project-import.component.js +0 -88
- package/esm5/lib/project/project-save/project-save.component.js +0 -120
- package/esm5/lib/project/project-share/project-share.component.js +0 -44
- package/esm5/lib/scene/scene-settings/scene-settings.component.js +0 -53
- package/esm5/lib/scene/scene.component.js +0 -57
- package/esm5/lib/services/animation.service.js +0 -18
- package/esm5/lib/services/config.service.js +0 -29
- package/esm5/lib/services/effect.service.js +0 -17
- package/esm5/lib/services/error-dialog.service.js +0 -46
- package/esm5/lib/services/fixture-pool.service.js +0 -36
- package/esm5/lib/services/fixture.service.js +0 -643
- package/esm5/lib/services/hotkey-target-exclude.service.js +0 -27
- package/esm5/lib/services/intro.service.js +0 -145
- package/esm5/lib/services/preset.service.js +0 -637
- package/esm5/lib/services/preview-mesh.service.js +0 -61
- package/esm5/lib/services/preview.service.js +0 -754
- package/esm5/lib/services/project-load.service.js +0 -185
- package/esm5/lib/services/project.service.js +0 -127
- package/esm5/lib/services/scene.service.js +0 -251
- package/esm5/lib/services/timeline.service.js +0 -845
- package/esm5/lib/services/universe.service.js +0 -36
- package/esm5/lib/services/user-ensure-login.service.js +0 -45
- package/esm5/lib/services/user.service.js +0 -95
- package/esm5/lib/services/uuid.service.js +0 -26
- package/esm5/lib/services/warning-dialog.service.js +0 -45
- package/esm5/lib/timeline/composition-settings/composition-settings.component.js +0 -206
- package/esm5/lib/timeline/timeline-grid/timeline-grid.component.js +0 -56
- package/esm5/lib/timeline/timeline.component.js +0 -243
- package/esm5/lib/user/user-login/user-login.component.js +0 -66
- package/esm5/lib/user/user-register/user-register.component.js +0 -91
- package/esm5/lib/wait-dialog/wait-dialog.component.js +0 -18
- package/esm5/lib/warning-dialog/warning-dialog.component.js +0 -43
- package/esm5/public_api.js +0 -7
- package/esm5/rocketshow-designer.js +0 -61
- package/fesm2015/rocketshow-designer.js +0 -7945
- package/fesm2015/rocketshow-designer.js.map +0 -1
- package/fesm5/rocketshow-designer.js +0 -9690
- package/fesm5/rocketshow-designer.js.map +0 -1
- package/rocketshow-designer-1.32.0.tgz +0 -0
- package/rocketshow-designer.d.ts +0 -60
- package/rocketshow-designer.metadata.json +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rocketshow-designer.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","ng://@rocketshow/designer/lib/designer.service.ts","ng://@rocketshow/designer/lib/models/fixture-capability.ts","ng://@rocketshow/designer/lib/models/fixture-channel.ts","ng://@rocketshow/designer/lib/models/fixture-mode.ts","ng://@rocketshow/designer/lib/models/fixture-wheel-slot.ts","ng://@rocketshow/designer/lib/models/fixture-wheel.ts","ng://@rocketshow/designer/lib/models/fixture-profile.ts","ng://@rocketshow/designer/lib/models/cached-fixture.ts","ng://@rocketshow/designer/lib/models/cached-fixture-capability.ts","ng://@rocketshow/designer/lib/models/cached-fixture-channel.ts","ng://@rocketshow/designer/lib/models/color.ts","ng://@rocketshow/designer/lib/models/fixture.ts","ng://@rocketshow/designer/lib/models/scene-playback-region.ts","ng://@rocketshow/designer/lib/models/composition.ts","ng://@rocketshow/designer/lib/models/effect.ts","ng://@rocketshow/designer/lib/models/effect-curve-profile-channel.ts","ng://@rocketshow/designer/lib/models/effect-curve.ts","ng://@rocketshow/designer/lib/models/effect-pan-tilt.ts","ng://@rocketshow/designer/lib/models/fixture-capability-value.ts","ng://@rocketshow/designer/lib/models/fixture-channel-value.ts","ng://@rocketshow/designer/lib/models/preset.ts","ng://@rocketshow/designer/lib/models/scene.ts","ng://@rocketshow/designer/lib/models/project.ts","ng://@rocketshow/designer/lib/services/user.service.ts","ng://@rocketshow/designer/lib/services/uuid.service.ts","ng://@rocketshow/designer/lib/services/project.service.ts","ng://@rocketshow/designer/lib/services/fixture.service.ts","ng://@rocketshow/designer/lib/services/preview-mesh.service.ts","ng://@rocketshow/designer/lib/models/preset-region-scene.ts","ng://@rocketshow/designer/lib/services/animation.service.ts","ng://@rocketshow/designer/lib/services/config.service.ts","ng://@rocketshow/designer/lib/services/effect.service.ts","ng://@rocketshow/designer/lib/services/preset.service.ts","ng://@rocketshow/designer/lib/services/scene.service.ts","ng://@rocketshow/designer/lib/services/timeline.service.ts","ng://@rocketshow/designer/lib/services/universe.service.ts","ng://@rocketshow/designer/lib/services/preview.service.ts","ng://@rocketshow/designer/lib/preview/models/fixture-3d.ts","ng://@rocketshow/designer/lib/preview/models/color-changer-3d.ts","ng://@rocketshow/designer/lib/preview/models/moving-head-3d.ts","ng://@rocketshow/designer/lib/preview/preview.component.ts","ng://@rocketshow/designer/lib/wait-dialog/wait-dialog.component.ts","ng://@rocketshow/designer/lib/services/project-load.service.ts","ng://@rocketshow/designer/lib/warning-dialog/warning-dialog.component.ts","ng://@rocketshow/designer/lib/services/warning-dialog.service.ts","ng://@rocketshow/designer/lib/project/project-browser/project-browser.component.ts","ng://@rocketshow/designer/lib/project/project-import/project-import.component.ts","ng://@rocketshow/designer/lib/project/project-save/project-save.component.ts","ng://@rocketshow/designer/lib/project/project-share/project-share.component.ts","ng://@rocketshow/designer/lib/error-dialog/error-dialog.component.ts","ng://@rocketshow/designer/lib/services/error-dialog.service.ts","ng://@rocketshow/designer/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.ts","ng://@rocketshow/designer/lib/fixture-pool/fixture-pool.component.ts","ng://@rocketshow/designer/lib/services/fixture-pool.service.ts","ng://@rocketshow/designer/lib/services/hotkey-target-exclude.service.ts","ng://@rocketshow/designer/lib/services/intro.service.ts","ng://@rocketshow/designer/lib/user/user-login/user-login.component.ts","ng://@rocketshow/designer/lib/user/user-register/user-register.component.ts","ng://@rocketshow/designer/lib/services/user-ensure-login.service.ts","ng://@rocketshow/designer/lib/timeline/composition-settings/composition-settings.component.ts","ng://@rocketshow/designer/lib/timeline/timeline-grid/timeline-grid.component.ts","ng://@rocketshow/designer/lib/timeline/timeline.component.ts","ng://@rocketshow/designer/lib/designer.component.ts","ng://@rocketshow/designer/lib/array-sort-pipe.ts","ng://@rocketshow/designer/lib/effect/effect-curve/effect-curve.component.ts","ng://@rocketshow/designer/lib/effect/effect-pan-tilt/effect-pan-tilt.component.ts","ng://@rocketshow/designer/lib/effect/effect.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-capability/fixture-capability.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-channel/fixture-channel.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.ts","ng://@rocketshow/designer/lib/fixture/fixture-settings/fixture-settings.component.ts","ng://@rocketshow/designer/lib/fixture/fixture.component.ts","ng://@rocketshow/designer/lib/intro/intro.component.ts","ng://@rocketshow/designer/lib/master-dimmer/master-dimmer.component.ts","ng://@rocketshow/designer/lib/preset/preset-settings/preset-settings.component.ts","ng://@rocketshow/designer/lib/preset/preset.component.ts","ng://@rocketshow/designer/lib/scene/scene-settings/scene-settings.component.ts","ng://@rocketshow/designer/lib/scene/scene.component.ts","ng://@rocketshow/designer/lib/designer.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DesignerService {\n constructor() {}\n}\n","export enum FixtureCapabilityType {\n NoFunction = 'NoFunction',\n ShutterStrobe = 'ShutterStrobe',\n StrobeSpeed = 'StrobeSpeed',\n StrobeDuration = 'StrobeDuration',\n Intensity = 'Intensity',\n ColorIntensity = 'ColorIntensity',\n ColorPreset = 'ColorPreset',\n ColorTemperature = 'ColorTemperature',\n Pan = 'Pan',\n PanContinuous = 'PanContinuous',\n Tilt = 'Tilt',\n TiltContinuous = 'TiltContinuous',\n PanTiltSpeed = 'PanTiltSpeed',\n WheelSlot = 'WheelSlot',\n WheelShake = 'WheelShake',\n WheelSlotRotation = 'WheelSlotRotation',\n WheelRotation = 'WheelRotation',\n EffectSpeed = 'EffectSpeed',\n EffectDuration = 'EffectDuration',\n EffectParameter = 'EffectParameter',\n SoundSensitivity = 'SoundSensitivity',\n Focus = 'Focus',\n Zoom = 'Zoom',\n Iris = 'Iris',\n IrisEffect = 'IrisEffect',\n Frost = 'Frost',\n FrostEffect = 'FrostEffect',\n Prism = 'Prism',\n PrismRotation = 'PrismRotation',\n BladeInsertion = 'BladeInsertion',\n BladeRotation = 'BladeRotation',\n BladeSystemRotation = 'BladeSystemRotation',\n Fog = 'Fog',\n FogOutput = 'FogOutput',\n FogType = 'FogType',\n BeamAngle = 'BeamAngle',\n Rotation = 'Rotation',\n Speed = 'Speed',\n Time = 'Time',\n Maintenance = 'Maintenance',\n Generic = 'Generic',\n Effect = 'Effect',\n BeamPosition = 'BeamPosition',\n}\n\nexport enum FixtureCapabilityColor {\n Red = 'Red',\n Green = 'Green',\n Blue = 'Blue',\n Cyan = 'Cyan',\n Magenta = 'Magenta',\n Yellow = 'Yellow',\n Amber = 'Amber',\n White = 'White',\n 'Warm White' = 'Warm White',\n 'Cold White' = 'Cold White',\n UV = 'UV',\n Lime = 'Lime',\n Indigo = 'Indigo',\n}\n\nexport class FixtureCapability {\n type: FixtureCapabilityType;\n angleStart: string;\n angleEnd: string;\n color: FixtureCapabilityColor;\n dmxRange: number[] = [];\n // may be empty. in this case, the channel name points to the wheel\n wheel: any;\n slotNumber: number;\n brightness: string;\n brightnessStart: string;\n brightnessEnd: string;\n comment: string;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.type = FixtureCapabilityType[data.type as string];\n this.angleStart = data.angleStart;\n this.angleEnd = data.angleEnd;\n this.color = data.color;\n if (data.dmxRange) {\n this.dmxRange = data.dmxRange;\n }\n this.wheel = data.wheel;\n this.slotNumber = data.slotNumber;\n this.brightness = data.brightness;\n this.brightnessStart = data.brightnessStart;\n this.brightnessEnd = data.brightnessEnd;\n this.comment = data.comment;\n }\n}\n","import { FixtureCapability } from './fixture-capability';\n\nexport class FixtureChannel {\n fineChannelAliases: string[] = [];\n defaultValue: string | number;\n capability: FixtureCapability;\n capabilities: FixtureCapability[] = [];\n dmxValueResolution: string;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n if (data.fineChannelAliases) {\n this.fineChannelAliases = data.fineChannelAliases;\n }\n\n this.defaultValue = data.defaultValue;\n this.dmxValueResolution = data.dmxValueResolution;\n\n if (data.capability) {\n this.capability = new FixtureCapability(data.capability);\n } else if (data.capabilities) {\n for (const capability of data.capabilities) {\n this.capabilities.push(new FixtureCapability(capability));\n }\n }\n }\n}\n","export class FixtureMode {\n name: string;\n shortName: string;\n channels: any[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.name = data.name;\n this.shortName = data.shortName;\n\n if (data.channels) {\n this.channels = data.channels;\n }\n }\n}\n","export enum FixtureWheelSlotType {\n Open = 'Open',\n Closed = 'Closed',\n Color = 'Color',\n Gobo = 'Gobo',\n Prism = 'Prism',\n Iris = 'Iris',\n Frost = 'Frost',\n AnimationGoboStart = 'AnimationGoboStart',\n AnimationGoboEnd = 'AnimationGoboEnd',\n}\n\nexport class FixtureWheelSlot {\n type: FixtureWheelSlotType;\n name: string;\n colors: string[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.type = FixtureWheelSlotType[data.type as string];\n this.name = data.name;\n if (data.colors) {\n this.colors = data.colors;\n }\n }\n}\n","import { FixtureWheelSlot } from './fixture-wheel-slot';\n\nexport class FixtureWheel {\n slots: FixtureWheelSlot[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n if (data.slots) {\n for (const slot of data.slots) {\n this.slots.push(new FixtureWheelSlot(slot));\n }\n }\n }\n}\n","import { FixtureChannel } from './fixture-channel';\nimport { FixtureMode } from './fixture-mode';\nimport { FixtureWheel } from './fixture-wheel';\n\nexport enum FixtureCategory {\n Blinder = 'Blinder',\n 'Color Changer' = 'Color Changer',\n Dimmer = 'Dimmer',\n Effect = 'Effect',\n Fan = 'Fan',\n Flower = 'Flower',\n Hazer = 'Hazer',\n Laser = 'Laser',\n Matrix = 'Matrix',\n 'Moving Head' = 'Moving Head',\n 'Pixel Bar' = 'Pixel Bar',\n Scanner = 'Scanner',\n Smoke = 'Smoke',\n Stand = 'Stand',\n Strobe = 'Strobe',\n Other = 'Other',\n 'Barrel Scanner' = 'Barrel Scanner',\n}\n\nexport class FixtureProfile {\n uuid: string;\n name: string;\n\n // set to file, if the profile is not loaded from the backend\n source: string;\n createdFromFile = false;\n manufacturerShortName: string;\n manufacturerName: string;\n categories: FixtureCategory[] = [];\n availableChannels: any = {};\n shortName: string;\n wheels: any = {};\n\n // All available fixture modes\n modes: FixtureMode[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n // metadata\n this.uuid = data.uuid;\n this.name = data.name;\n this.manufacturerName = data.manufacturerName;\n this.manufacturerShortName = data.manufacturerShortName;\n\n if (data.categories) {\n for (const category of data.categories) {\n this.categories.push(FixtureCategory[category as string]);\n }\n } else if (data.mainCategory) {\n this.categories.push(FixtureCategory[data.mainCategory as string]);\n }\n if (data.wheels) {\n for (const property of Object.keys(data.wheels)) {\n const wheel = new FixtureWheel(data.wheels[property]);\n this.wheels[property] = wheel;\n }\n }\n if (data.modes) {\n for (const mode of data.modes) {\n this.modes.push(new FixtureMode(mode));\n }\n }\n if (data.availableChannels) {\n for (const property of Object.keys(data.availableChannels)) {\n const fixtureChannel = new FixtureChannel(data.availableChannels[property]);\n this.availableChannels[property] = fixtureChannel;\n }\n }\n if (data.createdFromFile) {\n this.createdFromFile = data.createdFromFile;\n }\n }\n}\n","import { CachedFixtureChannel } from './cached-fixture-channel';\nimport { Fixture } from './fixture';\nimport { FixtureMode } from './fixture-mode';\nimport { FixtureProfile } from './fixture-profile';\n\nexport class CachedFixture {\n fixture: Fixture;\n profile: FixtureProfile;\n mode: FixtureMode;\n channels: CachedFixtureChannel[] = [];\n}\n","import { FixtureCapability } from './fixture-capability';\nimport { FixtureWheel } from './fixture-wheel';\nimport { FixtureWheelSlot } from './fixture-wheel-slot';\n\nexport class CachedFixtureCapability {\n capability: FixtureCapability;\n\n // the wheel names, if available\n wheelName: string;\n\n // the wheel, if available\n wheel: FixtureWheel;\n\n // the wheel slots, if available\n wheelSlots: FixtureWheelSlot[] = [];\n\n // is this a color wheel?\n wheelIsColor = false;\n\n centerValue: number;\n}\n","import { CachedFixtureCapability } from './cached-fixture-capability';\nimport { FixtureChannel } from './fixture-channel';\nimport { FixtureWheel } from './fixture-wheel';\n\nexport class CachedFixtureChannel {\n // the corresponding channel\n channel: FixtureChannel;\n\n // the name of the channel\n name: string;\n\n // all channel capabilities\n capabilities: CachedFixtureCapability[] = [];\n\n // default value\n defaultValue: number;\n\n // maximum value\n maxValue: number;\n\n // a color wheel, if available\n colorWheel: FixtureWheel;\n}\n","export class Color {\n red: number;\n green: number;\n blue: number;\n\n constructor(red?: number, green?: number, blue?: number) {\n this.red = red;\n this.green = green;\n this.blue = blue;\n }\n}\n","export enum Positioning {\n topFront = 'topFront',\n topBack = 'topBack',\n bottomFront = 'bottomFront',\n bottomBack = 'bottomBack',\n manual = 'manual',\n}\n\nexport class Fixture {\n uuid: string;\n profileUuid: string;\n name: string;\n dmxUniverseUuid: string;\n dmxFirstChannel = 5;\n modeShortName: string;\n positioning: Positioning = Positioning.topFront;\n\n // Only relevant when positioning = manual\n // in CM\n positionX = 0;\n positionY = 0;\n positionZ = 0;\n\n // in DEG\n rotationX = 0;\n rotationY = 0;\n rotationZ = 0;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.profileUuid = data.profileUuid;\n this.name = data.name;\n this.dmxUniverseUuid = data.dmxUniverseUuid;\n this.dmxFirstChannel = data.dmxFirstChannel;\n this.modeShortName = data.modeShortName;\n this.positioning = data.positioning;\n this.positionX = data.positionX;\n this.positionY = data.positionY;\n this.positionZ = data.positionZ;\n this.rotationX = data.rotationX;\n this.rotationY = data.rotationY;\n this.rotationZ = data.rotationZ;\n }\n}\n","export class ScenePlaybackRegion {\n sceneUuid: string;\n startMillis: number;\n endMillis: number;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.sceneUuid = data.sceneUuid;\n this.startMillis = data.startMillis;\n this.endMillis = data.endMillis;\n }\n}\n","import { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class Composition {\n public uuid: string;\n public name: string;\n\n // none or audio\n public syncType = 'audio';\n\n public audioFileName: string;\n public audioFileInLibrary = false;\n\n public beatsPerMinute = 120;\n public timeSignatureUpper = 4;\n public timeSignatureLower = 4;\n\n public snapToGrid = true;\n\n public tempoGuessed = false;\n\n // time based or musical\n public gridType = 'musical';\n public gridOffsetMillis = 0;\n\n // 1/1, 1/2, 1/4, 1/8, etc.\n public gridResolution = 1;\n\n // if no sync\n public durationMillis = 0;\n\n // Regions, where the scene will be played\n public scenePlaybackRegions: ScenePlaybackRegion[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.name = data.name;\n this.syncType = data.syncType;\n this.audioFileName = data.audioFileName;\n this.audioFileInLibrary = data.audioFileInLibrary;\n this.beatsPerMinute = data.beatsPerMinute;\n this.timeSignatureUpper = data.timeSignatureUpper;\n this.timeSignatureLower = data.timeSignatureLower;\n this.snapToGrid = data.snapToGrid;\n\n // never guess again (and overwrite), when a composition is loaded\n this.tempoGuessed = true;\n\n this.gridType = data.gridType;\n this.gridOffsetMillis = data.gridOffsetMillis;\n this.gridResolution = data.gridResolution;\n this.durationMillis = data.durationMillis;\n\n if (data.scenePlaybackRegions) {\n for (const scenePlaybackRegion of data.scenePlaybackRegions) {\n this.scenePlaybackRegions.push(new ScenePlaybackRegion(scenePlaybackRegion));\n }\n }\n }\n}\n","export abstract class Effect {\n type: string;\n uuid: string;\n visible = true;\n\n constructor(type: string, data?: any) {\n this.type = type;\n\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.visible = data.visible;\n }\n}\n","export class EffectCurveProfileChannels {\n profileUuid: string;\n channels: string[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.profileUuid = data.profileUuid;\n\n if (data.channels) {\n for (const channel of Object.keys(data.channels)) {\n this.channels.push(channel);\n }\n }\n }\n}\n","import { Effect } from './effect';\nimport { EffectCurveProfileChannels } from './effect-curve-profile-channel';\nimport { FixtureCapability } from './fixture-capability';\n\nexport class EffectCurve extends Effect {\n curveType = 'sine';\n\n capabilities: FixtureCapability[] = [];\n channels: EffectCurveProfileChannels[] = [];\n\n lengthMillis = 2500;\n phaseMillis = 0;\n amplitude = 1;\n position = 0.5;\n phasingMillis = 0;\n\n constructor(data?: any) {\n super('curve', data);\n\n if (!data) {\n return;\n }\n\n if (data.capabilities) {\n for (const capability of data.capabilities) {\n this.capabilities.push(new FixtureCapability(capability));\n }\n }\n\n if (data.channels) {\n for (const channel of data.channels) {\n this.channels.push(new EffectCurveProfileChannels(channel));\n }\n }\n\n this.lengthMillis = data.lengthMillis;\n this.phaseMillis = data.phaseMillis;\n this.amplitude = data.amplitude;\n this.position = data.position;\n this.phasingMillis = data.phasingMillis;\n this.curveType = data.curveType;\n }\n\n public getValueAtMillis(timeMillis: number, fixtureIndex?: number): number {\n // Calculate the offset for phasing\n let phasingIndex = 0;\n\n if (fixtureIndex) {\n phasingIndex = fixtureIndex;\n }\n\n const phase = this.phaseMillis + phasingIndex * this.phasingMillis;\n\n // Calculate the value between 0 and 1 according to the curve\n let value = 0;\n\n switch (this.curveType) {\n case 'sine':\n value = this.position + ((this.amplitude / 2) * Math.sin((2 * Math.PI * (timeMillis - phase)) / this.lengthMillis)) / 2;\n break;\n case 'square':\n if (Math.sign(Math.sin((2 * Math.PI * (timeMillis - phase)) / this.lengthMillis) / 2) === -1) {\n value = this.position + this.amplitude / 2;\n } else {\n value = this.position - this.amplitude / 2;\n }\n break;\n case 'triangle':\n // TODO check wikipedia formula\n break;\n case 'sawtooth':\n // TODO\n break;\n case 'reverse-sawtooth':\n // TODO\n break;\n }\n\n return Math.max(Math.min(value, 1), 0);\n }\n}\n","import { Effect } from './effect';\n\nexport class EffectPanTilt extends Effect {\n phasingMillis = 0;\n\n constructor(data?: any) {\n super('pan-tilt', data);\n }\n\n getValueAtMillis(timeMillis: number, fixtureIndex?: number): number {\n // Calculate the offset for phasing\n let phasingIndex = 0;\n\n if (fixtureIndex) {\n phasingIndex = fixtureIndex;\n }\n\n // let phase = this.phaseMillis + phasingIndex * this.phasingMillis;\n\n // Calculate the value according to the curve\n // TODO\n\n return 0;\n }\n}\n","import { FixtureCapabilityColor, FixtureCapabilityType } from './fixture-capability';\n\nexport class FixtureCapabilityValue {\n type: FixtureCapabilityType;\n profileUuid: string;\n\n // value between 0 and 1\n valuePercentage: number;\n\n color: FixtureCapabilityColor;\n wheel: string;\n slotNumber: number;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n this.type = FixtureCapabilityType[data.type as string];\n this.profileUuid = data.profileUuid;\n\n this.valuePercentage = data.valuePercentage;\n this.color = FixtureCapabilityColor[data.color as string];\n this.wheel = data.wheel;\n this.slotNumber = data.slotNumber;\n }\n}\n","export class FixtureChannelValue {\n channelName: string;\n profileUuid: string;\n value: number;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n this.channelName = data.channelName;\n this.profileUuid = data.profileUuid;\n this.value = data.value;\n }\n}\n","import { Effect } from './effect';\nimport { EffectCurve } from './effect-curve';\nimport { EffectPanTilt } from './effect-pan-tilt';\nimport { FixtureCapabilityValue } from './fixture-capability-value';\nimport { FixtureChannelValue } from './fixture-channel-value';\n\nexport class Preset {\n uuid: string;\n name: string;\n\n // all related fixtures\n fixtureUuids: string[] = [];\n\n // the selected values\n fixtureChannelValues: FixtureChannelValue[] = [];\n fixtureCapabilityValues: FixtureCapabilityValue[] = [];\n\n // all related effects\n effects: Effect[] = [];\n\n // position offset, relative to the scene start\n // (undefined = start/end of the scene itself)\n startMillis: number;\n endMillis: number;\n\n // fading times\n fadeInMillis = 0;\n fadeOutMillis = 0;\n\n // fade in/out outside the start/end times?\n fadeInPre = false;\n fadeOutPost = false;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.name = data.name;\n this.fixtureUuids = data.fixtureUuids;\n if (data.fixtureChannelValues) {\n for (const fixtureChannelValue of data.fixtureChannelValues) {\n this.fixtureChannelValues.push(new FixtureChannelValue(fixtureChannelValue));\n }\n }\n if (data.fixtureCapabilityValues) {\n for (const fixtureCapabilityValue of data.fixtureCapabilityValues) {\n this.fixtureCapabilityValues.push(new FixtureCapabilityValue(fixtureCapabilityValue));\n }\n }\n if (data.effects) {\n for (const effect of data.effects) {\n switch (effect.type) {\n case 'curve':\n this.effects.push(new EffectCurve(effect));\n break;\n case 'pan-tilt':\n this.effects.push(new EffectPanTilt(effect));\n break;\n }\n }\n }\n this.startMillis = data.startMillis;\n this.endMillis = data.endMillis;\n this.fadeInMillis = data.fadeInMillis;\n this.fadeOutMillis = data.fadeOutMillis;\n this.fadeInPre = data.fadeInPre;\n this.fadeOutPost = data.fadeOutPost;\n }\n}\n","import { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class Scene {\n uuid: string;\n name: string;\n\n color = '#fff';\n\n // All contained presets\n presetUuids: string[] = [];\n\n // Fading times\n fadeInMillis = 0;\n fadeOutMillis = 0;\n\n // fade in/out outside the start/end times?\n fadeInPre = false;\n fadeOutPost = false;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.name = data.name;\n this.color = data.color;\n if (data.presetUuids) {\n this.presetUuids = data.presetUuids;\n }\n this.fadeInMillis = data.fadeInMillis;\n this.fadeOutMillis = data.fadeOutMillis;\n this.fadeInPre = data.fadeInPre;\n this.fadeOutPost = data.fadeOutPost;\n }\n}\n","import { Composition } from './composition';\nimport { Fixture } from './fixture';\nimport { FixtureProfile } from './fixture-profile';\nimport { Preset } from './preset';\nimport { Scene } from './scene';\n\nexport class Project {\n public id: number;\n public uuid: string;\n public name: string;\n public shareToken: string;\n\n public stageWidthCm = 600;\n public stageHeightCm = 350;\n public stageDepthCm = 600;\n\n public stageFloorHeightCm = 30;\n public stageCeilingHeightCm = 5;\n public stagePillarWidthCm = 20;\n\n public masterDimmerValue = 1;\n\n public selectedPresetUuid: string;\n public selectedSceneUuids: string[] = [];\n\n // true = show the preset, false = show the selected scene\n public previewPreset = true;\n\n public selectedCompositionUuid: string;\n\n public compositions: Composition[] = [];\n public fixtureProfiles: FixtureProfile[] = [];\n public fixtures: Fixture[] = [];\n public scenes: Scene[] = [];\n public presets: Preset[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.id = data.id;\n this.uuid = data.uuid;\n this.name = data.name;\n this.shareToken = data.shareToken;\n\n this.stageWidthCm = data.stageWidthCm;\n this.stageHeightCm = data.stageHeightCm;\n this.stageDepthCm = data.stageDepthCm;\n\n this.stageFloorHeightCm = data.stageFloorHeightCm;\n this.stageCeilingHeightCm = data.stageCeilingHeightCm;\n this.stagePillarWidthCm = data.stagePillarWidthCm;\n\n this.masterDimmerValue = data.masterDimmerValue;\n\n this.selectedPresetUuid = data.selectedPresetUuid;\n this.selectedSceneUuids = data.selectedSceneUuids;\n this.previewPreset = data.previewPreset;\n this.selectedCompositionUuid = data.selectedCompositionUuid;\n\n if (data.compositions) {\n for (const composition of data.compositions) {\n this.compositions.push(new Composition(composition));\n }\n }\n\n if (data.fixtureProfiles) {\n for (const fixtureProfile of data.fixtureProfiles) {\n this.fixtureProfiles.push(new FixtureProfile(fixtureProfile));\n }\n }\n\n if (data.fixtures) {\n for (const fixture of data.fixtures) {\n this.fixtures.push(new Fixture(fixture));\n }\n }\n\n if (data.scenes) {\n for (const scene of data.scenes) {\n this.scenes.push(new Scene(scene));\n }\n }\n\n if (data.presets) {\n for (const preset of data.presets) {\n this.presets.push(new Preset(preset));\n }\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../models/project';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService {\n // the authentication token\n token: string;\n tokenExpiration: Date;\n username: string;\n\n constructor(private http: HttpClient) {\n this.loadFromLocalStorage();\n }\n\n private loadFromLocalStorage() {\n this.token = localStorage.getItem('token');\n this.tokenExpiration = undefined;\n if (localStorage.getItem('tokenExpiration')) {\n this.tokenExpiration = new Date(Date.parse(localStorage.getItem('tokenExpiration')));\n }\n this.username = localStorage.getItem('username');\n }\n\n // register a new user\n register(email: string, username: string, password: string): Observable<any> {\n return this.http.post('register?email=' + email + '&username=' + username + '&password=' + password, null);\n }\n\n // login a user in the api\n login(email: string, password: string): Observable<any> {\n return this.http.post('login?email=' + email + '&password=' + password, null).pipe(\n map((result: any) => {\n this.token = result.token;\n this.username = result.username;\n\n // the token expires one month from now\n this.tokenExpiration = new Date();\n this.tokenExpiration.setDate(this.tokenExpiration.getDate() + 30);\n\n // store to the local storage\n localStorage.setItem('token', this.token);\n localStorage.setItem('tokenExpiration', JSON.stringify(this.tokenExpiration));\n localStorage.setItem('username', this.username);\n\n this.loadFromLocalStorage();\n })\n );\n }\n\n logout() {\n localStorage.removeItem('token');\n localStorage.removeItem('tokenExpiration');\n localStorage.removeItem('username');\n\n this.loadFromLocalStorage();\n }\n\n isLoggedIn(): boolean {\n if (!this.token) {\n return false;\n }\n\n if (new Date() > this.tokenExpiration) {\n this.logout();\n return false;\n }\n\n return true;\n }\n\n getHeaders(): HttpHeaders {\n if (!this.isLoggedIn()) {\n return null;\n }\n\n let headers = new HttpHeaders();\n headers = headers.append('Authorization', this.token);\n return headers;\n }\n\n setAutoLoadProject(project: Project) {\n localStorage.setItem('projectName', project.name);\n if (project.id) {\n localStorage.setItem('projectId', project.id.toString());\n } else {\n localStorage.removeItem('projectId');\n }\n }\n\n getAutoLoadProjectId(): number {\n if (!localStorage.getItem('projectId')) {\n return null;\n }\n return Number.parseInt(localStorage.getItem('projectId'));\n }\n\n getAutoLoadProjectName(): string {\n return localStorage.getItem('projectName');\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UuidService {\n constructor() {}\n\n getUuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // tslint:disable-next-line:no-bitwise\n const r = (Math.random() * 16) | 0;\n\n // tslint:disable-next-line:no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../models/project';\nimport { UserService } from './user.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectService {\n // the current project\n public project: Project;\n\n constructor(\n private uuidService: UuidService,\n private http: HttpClient,\n private userService: UserService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private translateService: TranslateService,\n private toastrService: ToastrService\n ) {\n this.project = new Project();\n this.project.uuid = this.uuidService.getUuid();\n this.project.name = 'New Project';\n }\n\n private saveApi(project: Project): Observable<object> {\n return this.http.post('project', JSON.stringify(project), { headers: this.userService.getHeaders() }).pipe(\n map((response: any) => {\n if (response) {\n project.id = response.id;\n if (response.shareToken) {\n project.shareToken = response.shareToken;\n }\n const queryParams: Params = {\n id: project.id,\n token: project.shareToken,\n };\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }\n return null;\n })\n );\n }\n\n save(project: Project) {\n // tries to save the project and returns, whether it has been saved or not\n this.saveApi(project).subscribe(\n () => {\n const msg = 'designer.project.save-success';\n const title = 'designer.project.save-success-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.success(result[msg], result[title]);\n });\n\n this.userService.setAutoLoadProject(project);\n },\n (response) => {\n const msg = 'designer.project.save-error';\n const title = 'designer.project.save-error-title';\n const error = response && response.error ? response.error.error : 'unknown';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + ' (' + error + ')', result[title]);\n });\n }\n );\n }\n\n getAllProjects(): Observable<Project[]> {\n return this.http.get('projects', { headers: this.userService.getHeaders() }).pipe(\n map((response: any) => {\n const projects: Project[] = [];\n for (const project of response) {\n const projectObject = new Project(project);\n projects.push(projectObject);\n }\n return projects;\n })\n );\n }\n\n deleteProject(project: Project): Observable<any> {\n return this.http.delete('project?id=' + project.id + '&name=' + project.name, { headers: this.userService.getHeaders() });\n }\n\n getProject(id: number, name: string, shareToken?: string): Observable<Project> {\n return this.http.get('project?id=' + id + '&name=' + name + '&token=' + shareToken, { headers: this.userService.getHeaders() }).pipe(\n map((response: any) => {\n const project = new Project(response);\n project.id = id;\n\n return project;\n })\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CachedFixture } from '../models/cached-fixture';\nimport { CachedFixtureCapability } from '../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../models/cached-fixture-channel';\nimport { Color } from '../models/color';\nimport { Fixture } from '../models/fixture';\nimport { FixtureCapability, FixtureCapabilityColor, FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureChannel } from '../models/fixture-channel';\nimport { FixtureMode } from '../models/fixture-mode';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { FixtureWheel } from '../models/fixture-wheel';\nimport { FixtureWheelSlot, FixtureWheelSlotType } from '../models/fixture-wheel-slot';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FixtureService {\n cachedFixtures: CachedFixture[] = [];\n\n // is the side-tab settings currently selected?\n settingsSelection = false;\n\n selectedSettingsFixtures: Fixture[] = [];\n\n constructor(\n private http: HttpClient,\n private projectService: ProjectService,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private uuidService: UuidService\n ) {}\n\n getFixtureByUuid(uuid: string): Fixture {\n for (const fixture of this.projectService.project.fixtures) {\n if (fixture.uuid === uuid) {\n return fixture;\n }\n }\n }\n\n getCachedFixtureByUuid(uuid: string): CachedFixture {\n for (const fixture of this.cachedFixtures) {\n if (fixture.fixture.uuid === uuid) {\n return fixture;\n }\n }\n }\n\n // Get all profiles to search for (only metadata)\n getSearchProfiles(): Observable<FixtureProfile[]> {\n return this.http.get('fixtures').pipe(\n map((response: object[]) => {\n const searchProfiles: FixtureProfile[] = [];\n\n for (const profile of response) {\n searchProfiles.push(new FixtureProfile(profile));\n }\n\n return searchProfiles;\n })\n );\n }\n\n getProfileByUuid(uuid: string): FixtureProfile {\n for (const fixtureProfile of this.projectService.project.fixtureProfiles) {\n if (fixtureProfile.uuid === uuid) {\n return fixtureProfile;\n }\n }\n }\n\n loadProfileByUuid(uuid: string): Observable<void> {\n const loadedProfile = this.getProfileByUuid(uuid);\n\n if (loadedProfile) {\n // This profile is already loaded\n return of(undefined);\n }\n\n // Load the metadata and the profile\n return forkJoin([this.http.get('fixtures?uuid=' + encodeURI(uuid)), this.http.get('fixture?uuid=' + encodeURI(uuid))]).pipe(\n map((result) => {\n const mergedData = { ...result[0][0], ...result[1] };\n const fixtureProfile = new FixtureProfile(mergedData);\n this.projectService.project.fixtureProfiles.push(fixtureProfile);\n })\n );\n }\n\n getRotationAngleDeg(value: string): number {\n // convert a rotation angle value into degrees\n if (value.endsWith('deg')) {\n return Number.parseInt(value.replace('deg', ''));\n } else if (value.endsWith('%')) {\n const perc = Number.parseInt(value.replace('%', ''));\n return (perc / 100) * 360;\n }\n\n return undefined;\n }\n\n getWheelSlotColors(wheel: FixtureWheel, slotNumber: number): string[] {\n let colors: string[] = [];\n const wheelSlots = this.getWheelSlots(wheel, slotNumber);\n\n for (const slot of wheelSlots) {\n if (slot.colors && slot.colors.length > 0) {\n colors = colors.concat(slot.colors);\n }\n }\n\n return colors;\n }\n\n getMixedWheelSlotColor(wheel: FixtureWheel, slotNumber: number): Color {\n const colors = this.getWheelSlotColors(wheel, slotNumber);\n const colorsRgb: Color[] = [];\n\n if (colors.length === 0) {\n return undefined;\n }\n\n for (const color of colors) {\n colorsRgb.push(this.hexToRgb(color));\n }\n\n return this.mixColors(colorsRgb);\n }\n\n private componentToHex(c: number): any {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }\n\n rgbToHex(r: number, g: number, b: number): string {\n return '#' + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\n }\n\n hexToRgb(hex: string): Color {\n // expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, (m, r, g, b) => {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new Color(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) : null;\n }\n\n mixColors(colors: Color[]): Color {\n // mix an array of rgb-colors containing r, g, b values to a new color\n let r = 0;\n let g = 0;\n let b = 0;\n\n for (const color of colors) {\n r += color.red;\n g += color.green;\n b += color.blue;\n }\n\n r /= colors.length;\n g /= colors.length;\n b /= colors.length;\n\n return new Color(r, g, b);\n }\n\n wheelHasSlotType(wheel: FixtureWheel, slotType: FixtureWheelSlotType): boolean {\n for (const slot of wheel.slots) {\n if (slot.type === slotType) {\n return true;\n }\n }\n\n return false;\n }\n\n getWheelByName(profile: FixtureProfile, wheelName: string): FixtureWheel {\n for (const property in profile.wheels) {\n if (property === wheelName) {\n return profile.wheels[property];\n }\n }\n\n // wheel not found\n return undefined;\n }\n\n private getWheelSlots(wheel: FixtureWheel, slotNumber: number): FixtureWheelSlot[] {\n // return one slot or two slots, if they are mixed (e.g. slor number 2.5 returns the slots 2 and 3)\n const slots: FixtureWheelSlot[] = [];\n\n if (!wheel) {\n return slots;\n }\n\n if (slotNumber - Math.floor(slotNumber) > 0) {\n // two slots are set\n const number = Math.floor(slotNumber);\n slots.push(wheel.slots[number - 1]);\n if (number >= 0 && number < wheel.slots.length) {\n slots.push(wheel.slots[number]);\n }\n } else {\n // only one slot is set\n slots.push(wheel.slots[slotNumber - 1]);\n }\n\n return slots;\n }\n\n getModeByFixture(profile: FixtureProfile, fixture: Fixture): FixtureMode {\n for (const mode of profile.modes) {\n if (mode.shortName) {\n if (mode.shortName === fixture.modeShortName) {\n return mode;\n }\n } else {\n if (mode.name === fixture.modeShortName) {\n return mode;\n }\n }\n }\n }\n\n private getFixtureCapability(capability: FixtureCapability, channelName: string, profile: FixtureProfile): CachedFixtureCapability {\n const cachedFixtureCapability = new CachedFixtureCapability();\n cachedFixtureCapability.capability = capability;\n if (capability.slotNumber) {\n // there is a wheel connected to this capability\n if (typeof capability.wheel === 'string') {\n cachedFixtureCapability.wheelName = capability.wheel as string;\n } else if (Array.isArray(capability.wheel)) {\n cachedFixtureCapability.wheelName = capability.wheel[0];\n } else {\n cachedFixtureCapability.wheelName = channelName;\n }\n cachedFixtureCapability.wheel = this.getWheelByName(profile, cachedFixtureCapability.wheelName);\n cachedFixtureCapability.wheelSlots = this.getWheelSlots(cachedFixtureCapability.wheel, capability.slotNumber);\n cachedFixtureCapability.wheelIsColor = this.wheelHasSlotType(cachedFixtureCapability.wheel, FixtureWheelSlotType.Color);\n }\n if (cachedFixtureCapability.capability.dmxRange && cachedFixtureCapability.capability.dmxRange.length === 2) {\n cachedFixtureCapability.centerValue = Math.floor(\n (cachedFixtureCapability.capability.dmxRange[0] + cachedFixtureCapability.capability.dmxRange[1]) / 2\n );\n }\n return cachedFixtureCapability;\n }\n\n private getCapabilitiesByChannel(\n fixtureChannel: FixtureChannel,\n channelName: string,\n profile: FixtureProfile\n ): CachedFixtureCapability[] {\n const capabilites: CachedFixtureCapability[] = [];\n\n if (fixtureChannel.capability) {\n capabilites.push(this.getFixtureCapability(fixtureChannel.capability, channelName, profile));\n } else if (fixtureChannel.capabilities) {\n for (const capability of fixtureChannel.capabilities) {\n capabilites.push(this.getFixtureCapability(capability, channelName, profile));\n }\n }\n\n return capabilites;\n }\n\n private getMaxValueByChannel(fixtureChannel: FixtureChannel): number {\n return Math.pow(256, 1 + fixtureChannel.fineChannelAliases.length) - 1;\n }\n\n private getDefaultValueByChannel(fixtureChannel: FixtureChannel): number {\n if (!fixtureChannel.defaultValue) {\n return undefined;\n }\n\n if (isNaN(fixtureChannel.defaultValue as any) && (fixtureChannel.defaultValue as string).endsWith('%')) {\n // percentage value\n const percentage = Number.parseInt((fixtureChannel.defaultValue as string).replace('%', ''));\n const maxValue = this.getMaxValueByChannel(fixtureChannel);\n return (maxValue / 100) * percentage;\n } else {\n // DMX value\n return Number.parseInt(fixtureChannel.defaultValue as any);\n }\n }\n\n private getColorWheelByChannel(channel: CachedFixtureChannel, profile: FixtureProfile): FixtureWheel {\n for (const channelCapability of channel.capabilities) {\n if (channelCapability.wheelIsColor) {\n return channelCapability.wheel;\n }\n }\n\n return undefined;\n }\n\n // private channelInList(channels: CachedFixtureChannel[], name: string): boolean {\n // for (let channel of channels) {\n // if (channel.channelName === name) {\n // return true;\n // }\n // }\n\n // return false;\n // }\n\n getChannelByName(fixture: CachedFixture, channelName: string): CachedFixtureChannel {\n for (const channel of fixture.channels) {\n if (\n (channel.name && channel.name === channelName) ||\n (channel.channel && channel.channel.fineChannelAliases.indexOf(channelName) > -1)\n ) {\n return channel;\n }\n }\n\n return undefined;\n }\n\n getCachedChannels(profile: FixtureProfile, mode: FixtureMode): CachedFixtureChannel[] {\n const channels: CachedFixtureChannel[] = [];\n\n if (!mode) {\n return channels;\n }\n\n for (const availableChannelName of Object.keys(profile.availableChannels)) {\n const availableChannel: FixtureChannel = profile.availableChannels[availableChannelName];\n\n for (const channel of mode.channels) {\n // check for string channel. It can get creepy for matrix modes\n if (typeof channel === 'string') {\n const modeChannel: string = channel as string;\n\n // don't check the fine channels. only add the coarse channel.\n if (modeChannel === availableChannelName) {\n const cachedFixtureChannel = new CachedFixtureChannel();\n cachedFixtureChannel.channel = availableChannel;\n cachedFixtureChannel.name = availableChannelName;\n cachedFixtureChannel.capabilities = this.getCapabilitiesByChannel(cachedFixtureChannel.channel, availableChannelName, profile);\n const defaultValue = this.getDefaultValueByChannel(cachedFixtureChannel.channel);\n if (defaultValue) {\n cachedFixtureChannel.defaultValue = defaultValue;\n }\n cachedFixtureChannel.maxValue = this.getMaxValueByChannel(cachedFixtureChannel.channel);\n cachedFixtureChannel.colorWheel = this.getColorWheelByChannel(cachedFixtureChannel, profile);\n channels.push(cachedFixtureChannel);\n }\n } else {\n // null may be passed as a placeholder for an undefined channel\n channels.push(new CachedFixtureChannel());\n }\n }\n }\n\n return channels;\n }\n\n updateCachedFixtures() {\n // calculate some frequently used values as a cache to save cpu time\n // afterwards\n this.cachedFixtures = [];\n\n for (const fixture of this.projectService.project.fixtures) {\n const cachedFixture = new CachedFixture();\n\n cachedFixture.fixture = fixture;\n cachedFixture.profile = this.getProfileByUuid(fixture.profileUuid);\n cachedFixture.mode = this.getModeByFixture(cachedFixture.profile, fixture);\n cachedFixture.channels = this.getCachedChannels(cachedFixture.profile, cachedFixture.mode);\n\n this.cachedFixtures.push(cachedFixture);\n }\n }\n\n capabilitiesMatch(\n type1: FixtureCapabilityType,\n type2: FixtureCapabilityType,\n color1: FixtureCapabilityColor,\n color2: FixtureCapabilityColor,\n wheel1: string,\n wheel2: string,\n profileUuid1: string,\n profileUuid2: string\n ): boolean {\n // checks, whether two provided capapabilities match\n return (\n type1 === type2 &&\n (!color1 || color1 === color2) &&\n (!wheel1 || wheel1 === wheel2) &&\n (!profileUuid1 || profileUuid1 === profileUuid2)\n );\n }\n\n settingsFixtureIsSelected(fixture: Fixture): boolean {\n for (const selectedFixture of this.selectedSettingsFixtures) {\n if (selectedFixture === fixture) {\n return true;\n }\n }\n\n return false;\n }\n\n switchSettingsFixtureSelection(fixture: Fixture) {\n if (this.settingsFixtureIsSelected(fixture)) {\n this.selectedSettingsFixtures.splice(this.selectedSettingsFixtures.indexOf(fixture), 1);\n } else {\n this.selectedSettingsFixtures.push(fixture);\n }\n }\n\n getFixtureIconClass(profile: FixtureProfile): string {\n if (!profile) {\n return '';\n }\n if (profile.categories.length === 0) {\n return '';\n }\n if (!profile.categories[0]) {\n return '';\n }\n return profile.categories[0].replace(' ', '-').toLocaleLowerCase();\n }\n\n updateProfiles() {\n return this.http.post('update-profiles', null);\n }\n\n getNextFreeDmxChannel(fixturePool: Fixture[], neededChannels: number): number {\n // get the next free space for this fixture\n let freeChannels = 0;\n\n for (let i = 0; i < 512; i++) {\n let occupiedChannels = 0;\n\n for (const fixture of fixturePool) {\n const mode = this.getModeByFixture(this.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (i >= fixture.dmxFirstChannel && i < fixture.dmxFirstChannel + mode.channels.length) {\n // this channel is already occupied by a fixture -> move forward to the end of the fixture\n if (mode.channels.length > occupiedChannels) {\n occupiedChannels = mode.channels.length - (i - fixture.dmxFirstChannel);\n }\n }\n }\n\n if (occupiedChannels > 0) {\n i += occupiedChannels - 1;\n freeChannels = 0;\n } else {\n freeChannels++;\n }\n\n if (freeChannels === neededChannels) {\n return i - freeChannels + 1;\n }\n }\n\n // no free space left for the needed channels\n return -1;\n }\n\n addFixture(profile: FixtureProfile, fixturePool: Fixture[]): Fixture {\n const fixture = new Fixture();\n\n fixture.uuid = this.uuidService.getUuid();\n fixture.profileUuid = profile.uuid;\n fixture.name = profile.name;\n\n if (profile.modes && profile.modes.length > 0) {\n fixture.modeShortName = profile.modes[0].shortName;\n }\n\n // add the same mode as an existing fixture, if available\n let existingModeShortName: string;\n for (const existingFixture of fixturePool) {\n const existingProfile = this.getProfileByUuid(existingFixture.profileUuid);\n\n if (existingProfile === profile) {\n existingModeShortName = existingFixture.modeShortName;\n break;\n }\n }\n\n if (existingModeShortName) {\n fixture.modeShortName = existingModeShortName;\n } else {\n fixture.modeShortName = profile.modes[0].shortName || profile.modes[0].name;\n }\n\n const mode = this.getModeByFixture(this.getProfileByUuid(fixture.profileUuid), fixture);\n const firstChannel = this.getNextFreeDmxChannel(fixturePool, mode.channels.length);\n\n if (firstChannel >= 0) {\n fixture.dmxFirstChannel = firstChannel;\n fixturePool.push(fixture);\n return fixture;\n } else {\n // no free space anymore\n const msg = 'designer.fixture-pool.no-free-space';\n const title = 'designer.fixture-pool.no-free-space-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title]);\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PreviewMeshService {\n private loader = new GLTFLoader();\n private cachedMeshes = new Map<string, THREE.Mesh>();\n\n // the observable, if the requested mesh is already being loaded currently\n private cachedObservables = new Map<string, Observable<THREE.Mesh>>();\n\n constructor() {}\n\n private loadScene(name: string): Observable<THREE.Scene> {\n return new Observable((observer) => {\n this.loader.load(\n './assets/designer/models/' + name + '.gltf',\n\n // Called when the resource is loaded\n (gltf: any) => {\n const model = gltf.scene.children[0];\n\n model.position.set(0, 0, 0);\n\n observer.next(gltf.scene);\n observer.complete();\n },\n\n // Called while loading is progressing\n (xhr: any) => {},\n\n // Called when loading has errors\n (error: any) => {\n observer.error(error);\n }\n );\n });\n }\n\n private loadMesh(name: string): Observable<THREE.Mesh> {\n const observable = this.loadScene(name).pipe(\n map((scene: any) => {\n const model = scene.children[0];\n\n model.position.set(0, 0, 0);\n\n this.cachedMeshes.set(name, model);\n this.cachedObservables.delete(name);\n\n return model.clone();\n })\n );\n\n this.cachedObservables.set(name, observable);\n\n return observable;\n }\n\n getMesh(name: string): Observable<THREE.Mesh> {\n if (this.cachedMeshes.get(name)) {\n return of(this.cachedMeshes.get(name).clone());\n }\n\n return this.cachedObservables.get(name) || this.loadMesh(name);\n }\n}\n","import { Preset } from './preset';\nimport { Scene } from './scene';\nimport { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class PresetRegionScene {\n preset: Preset;\n region: ScenePlaybackRegion;\n scene: Scene;\n\n constructor(preset: Preset, region: ScenePlaybackRegion, scene: Scene) {\n this.preset = preset;\n this.region = region;\n this.scene = scene;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnimationService {\n timeMillis = 0;\n\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n public restUrl: string;\n public enableMediaLibrary = false;\n public loginAvailable = false;\n public shareAvailable = false;\n public menuHeightPx = 0;\n public languageSwitch = false;\n public newProjectTemplate = false;\n public livePreview = false;\n public localProfiles = false;\n public intro = false;\n public uniqueProjectNames = false;\n\n public menuHeightChanged: Subject<void> = new Subject<void>();\n\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { Effect } from './../models/effect';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EffectService {\n // The currently selected effect\n selectedEffect: Effect;\n\n constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { CachedFixtureCapability } from '../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../models/cached-fixture-channel';\nimport { Fixture } from '../models/fixture';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureCapabilityValue } from '../models/fixture-capability-value';\nimport { FixtureChannelValue } from '../models/fixture-channel-value';\nimport { FixtureMode } from '../models/fixture-mode';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { Preset } from '../models/preset';\nimport { AnimationService } from './animation.service';\nimport { ConfigService } from './config.service';\nimport { EffectService } from './effect.service';\nimport { FixtureService } from './fixture.service';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PresetService {\n selectedPreset: Preset;\n\n // fires, when the current preview element has changed (scene/preset)\n previewSelectionChanged: Subject<void> = new Subject<void>();\n\n // fires, when the fixture selection has changed\n fixtureSelectionChanged: Subject<void> = new Subject<void>();\n\n // fires, when the fixture selection has changed for settings\n fixtureSelectionSettingsChanged: Subject<void> = new Subject<void>();\n\n // fires, when the selected color has changed. This is required,\n // because detectChanges is not enough to trigger different components.\n fixtureColorChanged: Subject<void> = new Subject<void>();\n\n livePreviewTimer: any;\n liveChangePending = false;\n\n constructor(\n private effectService: EffectService,\n private uuidService: UuidService,\n private projectService: ProjectService,\n private fixtureService: FixtureService,\n private configService: ConfigService,\n private http: HttpClient,\n private animationService: AnimationService\n ) {}\n\n getPresetByUuid(uuid: string): Preset {\n for (const preset of this.projectService.project.presets) {\n if (preset.uuid === uuid) {\n return preset;\n }\n }\n }\n\n fixtureIsSelected(fixture: Fixture, preset?: Preset): boolean {\n // is the passed fixture selected in the passed/currently selected preset?\n if (!preset) {\n if (this.selectedPreset) {\n preset = this.selectedPreset;\n } else {\n return false;\n }\n }\n\n for (const selectedFixtureUuid of preset.fixtureUuids) {\n if (selectedFixtureUuid === fixture.uuid) {\n return true;\n }\n }\n\n return false;\n }\n\n switchFixtureSelection(fixture: Fixture) {\n if (!this.selectedPreset) {\n return;\n }\n\n // select all fixtures at the specified start channel or unselect them,\n // if already selected\n if (this.fixtureIsSelected(fixture)) {\n for (let i = this.selectedPreset.fixtureUuids.length - 1; i >= 0; i--) {\n const projectFixture = this.fixtureService.getFixtureByUuid(this.selectedPreset.fixtureUuids[i]);\n if (projectFixture.dmxFirstChannel === fixture.dmxFirstChannel) {\n this.selectedPreset.fixtureUuids.splice(i, 1);\n }\n }\n } else {\n for (const projectFixture of this.projectService.project.fixtures) {\n if (projectFixture.dmxFirstChannel === fixture.dmxFirstChannel) {\n this.selectedPreset.fixtureUuids.push(projectFixture.uuid);\n }\n }\n }\n }\n\n selectAllFixtures() {\n if (!this.selectedPreset) {\n return;\n }\n\n for (const fixture of this.projectService.project.fixtures) {\n if (!this.fixtureIsSelected(fixture)) {\n this.selectedPreset.fixtureUuids.push(fixture.uuid);\n }\n }\n }\n\n selectNoFixtures() {\n if (!this.selectedPreset) {\n return;\n }\n\n this.selectedPreset.fixtureUuids = [];\n }\n\n public removeDeletedFixtures() {\n // after changing the configuration in the fixture pool, we might need to\n // delete some fixtures\n for (const preset of this.projectService.project.presets) {\n for (let i = preset.fixtureUuids.length - 1; i >= 0; i--) {\n const presetFixture = this.fixtureService.getFixtureByUuid(preset.fixtureUuids[i]);\n if (!presetFixture) {\n preset.fixtureUuids.splice(i, 1);\n }\n }\n }\n }\n\n public updateFixtureSelection() {\n // after changing the configuration in the fixture pool, we might need to\n // select some more fixtures on the same channel as already selected ones\n for (const preset of this.projectService.project.presets) {\n for (let i = preset.fixtureUuids.length - 1; i >= 0; i--) {\n const presetFixture = this.fixtureService.getFixtureByUuid(preset.fixtureUuids[i]);\n for (const projectFixture of this.projectService.project.fixtures) {\n if (projectFixture.dmxFirstChannel === presetFixture.dmxFirstChannel && !this.fixtureIsSelected(projectFixture, preset)) {\n preset.fixtureUuids.push(projectFixture.uuid);\n }\n }\n }\n }\n }\n\n deleteCapabilityValue(\n preset: Preset,\n capabilityType: FixtureCapabilityType,\n color?: FixtureCapabilityColor,\n wheel?: string,\n profileUuid?: string\n ) {\n for (let i = 0; i < preset.fixtureCapabilityValues.length; i++) {\n if (\n this.fixtureService.capabilitiesMatch(\n preset.fixtureCapabilityValues[i].type,\n capabilityType,\n preset.fixtureCapabilityValues[i].color,\n color,\n preset.fixtureCapabilityValues[i].wheel,\n wheel,\n preset.fixtureCapabilityValues[i].profileUuid,\n profileUuid\n )\n ) {\n preset.fixtureCapabilityValues.splice(i, 1);\n return;\n }\n }\n }\n\n setCapabilityValue(\n preset: Preset,\n capabilityType: FixtureCapabilityType,\n valuePercentage: number,\n slotNumber?: number,\n color?: FixtureCapabilityColor,\n wheel?: string,\n profileUuid?: string\n ) {\n // Delete existant properties with this type and set the new value\n this.deleteCapabilityValue(preset, capabilityType, color, wheel, profileUuid);\n\n const fixtureCapabilityValue = new FixtureCapabilityValue();\n fixtureCapabilityValue.type = capabilityType;\n fixtureCapabilityValue.color = color;\n fixtureCapabilityValue.wheel = wheel;\n fixtureCapabilityValue.valuePercentage = valuePercentage;\n fixtureCapabilityValue.slotNumber = slotNumber;\n fixtureCapabilityValue.profileUuid = profileUuid;\n\n preset.fixtureCapabilityValues.push(fixtureCapabilityValue);\n }\n\n getCapabilityValue(\n preset: Preset,\n capabilityType: FixtureCapabilityType,\n color?: FixtureCapabilityColor,\n wheel?: string,\n profileUuid?: string\n ): FixtureCapabilityValue {\n for (const capabilityValue of preset.fixtureCapabilityValues) {\n if (\n this.fixtureService.capabilitiesMatch(\n capabilityValue.type,\n capabilityType,\n capabilityValue.color,\n color,\n capabilityValue.wheel,\n wheel,\n capabilityValue.profileUuid,\n profileUuid\n )\n ) {\n return capabilityValue;\n }\n }\n return undefined;\n }\n\n deleteChannelValue(channelName: string, profileUuid: string) {\n for (let i = 0; i < this.selectedPreset.fixtureChannelValues.length; i++) {\n if (\n this.selectedPreset.fixtureChannelValues[i].channelName === channelName &&\n this.selectedPreset.fixtureChannelValues[i].profileUuid === profileUuid\n ) {\n this.selectedPreset.fixtureChannelValues.splice(i, 1);\n return;\n }\n }\n }\n\n setChannelValue(channelName: string, profileUuid: string, value: number) {\n // Delete existant properties with this type and set the new value\n this.deleteChannelValue(channelName, profileUuid);\n\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = channelName;\n fixtureChannelValue.profileUuid = profileUuid;\n fixtureChannelValue.value = value;\n\n this.selectedPreset.fixtureChannelValues.push(fixtureChannelValue);\n }\n\n getChannelValue(channelName: string, profileUuid: string): number {\n for (const channelValue of this.selectedPreset.fixtureChannelValues) {\n if (channelValue.channelName === channelName && channelValue.profileUuid === profileUuid) {\n return channelValue.value;\n }\n }\n }\n\n getApproximatedColorWheelCapability(preset: Preset, cachedChannel: CachedFixtureChannel): CachedFixtureCapability {\n // return an approximated wheel slot channel capability, if a color or a slot on a different\n // wheel has been selected\n let colorRed: number;\n let colorGreen: number;\n let colorBlue: number;\n let lowestDiff = Number.MAX_VALUE;\n let lowestDiffCapability: CachedFixtureCapability;\n let capabilityValue: FixtureCapabilityValue;\n\n capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Red);\n if (capabilityValue) {\n colorRed = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Green);\n if (capabilityValue) {\n colorGreen = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Blue);\n if (capabilityValue) {\n colorBlue = 255 * capabilityValue.valuePercentage;\n }\n\n if (!colorRed && !colorGreen && !colorBlue) {\n // no color found -> search the first color wheel\n // TODO\n }\n\n if (colorRed !== undefined && colorGreen !== undefined && colorBlue !== undefined) {\n for (const capability of cachedChannel.capabilities) {\n if (capability.capability.slotNumber) {\n const mixedColor = this.fixtureService.getMixedWheelSlotColor(capability.wheel, capability.capability.slotNumber);\n if (mixedColor) {\n const diff =\n Math.abs(mixedColor.red - colorRed) + Math.abs(mixedColor.green - colorGreen) + Math.abs(mixedColor.blue - colorBlue);\n\n if (diff < lowestDiff) {\n lowestDiff = diff;\n lowestDiffCapability = capability;\n }\n }\n }\n }\n }\n\n return lowestDiffCapability;\n }\n\n private hasCapabilityType(type: FixtureCapabilityType): boolean {\n // there is at least one channel with at least one intensity capability\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n for (const channel of fixture.channels) {\n if (channel.channel) {\n for (const capability of channel.capabilities) {\n if (capability.capability.type === type) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n\n hasCapabilityDimmer(): boolean {\n return this.hasCapabilityType(FixtureCapabilityType.Intensity);\n }\n\n hasCapabilityColor(): boolean {\n // TODO optionally color temperature and color white (see stairville/mh-100)\n\n // one of the profiles has a color intensity\n if (this.hasCapabilityType(FixtureCapabilityType.ColorIntensity)) {\n return true;\n }\n\n return false;\n }\n\n hasCapabilityColorOrColorWheel(): boolean {\n // TODO optionally color temperature and color white (see stairville/mh-100)\n\n // one of the profiles has a color intensity\n if (this.hasCapabilityColor()) {\n return true;\n }\n\n // a color wheel is involved\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n for (const channel of fixture.channels) {\n if (channel.colorWheel) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n hasCapabilityPanTilt(): boolean {\n let hasPan = false;\n let hasTilt = false;\n\n // there is at least one pan and one tilt channel\n if (this.hasCapabilityType(FixtureCapabilityType.Pan)) {\n hasPan = true;\n }\n\n if (this.hasCapabilityType(FixtureCapabilityType.Tilt)) {\n hasTilt = true;\n }\n\n if (hasPan && hasTilt) {\n return true;\n }\n\n return false;\n }\n\n selectPreset(index: number) {\n this.effectService.selectedEffect = undefined;\n this.selectedPreset = this.projectService.project.presets[index];\n this.projectService.project.selectedPresetUuid = this.projectService.project.presets[index].uuid;\n this.autoOpenFirstEffect();\n this.previewSelectionChanged.next();\n this.previewLive();\n }\n\n autoOpenFirstEffect() {\n // open the first effect, if the preset only has one\n if (this.selectedPreset && this.selectedPreset.effects.length === 1) {\n this.effectService.selectedEffect = this.selectedPreset.effects[0];\n }\n }\n\n addPreset(name?: string): void {\n const preset: Preset = new Preset();\n preset.uuid = this.uuidService.getUuid();\n preset.name = name || 'New Preset';\n\n // Insert the new preset before the highest currently selected preset\n let highestSelectedPresetIndex = 0;\n\n for (let i = 0; i < this.projectService.project.presets.length; i++) {\n if (this.selectedPreset === this.projectService.project.presets[i]) {\n highestSelectedPresetIndex = i;\n break;\n }\n }\n\n this.projectService.project.presets.splice(highestSelectedPresetIndex, 0, preset);\n this.selectPreset(highestSelectedPresetIndex);\n }\n\n getSelectedProfiles() {\n const profiles: FixtureProfile[] = [];\n\n if (!this.selectedPreset) {\n return profiles;\n }\n\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getFixtureByUuid(fixtureUuid);\n const profile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n\n if (profiles.indexOf(profile) < 0) {\n profiles.push(profile);\n }\n }\n\n return profiles;\n }\n\n getSelectedProfileChannels(selectedProfiles: FixtureProfile[]) {\n const availableChannels: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n\n const calculatedProfileModes = new Map<FixtureProfile, FixtureMode[]>();\n for (const profile of selectedProfiles) {\n const modes: FixtureMode[] = [];\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n if (modes.indexOf(fixture.mode) < 0) {\n modes.push(fixture.mode);\n }\n }\n calculatedProfileModes.set(profile, modes);\n }\n\n // calculate all required channels from the modes\n calculatedProfileModes.forEach((modes: FixtureMode[], profile: FixtureProfile) => {\n const profileChannels: CachedFixtureChannel[] = [];\n for (const mode of modes) {\n const channels = this.fixtureService.getCachedChannels(profile, mode);\n for (const channel of channels) {\n // only add the channel, if no channel with the same name has already been added\n // (e.g. a fine channel)\n if (channel.channel && !profileChannels.find((c) => c.name === channel.name)) {\n profileChannels.push(channel);\n }\n }\n }\n availableChannels.set(profile, profileChannels);\n });\n\n return availableChannels;\n }\n\n previewLive(compositionName: string = '', positionMillis?: number) {\n if (!this.configService.livePreview) {\n return;\n }\n\n // collect all changes and delay them to not flood the backend\n // (except play events. they need to be delivered always)\n if (this.livePreviewTimer && !compositionName) {\n this.liveChangePending = true;\n return;\n }\n\n let position = positionMillis;\n\n if (position === undefined) {\n position = Math.round(this.animationService.timeMillis);\n }\n\n this.http\n .post('preview?positionMillis=' + position + '&compositionName=' + compositionName, JSON.stringify(this.projectService.project))\n .subscribe();\n\n this.liveChangePending = false;\n\n if (!compositionName) {\n this.livePreviewTimer = setTimeout(() => {\n this.livePreviewTimer = undefined;\n if (this.liveChangePending) {\n this.http\n .post('preview?positionMillis=' + position + '&compositionName=' + compositionName, JSON.stringify(this.projectService.project))\n .subscribe();\n }\n }, 50);\n }\n }\n\n stopPreviewPlay() {\n if (!this.configService.livePreview) {\n return;\n }\n\n this.http.post('stop-preview-play', null).subscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Preset } from '../models/preset';\nimport { Scene } from '../models/scene';\nimport { EffectService } from './effect.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SceneService {\n selectedScenes: Scene[] = [];\n sceneColors: string[] = ['#945fda', '#61da5f', '#5fc3da', '#dad65f', '#da5f5f', '#246db7'];\n\n multipleSelection = false;\n\n sceneDeleted: Subject<void> = new Subject<void>();\n sceneSelected: Subject<void> = new Subject<void>();\n\n constructor(\n private uuidService: UuidService,\n private effectService: EffectService,\n private presetService: PresetService,\n private projectService: ProjectService\n ) {}\n\n sceneIsSelected(scene: Scene): boolean {\n for (const selectedScene of this.selectedScenes) {\n if (selectedScene.uuid === scene.uuid) {\n return true;\n }\n }\n\n return false;\n }\n\n presetIsSelected(preset: Preset): boolean {\n if (!this.selectedScenes || this.selectedScenes.length !== 1) {\n return false;\n }\n\n for (const uuid of this.selectedScenes[0].presetUuids) {\n if (preset.uuid === uuid) {\n return true;\n }\n }\n\n return false;\n }\n\n switchSceneSelection(scene: Scene) {\n // Select a scene if not yet selected or unselect it otherwise\n if (this.sceneIsSelected(scene)) {\n for (let i = 0; i < this.selectedScenes.length; i++) {\n if (this.selectedScenes[i].uuid === scene.uuid) {\n this.selectedScenes.splice(i, 1);\n return;\n }\n }\n } else {\n this.selectedScenes.push(scene);\n }\n\n this.sceneSelected.next();\n }\n\n selectPresetFromSelectedScene() {\n // select the first preset of the scene, if no preset of the current scene is already\n // selected to make sure, the user does not edit a preset which is not even\n // active in the current scene (and sees no change).\n\n let firstPresetUuid;\n\n // check, whether a preset of the current scene is already selected and do nothing\n // in this case\n for (const scene of this.selectedScenes) {\n for (const presetUuid of scene.presetUuids) {\n firstPresetUuid = presetUuid;\n\n if (presetUuid === this.presetService.selectedPreset.uuid) {\n // a preset of a currently selected scene is already selected -> do nothing\n return;\n }\n }\n }\n\n if (!firstPresetUuid) {\n return;\n }\n\n for (let i = 0; i < this.projectService.project.presets.length; i++) {\n if (this.projectService.project.presets[i].uuid === firstPresetUuid) {\n this.presetService.selectPreset(i);\n break;\n }\n }\n }\n\n selectScene(index: number) {\n this.effectService.selectedEffect = undefined;\n\n if (index >= this.projectService.project.scenes.length) {\n this.selectedScenes = [];\n } else {\n if (this.multipleSelection) {\n this.switchSceneSelection(this.projectService.project.scenes[index]);\n } else {\n this.selectedScenes = [];\n this.selectedScenes.push(this.projectService.project.scenes[index]);\n }\n }\n\n this.selectPresetFromSelectedScene();\n\n // preview the complete scene\n this.projectService.project.previewPreset = false;\n\n this.projectService.project.selectedSceneUuids = [];\n for (const scene of this.selectedScenes) {\n this.projectService.project.selectedSceneUuids.push(scene.uuid);\n }\n this.presetService.previewSelectionChanged.next();\n this.presetService.previewLive();\n\n this.sceneSelected.next();\n }\n\n addScene(name?: string): void {\n const scene: Scene = new Scene();\n scene.uuid = this.uuidService.getUuid();\n scene.name = name || 'New Scene';\n\n if (this.projectService.project.scenes.length < this.sceneColors.length) {\n scene.color = this.sceneColors[this.projectService.project.scenes.length];\n } else {\n scene.color = '#' + Math.random().toString(16).slice(2, 8).toUpperCase();\n }\n\n // Insert the new scene before the highest currently selected scene\n let highestSelectedSceneIndex = 0;\n\n for (let i = 0; i < this.projectService.project.scenes.length; i++) {\n if (this.sceneIsSelected(this.projectService.project.scenes[i])) {\n highestSelectedSceneIndex = i;\n break;\n }\n }\n\n this.projectService.project.scenes.splice(highestSelectedSceneIndex, 0, scene);\n this.selectScene(highestSelectedSceneIndex);\n }\n\n removeScene(scene: Scene): void {\n // remove all playback regions\n for (const composition of this.projectService.project.compositions) {\n for (let i = composition.scenePlaybackRegions.length - 1; i >= 0; i--) {\n const compositionPlaybackRegion = composition.scenePlaybackRegions[i];\n if (compositionPlaybackRegion.sceneUuid === scene.uuid) {\n composition.scenePlaybackRegions.splice(i, 1);\n }\n }\n }\n\n // remove the scene\n this.projectService.project.scenes.splice(this.projectService.project.scenes.indexOf(scene), 1);\n if (this.projectService.project.scenes.length > 0) {\n this.selectScene(0);\n }\n\n this.sceneDeleted.next();\n }\n\n getSceneByUuid(uuid: string): Scene {\n for (const scene of this.projectService.project.scenes) {\n if (scene.uuid === uuid) {\n return scene;\n }\n }\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport WaveSurfer from 'wavesurfer.js';\nimport CursorPlugin from 'wavesurfer.js/dist/plugin/wavesurfer.cursor.min.js';\nimport RegionsPlugin from 'wavesurfer.js/dist/plugin/wavesurfer.regions.min.js';\nimport TimeLinePlugin from 'wavesurfer.js/dist/plugin/wavesurfer.timeline.min.js';\nimport { guess } from 'web-audio-beat-detector';\nimport { Composition } from '../models/composition';\nimport { Preset } from '../models/preset';\nimport { PresetRegionScene } from '../models/preset-region-scene';\nimport { Scene } from '../models/scene';\nimport { ScenePlaybackRegion } from '../models/scene-playback-region';\nimport { ConfigService } from './config.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimelineService {\n public waveSurfer: WaveSurfer;\n public playState = 'paused';\n\n public zoom = 0;\n private timeUpdateSubscription: Subscription;\n public currentTime: string;\n private timelineClicking = false;\n public selectedPlaybackRegion: ScenePlaybackRegion;\n private intensity = 0.2;\n private intensitySelectedScene = 0.4;\n private intensityHighlighted = 0.8;\n public duration: string;\n public waveSurferReady: Subject<void> = new Subject();\n public detectChanges: Subject<void> = new Subject();\n\n // the current composition\n public selectedComposition: Composition;\n public selectedCompositionIndex: number;\n\n // can we add new compositions based on an external pool and\n // should new compositions not available in this pool be added there?\n public externalCompositionsAvailable = false;\n\n public loadingAudioFile = false;\n\n constructor(\n private sceneService: SceneService,\n private presetService: PresetService,\n private projectService: ProjectService,\n private http: HttpClient,\n private configService: ConfigService\n ) {\n this.presetService.previewSelectionChanged.subscribe(() => {\n this.selectedPlaybackRegion = undefined;\n this.updateRegionSelection();\n });\n this.sceneService.sceneDeleted.subscribe(() => {\n this.redrawAllRegions();\n });\n this.sceneService.sceneSelected.subscribe(() => {\n this.redrawAllRegions();\n });\n }\n\n private redrawAllRegions() {\n // remove all regions from wavesurver\n if (this.waveSurfer) {\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n region.remove();\n }\n }\n\n // draw all regions\n this.drawAllRegions();\n }\n\n private pad(num: number, size: number): string {\n if (!num) {\n num = 0;\n }\n\n let padded: string = num.toString();\n while (padded.length < size) {\n padded = '0' + padded;\n }\n\n return padded;\n }\n\n private msToTime(millis: number, includeMillis: boolean = true): string {\n const ms: number = Math.round(millis % 1000);\n const seconds: number = Math.floor(((millis % 360000) % 60000) / 1000);\n const minutes: number = Math.floor((millis % 3600000) / 60000);\n\n if (includeMillis) {\n return this.pad(minutes, 2) + ':' + this.pad(seconds, 2) + '.' + this.pad(ms, 3);\n } else {\n return this.pad(minutes, 2) + ':' + this.pad(seconds, 2);\n }\n }\n\n private updateCurrentTime() {\n if (!this.waveSurfer) {\n return;\n }\n\n // display the current time\n this.currentTime = this.msToTime(this.waveSurfer.getCurrentTime() * 1000);\n\n if (!this.waveSurfer.timeline.drawer) {\n return;\n }\n\n // draw the current cursor on the timeline\n // TODO redrawing the timeline each update is way to expensive.\n // maybe as a better solution use an element, like the cursor inside Wavesurfer to\n // display the progress?\n let x = 0;\n const duration: number = this.waveSurfer.backend.getDuration();\n const width: number =\n this.waveSurfer.params.fillParent && !this.waveSurfer.params.scrollParent\n ? this.waveSurfer.timeline.drawer.getWidth()\n : this.waveSurfer.timeline.drawer.wrapper.scrollWidth * this.waveSurfer.params.pixelRatio;\n\n x = (width / duration) * this.waveSurfer.getCurrentTime() - 2;\n\n // update the timeline canvas\n this.waveSurfer.timeline.render();\n\n // draw the cursor on the timeline\n this.waveSurfer.timeline.canvases.forEach((canvas, i) => {\n const leftOffset = i * this.waveSurfer.timeline.maxCanvasWidth;\n\n const ctx = canvas.getContext('2d');\n\n ctx.fillStyle = '#fd7e14';\n ctx.beginPath();\n ctx.moveTo(x - 12 - leftOffset, 20);\n ctx.lineTo(x + 12 - leftOffset, 20);\n ctx.lineTo(x - leftOffset, 45);\n ctx.fill();\n });\n }\n\n private startTimeUpdater() {\n this.stopTimeUpdater();\n\n const timeUpdater = timer(0, 40);\n this.timeUpdateSubscription = timeUpdater.subscribe(() => {\n this.updateCurrentTime();\n });\n }\n\n private stopTimeUpdater() {\n if (this.timeUpdateSubscription) {\n this.timeUpdateSubscription.unsubscribe();\n }\n }\n\n formatTimeCallback(seconds: number, pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n return Math.round(seconds / this.selectedComposition.timeSignatureUpper / (60 / this.selectedComposition.beatsPerMinute));\n } else {\n // calculate minutes and seconds from seconds count\n const minutes = parseInt((seconds / 60) as any, 10);\n seconds = parseInt((seconds % 60) as any, 10);\n\n // fill up seconds with zeroes\n const secondsStr = seconds < 10 ? '0' + seconds : seconds;\n return `${minutes}:${secondsStr}`;\n }\n }\n\n timeInterval(pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n const interval = 60 / this.selectedComposition.beatsPerMinute / this.selectedComposition.gridResolution;\n\n if (pxPerSec < 40) {\n return interval * 4;\n } else if (pxPerSec < 80) {\n return interval * 2;\n }\n\n return interval;\n } else {\n if (pxPerSec >= 25) {\n return 1;\n } else if (pxPerSec * 5 >= 25) {\n return 5;\n } else if (pxPerSec * 15 >= 25) {\n return 15;\n }\n\n return Math.ceil(0.5 / pxPerSec) * 60;\n }\n }\n\n primaryLabelInterval(pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n const interval = this.selectedComposition.timeSignatureUpper * this.selectedComposition.gridResolution;\n\n return interval;\n } else {\n if (pxPerSec >= 25) {\n return 10;\n } else if (pxPerSec * 5 >= 25) {\n return 6;\n } else if (pxPerSec * 15 >= 25) {\n return 4;\n }\n\n return 4;\n }\n }\n\n secondaryLabelInterval(pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n return 0;\n } else {\n if (pxPerSec >= 25) {\n return 5;\n } else if (pxPerSec * 5 >= 25) {\n return 2;\n } else if (pxPerSec * 15 >= 25) {\n return 2;\n }\n return 2;\n }\n }\n\n private seeekWithTimeline(e: any) {\n // taken from wavesurfer -> drawer -> handleEvent\n const clientX = e.targetTouches ? e.targetTouches[0].clientX : e.clientX;\n const bbox = this.waveSurfer.timeline.wrapper.getBoundingClientRect();\n\n const nominalWidth = this.waveSurfer.timeline.drawer.width;\n const parentWidth = this.waveSurfer.timeline.drawer.getWidth();\n\n let progress: number;\n\n if (!this.waveSurfer.timeline.drawer.params.fillParent && nominalWidth < parentWidth) {\n progress =\n (this.waveSurfer.timeline.drawer.params.rtl ? bbox.right - clientX : clientX - bbox.left) *\n (this.waveSurfer.timeline.drawer.params.pixelRatio / nominalWidth) || 0;\n\n if (progress > 1) {\n progress = 1;\n }\n } else {\n progress =\n ((this.waveSurfer.timeline.drawer.params.rtl ? bbox.right - clientX : clientX - bbox.left) +\n this.waveSurfer.timeline.wrapper.scrollLeft) /\n this.waveSurfer.timeline.wrapper.scrollWidth || 0;\n }\n\n progress = Math.max(progress, 0);\n\n setTimeout(() => {\n this.waveSurfer.seekTo(progress);\n this.detectChanges.next();\n this.presetService.previewLive(this.selectedComposition.name, Math.round(this.waveSurfer.getCurrentTime() * 1000));\n }, 0);\n }\n\n applyZoom(zoom: any) {\n if (zoom < 0 || zoom > 200) {\n return;\n }\n\n this.zoom = zoom;\n if (this.waveSurfer) {\n setTimeout(() => {\n this.waveSurfer.zoom(this.zoom);\n this.updateCurrentTime();\n }, 0);\n }\n }\n\n private isWaveSurferReady(): boolean {\n if (!this.waveSurfer) {\n return false;\n }\n\n if (!this.waveSurfer.isReady) {\n return false;\n }\n\n return true;\n }\n\n addRegion(waveSurferRegion?: any) {\n if (!this.isWaveSurferReady()) {\n return;\n }\n\n if (!this.sceneService.selectedScenes || this.sceneService.selectedScenes.length !== 1) {\n return;\n }\n\n if (!this.selectedComposition) {\n return;\n }\n\n const scenePlaybackRegion: ScenePlaybackRegion = new ScenePlaybackRegion();\n scenePlaybackRegion.sceneUuid = this.sceneService.selectedScenes[0].uuid;\n\n if (waveSurferRegion) {\n scenePlaybackRegion.startMillis = waveSurferRegion.start * 1000;\n scenePlaybackRegion.endMillis = waveSurferRegion.end * 1000;\n } else {\n scenePlaybackRegion.startMillis = (this.waveSurfer.getDuration() * 1000) / 3;\n scenePlaybackRegion.endMillis = ((this.waveSurfer.getDuration() * 1000) / 3) * 2;\n }\n\n this.selectedComposition.scenePlaybackRegions.push(scenePlaybackRegion);\n\n this.selectedPlaybackRegion = scenePlaybackRegion;\n\n if (waveSurferRegion) {\n waveSurferRegion.color =\n 'rgba(' +\n this.hexToRgb(this.sceneService.selectedScenes[0].color).r +\n ', ' +\n this.hexToRgb(this.sceneService.selectedScenes[0].color).g +\n ', ' +\n this.hexToRgb(this.sceneService.selectedScenes[0].color).b +\n ', ' +\n this.intensityHighlighted +\n ')';\n waveSurferRegion.attributes.selectable = true;\n this.connectRegion(waveSurferRegion, this.sceneService.selectedScenes[0], scenePlaybackRegion);\n this.updateRegionSelection();\n } else {\n this.drawRegion(scenePlaybackRegion, this.sceneService.selectedScenes[0]);\n }\n\n this.presetService.previewLive();\n }\n\n private getSnapToGridInterval(): number {\n if (this.selectedComposition.snapToGrid) {\n return 60 / this.selectedComposition.beatsPerMinute / this.selectedComposition.gridResolution;\n }\n\n return undefined;\n }\n\n private getSnapToGridOffset(): number {\n return this.selectedComposition.gridOffsetMillis / 1000;\n }\n\n deleteSelectedComposition() {\n this.projectService.project.compositions.splice(this.selectedCompositionIndex, 1);\n this.selectedComposition = undefined;\n this.selectedCompositionIndex = undefined;\n this.destroyWaveSurfer();\n if (this.projectService.project.compositions.length > 0) {\n this.selectCompositionIndex(0);\n }\n }\n\n destroyWaveSurfer() {\n this.duration = undefined;\n this.loadingAudioFile = false;\n\n if (this.waveSurfer) {\n this.waveSurfer.destroy();\n this.waveSurfer = undefined;\n }\n }\n\n createWaveSurfer() {\n this.destroyWaveSurfer();\n\n if (!this.selectedComposition.audioFileName) {\n return;\n }\n\n this.loadingAudioFile = true;\n\n setTimeout(() => {\n this.waveSurfer = WaveSurfer.create({\n container: '#waveform',\n waveColor: 'white',\n progressColor: 'white',\n // barWidth: 2,\n height: 1,\n interact: false,\n // Use for timelines without sound. Wave will be displayed\n // wrong, but should work for a dummy audio without any waves.\n // duration: 400,\n plugins: [\n CursorPlugin.create({\n // showTime: true,\n opacity: 1,\n color: '#fd7e14',\n hideOnBlur: false /* don't show/hide the cursor on the wave (only on the timeline) */,\n }),\n RegionsPlugin.create({\n dragSelection: {\n slop: 5,\n },\n color: '#fff',\n snapToGridInterval: this.getSnapToGridInterval(),\n snapToGridOffset: this.getSnapToGridOffset(),\n }),\n TimeLinePlugin.create({\n container: '#waveform-timeline',\n primaryFontColor: '#fff',\n secondaryFontColor: '#fff',\n offset: this.getSnapToGridOffset(),\n formatTimeCallback: this.formatTimeCallback.bind(this),\n timeInterval: this.timeInterval.bind(this),\n primaryLabelInterval: this.primaryLabelInterval.bind(this),\n secondaryLabelInterval: this.secondaryLabelInterval.bind(this),\n }),\n ],\n });\n\n let audioFileName: string;\n\n if (this.configService.enableMediaLibrary) {\n // the file name is also used for the real file name\n audioFileName = 'file/get?name=' + this.selectedComposition.audioFileName + '&type=AUDIO';\n } else {\n // the composition uuid and extension is used as the file name\n audioFileName =\n 'composition-files/?file=' +\n this.selectedComposition.uuid +\n '.' +\n this.selectedComposition.audioFileName.substr(this.selectedComposition.audioFileName.lastIndexOf('.') + 1);\n }\n\n this.waveSurfer.load(this.configService.restUrl + audioFileName);\n\n this.waveSurfer.on('ready', () => {\n setTimeout(() => {\n // try guessing the bpm and offset from the file, if necessary\n if (this.selectedComposition.tempoGuessed) {\n // we already guessed the BPM of this file --> don't do it again\n this.loadingAudioFile = false;\n } else {\n // we have not yet guessed the BPM --> do it now\n this.selectedComposition.tempoGuessed = true;\n guess(this.waveSurfer.backend.buffer)\n .then(({ bpm, offset }) => {\n // the bpm and offset could be guessed\n this.selectedComposition.beatsPerMinute = bpm;\n this.selectedComposition.gridOffsetMillis = offset * 1000;\n this.loadingAudioFile = false;\n })\n .catch((err) => {\n // something went wrong\n console.error('Could not detect the BPM from the audio file', err);\n this.loadingAudioFile = false;\n });\n }\n\n this.duration = this.msToTime(this.waveSurfer.getDuration() * 1000);\n this.drawAllRegions();\n\n // scroll wavesurfer in sync with the timeline\n this.waveSurfer.timeline.wrapper.addEventListener('scroll', () => {\n this.waveSurfer.drawer.wrapper.scrollLeft = this.waveSurfer.timeline.wrapper.scrollLeft;\n\n // Set the scroll position of the timeline to the same position as the wavesurfer,\n // because the timeline is larger than wavesurfer and might get out of sync.\n // This way, if wavesurfer cannot scroll any further, we reset the position\n // of the timeline as well.\n this.waveSurfer.timeline.wrapper.scrollLeft = this.waveSurfer.drawer.wrapper.scrollLeft;\n });\n\n // display the cursor also on the timeline\n this.waveSurfer.timeline.wrapper.addEventListener('mouseenter', () => {\n this.waveSurfer.cursor.showCursor();\n });\n this.waveSurfer.timeline.wrapper.addEventListener('mouseleave', () => {\n this.waveSurfer.cursor.hideCursor();\n });\n this.waveSurfer.timeline.wrapper.addEventListener('mousemove', (e: any) => {\n const bbox = this.waveSurfer.container.getBoundingClientRect();\n const x = e.clientX - bbox.left;\n this.waveSurfer.cursor.updateCursorPosition(x, 0);\n });\n\n // hide the cursor on the wave initially. in combination with the param hideOnBlur = false,\n // it will never be displayed on the wave now. we handle it on the timeline only.\n this.waveSurfer.cursor.hideCursor();\n\n // seek on timeline-click\n this.waveSurfer.timeline.wrapper.addEventListener('mousedown', (e: any) => {\n this.timelineClicking = true;\n this.seeekWithTimeline(e);\n });\n\n this.waveSurfer.timeline.wrapper.addEventListener('mousemove', (e: any) => {\n if (this.timelineClicking) {\n this.seeekWithTimeline(e);\n }\n });\n\n this.waveSurfer.timeline.wrapper.addEventListener('mouseup', (e: any) => {\n this.timelineClicking = false;\n });\n\n this.updateCurrentTime();\n\n this.detectChanges.next();\n this.waveSurferReady.next();\n }, 0);\n });\n\n this.waveSurfer.on('error', (error: any) => {\n // could not load the composition --> delete it\n // (this may occur, when the composition has been deleted but the project is not saved afterwards)\n this.deleteSelectedComposition();\n });\n\n this.waveSurfer.on('seek', () => {\n this.updateCurrentTime();\n });\n\n this.waveSurfer.on('play', () => {\n this.startTimeUpdater();\n });\n\n this.waveSurfer.on('pause', () => {\n this.stopTimeUpdater();\n });\n\n this.waveSurfer.on('region-created', (region) => {\n // region created by selection or programmatically\n if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n if (!region.data.handled) {\n this.addRegion(region);\n }\n } else {\n if (!region.data.handled) {\n region.remove();\n }\n }\n });\n\n this.waveSurfer.on('region-updated', (region: any) => {\n this.detectChanges.next();\n this.presetService.previewLive();\n });\n }, 0);\n }\n\n private hexToRgb(hex: string) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n }\n\n private updateRegionSelection() {\n if (!this.waveSurfer) {\n return;\n }\n\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n\n // if no scene is set, the region is not valid (e.g. has been created, while\n // no scene has been selected and remove did not work properly)\n if (region.scene) {\n let intensity = this.intensity;\n\n region.drag = false;\n region.resize = false;\n region.attributes.selectable = false;\n\n if (this.sceneService.sceneIsSelected(region.scene)) {\n intensity = this.intensitySelectedScene;\n region.drag = true;\n region.resize = true;\n region.attributes.selectable = true;\n }\n\n region.attributes.selected = false;\n\n if (this.selectedPlaybackRegion && this.selectedPlaybackRegion === region.scenePlaybackRegion) {\n intensity = this.intensityHighlighted;\n region.attributes.selected = true;\n }\n\n region.color =\n 'rgba(' +\n this.hexToRgb(region.scene.color).r +\n ', ' +\n this.hexToRgb(region.scene.color).g +\n ', ' +\n this.hexToRgb(region.scene.color).b +\n ', ' +\n intensity +\n ')';\n region.updateRender();\n }\n }\n }\n\n updateSelectedRegion() {\n if (!this.waveSurfer) {\n return;\n }\n\n if (!this.selectedPlaybackRegion) {\n return;\n }\n\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n\n if (this.selectedPlaybackRegion === region.scenePlaybackRegion) {\n region.start = this.selectedPlaybackRegion.startMillis / 1000;\n region.end = this.selectedPlaybackRegion.endMillis / 1000;\n region.updateRender();\n break;\n }\n }\n }\n\n private setSelectedRegion(scenePlaybackRegion?: ScenePlaybackRegion) {\n if (this.selectedPlaybackRegion && this.selectedPlaybackRegion === scenePlaybackRegion) {\n // No update required\n return;\n }\n\n if (scenePlaybackRegion) {\n this.selectedPlaybackRegion = scenePlaybackRegion;\n }\n\n this.updateRegionSelection();\n }\n\n private getRegionSnapToGridValue(value: number): number {\n // the regions should snap to a grid\n const offset = this.getSnapToGridOffset() || 0;\n const interval = this.getSnapToGridInterval() || 0;\n return Math.round((value - offset) / interval) * interval + offset;\n }\n\n private connectRegion(waveSurferRegion: any, scene: Scene, scenePlaybackRegion: ScenePlaybackRegion, preset?: Preset) {\n waveSurferRegion.scenePlaybackRegion = scenePlaybackRegion;\n waveSurferRegion.scene = scene;\n waveSurferRegion.preset = preset;\n\n waveSurferRegion.on('click', (event) => {\n if (this.sceneService.sceneIsSelected(scene)) {\n this.setSelectedRegion(scenePlaybackRegion);\n }\n });\n\n waveSurferRegion.on('update', () => {\n this.setSelectedRegion(scenePlaybackRegion);\n if (this.selectedComposition.snapToGrid) {\n // update the regions boundaries. they may not snap to grid, if it has been\n // disabled during creation of the region but activated afterwards.\n waveSurferRegion.start = this.getRegionSnapToGridValue(waveSurferRegion.start);\n waveSurferRegion.end = this.getRegionSnapToGridValue(waveSurferRegion.end);\n }\n scenePlaybackRegion.startMillis = waveSurferRegion.start * 1000;\n scenePlaybackRegion.endMillis = waveSurferRegion.end * 1000;\n });\n }\n\n private drawRegion(scenePlaybackRegion: ScenePlaybackRegion, scene: Scene) {\n // draw the regions of the currently selected scene\n if (!this.isWaveSurferReady()) {\n return;\n }\n\n // add the playback region\n const waveSurferRegion = this.waveSurfer.addRegion({\n start: scenePlaybackRegion.startMillis / 1000,\n end: scenePlaybackRegion.endMillis / 1000,\n color: '#fff',\n data: { handled: true },\n });\n this.connectRegion(waveSurferRegion, scene, scenePlaybackRegion);\n\n // TODO show the all presets\n // for (let presetUuid of scene.presetUuids) {\n // const preset = this.presetService.getPresetByUuid(presetUuid);\n\n // let waveSurferRegion = this.timelineService.waveSurfer.addRegion({\n // start: (scenePlaybackRegion.startMillis + (preset.startMillis ? preset.startMillis : 0)) / 1000,\n // end: (scenePlaybackRegion.startMillis\n // + (preset.endMillis ? preset.endMillis : scenePlaybackRegion.endMillis - scenePlaybackRegion.startMillis)) / 1000,\n // color: '#fff',\n // data: { handled: true },\n // // TODO\n // attributes: {\n // preset: true,\n // name: 'Preset 1'\n // }\n // });\n // this.connectRegion(waveSurferRegion, scene, scenePlaybackRegion, preset);\n // }\n\n this.updateRegionSelection();\n }\n\n removeRegion() {\n if (!this.selectedPlaybackRegion) {\n return;\n }\n\n if (this.sceneService.selectedScenes.length !== 1) {\n return;\n }\n\n for (let i = 0; i < this.selectedComposition.scenePlaybackRegions.length; i++) {\n if (this.selectedComposition.scenePlaybackRegions[i] === this.selectedPlaybackRegion) {\n // remove the region from wavesurfer\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n\n if (region.scenePlaybackRegion === this.selectedPlaybackRegion) {\n region.remove();\n }\n }\n\n this.selectedPlaybackRegion = undefined;\n this.selectedComposition.scenePlaybackRegions.splice(i, 1);\n\n return;\n }\n }\n\n this.presetService.previewLive();\n }\n\n getPresetsInTime(timeMillis: number): PresetRegionScene[] {\n // Return all presets which should be active during the specified time\n const activePresets: PresetRegionScene[] = [];\n\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n const scene = this.projectService.project.scenes[sceneIndex];\n\n for (const region of this.selectedComposition.scenePlaybackRegions) {\n if (region.sceneUuid === scene.uuid) {\n for (let presetIndex = this.projectService.project.presets.length - 1; presetIndex >= 0; presetIndex--) {\n for (const presetUuid of scene.presetUuids) {\n if (presetUuid === this.projectService.project.presets[presetIndex].uuid) {\n const preset = this.presetService.getPresetByUuid(presetUuid);\n\n if (preset) {\n let presetStartMillis = preset.startMillis === undefined ? region.startMillis : region.startMillis + preset.startMillis;\n let presetEndMillis = preset.endMillis === undefined ? region.endMillis : region.startMillis + preset.endMillis;\n\n // extend the running time, if fading is done outside the boundaries\n presetStartMillis -= preset.fadeInPre ? preset.fadeInMillis : 0;\n presetEndMillis += preset.fadeOutPost ? preset.fadeOutMillis : 0;\n\n if (presetStartMillis <= timeMillis && presetEndMillis >= timeMillis) {\n activePresets.push(new PresetRegionScene(preset, region, scene));\n }\n }\n }\n }\n }\n }\n }\n }\n\n return activePresets;\n }\n\n drawAllRegions() {\n if (!this.selectedComposition) {\n return;\n }\n\n // draw the regions in the same order as their corresponding scenes, but draw\n // the selected ones last, to make sure they're always clickable.\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n const scene = this.projectService.project.scenes[sceneIndex];\n if (!this.sceneService.sceneIsSelected(scene)) {\n for (const scenePlaybackRegion of this.selectedComposition.scenePlaybackRegions) {\n if (scenePlaybackRegion.sceneUuid === scene.uuid) {\n this.drawRegion(scenePlaybackRegion, scene);\n }\n }\n }\n }\n\n // draw all selected scenes afterwards\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n const scene = this.projectService.project.scenes[sceneIndex];\n\n if (this.sceneService.sceneIsSelected(scene)) {\n for (const scenePlaybackRegion of this.selectedComposition.scenePlaybackRegions) {\n if (scenePlaybackRegion.sceneUuid === scene.uuid) {\n this.drawRegion(scenePlaybackRegion, scene);\n }\n }\n }\n }\n }\n\n updateGrid() {\n if (this.waveSurferReady) {\n this.waveSurfer.timeline.params.offset = this.getSnapToGridOffset();\n\n this.waveSurfer.regions.params.snapToGridInterval = this.getSnapToGridInterval();\n this.waveSurfer.regions.params.snapToGridOffset = this.getSnapToGridOffset();\n }\n this.updateCurrentTime();\n }\n\n getExternalCompositionNames(): Observable<string[]> {\n // get available compositions from an external pool (e.g. Rocket Show)\n return this.http.get('composition/list').pipe(\n map((response: object[]) => {\n const compositionNames: string[] = [];\n\n for (const responseComposition of response) {\n compositionNames.push((responseComposition as any).name);\n }\n\n return compositionNames;\n })\n );\n }\n\n selectCompositionIndex(index: number) {\n this.selectedComposition = this.projectService.project.compositions[index];\n this.selectedCompositionIndex = index;\n this.projectService.project.selectedCompositionUuid = this.selectedComposition.uuid;\n this.createWaveSurfer();\n\n // required to trigger timeline.component.resize()\n this.waveSurferReady.next();\n\n this.applyZoom(0);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Universe } from '../models/universe';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UniverseService {\n universes: Universe[] = [];\n\n constructor() {}\n\n getUniverseByUuid(uuid: string): Universe {\n for (const universe of this.universes) {\n if (universe.uuid === uuid) {\n return universe;\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as THREE from 'three';\nimport { CachedFixture } from '../models/cached-fixture';\nimport { EffectCurve } from '../models/effect-curve';\nimport { FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureChannelValue } from '../models/fixture-channel-value';\nimport { Preset } from '../models/preset';\nimport { PresetRegionScene } from '../models/preset-region-scene';\nimport { Universe } from '../models/universe';\nimport { FixtureService } from './fixture.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\nimport { TimelineService } from './timeline.service';\nimport { UniverseService } from './universe.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PreviewService {\n public doUpdateFixtureSetup: Subject<void> = new Subject();\n\n public scene: THREE.Scene;\n\n private stageMeshes: THREE.Mesh[] = [];\n private stageMaterial = new THREE.MeshStandardMaterial({ color: 0x0d0d0d });\n\n constructor(\n private presetService: PresetService,\n private fixtureService: FixtureService,\n private sceneService: SceneService,\n private timelineService: TimelineService,\n private universeService: UniverseService,\n private projectService: ProjectService\n ) {}\n\n private getAlreadyCalculatedFixture(fixtures: CachedFixture[], fixtureIndex: number): CachedFixture {\n // Has this fixture already been calculated (same universe and dmx start address as a fixture before)\n // --> return it\n for (let i = 0; i < fixtureIndex; i++) {\n const calculatedFixture = fixtures[i];\n\n if (\n calculatedFixture.fixture.dmxUniverseUuid === fixtures[fixtureIndex].fixture.dmxUniverseUuid &&\n calculatedFixture.fixture.dmxFirstChannel === fixtures[fixtureIndex].fixture.dmxFirstChannel\n ) {\n return calculatedFixture;\n }\n }\n\n return undefined;\n }\n\n public getPresets(timeMillis: number): PresetRegionScene[] {\n // Get relevant presets in correct order to process with their corresponding scene, if available\n let presets: PresetRegionScene[] = [];\n\n if (this.timelineService.playState === 'playing') {\n // Only use active presets in current regions\n presets = this.timelineService.getPresetsInTime(timeMillis);\n } else {\n if (this.projectService.project.previewPreset) {\n // Only preview the selected preset\n if (this.presetService.selectedPreset) {\n presets.push(new PresetRegionScene(this.presetService.selectedPreset, undefined, undefined));\n }\n } else {\n // Preview the selected scenes\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n for (const scene of this.sceneService.selectedScenes) {\n if (scene.uuid === this.projectService.project.scenes[sceneIndex].uuid) {\n for (let presetIndex = this.projectService.project.presets.length - 1; presetIndex >= 0; presetIndex--) {\n for (const presetUuid of scene.presetUuids) {\n // Loop over the presets in the preset service to retain the preset order\n if (presetUuid === this.projectService.project.presets[presetIndex].uuid) {\n presets.push(new PresetRegionScene(this.projectService.project.presets[presetIndex], undefined, scene));\n break;\n }\n }\n }\n }\n }\n }\n }\n }\n\n return presets;\n }\n\n private mixChannelValue(\n existingChannelValues: FixtureChannelValue[],\n channelValue: FixtureChannelValue,\n intensityPercentage: number,\n defaultValue: number = 0\n ) {\n let newValue: number = channelValue.value;\n let existingValue: number = defaultValue;\n\n if (intensityPercentage < 1) {\n // We need to mix a possibly existing value (or the default value 0) with the new value (fading)\n\n // Get the existant value for this property\n for (const existingChannelValue of existingChannelValues) {\n if (\n existingChannelValue.channelName === channelValue.channelName &&\n existingChannelValue.profileUuid === channelValue.profileUuid\n ) {\n existingValue = existingChannelValue.value;\n break;\n }\n }\n\n // Mix the existing value with the new value\n newValue = existingValue * (1 - intensityPercentage) + newValue * intensityPercentage;\n }\n\n // Remove the existant value, if available\n for (let i = 0; i < existingChannelValues.length; i++) {\n if (\n existingChannelValues[i].channelName === channelValue.channelName &&\n existingChannelValues[i].profileUuid === channelValue.profileUuid\n ) {\n existingChannelValues.splice(i, 1);\n break;\n }\n }\n\n // Add the new value\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = channelValue.channelName;\n fixtureChannelValue.profileUuid = channelValue.profileUuid;\n fixtureChannelValue.value = newValue;\n existingChannelValues.push(fixtureChannelValue);\n }\n\n // Get the fixture index inside the passed preset (used for chasing)\n private getFixtureIndex(preset: Preset, fixtureUuid: string): number {\n let index = 0;\n const countedDmxChannels: number[] = [];\n\n // Loop over the global fixtures to retain the order\n for (const fixture of this.projectService.project.fixtures) {\n for (const presetFixtureUuid of preset.fixtureUuids) {\n if (presetFixtureUuid === fixture.uuid) {\n if (fixture.uuid === fixtureUuid) {\n return index;\n }\n\n // don't count fixtures on the same channel as already counted ones\n if (!countedDmxChannels.includes(fixture.dmxFirstChannel)) {\n countedDmxChannels.push(fixture.dmxFirstChannel);\n index++;\n }\n break;\n }\n }\n }\n\n // Not found in the preset\n return undefined;\n }\n\n private getPresetIntensity(preset: PresetRegionScene, timeMillis: number): number {\n // When fading is in progress (on preset or scene-level), the current preset does not\n // fully cover underlying values.\n // -> 0 = no covering at all, 1 = fully cover (no fading)\n let intensityPercentageScene = 1;\n let intensityPercentagePreset = 1;\n let intensityPercentage = 1;\n\n if (preset.region && preset.scene) {\n // Fade out is stronger than fade in (if they overlap)\n\n // Take away intensity for scene fading\n const sceneStartMillis = preset.scene.fadeInPre ? preset.region.startMillis - preset.scene.fadeInMillis : preset.region.startMillis;\n const sceneEndMillis = preset.scene.fadeOutPost ? preset.region.endMillis + preset.scene.fadeOutMillis : preset.region.endMillis;\n\n if (timeMillis > sceneEndMillis - preset.scene.fadeOutMillis && timeMillis < sceneEndMillis) {\n // Scene fades out\n intensityPercentageScene = (sceneEndMillis - timeMillis) / preset.scene.fadeOutMillis;\n } else if (timeMillis < sceneStartMillis + preset.scene.fadeInMillis && timeMillis > sceneStartMillis) {\n // Scene fades in\n intensityPercentageScene = (timeMillis - sceneStartMillis) / preset.scene.fadeInMillis;\n }\n }\n\n if (preset.region && preset.preset) {\n // Take away intensity for preset fading\n let presetStartMillis =\n preset.preset.startMillis === undefined ? preset.region.startMillis : preset.region.startMillis + preset.preset.startMillis;\n\n let presetEndMillis =\n preset.preset.endMillis === undefined ? preset.region.endMillis : preset.region.startMillis + preset.preset.endMillis;\n\n // extend the running time, if fading is done outside the boundaries\n presetStartMillis -= preset.preset.fadeInPre ? preset.preset.fadeInMillis : 0;\n presetEndMillis += preset.preset.fadeOutPost ? preset.preset.fadeOutMillis : 0;\n\n if (timeMillis > presetEndMillis - preset.preset.fadeOutMillis && timeMillis < presetEndMillis) {\n // Preset fades out\n intensityPercentagePreset = (presetEndMillis - timeMillis) / preset.preset.fadeOutMillis;\n } else if (timeMillis < presetStartMillis + preset.preset.fadeInMillis && timeMillis > presetStartMillis) {\n // Preset fades in\n intensityPercentagePreset = (timeMillis - presetStartMillis) / preset.preset.fadeInMillis;\n }\n\n intensityPercentage = intensityPercentageScene * intensityPercentagePreset;\n }\n\n return intensityPercentage;\n }\n\n private mixCapabilityValues(\n preset: PresetRegionScene,\n cachedFixture: CachedFixture,\n values: FixtureChannelValue[],\n intensityPercentage: number\n ) {\n let hasColor = false;\n\n // mix the preset capability values\n for (const presetCapabilityValue of preset.preset.fixtureCapabilityValues) {\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.channel) {\n for (const channelCapability of cachedChannel.capabilities) {\n if (\n this.fixtureService.capabilitiesMatch(\n presetCapabilityValue.type,\n channelCapability.capability.type,\n presetCapabilityValue.color,\n channelCapability.capability.color,\n presetCapabilityValue.wheel,\n channelCapability.wheelName,\n presetCapabilityValue.profileUuid,\n cachedFixture.profile.uuid\n )\n ) {\n // the capabilities match -> apply the value, if possible\n if (\n (presetCapabilityValue.type === FixtureCapabilityType.Intensity ||\n presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) &&\n presetCapabilityValue.valuePercentage >= 0\n ) {\n // intensity and colorIntensity (dimmer and color)\n const valuePercentage = presetCapabilityValue.valuePercentage;\n const defaultValue = 0;\n\n // brightness property\n if (cachedChannel.capabilities.length === 1) {\n // the only capability in this channel\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * valuePercentage;\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n hasColor = true;\n }\n } else {\n // more than one capability in the channel\n if (channelCapability.capability.brightness === 'off' && valuePercentage === 0) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = channelCapability.centerValue;\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n hasColor = true;\n }\n } else if (\n (channelCapability.capability.brightnessStart === 'dark' || channelCapability.capability.brightnessStart === 'off') &&\n channelCapability.capability.brightnessEnd === 'bright'\n ) {\n const value =\n (channelCapability.capability.dmxRange[1] - channelCapability.capability.dmxRange[0]) * valuePercentage +\n channelCapability.capability.dmxRange[0];\n\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = value;\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n hasColor = true;\n }\n }\n }\n } else if (\n (presetCapabilityValue.type === FixtureCapabilityType.Pan || presetCapabilityValue.type === FixtureCapabilityType.Tilt) &&\n presetCapabilityValue.valuePercentage >= 0\n ) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * presetCapabilityValue.valuePercentage;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n } else if (\n presetCapabilityValue.type === FixtureCapabilityType.WheelSlot &&\n channelCapability.capability.slotNumber === presetCapabilityValue.slotNumber\n ) {\n // wheel slot (color, gobo, etc.)\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = channelCapability.centerValue;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n\n // check, whether we just set a color wheel value\n if (channelCapability.wheelIsColor) {\n hasColor = true;\n }\n }\n }\n }\n }\n\n // approximate the color from a color or a different color wheel, if necessary\n if (!hasColor && cachedChannel.colorWheel) {\n const capability = this.presetService.getApproximatedColorWheelCapability(preset.preset, cachedChannel);\n\n if (capability) {\n // we found an approximated color in the available wheel channel\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = capability.centerValue;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n }\n }\n }\n }\n }\n\n private mixChannelValues(\n preset: PresetRegionScene,\n cachedFixture: CachedFixture,\n values: FixtureChannelValue[],\n intensityPercentage: number\n ) {\n // mix the preset channel values\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.channel) {\n for (const channelValue of preset.preset.fixtureChannelValues) {\n if (cachedFixture.profile.uuid === channelValue.profileUuid && cachedChannel.name === channelValue.channelName) {\n this.mixChannelValue(values, channelValue, intensityPercentage);\n }\n }\n }\n }\n }\n\n private mixEffects(\n timeMillis: number,\n fixtureIndex: number,\n preset: PresetRegionScene,\n cachedFixture: CachedFixture,\n values: FixtureChannelValue[],\n intensityPercentage: number\n ) {\n for (const effect of preset.preset.effects) {\n if (effect.visible) {\n // EffectCurve\n if (effect instanceof EffectCurve) {\n const effectCurve = effect as EffectCurve;\n\n // capabilities\n for (const capability of effectCurve.capabilities) {\n for (const cachedChannel of cachedFixture.channels) {\n for (const channelCapability of cachedChannel.capabilities) {\n if (\n this.fixtureService.capabilitiesMatch(\n capability.type,\n channelCapability.capability.type,\n capability.color,\n channelCapability.capability.color,\n null,\n null,\n null,\n null\n )\n ) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * effectCurve.getValueAtMillis(timeMillis, fixtureIndex);\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage);\n }\n }\n }\n }\n\n // channels\n for (const channelProfile of effectCurve.channels) {\n if (channelProfile.profileUuid === cachedFixture.profile.uuid) {\n for (const channel of channelProfile.channels) {\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.name === channel) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * effectCurve.getValueAtMillis(timeMillis, fixtureIndex);\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage);\n }\n }\n }\n\n break;\n }\n }\n }\n\n // TODO other effects (PanTilt, etc.)\n }\n }\n }\n\n // return all fixture uuids with their corresponding channel values\n public getChannelValues(timeMillis: number, presets: PresetRegionScene[]): Map<CachedFixture, FixtureChannelValue[]> {\n // Loop over all relevant presets and calc the property values from the presets (capabilities and effects)\n const calculatedFixtures = new Map<CachedFixture, FixtureChannelValue[]>();\n\n for (let i = 0; i < this.fixtureService.cachedFixtures.length; i++) {\n const cachedFixture = this.fixtureService.cachedFixtures[i];\n\n // all values of the current fixture channels\n let values: FixtureChannelValue[] = [];\n\n const alreadyCalculatedFixture = this.getAlreadyCalculatedFixture(this.fixtureService.cachedFixtures, i);\n\n if (alreadyCalculatedFixture) {\n // only relevant for the preview --> reuse all calculated values\n values = Object.assign([], calculatedFixtures.get(alreadyCalculatedFixture));\n } else {\n // apply the default values\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.channel) {\n if (cachedChannel.channel.defaultValue) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.defaultValue;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n }\n }\n }\n\n for (const preset of presets) {\n // search for this fixture in the preset and get it's preset-specific index (for chasing effects)\n const fixtureIndex = this.getFixtureIndex(preset.preset, cachedFixture.fixture.uuid);\n\n if (fixtureIndex >= 0) {\n // this fixture is also in the preset -> mix the required values (overwrite existing values,\n // if set multiple times)\n const intensityPercentage = this.getPresetIntensity(preset, timeMillis);\n\n this.mixCapabilityValues(preset, cachedFixture, values, intensityPercentage);\n this.mixChannelValues(preset, cachedFixture, values, intensityPercentage);\n this.mixEffects(timeMillis, fixtureIndex, preset, cachedFixture, values, intensityPercentage);\n }\n }\n }\n\n // Store the calculated values for subsequent fixtures on the same DMX address\n calculatedFixtures.set(cachedFixture, values);\n }\n\n return calculatedFixtures;\n }\n\n public setUniverseValues(fixtures: Map<CachedFixture, FixtureChannelValue[]>, masterDimmerValue: number) {\n // TODO only, if monitoring is enabled\n return;\n\n // Reset all DMX universes\n for (const universe of this.universeService.universes) {\n universe.channelValues = [];\n for (let i = 0; i < 512; i++) {\n universe.channelValues.push(0);\n }\n }\n\n // loop over each fixture\n fixtures.forEach((channelValues: FixtureChannelValue[], cachedFixture: CachedFixture) => {\n // TODO Get the correct universe for this fixture\n const universe: Universe = this.universeService.getUniverseByUuid(cachedFixture.fixture.dmxUniverseUuid);\n\n // loop over each channel for this fixture\n for (let channelIndex = 0; channelIndex < cachedFixture.mode.channels.length; channelIndex++) {\n const channelObj = cachedFixture.mode.channels[channelIndex];\n if (typeof channelObj === 'string') {\n const channelName = channelObj;\n // match this mode channel with a channel value\n for (const channelValue of channelValues) {\n const channel = this.fixtureService.getChannelByName(cachedFixture, channelName);\n if (channel && channel.channel) {\n const fineIndex = channel.channel.fineChannelAliases.indexOf(channelName);\n if (channel.name === channelValue.channelName || fineIndex > -1) {\n const universeChannel = cachedFixture.fixture.dmxFirstChannel + channelIndex;\n const dmxValue =\n Math.floor(channelValue.value / Math.pow(256, channel.channel.fineChannelAliases.length - (fineIndex + 1))) % 256;\n // TODO\n break;\n }\n }\n }\n }\n }\n });\n }\n\n public fixtureIsSelected(uuid: string, presets: PresetRegionScene[]): boolean {\n for (const preset of presets) {\n for (const fixtureUuid of preset.preset.fixtureUuids) {\n if (fixtureUuid === uuid) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n public updateFixtureSetup() {\n this.doUpdateFixtureSetup.next();\n }\n\n public updateStage() {\n if (!this.scene) {\n return;\n }\n\n let geometry: any;\n let mesh: any;\n\n // Remove old meshes from the scene\n for (const existingMesh of this.stageMeshes) {\n this.scene.remove(existingMesh);\n existingMesh.geometry.dispose();\n }\n this.stageMeshes = [];\n\n // Floor\n geometry = new THREE.BoxBufferGeometry(\n this.projectService.project.stageWidthCm,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm\n );\n mesh = new THREE.Mesh(geometry.clone(), this.stageMaterial);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.position.set(0, this.projectService.project.stageFloorHeightCm / 2, 0);\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar front left\n geometry = new THREE.BoxBufferGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry.clone(), this.stageMaterial);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.position.set(\n -this.projectService.project.stageWidthCm / 2 + this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar front right\n geometry = new THREE.BoxBufferGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry.clone(), this.stageMaterial);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.position.set(\n this.projectService.project.stageWidthCm / 2 - this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar back left\n geometry = new THREE.BoxBufferGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry.clone(), this.stageMaterial);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.position.set(\n -this.projectService.project.stageWidthCm / 2 + this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar back right\n geometry = new THREE.BoxBufferGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry.clone(), this.stageMaterial);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.position.set(\n this.projectService.project.stageWidthCm / 2 - this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Ceiling\n geometry = new THREE.BoxBufferGeometry(\n this.projectService.project.stageWidthCm,\n this.projectService.project.stageCeilingHeightCm,\n this.projectService.project.stageDepthCm\n );\n mesh = new THREE.Mesh(geometry.clone(), this.stageMaterial);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.position.set(\n 0,\n this.projectService.project.stageHeightCm +\n this.projectService.project.stageCeilingHeightCm / 2 +\n this.projectService.project.stageFloorHeightCm,\n 0\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n }\n}\n","import * as THREE from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { CachedFixtureCapability } from '../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { Positioning } from '../../models/fixture';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\n\nexport abstract class Fixture3d {\n fixture: CachedFixture;\n fixtureHasDimmer = false;\n fixtureHasColorWheel = false;\n fixtureHasColor = false;\n\n scene: any;\n\n colorRed: number;\n colorGreen: number;\n colorBlue: number;\n\n dimmer = 0;\n\n isSelected = false;\n isLoaded = false;\n\n protected selectedMaterial: THREE.MeshLambertMaterial;\n\n constructor(public fixtureService: FixtureService, fixture: CachedFixture, scene: any) {\n this.fixture = fixture;\n this.scene = scene;\n\n // TODO Don't create it for each fixture but pass it from the preview service\n this.selectedMaterial = new THREE.MeshLambertMaterial({\n color: 0xff00ff,\n emissive: 0xff00ff,\n });\n\n // evaluate, various capabilities of this fixture\n for (const cachedChannel of this.fixture.channels) {\n if (cachedChannel.channel) {\n for (const capability of cachedChannel.capabilities) {\n switch (capability.capability.type) {\n case FixtureCapabilityType.Intensity:\n this.fixtureHasDimmer = true;\n break;\n case FixtureCapabilityType.ColorIntensity:\n this.fixtureHasColor = true;\n break;\n }\n }\n\n if (cachedChannel.colorWheel) {\n this.fixtureHasColorWheel = true;\n }\n }\n }\n }\n\n protected getCapabilityInValue(channel: CachedFixtureChannel, value: number): CachedFixtureCapability {\n for (const capability of channel.capabilities) {\n if (\n capability.capability.dmxRange.length === 0 ||\n (value >= capability.capability.dmxRange[0] && value <= capability.capability.dmxRange[1])\n ) {\n return capability;\n }\n }\n\n return undefined;\n }\n\n // Apply the properties of the base fixture to the preview\n updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number) {\n // Apply default settings\n if (this.fixtureHasDimmer) {\n this.dimmer = 0;\n } else {\n this.dimmer = 1;\n }\n\n this.colorRed = 255;\n this.colorGreen = 255;\n this.colorBlue = 255;\n\n if (!this.fixtureHasColorWheel && this.fixtureHasColor) {\n this.colorRed = 0;\n this.colorGreen = 0;\n this.colorBlue = 0;\n }\n\n for (const channelValue of channelValues) {\n const channel = this.fixtureService.getChannelByName(this.fixture, channelValue.channelName);\n const capability = this.getCapabilityInValue(channel, channelValue.value);\n\n if (capability) {\n switch (capability.capability.type) {\n case FixtureCapabilityType.Intensity: {\n let valuePercentage: number;\n if (capability.capability.dmxRange.length > 0) {\n valuePercentage =\n (channelValue.value - capability.capability.dmxRange[0]) /\n (capability.capability.dmxRange[1] - capability.capability.dmxRange[0]);\n } else {\n valuePercentage = channelValue.value / channel.maxValue;\n }\n this.dimmer = valuePercentage * masterDimmerValue;\n break;\n }\n case FixtureCapabilityType.ColorIntensity: {\n const valuePercentage = (255 * channelValue.value) / channel.maxValue;\n switch (capability.capability.color) {\n case FixtureCapabilityColor.Red:\n // Round needed for threejs\n this.colorRed = Math.round(valuePercentage);\n break;\n case FixtureCapabilityColor.Green:\n // Round needed for threejs\n this.colorGreen = Math.round(valuePercentage);\n break;\n case FixtureCapabilityColor.Blue:\n // Round needed for threejs\n this.colorBlue = Math.round(valuePercentage);\n break;\n }\n break;\n }\n case FixtureCapabilityType.WheelSlot: {\n const mixedColor = this.fixtureService.getMixedWheelSlotColor(capability.wheel, capability.capability.slotNumber);\n if (mixedColor) {\n this.colorRed = Math.round(mixedColor.red);\n this.colorGreen = Math.round(mixedColor.green);\n this.colorBlue = Math.round(mixedColor.blue);\n }\n break;\n }\n }\n }\n }\n }\n\n updatePosition(object: THREE.Object3D) {\n // Update the position\n switch (this.fixture.fixture.positioning) {\n case Positioning.topFront: {\n object.rotation.x = THREE.Math.degToRad(0);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.bottomFront: {\n object.rotation.x = THREE.Math.degToRad(180);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.topBack: {\n object.rotation.x = THREE.Math.degToRad(0);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.bottomBack: {\n object.rotation.x = THREE.Math.degToRad(180);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.manual: {\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY, this.fixture.fixture.positionZ);\n object.rotation.x = THREE.Math.degToRad(this.fixture.fixture.rotationX);\n object.rotation.y = THREE.Math.degToRad(this.fixture.fixture.rotationY);\n object.rotation.z = THREE.Math.degToRad(this.fixture.fixture.rotationZ);\n break;\n }\n }\n }\n\n destroy() {\n this.selectedMaterial.dispose();\n }\n}\n","import { forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PreviewMeshService } from '../../services/preview-mesh.service';\nimport { Fixture3d } from './fixture-3d';\n\nexport class ColorChanger3d extends Fixture3d {\n private readonly pointLightMaxIntensity: number = 2;\n private readonly spotLightMaxIntensity: number = 5;\n\n private mesh: THREE.Mesh;\n\n private objectGroup: THREE.Object3D = new THREE.Object3D();\n private spotlightGroup: THREE.Object3D = new THREE.Object3D();\n private spotLight: THREE.SpotLight;\n private spotLightHelper: THREE.SpotLightHelper;\n private spotLightBeam: THREE.Mesh;\n\n private pointLight: THREE.PointLight;\n\n private lastSelected: boolean;\n\n private material: THREE.MeshStandardMaterial;\n private atmosphereMaterial: THREE.ShaderMaterial;\n\n private atmosphereMat() {\n const vertexShader = [\n 'varying vec3\tvVertexWorldPosition;',\n 'varying vec3\tvVertexNormal;',\n\n 'void main(){',\n '\tvVertexNormal = normalize(normalMatrix * normal);',\n\n '\tvVertexWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;',\n\n '\t// set gl_Position',\n '\tgl_Position\t= projectionMatrix * modelViewMatrix * vec4(position, 1.0);',\n '}',\n ].join('\\n');\n const fragmentShader = [\n 'uniform vec3\tglowColor;',\n 'uniform float\tcoeficient;',\n 'uniform float\tpower;',\n 'uniform float\topacity;',\n\n 'varying vec3\tvVertexNormal;',\n 'varying vec3\tvVertexWorldPosition;',\n\n 'void main(){',\n '\tvec3 worldCameraToVertex= vVertexWorldPosition - cameraPosition;',\n '\tvec3 viewCameraToVertex\t= (viewMatrix * vec4(worldCameraToVertex, 0.0)).xyz;',\n '\tviewCameraToVertex\t= normalize(viewCameraToVertex);',\n '\tfloat intensity\t\t= pow(coeficient + dot(vVertexNormal, viewCameraToVertex), power);',\n '\tgl_FragColor\t\t= vec4(glowColor, intensity * opacity);',\n '}',\n ].join('\\n');\n\n // create custom material from the shader code above\n // that is within specially labeled script tags\n const material = new THREE.ShaderMaterial({\n uniforms: {\n coeficient: {\n type: 'f',\n value: 0.3,\n },\n power: {\n type: 'f',\n value: 1.3,\n },\n opacity: {\n type: 'f',\n value: 1.0,\n },\n glowColor: {\n type: 'c',\n value: new THREE.Color('white'),\n },\n },\n vertexShader,\n fragmentShader,\n // blending: THREE.AdditiveBlending,\n transparent: true,\n depthWrite: false,\n });\n\n return material;\n }\n\n private createSpotLightBeam() {\n if (this.spotLightBeam) {\n this.spotlightGroup.remove(this.spotLightBeam);\n }\n\n // TODO update the correct angle from the profile\n const beamAngleDegrees = 14;\n const geometry = new THREE.CylinderGeometry(0.8, beamAngleDegrees * 1.2, 100, 64, 20, false);\n geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, -geometry.parameters.height / 2, 0));\n geometry.applyMatrix(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\n this.atmosphereMaterial = this.atmosphereMat();\n this.spotLightBeam = new THREE.Mesh(geometry, this.atmosphereMaterial);\n this.spotLightBeam.position.set(0, -0.02, 0);\n\n this.spotlightGroup.add(this.spotLightBeam);\n this.spotLightBeam.rotation.x = Math.PI / 2;\n }\n\n private createObjects() {\n (this.material as any) = new THREE.MeshLambertMaterial({\n color: 0x0d0d0d,\n emissive: 0x0d0d0d,\n });\n\n this.mesh.material = this.material;\n\n // Add the spotlight\n this.spotLight = new THREE.SpotLight(0xffffff, 1);\n this.spotLight.angle = 0.244;\n this.spotLight.penumbra = 0.5;\n this.spotLight.decay = 2;\n this.spotLight.distance = 60000;\n this.spotLight.castShadow = false;\n this.spotLight.intensity = 10;\n\n this.spotLightHelper = new THREE.SpotLightHelper(this.spotLight);\n // scene.add(this.spotLightHelper);\n\n const spotLightTarget = new THREE.Object3D();\n this.spotLight.target = spotLightTarget;\n\n this.spotlightGroup.add(this.spotLight);\n this.spotlightGroup.add(spotLightTarget);\n this.spotLight.position.set(0, -1.4, 0);\n spotLightTarget.position.set(0, -10, 0);\n\n // Add the point light for the surrounding light\n this.pointLight = new THREE.PointLight(0xffffff, 2, 1000);\n this.spotlightGroup.add(this.pointLight);\n this.pointLight.position.set(0, -1.4, 0);\n\n // Add the light beam\n this.createSpotLightBeam();\n\n this.objectGroup.add(this.spotlightGroup);\n this.objectGroup.add(this.mesh);\n\n // A moving head has about 32 cm in width\n this.objectGroup.scale.multiplyScalar(9);\n\n this.scene.add(this.objectGroup);\n\n this.isLoaded = true;\n }\n\n constructor(fixtureService: FixtureService, previewMeshService: PreviewMeshService, fixture: CachedFixture, scene: any) {\n super(fixtureService, fixture, scene);\n\n forkJoin([previewMeshService.getMesh('color-changer')])\n .pipe(\n map(([colorChanger]) => {\n this.mesh = colorChanger;\n\n this.createObjects();\n })\n )\n .subscribe();\n }\n\n public getObject(): THREE.Object3D {\n return this.objectGroup;\n }\n\n public updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number): void {\n super.updatePreview(channelValues, masterDimmerValue);\n\n if (!this.isLoaded) {\n return;\n }\n\n this.updatePosition(this.objectGroup);\n\n // Update the material\n if (this.lastSelected !== this.isSelected) {\n if (this.isSelected) {\n for (const child of this.mesh.children) {\n (child as Mesh).material = this.selectedMaterial;\n }\n } else {\n for (const child of this.mesh.children) {\n (child as Mesh).material = this.material;\n }\n }\n\n this.lastSelected = this.isSelected;\n }\n\n // Update the light helpers\n this.spotLightHelper.update();\n\n // Apply the colors\n const color = new THREE.Color('rgb(' + this.colorRed + ', ' + this.colorGreen + ', ' + this.colorBlue + ')');\n\n this.pointLight.color = color;\n\n this.spotLight.color = color;\n (this.spotLightBeam.material as any).uniforms.glowColor.value = color;\n\n // Apply the dimmer value\n // Take the color into account for the beam (don't show a black beam)\n const intensityColor = Math.max(this.colorRed, this.colorGreen, this.colorBlue);\n (this.spotLightBeam.material as any).uniforms.opacity.value = Math.min(intensityColor, this.dimmer) * 0.5;\n\n this.spotLight.intensity = this.spotLightMaxIntensity * this.dimmer;\n this.pointLight.intensity = this.pointLightMaxIntensity * this.dimmer;\n }\n\n destroy() {\n this.scene.remove(this.objectGroup);\n this.material.dispose();\n this.atmosphereMaterial.dispose();\n }\n}\n","import { forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PreviewMeshService } from '../../services/preview-mesh.service';\nimport { Fixture3d } from './fixture-3d';\n\nexport class MovingHead3d extends Fixture3d {\n private readonly pointLightMaxIntensity: number = 2;\n private readonly spotLightLightMaxIntensity: number = 10;\n\n private pan: number;\n private tilt: number;\n\n private socket: THREE.Mesh;\n private arm: THREE.Mesh;\n private head: THREE.Mesh;\n\n private headGroup: THREE.Object3D = new THREE.Object3D();\n private spotlightGroup: THREE.Object3D = new THREE.Object3D();\n private armGroup: THREE.Object3D = new THREE.Object3D();\n private objectGroup: THREE.Object3D = new THREE.Object3D();\n private spotLight: THREE.SpotLight;\n private spotLightHelper: THREE.SpotLightHelper;\n private spotLightBeam: THREE.Mesh;\n\n private pointLight: THREE.PointLight;\n\n private lastBeamAngleDegrees: number;\n private lastSelected: boolean;\n\n private material: THREE.MeshStandardMaterial;\n private atmosphereMaterial: THREE.ShaderMaterial;\n\n private atmosphereMat() {\n const vertexShader = [\n 'varying vec3\tvVertexWorldPosition;',\n 'varying vec3\tvVertexNormal;',\n\n 'void main(){',\n '\tvVertexNormal = normalize(normalMatrix * normal);',\n\n '\tvVertexWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;',\n\n '\t// set gl_Position',\n '\tgl_Position\t= projectionMatrix * modelViewMatrix * vec4(position, 1.0);',\n '}',\n ].join('\\n');\n const fragmentShader = [\n 'uniform vec3\tglowColor;',\n 'uniform float\tcoeficient;',\n 'uniform float\tpower;',\n 'uniform float\topacity;',\n\n 'varying vec3\tvVertexNormal;',\n 'varying vec3\tvVertexWorldPosition;',\n\n 'void main(){',\n '\tvec3 worldCameraToVertex= vVertexWorldPosition - cameraPosition;',\n '\tvec3 viewCameraToVertex\t= (viewMatrix * vec4(worldCameraToVertex, 0.0)).xyz;',\n '\tviewCameraToVertex\t= normalize(viewCameraToVertex);',\n '\tfloat intensity\t\t= pow(coeficient + dot(vVertexNormal, viewCameraToVertex), power);',\n '\tgl_FragColor\t\t= vec4(glowColor, intensity * opacity);',\n '}',\n ].join('\\n');\n\n // create custom material from the shader code above\n // that is within specially labeled script tags\n const material = new THREE.ShaderMaterial({\n uniforms: {\n coeficient: {\n type: 'f',\n value: 0.3,\n },\n power: {\n type: 'f',\n value: 1.3,\n },\n opacity: {\n type: 'f',\n value: 1.0,\n },\n glowColor: {\n type: 'c',\n value: new THREE.Color('white'),\n },\n },\n vertexShader,\n fragmentShader,\n // blending: THREE.AdditiveBlending,\n transparent: true,\n depthWrite: false,\n });\n\n return material;\n }\n\n private createSpotLightBeam() {\n if (this.spotLightBeam) {\n this.spotlightGroup.remove(this.spotLightBeam);\n }\n\n // TODO update the correct angle from the profile\n const beamAngleDegrees = 14;\n const geometry = new THREE.CylinderGeometry(0.1, beamAngleDegrees * 1.2, 100, 64, 20, false);\n geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, -geometry.parameters.height / 2, 0));\n geometry.applyMatrix(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\n // var zrak_mat = new THREE.MeshBasicMaterial({ color: 0xffffff, blending: THREE.AdditiveBlending, opacity: 0.1 });\n\n this.atmosphereMaterial = this.atmosphereMat();\n this.spotLightBeam = new THREE.Mesh(geometry, this.atmosphereMaterial);\n this.spotLightBeam.position.set(0, -0.02, 0);\n\n this.spotlightGroup.add(this.spotLightBeam);\n this.spotLightBeam.rotation.x = Math.PI / 2;\n }\n\n private createObjects() {\n (this.material as any) = new THREE.MeshLambertMaterial({\n color: 0x0d0d0d,\n emissive: 0x0d0d0d,\n });\n\n this.socket.material = this.material;\n this.arm.material = this.material;\n this.head.material = this.material;\n\n // Add the head\n this.head.scale.multiplyScalar(0.9);\n this.head.position.set(-0.1, 0, 0);\n const headPivotGroup = new THREE.Object3D();\n headPivotGroup.add(this.head);\n this.headGroup.add(headPivotGroup);\n\n // Add the spotlight\n this.spotLight = new THREE.SpotLight(0xffffff, 1);\n this.spotLight.angle = 0.244;\n this.spotLight.penumbra = 0.5;\n this.spotLight.decay = 2;\n this.spotLight.distance = 60000;\n this.spotLight.castShadow = false;\n this.spotLight.intensity = 10;\n\n this.spotLightHelper = new THREE.SpotLightHelper(this.spotLight);\n // scene.add(this.spotLightHelper);\n\n const spotLightTarget = new THREE.Object3D();\n this.spotLight.target = spotLightTarget;\n\n this.spotlightGroup.add(this.spotLight);\n this.spotlightGroup.add(spotLightTarget);\n this.spotLight.position.set(0, -1.4, 0);\n spotLightTarget.position.set(0, -10, 0);\n\n // Add the point light for the surrounding light\n this.pointLight = new THREE.PointLight(0xffffff, 2, 1000);\n this.spotlightGroup.add(this.pointLight);\n this.pointLight.position.set(0, -1.4, 0);\n\n // Add the light beam\n this.createSpotLightBeam();\n\n this.headGroup.add(this.spotlightGroup);\n\n // Add the arm\n this.armGroup.add(this.headGroup);\n this.headGroup.position.set(0, -0.6, 0);\n this.armGroup.add(this.arm);\n\n // Add the socket\n this.objectGroup.add(this.armGroup);\n this.objectGroup.add(this.socket);\n this.socket.position.set(0, 1.2, 0);\n\n // A moving head has about 32 cm in width\n this.objectGroup.scale.multiplyScalar(9);\n\n this.scene.add(this.objectGroup);\n\n this.isLoaded = true;\n }\n\n constructor(fixtureService: FixtureService, previewMeshService: PreviewMeshService, fixture: CachedFixture, scene: any) {\n super(fixtureService, fixture, scene);\n\n forkJoin([\n previewMeshService.getMesh('moving_head_socket'),\n previewMeshService.getMesh('moving_head_arm'),\n previewMeshService.getMesh('moving_head_head'),\n ])\n .pipe(\n map(([socket, arm, head]) => {\n this.socket = socket;\n this.arm = arm;\n this.head = head;\n\n this.createObjects();\n })\n )\n .subscribe();\n }\n\n public getObject(): THREE.Object3D {\n return this.objectGroup;\n }\n\n public updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number): void {\n super.updatePreview(channelValues, masterDimmerValue);\n\n if (!this.isLoaded) {\n return;\n }\n\n // Apply default settings\n let panStart = 0;\n let panEnd = 255;\n\n let tiltStart = 0;\n let tiltEnd = 255;\n\n this.pan = 0;\n this.tilt = 0;\n\n // Apply the known property values\n for (const channelValue of channelValues) {\n const channel = this.fixtureService.getChannelByName(this.fixture, channelValue.channelName);\n const capability = this.getCapabilityInValue(channel, channelValue.value);\n if (capability) {\n switch (capability.capability.type) {\n case FixtureCapabilityType.Pan: {\n panStart = this.fixtureService.getRotationAngleDeg(capability.capability.angleStart) || 0;\n panEnd = this.fixtureService.getRotationAngleDeg(capability.capability.angleEnd) || 540;\n this.pan = channelValue.value / channel.maxValue;\n break;\n }\n case FixtureCapabilityType.Tilt: {\n tiltStart = this.fixtureService.getRotationAngleDeg(capability.capability.angleStart) || 0;\n tiltEnd = this.fixtureService.getRotationAngleDeg(capability.capability.angleEnd) || 2700;\n this.tilt = channelValue.value / channel.maxValue;\n break;\n }\n }\n }\n }\n\n this.updatePosition(this.objectGroup);\n\n // calculate the y/x rotation in radiants based on pan/tilt (0-1) respecting the max pan/tilt\n this.armGroup.rotation.y = THREE.Math.degToRad(panEnd * this.pan + panStart) - THREE.Math.degToRad(panEnd / 2);\n this.headGroup.rotation.x = THREE.Math.degToRad(tiltEnd * this.tilt + tiltStart) - THREE.Math.degToRad(tiltEnd / 2);\n\n // Update the angle (only on change, because it's expensive)\n // TODO update the correct angle from the profile\n const beamAngleDregrees = 14;\n if (this.lastBeamAngleDegrees !== beamAngleDregrees) {\n this.spotLight.angle = THREE.Math.degToRad(beamAngleDregrees);\n this.createSpotLightBeam();\n this.lastBeamAngleDegrees = beamAngleDregrees;\n }\n\n // Update the material\n if (this.lastSelected !== this.isSelected) {\n if (this.isSelected) {\n this.socket.material = this.selectedMaterial;\n this.arm.material = this.selectedMaterial;\n this.head.material = this.selectedMaterial;\n } else {\n this.socket.material = this.material;\n this.arm.material = this.material;\n this.head.material = this.material;\n }\n\n this.lastSelected = this.isSelected;\n }\n\n // Update the light helpers\n this.spotLightHelper.update();\n\n // Apply the colors\n const color = new THREE.Color('rgb(' + this.colorRed + ', ' + this.colorGreen + ', ' + this.colorBlue + ')');\n\n this.pointLight.color = color;\n\n this.spotLight.color = color;\n (this.spotLightBeam.material as any).uniforms.glowColor.value = color;\n\n // Apply the dimmer value\n // Take the color into account for the beam (don't show a black beam)\n const intensityColor = Math.max(this.colorRed, this.colorGreen, this.colorBlue);\n (this.spotLightBeam.material as any).uniforms.opacity.value = Math.min(intensityColor, this.dimmer);\n\n this.spotLight.intensity = this.spotLightLightMaxIntensity * this.dimmer;\n this.pointLight.intensity = this.pointLightMaxIntensity * this.dimmer;\n\n // this.spotLightBeam.material.uniforms.viewVector.value =\n // new THREE.Vector3().subVectors(this.camera.position, this.spotLightBeam.position);\n }\n\n destroy() {\n this.scene.remove(this.objectGroup);\n this.material.dispose();\n this.atmosphereMaterial.dispose();\n }\n}\n","import { AfterViewInit, Component, ElementRef, HostListener, ViewChild } from '@angular/core';\nimport * as THREE from 'three';\nimport STATS from 'three/examples/js/libs/stats.min';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\nimport { FixtureCategory } from '../models/fixture-profile';\nimport { FixtureService } from '../services/fixture.service';\nimport { PreviewMeshService } from '../services/preview-mesh.service';\nimport { PreviewService } from '../services/preview.service';\nimport { ProjectService } from '../services/project.service';\nimport { TimelineService } from '../services/timeline.service';\nimport { Positioning } from './../models/fixture';\nimport { AnimationService } from './../services/animation.service';\nimport { ColorChanger3d } from './models/color-changer-3d';\nimport { Fixture3d } from './models/fixture-3d';\nimport { MovingHead3d } from './models/moving-head-3d';\n\n@Component({\n selector: 'lib-app-preview',\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.css'],\n})\nexport class PreviewComponent implements AfterViewInit {\n private renderer: THREE.WebGLRenderer;\n private scene: THREE.Scene;\n private camera: THREE.PerspectiveCamera;\n public controls: OrbitControls;\n\n private stats: any = STATS();\n // private rendererStats = new THREEx.RendererStats();\n\n private fixtures3d: Fixture3d[] = [];\n\n @ViewChild('canvas')\n private canvasRef: ElementRef;\n\n constructor(\n private fixtureService: FixtureService,\n private previewMeshService: PreviewMeshService,\n private animationService: AnimationService,\n private previewService: PreviewService,\n private timelineService: TimelineService,\n private projectService: ProjectService\n ) {\n this.previewService.doUpdateFixtureSetup.subscribe(() => {\n // synchronize the 3d-fixtures to the project fixtures\n this.syncFixtures();\n });\n }\n\n private syncFixtures() {\n // remove all fixtures\n for (const fixture3d of this.fixtures3d) {\n fixture3d.destroy();\n }\n this.fixtures3d = [];\n\n // add all fixtures from the project\n for (const fixture of this.fixtureService.cachedFixtures) {\n switch (fixture.profile.categories[0]) {\n case FixtureCategory['Moving Head']:\n this.fixtures3d.push(new MovingHead3d(this.fixtureService, this.previewMeshService, fixture, this.scene));\n break;\n case FixtureCategory['Color Changer']:\n this.fixtures3d.push(new ColorChanger3d(this.fixtureService, this.previewMeshService, fixture, this.scene));\n break;\n case FixtureCategory['Blinder']:\n this.fixtures3d.push(new ColorChanger3d(this.fixtureService, this.previewMeshService, fixture, this.scene));\n break;\n }\n }\n }\n\n private get canvas(): HTMLCanvasElement {\n return this.canvasRef.nativeElement;\n }\n\n private render() {\n this.renderer.render(this.scene, this.camera);\n }\n\n private updateStagePosition(\n positioning: Positioning,\n xMin: number,\n xMax: number,\n yMin: number,\n yMax: number,\n zMin: number,\n zMax: number\n ) {\n let positionCount = 0; // Number of fixtures in the same position\n let positionIndex = 1;\n\n this.projectService.project.fixtures.forEach((element, index) => {\n if (element.positioning === positioning) {\n positionCount++;\n }\n });\n\n this.projectService.project.fixtures.forEach((element, index) => {\n if (element.positioning === positioning) {\n element.positionX = xMin + ((xMax - xMin) / (positionCount + 1)) * positionIndex;\n element.positionY = yMin + ((yMax - yMin) / (positionCount + 1)) * positionIndex;\n element.positionZ = zMin + ((zMax - zMin) / (positionCount + 1)) * positionIndex;\n\n positionIndex++;\n }\n });\n }\n\n private animate(timeMillis: number) {\n this.stats.begin();\n\n if (this.timelineService.playState === 'playing') {\n // Overwrite the current time with the playing time, if we're in playback mode\n timeMillis = this.timelineService.waveSurfer.getCurrentTime() * 1000;\n }\n\n this.animationService.timeMillis = timeMillis;\n\n // Update the controls\n if (this.controls) {\n this.controls.update();\n }\n\n // Update the positions\n this.updateStagePosition(\n Positioning.topFront,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - 70,\n this.projectService.project.stageDepthCm / 2 - 70\n );\n this.updateStagePosition(\n Positioning.bottomFront,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - 70,\n this.projectService.project.stageDepthCm / 2 - 70\n );\n this.updateStagePosition(\n Positioning.topBack,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + 70,\n -this.projectService.project.stageDepthCm / 2 + 70\n );\n this.updateStagePosition(\n Positioning.bottomBack,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + 70,\n -this.projectService.project.stageDepthCm / 2 + 70\n );\n\n // Update all fixtures and apply the preview properties, if available\n // TODO Update the fixtures only e.g. 40 times per second according to the \"real\" refresh rate of the DMX interface?\n const presets = this.previewService.getPresets(timeMillis);\n\n const calculatedFixtures = this.previewService.getChannelValues(timeMillis, presets);\n\n for (const fixture3d of this.fixtures3d) {\n // Update the fixture properties\n fixture3d.updatePreview(calculatedFixtures.get(fixture3d.fixture) || [], this.projectService.project.masterDimmerValue);\n\n // Select the fixture, if required\n if (this.fixtureService.settingsSelection) {\n fixture3d.isSelected = this.fixtureService.settingsFixtureIsSelected(fixture3d.fixture.fixture);\n } else {\n fixture3d.isSelected = this.previewService.fixtureIsSelected(fixture3d.fixture.fixture.uuid, presets);\n }\n }\n\n // TODO enable for monitoring the DMX universes\n this.previewService.setUniverseValues(calculatedFixtures, this.projectService.project.masterDimmerValue);\n\n // Update the statistics\n // this.rendererStats.update(this.renderer);\n\n // Render the scene\n this.render();\n\n this.stats.end();\n\n requestAnimationFrame(this.animate.bind(this));\n }\n\n private getAspectRatio(): number {\n const height = this.canvas.clientHeight;\n\n if (height === 0) {\n return 0;\n }\n\n return this.canvas.clientWidth / this.canvas.clientHeight;\n }\n\n @HostListener('window:resize')\n public onResize() {\n this.camera.aspect = this.getAspectRatio();\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n }\n\n private setupRenderer() {\n this.renderer = new THREE.WebGLRenderer({ antialias: true });\n this.canvas.appendChild(this.renderer.domElement);\n this.renderer.setPixelRatio(devicePixelRatio);\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n this.renderer.shadowMap.enabled = false;\n this.renderer.gammaInput = true;\n this.renderer.gammaOutput = true;\n }\n\n private setupCamera() {\n this.camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 1, 10000);\n this.camera.position.set(-600, 80, 700);\n }\n\n private setupControls() {\n this.controls = new OrbitControls(this.camera, this.renderer.domElement);\n this.controls.enableKeys = false;\n this.controls.rotateSpeed = 0.05;\n this.controls.zoomSpeed = 1.2;\n this.controls.enableDamping = true;\n this.controls.dampingFactor = 0.25;\n this.controls.screenSpacePanning = false;\n this.controls.minDistance = 700;\n // this.controls.zoom = 1000;\n this.controls.maxDistance = 2000;\n this.controls.maxPolarAngle = Math.PI / 2;\n this.controls.target = new THREE.Vector3(0, 200, 0);\n // this.controls.rotation = 100;\n }\n\n private setupFloor() {\n const width = 4000;\n const height = 1;\n\n const geometry = new THREE.BoxGeometry(width, height, width);\n const material = new THREE.MeshStandardMaterial({ color: 0x0d0d0d });\n\n const floor = new THREE.Mesh(geometry.clone(), material);\n floor.receiveShadow = false;\n floor.castShadow = false;\n floor.position.set(0, -height / 2, 0);\n this.scene.add(floor);\n }\n\n private setupStats() {\n // this.rendererStats.domElement.style.position = 'absolute';\n // this.rendererStats.domElement.style.left = '0px';\n // this.rendererStats.domElement.style.bottom = '0px';\n // this.canvas.appendChild(this.rendererStats.domElement);\n\n this.stats.domElement.style.position = 'absolute';\n this.stats.domElement.style.left = '0px';\n this.canvas.appendChild(this.stats.domElement);\n }\n\n private setupScene() {\n // Create a new scene\n this.scene = new THREE.Scene();\n\n this.previewService.scene = this.scene;\n\n // Add a little bit of ambient light\n const ambient = new THREE.AmbientLight(0xffffff, 0.8);\n this.scene.add(ambient);\n\n // Add a floor\n this.setupFloor();\n\n // Create the stage dimensions\n this.previewService.updateStage();\n\n // TODO refine. background light in a color of the fixtures?\n const lights = [];\n lights[0] = new THREE.PointLight(0xffffff, 0.5, 0);\n lights[1] = new THREE.PointLight(0xffffff, 0.5, 0);\n lights[2] = new THREE.PointLight(0xffffff, 0.5, 0);\n\n lights[0].position.set(0, 2000, 0);\n lights[1].position.set(1000, 2000, 1000);\n lights[2].position.set(-1000, -2000, -1000);\n\n this.scene.add(lights[0]);\n this.scene.add(lights[1]);\n this.scene.add(lights[2]);\n\n // Create the stats\n this.setupStats();\n }\n\n ngAfterViewInit(): void {\n this.setupRenderer();\n this.setupCamera();\n this.setupControls();\n this.setupScene();\n\n this.onResize();\n this.animate(null);\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-wait-dialog',\n templateUrl: './wait-dialog.component.html',\n styleUrls: ['./wait-dialog.component.css'],\n})\nexport class WaitDialogComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { Preset } from '../models/preset';\nimport { Project } from '../models/project';\nimport { WaitDialogComponent } from '../wait-dialog/wait-dialog.component';\nimport { FixtureService } from './fixture.service';\nimport { PresetService } from './preset.service';\nimport { PreviewService } from './preview.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\nimport { TimelineService } from './timeline.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectLoadService {\n constructor(\n private projectService: ProjectService,\n private previewService: PreviewService,\n private fixtureService: FixtureService,\n private presetService: PresetService,\n private sceneService: SceneService,\n private modalService: BsModalService,\n private uuidService: UuidService,\n private timelineService: TimelineService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {}\n\n private afterLoad() {\n this.fixtureService.updateCachedFixtures();\n this.presetService.removeDeletedFixtures();\n this.previewService.updateFixtureSetup();\n this.presetService.fixtureSelectionChanged.next();\n this.presetService.autoOpenFirstEffect();\n this.previewService.updateStage();\n this.presetService.previewLive();\n this.sceneService.selectPresetFromSelectedScene();\n }\n\n private selectScenesPresetComposition() {\n this.presetService.selectedPreset = this.presetService.getPresetByUuid(this.projectService.project.selectedPresetUuid);\n this.sceneService.selectedScenes = [];\n if (this.projectService.project.selectedSceneUuids) {\n for (const uuid of this.projectService.project.selectedSceneUuids) {\n this.sceneService.selectedScenes.push(this.sceneService.getSceneByUuid(uuid));\n }\n }\n this.timelineService.selectedComposition = undefined;\n this.timelineService.selectedCompositionIndex = undefined;\n this.timelineService.destroyWaveSurfer();\n for (let i = 0; i < this.projectService.project.compositions.length; i++) {\n if (this.projectService.project.compositions[i].uuid === this.projectService.project.selectedCompositionUuid) {\n this.timelineService.selectCompositionIndex(i);\n break;\n }\n }\n }\n\n load(id: number, name: string, shareToken?: string): Observable<void> {\n const ref = this.modalService.show(WaitDialogComponent, { keyboard: false, ignoreBackdropClick: true });\n\n return this.projectService.getProject(id, name, shareToken).pipe(\n map((project) => {\n this.projectService.project = project;\n this.selectScenesPresetComposition();\n this.afterLoad();\n\n const queryParams: Params = {\n id,\n token: project.shareToken,\n };\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }),\n finalize(() => {\n // hide the modal again because of:\n // https://github.com/valor-software/ngx-bootstrap/issues/3711\n setTimeout(() => {\n ref.hide();\n }, 250);\n setTimeout(() => {\n ref.hide();\n }, 500);\n setTimeout(() => {\n ref.hide();\n }, 1500);\n })\n );\n }\n\n new() {\n // create an empty new project\n const project = new Project();\n project.uuid = this.uuidService.getUuid();\n this.projectService.project = project;\n this.projectService.project.shareToken = this.uuidService.getUuid();\n\n // Add a default scene and preset\n const preset = new Preset();\n preset.uuid = this.uuidService.getUuid();\n preset.name = 'New Preset';\n this.projectService.project.presets.push(preset);\n this.presetService.selectPreset(0);\n\n this.sceneService.addScene();\n this.projectService.project.scenes[0].presetUuids.push(preset.uuid);\n\n this.projectService.project.previewPreset = true;\n\n this.sceneService.selectedScenes = [this.projectService.project.scenes[0]];\n this.presetService.selectedPreset = this.projectService.project.presets[0];\n\n this.timelineService.selectedComposition = undefined;\n this.timelineService.selectedCompositionIndex = undefined;\n this.timelineService.destroyWaveSurfer();\n\n this.afterLoad();\n\n const queryParams: Params = {\n id: '',\n token: '',\n };\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }\n\n template() {\n // load the template project with id 1\n this.load(1, null).subscribe(() => {\n this.projectService.project.id = undefined;\n });\n }\n\n import(data: string) {\n // import a project from a string\n const project = new Project(JSON.parse(data));\n project.id = undefined;\n this.projectService.project = project;\n\n this.selectScenesPresetComposition();\n this.afterLoad();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'lib-app-warning-dialog',\n templateUrl: './warning-dialog.component.html',\n styleUrls: ['./warning-dialog.component.scss'],\n})\nexport class WarningDialogComponent implements OnInit {\n onClose: Subject<number>;\n\n message: string;\n\n constructor(private bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.onClose = new Subject();\n }\n\n public ok(): void {\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n public cancel(): void {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { WarningDialogComponent } from '../warning-dialog/warning-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WarningDialogService {\n constructor(private modalService: BsModalService, private translateService: TranslateService) {}\n\n // Show a warning dialog and return true, when the user clicked OK\n show(message: string): Observable<boolean> {\n return this.translateService.get(message).pipe(\n map((result) => {\n return result;\n }),\n mergeMap((result) => {\n const fileDialog = this.modalService.show(WarningDialogComponent, { keyboard: false, ignoreBackdropClick: true });\n (fileDialog.content as WarningDialogComponent).message = result;\n\n return (fileDialog.content as WarningDialogComponent).onClose.pipe(\n map((warningResult) => {\n if (warningResult === 1) {\n return true;\n }\n\n return false;\n })\n );\n })\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../../models/project';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectLoadService } from '../../services/project-load.service';\nimport { ProjectService } from '../../services/project.service';\nimport { UserService } from '../../services/user.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-project-browser',\n templateUrl: './project-browser.component.html',\n styleUrls: ['./project-browser.component.css'],\n})\nexport class ProjectBrowserComponent implements OnInit {\n projects: Project[] = [];\n loading = true;\n\n constructor(\n private bsModalRef: BsModalRef,\n private projectService: ProjectService,\n private projectLoadService: ProjectLoadService,\n private userService: UserService,\n private warningDialogService: WarningDialogService,\n private configService: ConfigService\n ) {\n this.loadProjects();\n }\n\n private loadProjects() {\n this.projectService.getAllProjects().subscribe((projects) => {\n this.projects = projects;\n this.loading = false;\n });\n }\n\n ngOnInit() {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n openProject(project: Project) {\n this.bsModalRef.hide();\n this.projectLoadService.load(project.id, project.name).subscribe(() => {\n this.userService.setAutoLoadProject(project);\n });\n }\n\n deleteProject(project: Project) {\n this.warningDialogService\n .show('designer.project.delete-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.projectService.deleteProject(project).subscribe((projects) => {\n this.loadProjects();\n });\n }\n })\n )\n .subscribe();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { map } from 'rxjs/operators';\nimport { ProjectLoadService } from '../../services/project-load.service';\n\n@Component({\n selector: 'lib-project-import',\n templateUrl: './project-import.component.html',\n styleUrls: ['./project-import.component.css'],\n})\nexport class ProjectImportComponent implements OnInit {\n public dropzoneConfig: DropzoneConfigInterface;\n public uploadMessage: string;\n\n constructor(\n public bsModalRef: BsModalRef,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private projectLoadService: ProjectLoadService\n ) {}\n\n ngOnInit() {\n this.dropzoneConfig = {\n url: 'dummy',\n addRemoveLinks: false,\n maxFilesize: 10 /* 10 MB */,\n acceptedFiles: '.rsd',\n timeout: 0,\n accept: (file: any, done: any) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', (event: any) => {\n this.projectLoadService.import(event.target.result);\n done('noerr');\n this.bsModalRef.hide();\n });\n reader.readAsText(file);\n },\n previewTemplate: `\n <div style=\"display: none;\">\n <!-- No preview -->\n </div>\n `,\n };\n\n this.translateService\n .get('designer.misc.dropzone-message')\n .pipe(\n map((result) => {\n this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n })\n )\n .subscribe();\n }\n\n public onUploadError(args: any) {\n if (args[1] === 'noerr') {\n // this error is set in the accept event listener -> everything OK\n return;\n }\n\n const msg = 'designer.misc.toast-upload-error';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n });\n }\n\n ok() {\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../../models/project';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectService } from '../../services/project.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-project-save',\n templateUrl: './project-save.component.html',\n styleUrls: ['./project-save.component.css'],\n})\nexport class ProjectSaveComponent implements OnInit {\n projects: Project[] = [];\n loading = true;\n projectName: string;\n\n constructor(\n private bsModalRef: BsModalRef,\n private projectService: ProjectService,\n private warningDialogService: WarningDialogService,\n private configService: ConfigService\n ) {\n this.loadProjects();\n if (this.projectService.project.name) {\n this.projectName = this.projectService.project.name;\n } else {\n this.projectName = 'New Project';\n }\n }\n\n ngOnInit() {}\n\n private loadProjects() {\n this.projectService.getAllProjects().subscribe((projects) => {\n this.projects = projects;\n this.loading = false;\n });\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n selectProject(project: Project) {\n this.projectService.project.name = project.name;\n }\n\n private existingProject(uuid: string, name: string) {\n for (const project of this.projects) {\n if (project.name === name && project.uuid !== uuid) {\n return true;\n }\n }\n return false;\n }\n\n private doSave() {\n this.projectService.project.name = this.projectName;\n this.projectService.save(this.projectService.project);\n this.bsModalRef.hide();\n }\n\n saveProject() {\n if (this.existingProject(this.projectService.project.uuid, this.projectName) && this.configService.uniqueProjectNames) {\n this.warningDialogService\n .show('designer.project.overwrite-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.doSave();\n }\n })\n )\n .subscribe();\n } else {\n this.doSave();\n }\n }\n\n deleteProject(project: Project) {\n this.warningDialogService\n .show('designer.project.delete-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.projectService.deleteProject(project).subscribe((projects) => {\n this.loadProjects();\n });\n }\n })\n )\n .subscribe();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.saveProject();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-project-share',\n templateUrl: './project-share.component.html',\n styleUrls: ['./project-share.component.css'],\n})\nexport class ProjectShareComponent implements OnInit {\n shareLink: string;\n\n constructor(public bsModalRef: BsModalRef, private projectService: ProjectService) {}\n\n ngOnInit() {\n this.shareLink =\n window.location.host + '/designer?id=' + this.projectService.project.id + '&token=' + this.projectService.project.shareToken;\n }\n\n ok() {\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'lib-error-dialog',\n templateUrl: './error-dialog.component.html',\n styleUrls: ['./error-dialog.component.css'],\n})\nexport class ErrorDialogComponent implements OnInit {\n onClose: Subject<number>;\n\n message: string;\n details: string;\n\n constructor(private bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.onClose = new Subject();\n }\n\n public ok(): void {\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n public cancel(): void {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { ErrorDialogComponent } from '../error-dialog/error-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorDialogService {\n constructor(private modalService: BsModalService, private translateService: TranslateService) {}\n\n // Show a warning dialog and return true, when the user clicked OK\n show(message: string, details?: string): Observable<boolean> {\n return this.translateService.get(message).pipe(\n map((result) => {\n return result;\n }),\n mergeMap((result) => {\n const fileDialog = this.modalService.show(ErrorDialogComponent, { keyboard: true, ignoreBackdropClick: false });\n (fileDialog.content as ErrorDialogComponent).message = result;\n (fileDialog.content as ErrorDialogComponent).details = details;\n\n return (fileDialog.content as ErrorDialogComponent).onClose.pipe(\n map((errorResult) => {\n if (errorResult === 1) {\n return true;\n }\n\n return false;\n })\n );\n })\n );\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureService } from '../../services/fixture.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-fixture-pool-create-from-file',\n templateUrl: './fixture-pool-create-from-file.component.html',\n styleUrls: ['./fixture-pool-create-from-file.component.css'],\n})\nexport class FixturePoolCreateFromFileComponent implements OnInit {\n public dropzoneConfig: DropzoneConfigInterface;\n public uploadMessage: string;\n public onClose: Subject<FixtureProfile> = new Subject();\n\n constructor(\n public bsModalRef: BsModalRef,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private fixtureService: FixtureService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit() {\n this.dropzoneConfig = {\n url: 'dummy',\n addRemoveLinks: false,\n maxFilesize: 10 /* 10 MB */,\n acceptedFiles: '.json',\n timeout: 0,\n accept: (file: any, done: any) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', (event: any) => {\n // validate the file\n const text = event.target.result;\n const json = JSON.parse(text);\n if (\n json['$schema'].match(\n 'https://raw.githubusercontent.com/OpenLightingProject/open-fixture-library/schema-(.*)/schemas/fixture.json'\n )\n ) {\n // create the metadata from the file. we don't have the corresponding\n // manufacturer-file, therefore we just assume the attributes from the\n // fixture-file.\n const manufacturerShortName = json['manufacturerKey'];\n const manufacturerName = manufacturerShortName;\n const uuid = manufacturerShortName + '/' + json['fixtureKey'];\n const profile = new FixtureProfile(json);\n\n profile.manufacturerShortName = manufacturerShortName;\n profile.manufacturerName = manufacturerName;\n profile.uuid = uuid;\n profile.createdFromFile = true;\n\n // add the profile to the project, if not already added\n const loadedProfile = this.fixtureService.getProfileByUuid(uuid);\n if (!loadedProfile) {\n this.projectService.project.fixtureProfiles.push(profile);\n }\n\n // add a new fixture from this profile\n this.onClose.next(profile);\n this.bsModalRef.hide();\n } else {\n // show an error toast\n const msg = 'designer.fixture-pool.invalid-fixture-profile-file';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n });\n }\n\n done('noerr');\n });\n reader.readAsText(file);\n },\n previewTemplate: `\n <div style=\"display: none;\">\n <!-- No preview -->\n </div>\n `,\n };\n\n this.translateService\n .get('designer.misc.dropzone-message')\n .pipe(\n map((result) => {\n this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n })\n )\n .subscribe();\n }\n\n public onUploadError(args: any) {\n if (args[1] === 'noerr') {\n // this error is set in the accept event listener -> everything OK\n return;\n }\n\n const msg = 'designer.misc.toast-upload-error';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n });\n }\n\n ok() {\n this.onClose.next(undefined);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onClose.next(undefined);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\nimport { Fixture } from '../models/fixture';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { ConfigService } from '../services/config.service';\nimport { FixtureService } from '../services/fixture.service';\nimport { PresetService } from '../services/preset.service';\nimport { PreviewService } from '../services/preview.service';\nimport { ProjectService } from '../services/project.service';\nimport { UuidService } from '../services/uuid.service';\nimport { FixturePoolCreateFromFileComponent } from './fixture-pool-create-from-file/fixture-pool-create-from-file.component';\n\n@Component({\n selector: 'lib-app-fixture-pool',\n templateUrl: './fixture-pool.component.html',\n styleUrls: ['./fixture-pool.component.css'],\n})\nexport class FixturePoolComponent implements OnInit {\n private profiles: FixtureProfile[];\n public filteredProfiles: FixtureProfile[];\n public loadingProfiles = false;\n\n public fixturePool: Fixture[];\n\n public dmxChannels: number[] = [];\n public selectedFixture: Fixture;\n public selectedFixtureProfile: FixtureProfile;\n public showChannelNumbers = false;\n public channelDragFixture: Fixture;\n public channelDragOffset: number;\n\n public onClose: Subject<number> = new Subject();\n\n public searchExpression: string;\n\n public updatingProfiles: boolean;\n\n constructor(\n public bsModalRef: BsModalRef,\n public fixtureService: FixtureService,\n private uuidService: UuidService,\n public projectService: ProjectService,\n private previewService: PreviewService,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private presetService: PresetService,\n public configService: ConfigService,\n private modalService: BsModalService\n ) {\n this.fixturePool = [...this.projectService.project.fixtures];\n\n if (this.fixturePool.length > 0) {\n this.selectFixture(this.fixturePool[0]);\n }\n }\n\n ngOnInit() {\n for (let i = 0; i < 512; i++) {\n this.dmxChannels.push(0);\n }\n\n this.loadProfiles();\n }\n\n private loadProfiles() {\n this.loadingProfiles = true;\n\n this.fixtureService.getSearchProfiles().subscribe((profiles) => {\n this.profiles = profiles;\n this.filterProfiles();\n this.loadingProfiles = false;\n });\n }\n\n selectFixture(fixture: Fixture) {\n this.selectedFixtureProfile = undefined;\n if (fixture) {\n this.selectedFixtureProfile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n }\n this.selectedFixture = fixture;\n }\n\n filterProfiles() {\n if (!this.searchExpression || !this.profiles) {\n this.filteredProfiles = this.profiles;\n return;\n }\n\n this.filteredProfiles = [];\n\n const keywords = this.searchExpression.split(' ');\n\n for (const profile of this.profiles) {\n let foundKeywords = 0;\n\n for (const keyword of keywords) {\n if (\n profile.uuid.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||\n profile.name.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||\n profile.manufacturerName.toLowerCase().indexOf(keyword.toLowerCase()) !== -1\n ) {\n foundKeywords++;\n }\n }\n\n if (foundKeywords === keywords.length) {\n this.filteredProfiles.push(profile);\n }\n }\n }\n\n addFixture(searchProfile: FixtureProfile) {\n // Load the profile details, if not already done. There is only a\n // minimal profile passed from the search.\n this.fixtureService.loadProfileByUuid(searchProfile.uuid).subscribe(() => {\n const profile = this.fixtureService.getProfileByUuid(searchProfile.uuid);\n const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);\n this.selectFixture(newFixture);\n });\n }\n\n addCopy(originalFixture: Fixture) {\n const fixture = new Fixture();\n fixture.uuid = this.uuidService.getUuid();\n fixture.profileUuid = originalFixture.profileUuid;\n fixture.name = originalFixture.name;\n fixture.modeShortName = originalFixture.modeShortName;\n fixture.dmxFirstChannel = originalFixture.dmxFirstChannel;\n fixture.dmxUniverseUuid = originalFixture.dmxUniverseUuid;\n\n this.fixturePool.push(fixture);\n this.selectFixture(fixture);\n }\n\n removeFixture(fixture: Fixture) {\n for (let i = 0; i < this.fixturePool.length; i++) {\n if (this.fixturePool[i].uuid === fixture.uuid) {\n if (this.selectedFixture === this.fixturePool[i]) {\n this.selectFixture(undefined);\n }\n this.fixturePool.splice(i, 1);\n break;\n }\n }\n\n if (!this.selectedFixture && this.fixturePool && this.fixturePool.length > 0) {\n this.selectFixture((this.selectedFixture = this.fixturePool[0]));\n }\n\n // remove unused profiles\n for (let i = 0; i < this.projectService.project.fixtureProfiles.length; i++) {\n let profileUsed = false;\n\n for (const fixtureInPool of this.fixturePool) {\n if (fixtureInPool.profileUuid === this.projectService.project.fixtureProfiles[i].uuid) {\n profileUsed = true;\n break;\n }\n }\n\n if (!profileUsed) {\n this.projectService.project.fixtureProfiles.splice(i, 1);\n }\n }\n }\n\n channelOccupied(index: number): boolean {\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {\n return true;\n }\n }\n\n return false;\n }\n\n channelOccupiedStart(index: number): boolean {\n for (const fixture of this.fixturePool) {\n if (index === fixture.dmxFirstChannel) {\n return true;\n }\n }\n\n return false;\n }\n\n channelOccupiedEnd(index: number): boolean {\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (index === fixture.dmxFirstChannel + mode.channels.length - 1) {\n return true;\n }\n }\n\n return false;\n }\n\n channelOverlapped(index: number): boolean {\n let occupiedFixture: Fixture;\n\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {\n if (occupiedFixture) {\n if (occupiedFixture.dmxFirstChannel !== fixture.dmxFirstChannel || occupiedFixture.modeShortName !== fixture.modeShortName) {\n // fixtures are allowed to overlap, if they start at the same channel and\n // use the same mode. otherwise it's not allowed.\n return true;\n }\n } else {\n occupiedFixture = fixture;\n }\n }\n }\n\n return false;\n }\n\n channelMouseDown(event: any) {\n // start dragging\n const selectedIndex = event.target.dataset.index;\n let newSelectedFixture: Fixture;\n\n // find a dragging fixture and select it, but don't change the selection, if the\n // currently selected fixture might also be selected (on overlapped fixtures)\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (selectedIndex >= fixture.dmxFirstChannel && selectedIndex <= fixture.dmxFirstChannel + mode.channels.length - 1) {\n if (this.selectedFixture === fixture) {\n newSelectedFixture = fixture;\n break;\n }\n\n if (!newSelectedFixture) {\n newSelectedFixture = fixture;\n }\n }\n }\n\n if (newSelectedFixture) {\n if (newSelectedFixture !== this.selectedFixture) {\n this.selectFixture(newSelectedFixture);\n }\n\n this.channelDragFixture = newSelectedFixture;\n this.channelDragOffset = selectedIndex - newSelectedFixture.dmxFirstChannel;\n }\n }\n\n channelSelected(index: number): boolean {\n if (!this.selectedFixture) {\n return false;\n }\n\n if (index >= this.selectedFixture.dmxFirstChannel) {\n const mode = this.fixtureService.getModeByFixture(\n this.fixtureService.getProfileByUuid(this.selectedFixture.profileUuid),\n this.selectedFixture\n );\n\n if (index < this.selectedFixture.dmxFirstChannel + mode.channels.length) {\n return true;\n }\n }\n\n return false;\n }\n\n // register mouse up globally (e.g. also outside the DMX mapping)\n @HostListener('window:mouseup', ['$event'])\n mouseUp(event: any) {\n // finish dragging\n this.channelDragFixture = undefined;\n this.channelDragOffset = undefined;\n }\n\n channelMouseOver(event: any) {\n // perform dragging\n const selectedIndex = event.target.dataset.index;\n\n if (\n this.channelDragFixture &&\n selectedIndex - this.channelDragOffset >= 0 &&\n selectedIndex -\n this.channelDragOffset +\n this.fixtureService.getModeByFixture(\n this.fixtureService.getProfileByUuid(this.channelDragFixture.profileUuid),\n this.channelDragFixture\n ).channels.length -\n 1 <=\n 511\n ) {\n this.channelDragFixture.dmxFirstChannel = selectedIndex - this.channelDragOffset;\n }\n }\n\n ok() {\n // don't allow OK if overlapping fixtures exist\n for (let i = 0; i < this.dmxChannels.length; i++) {\n if (this.channelOverlapped(i)) {\n const msg = 'designer.fixture-pool.channel-occupied';\n const title = 'designer.fixture-pool.channel-occupied-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title]);\n });\n\n return;\n }\n }\n\n this.projectService.project.fixtures = this.fixturePool;\n\n this.fixtureService.updateCachedFixtures();\n this.presetService.removeDeletedFixtures();\n this.previewService.updateFixtureSetup();\n this.presetService.updateFixtureSelection();\n this.presetService.fixtureSelectionChanged.next();\n this.presetService.previewLive();\n\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n updateProfiles() {\n this.updatingProfiles = true;\n\n // TODO\n this.fixtureService\n .updateProfiles()\n .pipe(\n finalize(() => {\n this.updatingProfiles = false;\n }),\n catchError(() => {\n const msg = 'designer.fixture-pool.profiles-update-error';\n const title = 'designer.fixture-pool.profiles-update-error-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title]);\n });\n\n return undefined;\n })\n )\n .subscribe(() => {\n this.loadProfiles();\n\n const msg = 'designer.fixture-pool.profiles-updated';\n const title = 'designer.fixture-pool.profiles-updated-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.success(result[msg], result[title]);\n });\n });\n }\n\n createFixtureFromProfileFile() {\n const bsModalRef = this.modalService.show(FixturePoolCreateFromFileComponent, { keyboard: true, ignoreBackdropClick: false });\n (bsModalRef.content as FixturePoolCreateFromFileComponent).onClose.subscribe((profile: FixtureProfile) => {\n const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);\n this.selectFixture(newFixture);\n });\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { FixturePoolComponent } from '../fixture-pool/fixture-pool.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FixturePoolService {\n private fixturePoolOpened = false;\n\n constructor(private modalService: BsModalService) {}\n\n open() {\n if (this.fixturePoolOpened) {\n return;\n }\n\n this.fixturePoolOpened = true;\n const bsModalRef = this.modalService.show(FixturePoolComponent, { keyboard: false, ignoreBackdropClick: true, class: 'modal-full' });\n (bsModalRef.content as FixturePoolComponent).onClose.subscribe((result) => {\n this.fixturePoolOpened = false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HotkeyTargetExcludeService {\n constructor() {}\n\n exclude(event: any): boolean {\n // don't react on certain targets (e.g. the user is inside an input field)\n if (!event.target) {\n return false;\n }\n\n if (event.target.nodeName === 'INPUT') {\n return true;\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ConfigService } from './config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IntroService {\n showIntro = false;\n activeStep = 'start';\n positionTopPercentage = 50;\n positionLeftPercentage = 50;\n stylePosition = 'top: calc(50% - 150px); left: calc(50% - 200px);';\n stepChanged: Subject<void> = new Subject<void>();\n\n constructor(private configService: ConfigService) {}\n\n refresh() {\n // called, as soon as the config has been updated\n if (this.configService.intro) {\n if (localStorage.getItem('showIntro')) {\n this.showIntro = localStorage.getItem('showIntro') === 'true';\n } else {\n this.showIntro = true;\n }\n }\n }\n\n setShowIntro(value: boolean) {\n this.showIntro = value;\n if (value) {\n localStorage.setItem('showIntro', 'true');\n } else {\n localStorage.setItem('showIntro', 'false');\n }\n this.stepChanged.next();\n }\n\n reset() {\n this.activeStep = 'start';\n this.setShowIntro(true);\n this.stepChanged.next();\n }\n\n showStep(step: string): boolean {\n if (!this.showIntro) {\n return false;\n }\n\n if (this.activeStep !== step) {\n return false;\n }\n\n return true;\n }\n\n next() {\n switch (this.activeStep) {\n case 'start':\n this.activeStep = 'preview';\n this.positionTopPercentage = 60;\n this.positionLeftPercentage = 40;\n break;\n case 'preview':\n this.activeStep = 'fixtures';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 30;\n break;\n case 'fixtures':\n this.activeStep = 'presets';\n this.positionTopPercentage = 30;\n this.positionLeftPercentage = 50;\n break;\n case 'presets':\n this.activeStep = 'capabilities';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 60;\n break;\n case 'capabilities':\n this.activeStep = 'scenes';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 40;\n break;\n case 'scenes':\n this.activeStep = 'timeline';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 50;\n break;\n case 'timeline':\n this.activeStep = 'finish';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 50;\n break;\n }\n\n this.stepChanged.next();\n }\n\n back() {\n switch (this.activeStep) {\n case 'preview':\n this.activeStep = 'start';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 50;\n break;\n case 'fixtures':\n this.activeStep = 'preview';\n this.positionTopPercentage = 60;\n this.positionLeftPercentage = 40;\n break;\n case 'presets':\n this.activeStep = 'fixtures';\n this.positionTopPercentage = 30;\n this.positionLeftPercentage = 50;\n break;\n case 'capabilities':\n this.activeStep = 'presets';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 30;\n break;\n case 'scenes':\n this.activeStep = 'capabilities';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 60;\n break;\n case 'timeline':\n this.activeStep = 'scenes';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 40;\n break;\n case 'finish':\n this.activeStep = 'timeline';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 50;\n break;\n }\n\n this.stepChanged.next();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n selector: 'lib-user-login',\n templateUrl: './user-login.component.html',\n styleUrls: ['./user-login.component.css'],\n})\nexport class UserLoginComponent implements OnInit {\n error = '';\n loggingIn = false;\n\n email = '';\n password = '';\n\n // emits, when logged in\n subject: Subject<void>;\n\n constructor(private bsModalRef: BsModalRef, private userService: UserService) {}\n\n ngOnInit() {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n login() {\n this.loggingIn = true;\n this.error = '';\n\n if (!this.email || !this.password) {\n this.error = 'fill-all-fields';\n this.loggingIn = false;\n return;\n }\n\n this.userService.login(this.email, this.password).subscribe(\n () => {\n this.bsModalRef.hide();\n if (this.subject) {\n this.subject.next();\n }\n },\n (response) => {\n if (response.error && response.error.error) {\n this.error = response.error.error;\n } else {\n this.error = 'internal';\n }\n this.loggingIn = false;\n }\n );\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.login();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { UserService } from '../../services/user.service';\nimport { UserLoginComponent } from '../user-login/user-login.component';\n\n@Component({\n selector: 'lib-user-register',\n templateUrl: './user-register.component.html',\n styleUrls: ['./user-register.component.css'],\n})\nexport class UserRegisterComponent implements OnInit {\n error = '';\n registering = false;\n\n username = '';\n email = '';\n password = '';\n passwordRepeat = '';\n\n // emits, when logged in\n subject: Subject<void>;\n\n constructor(private bsModalRef: BsModalRef, private modalService: BsModalService, private userService: UserService) {}\n\n ngOnInit() {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n login() {\n this.bsModalRef.hide();\n this.modalService.show(UserLoginComponent, { keyboard: true, ignoreBackdropClick: false, initialState: { subject: this.subject } });\n }\n\n private emailIsValid(email: string): boolean {\n // tslint:disable-next-line:max-line-length\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n }\n\n register() {\n this.registering = true;\n this.error = '';\n\n if (!this.username || !this.email || !this.password || !this.passwordRepeat) {\n this.error = 'fill-all-fields';\n this.registering = false;\n return;\n }\n\n if (!this.emailIsValid(this.email)) {\n this.error = 'email-valid';\n this.registering = false;\n return;\n }\n\n if (this.password !== this.passwordRepeat) {\n this.error = 'password-mismatch';\n this.registering = false;\n return;\n }\n\n this.userService.register(this.email, this.username, this.password).subscribe(\n () => {\n // automatically login after registering\n this.userService.login(this.email, this.password).subscribe(() => {\n this.registering = false;\n this.bsModalRef.hide();\n });\n },\n (response) => {\n if (response.error && response.error.error) {\n this.error = response.error.error;\n } else {\n this.error = 'internal';\n }\n this.registering = false;\n }\n );\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.register();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable, of, Subject } from 'rxjs';\nimport { UserRegisterComponent } from '../user/user-register/user-register.component';\nimport { ConfigService } from './config.service';\nimport { UserService } from './user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserEnsureLoginService {\n constructor(private userService: UserService, private modalService: BsModalService, private configService: ConfigService) {}\n\n // show the login form and log a user in, if required\n login(): Observable<void> {\n if (this.userService.isLoggedIn()) {\n return of(null);\n }\n\n if (!this.configService.loginAvailable) {\n return of(null);\n }\n\n const subject = new Subject<void>();\n this.modalService.show(UserRegisterComponent, { keyboard: true, ignoreBackdropClick: false, initialState: { subject } });\n return subject;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Composition } from '../../models/composition';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectService } from '../../services/project.service';\nimport { TimelineService } from '../../services/timeline.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-app-composition-settings',\n templateUrl: './composition-settings.component.html',\n styleUrls: ['./composition-settings.component.css'],\n})\nexport class CompositionSettingsComponent implements OnInit {\n composition: Composition;\n existingCompositionNames: string[] = [];\n\n public onClose: Subject<number> = new Subject();\n\n public dropzoneConfig: DropzoneConfigInterface;\n public uploadMessage: string;\n\n public existingFiles: string[] = [];\n public filteredExistingFiles: string[] = [];\n\n public uploading = false;\n\n constructor(\n public bsModalRef: BsModalRef,\n private timelineService: TimelineService,\n public configService: ConfigService,\n private translateService: TranslateService,\n private http: HttpClient,\n private warningDialogService: WarningDialogService,\n private toastrService: ToastrService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit() {\n const projectId = this.projectService.project.id ? this.projectService.project.id : '';\n this.dropzoneConfig = {\n url: this.configService.restUrl + 'file/upload?compositionUuid=' + this.composition.uuid + '&projectId=' + projectId,\n addRemoveLinks: false,\n maxFilesize: 100 /* 100 MB */,\n acceptedFiles: 'audio/*',\n timeout: 0,\n parallelUploads: 1,\n previewTemplate: `\n <div class=\"dz-preview dz-file-preview\">\n <!-- The attachment details -->\n <div class=\"dz-details\" style=\"text-align: left\">\n <i class=\"fa fa-file-o\"></i> <span data-dz-name></span> <small>\n <span class=\"label label-default file-size\" data-dz-size></span></small>\n </div>\n\n <!--div class=\"mt-5\">\n <span data-dz-errormessage></span>\n </div-->\n\n <div class=\"progress mt-4 mb-1\" style=\"height: 10px\">\n <div class=\"progress-bar progress-bar-striped progress-bar-animated\"\n role=\"progressbar\" style=\"width:0%;\" data-dz-uploadprogress>\n </div>\n </div>\n </div>\n `,\n };\n\n this.translateService\n .get('designer.misc.dropzone-message')\n .pipe(\n map((result) => {\n this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n })\n )\n .subscribe();\n\n this.loadFiles();\n\n if (this.timelineService.externalCompositionsAvailable) {\n this.timelineService.getExternalCompositionNames().subscribe((compositionNames) => {\n this.existingCompositionNames = compositionNames;\n });\n }\n }\n\n ok() {\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n\n private getNameFromFile(data: any): string {\n return data.name;\n }\n\n private loadFiles() {\n if (!this.configService.enableMediaLibrary) {\n return;\n }\n\n this.http\n .get('file/list')\n .pipe(\n map((response: object[]) => {\n this.existingFiles = [];\n\n for (const file of response) {\n // only load audio files\n if ((file as any).audioFile) {\n this.existingFiles.push(this.getNameFromFile((file as any).audioFile));\n }\n }\n\n this.filterExistingFiles();\n })\n )\n .subscribe();\n }\n\n public onUploadError(args: any) {\n const msg = 'designer.misc.toast-upload-error';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n // Hide the preview element\n args[0].previewElement.hidden = true;\n });\n }\n\n public onUploadSuccess(args: any) {\n this.loadFiles();\n\n // allow to guess the bpm of the newly uploaded file\n this.composition.tempoGuessed = false;\n\n // hide the preview element\n args[0].previewElement.hidden = true;\n\n // select this file\n this.composition.audioFileName = args[0].name;\n\n if (this.configService.enableMediaLibrary) {\n // the file has been uploaded to the media library\n this.composition.audioFileInLibrary = true;\n }\n }\n\n public onQueueComplete(args: any) {\n this.uploading = false;\n }\n\n public onAddedFile(args: any) {\n this.uploading = true;\n }\n\n // Filter the existing files\n filterExistingFiles(searchValue?: string) {\n if (!searchValue) {\n this.filteredExistingFiles = this.existingFiles;\n return;\n }\n\n this.filteredExistingFiles = [];\n\n for (const file of this.existingFiles) {\n if (file.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1) {\n this.filteredExistingFiles.push(file);\n }\n }\n }\n\n selectExistingFile(existingFile: string) {\n this.composition.audioFileName = existingFile;\n\n // the file has been selected from the media library\n this.composition.audioFileInLibrary = true;\n }\n\n deleteFile(existingFile: string) {\n this.warningDialogService\n .show('designer.timeline.warning-delete-file')\n .pipe(\n map((result) => {\n if (result) {\n this.http\n .post('file/delete?name=' + existingFile + '&type=AUDIO', undefined)\n .pipe(\n map((response: Response) => {\n this.loadFiles();\n })\n )\n .subscribe();\n }\n })\n )\n .subscribe();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { TimelineService } from '../../services/timeline.service';\n\n@Component({\n selector: 'lib-app-timeline-grid',\n templateUrl: './timeline-grid.component.html',\n styleUrls: ['./timeline-grid.component.css'],\n})\nexport class TimelineGridComponent implements OnInit {\n public gridType: string;\n public beatsPerMinute: number;\n public timeSignatureUpper: number;\n public timeSignatureLower: number;\n public snapToGrid: boolean;\n public gridOffsetMillis: number;\n public gridResolution: number;\n\n constructor(public bsModalRef: BsModalRef, public timelineService: TimelineService) {\n this.gridType = timelineService.selectedComposition.gridType;\n this.beatsPerMinute = timelineService.selectedComposition.beatsPerMinute;\n this.timeSignatureUpper = timelineService.selectedComposition.timeSignatureUpper;\n this.timeSignatureLower = timelineService.selectedComposition.timeSignatureLower;\n this.snapToGrid = timelineService.selectedComposition.snapToGrid;\n this.gridOffsetMillis = timelineService.selectedComposition.gridOffsetMillis;\n this.gridResolution = timelineService.selectedComposition.gridResolution;\n }\n\n ngOnInit() {}\n\n ok() {\n this.timelineService.selectedComposition.gridType = this.gridType;\n this.timelineService.selectedComposition.beatsPerMinute = this.beatsPerMinute;\n this.timelineService.selectedComposition.timeSignatureUpper = this.timeSignatureUpper;\n this.timelineService.selectedComposition.timeSignatureLower = this.timeSignatureLower;\n this.timelineService.selectedComposition.snapToGrid = this.snapToGrid;\n this.timelineService.selectedComposition.gridOffsetMillis = this.gridOffsetMillis;\n this.timelineService.selectedComposition.gridResolution = this.gridResolution;\n\n this.timelineService.updateGrid();\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Composition } from '../models/composition';\nimport { ConfigService } from '../services/config.service';\nimport { HotkeyTargetExcludeService } from '../services/hotkey-target-exclude.service';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { TimelineService } from '../services/timeline.service';\nimport { UuidService } from '../services/uuid.service';\nimport { WarningDialogService } from '../services/warning-dialog.service';\nimport { CompositionSettingsComponent } from './composition-settings/composition-settings.component';\nimport { TimelineGridComponent } from './timeline-grid/timeline-grid.component';\n\n@Component({\n selector: 'lib-app-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.css'],\n})\nexport class TimelineComponent implements OnInit, AfterViewInit {\n @ViewChild('waveWrapper')\n waveWrapper: ElementRef;\n\n @ViewChild('waveElement')\n waveElement: ElementRef;\n\n private lastHeight: number;\n private lastWidth: number;\n\n constructor(\n public timelineService: TimelineService,\n private changeDetectorRef: ChangeDetectorRef,\n private modalService: BsModalService,\n private uuidService: UuidService,\n public projectService: ProjectService,\n private hotkeyTargetExcludeService: HotkeyTargetExcludeService,\n private warningDialogService: WarningDialogService,\n private http: HttpClient,\n private configService: ConfigService,\n private presetService: PresetService,\n public introService: IntroService\n ) {\n this.timelineService.waveSurferReady.subscribe(() => {\n this.onResize();\n });\n this.timelineService.detectChanges.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnInit() {}\n\n ngAfterViewInit() {}\n\n @HostListener('window:resize')\n public onResize() {\n if (!this.waveElement) {\n return;\n }\n\n // Hide wavesurfer to calculate the height, because it will grow infinitely\n // otherwise\n this.waveElement.nativeElement.style.display = 'none';\n const height = this.waveWrapper.nativeElement.clientHeight;\n this.waveElement.nativeElement.style.display = 'block';\n\n const width = this.waveWrapper.nativeElement.clientWidth;\n\n if (!this.lastHeight || this.lastHeight !== height || !this.lastWidth || this.lastWidth !== width) {\n // Set height and redraw\n if (this.timelineService.waveSurfer) {\n this.timelineService.waveSurfer.setHeight(height);\n }\n\n this.lastHeight = height;\n this.lastWidth = width;\n }\n }\n\n play() {\n this.timelineService.playState = 'playing';\n this.presetService.previewLive(\n this.timelineService.selectedComposition.name,\n Math.round(this.timelineService.waveSurfer.getCurrentTime() * 1000)\n );\n this.timelineService.waveSurfer.play();\n }\n\n pause() {\n this.timelineService.playState = 'paused';\n this.presetService.stopPreviewPlay();\n this.timelineService.waveSurfer.pause();\n }\n\n rewind() {\n this.timelineService.playState = 'paused';\n this.pause();\n this.timelineService.waveSurfer.seekTo(0);\n }\n\n addRegion(waveSurferRegion?: any) {\n this.timelineService.addRegion(waveSurferRegion);\n }\n\n removeRegion() {\n this.timelineService.removeRegion();\n }\n\n openGridSettings() {\n const bsModalRef = this.modalService.show(TimelineGridComponent, { keyboard: true, ignoreBackdropClick: false, class: '' });\n }\n\n private afterDeleteFile() {\n this.timelineService.deleteSelectedComposition();\n }\n\n removeComposition() {\n this.warningDialogService\n .show('designer.timeline.warning-delete-composition')\n .pipe(\n map((result) => {\n if (result) {\n if (this.configService.enableMediaLibrary) {\n // don't delete the file from the library\n this.afterDeleteFile();\n } else {\n // the composition uuid and extension is used as the file name\n this.http\n .post('file/delete?compositionUuid=' + this.timelineService.selectedComposition.uuid, undefined)\n .pipe(\n map((response: Response) => {\n this.afterDeleteFile();\n })\n )\n .subscribe();\n }\n }\n })\n )\n .subscribe();\n }\n\n private openCompositionSettings(compositionIndex?: number, newComposition?: Composition) {\n const editComposition: Composition =\n newComposition || JSON.parse(JSON.stringify(this.projectService.project.compositions[compositionIndex]));\n\n const bsModalRef = this.modalService.show(CompositionSettingsComponent, {\n keyboard: false,\n ignoreBackdropClick: true,\n class: '',\n initialState: { composition: editComposition },\n });\n\n (bsModalRef.content as CompositionSettingsComponent).onClose.subscribe((result) => {\n if (result === 1) {\n // OK has been pressed -> save\n if (newComposition) {\n this.projectService.project.compositions.push(editComposition);\n this.timelineService.selectedCompositionIndex = this.projectService.project.compositions.length - 1;\n\n // create the composition, if externally necessary\n if (this.timelineService.externalCompositionsAvailable) {\n // TODO check, if this composition already exists externally and create it, if not\n // maybe not needed and even confusing?\n }\n } else {\n this.projectService.project.compositions[compositionIndex] = editComposition;\n }\n\n this.selectComposition(this.timelineService.selectedCompositionIndex);\n }\n });\n }\n\n compositionSettings() {\n this.openCompositionSettings(this.timelineService.selectedCompositionIndex);\n }\n\n addComposition() {\n // create a new composition\n const composition = new Composition();\n composition.uuid = this.uuidService.getUuid();\n composition.name = 'New Composition';\n\n this.openCompositionSettings(undefined, composition);\n }\n\n selectComposition(index: number) {\n this.timelineService.selectCompositionIndex(index);\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.hotkeyTargetExcludeService.exclude(event)) {\n return;\n }\n\n if (!this.timelineService.selectedComposition) {\n return;\n }\n\n if (event.key === ' ') {\n if (this.timelineService.playState === 'paused') {\n this.play();\n } else {\n this.pause();\n }\n\n // prevent checkboxes being toggled, if in focus e.g.\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n setRegionStartMillis(value: any) {\n if (!this.timelineService.selectedPlaybackRegion) {\n return;\n }\n\n if (isNaN(value) || value < 0) {\n return;\n }\n\n this.timelineService.selectedPlaybackRegion.startMillis = +value;\n this.timelineService.updateSelectedRegion();\n }\n\n setRegionEndMillis(value: any) {\n if (!this.timelineService.selectedPlaybackRegion) {\n return;\n }\n\n if (isNaN(value) || value < 0) {\n return;\n }\n\n this.timelineService.selectedPlaybackRegion.endMillis = +value;\n this.timelineService.updateSelectedRegion();\n }\n}\n","import { AfterViewInit, Component, HostListener, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { map } from 'rxjs/operators';\nimport Split from 'split.js';\nimport { PreviewComponent } from './preview/preview.component';\nimport { ProjectBrowserComponent } from './project/project-browser/project-browser.component';\nimport { ProjectImportComponent } from './project/project-import/project-import.component';\nimport { ProjectSaveComponent } from './project/project-save/project-save.component';\nimport { ProjectShareComponent } from './project/project-share/project-share.component';\nimport { ConfigService } from './services/config.service';\nimport { ErrorDialogService } from './services/error-dialog.service';\nimport { FixturePoolService } from './services/fixture-pool.service';\nimport { FixtureService } from './services/fixture.service';\nimport { HotkeyTargetExcludeService } from './services/hotkey-target-exclude.service';\nimport { IntroService } from './services/intro.service';\nimport { ProjectLoadService } from './services/project-load.service';\nimport { ProjectService } from './services/project.service';\nimport { TimelineService } from './services/timeline.service';\nimport { UserEnsureLoginService } from './services/user-ensure-login.service';\nimport { UserService } from './services/user.service';\nimport { WarningDialogService } from './services/warning-dialog.service';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { UserRegisterComponent } from './user/user-register/user-register.component';\n\n@Component({\n selector: 'lib-designer',\n templateUrl: './designer.component.html',\n styleUrls: ['./designer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DesignerComponent implements OnInit, AfterViewInit {\n @Input()\n set menuHeightPx(value: number) {\n this.configService.menuHeightPx = value;\n this.configService.menuHeightChanged.next();\n }\n\n @Input()\n set externalCompositionsAvailable(value: boolean) {\n this.timelineService.externalCompositionsAvailable = value;\n }\n\n @Input()\n set restUrl(value: string) {\n this.configService.restUrl = value;\n }\n\n @Input()\n set enableMediaLibrary(value: boolean) {\n this.configService.enableMediaLibrary = value;\n }\n\n @Input()\n set loginAvailable(value: boolean) {\n this.configService.loginAvailable = value;\n }\n\n @Input()\n set shareAvailable(value: boolean) {\n this.configService.shareAvailable = value;\n }\n\n @Input()\n set languageSwitch(value: boolean) {\n this.configService.languageSwitch = value;\n }\n\n @Input()\n set newProjectTemplate(value: boolean) {\n this.configService.newProjectTemplate = value;\n }\n\n @Input()\n set livePreview(value: boolean) {\n this.configService.livePreview = value;\n }\n\n @Input()\n set localProfiles(value: boolean) {\n this.configService.localProfiles = value;\n }\n\n @Input()\n set intro(value: boolean) {\n this.configService.intro = value;\n this.introService.refresh();\n }\n\n @Input()\n set uniqueProjectNames(value: boolean) {\n this.configService.uniqueProjectNames = value;\n }\n\n // the size of the menu used in the designer\n private designerMenuSizePx = 20;\n\n private splitGutterSizePx = 13;\n\n public totalMenuHeightPx = 0;\n\n currentTab = 'properties';\n\n @ViewChild(PreviewComponent)\n previewComponent: PreviewComponent;\n\n @ViewChild(TimelineComponent)\n timelineComponent: TimelineComponent;\n\n constructor(\n private translateService: TranslateService,\n private projectService: ProjectService,\n public configService: ConfigService,\n private fixturePoolService: FixturePoolService,\n private hotkeyTargetExcludeService: HotkeyTargetExcludeService,\n private modalService: BsModalService,\n public userService: UserService,\n private userEnsureLoginService: UserEnsureLoginService,\n private toastrService: ToastrService,\n private projectLoadService: ProjectLoadService,\n private warningDialogService: WarningDialogService,\n private errorDialogService: ErrorDialogService,\n private fixtureService: FixtureService,\n private timelineService: TimelineService,\n public introService: IntroService\n ) {\n this.configService.menuHeightChanged.subscribe(() => {\n this.calcTotalMenuHeight();\n });\n }\n\n ngOnInit() {\n if (localStorage.getItem('language')) {\n this.translateService.use(localStorage.getItem('language'));\n } else {\n this.translateService.use('en');\n }\n\n this.calcTotalMenuHeight();\n\n const urlParams = new URLSearchParams(window.location.search);\n const projectId = urlParams.get('id');\n const projectName = urlParams.get('name');\n let shareToken = urlParams.get('token');\n\n if (projectId) {\n // load a project by query param ID\n if (!shareToken) {\n shareToken = '';\n }\n\n this.projectLoadService.load(Number.parseInt(projectId), projectName, shareToken).subscribe(\n () => {},\n (response) => {\n let error = response && response.error ? response.error.error : 'unknown';\n\n let msg = '';\n\n if (error === 'no-permission') {\n msg = 'designer.project.open-no-permission-error';\n error = undefined;\n } else {\n msg = 'designer.project.open-error';\n }\n\n this.errorDialogService.show(msg, error).subscribe(() => {\n this.projectLoadService.new();\n });\n }\n );\n } else if (this.userService.isLoggedIn() && (this.userService.getAutoLoadProjectId() || this.userService.getAutoLoadProjectName())) {\n // restore the last saved project\n this.projectLoadService.load(this.userService.getAutoLoadProjectId(), this.userService.getAutoLoadProjectName()).subscribe(\n () => {},\n (response) => {\n const msg = 'designer.project.open-error';\n const error = response && response.error ? response.error.error : 'unknown';\n\n this.errorDialogService.show(msg, error).subscribe(() => {\n this.projectLoadService.new();\n });\n }\n );\n } else {\n if (this.configService.newProjectTemplate) {\n // load the new project template\n this.projectLoadService.template();\n } else {\n this.projectLoadService.new();\n }\n }\n }\n\n private calcTotalMenuHeight() {\n this.totalMenuHeightPx = this.designerMenuSizePx + this.splitGutterSizePx + this.configService.menuHeightPx;\n }\n\n private onResize() {\n if (this.previewComponent) {\n this.previewComponent.onResize();\n }\n\n if (this.timelineComponent) {\n this.timelineComponent.onResize();\n }\n }\n\n ngAfterViewInit(): void {\n // Set up the splitter\n setTimeout(() => {\n Split(['#row1', '#row2', '#row3'], {\n sizes: [42, 38, 20],\n direction: 'vertical',\n cursor: 'row-resize',\n snapOffset: 0,\n gutterSize: this.splitGutterSizePx,\n onDrag: this.onResize.bind(this),\n });\n\n Split(['#scenes', '#presets', '#preview'], {\n sizes: [15, 15, 70],\n snapOffset: 0,\n gutterSize: this.splitGutterSizePx,\n onDrag: this.onResize.bind(this),\n });\n\n Split(['#capabilities', '#fixtures', '#masterDimmer'], {\n sizes: [74, 18, 8],\n snapOffset: 0,\n gutterSize: this.splitGutterSizePx,\n onDrag: this.onResize.bind(this),\n minSize: 50,\n });\n\n this.onResize();\n });\n }\n\n openTab(tab: string) {\n // open a side tab (e.g. effects, channels, settings, etc.)\n\n if (tab === 'settings') {\n this.fixtureService.settingsSelection = true;\n } else {\n this.fixtureService.settingsSelection = false;\n }\n\n this.currentTab = tab;\n }\n\n openFixturePool() {\n this.fixturePoolService.open();\n }\n\n projectNew() {\n this.warningDialogService\n .show('designer.misc.warning-proceed-unsaved')\n .pipe(\n map((result) => {\n if (result) {\n this.projectLoadService.new();\n }\n })\n )\n .subscribe();\n }\n\n projectOpen() {\n this.warningDialogService\n .show('designer.misc.warning-proceed-unsaved')\n .pipe(\n map((result) => {\n if (result) {\n this.userEnsureLoginService.login().subscribe(() => {\n this.modalService.show(ProjectBrowserComponent, { keyboard: true, ignoreBackdropClick: false });\n });\n }\n })\n )\n .subscribe();\n }\n\n projectSave() {\n if (this.projectService.project.name) {\n // this project has been saved before -> just save it again\n this.projectService.save(this.projectService.project);\n } else {\n // this project has not yet been saved -> show the save as-dialog\n this.userEnsureLoginService.login().subscribe(() => {\n this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });\n });\n }\n }\n\n projectSaveAs() {\n this.userEnsureLoginService.login().subscribe(() => {\n this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });\n });\n }\n\n userRegister() {\n this.modalService.show(UserRegisterComponent, { keyboard: true, ignoreBackdropClick: false });\n }\n\n projectImport() {\n this.warningDialogService\n .show('designer.misc.warning-proceed-unsaved')\n .pipe(\n map((result) => {\n if (result) {\n this.modalService.show(ProjectImportComponent, { keyboard: true, ignoreBackdropClick: false });\n }\n })\n )\n .subscribe();\n }\n\n projectExport() {\n const json = JSON.stringify(this.projectService.project, null, 2);\n const element = document.createElement('a');\n element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(json));\n element.setAttribute('download', this.projectService.project.name + '.rsd');\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n\n projectShare() {\n if (!this.projectService.project.id) {\n // a save is required first\n this.errorDialogService.show('designer.project.share-no-save').subscribe();\n return;\n }\n\n // ignore backdrop click, because selecting the link text will also close the modal\n this.modalService.show(ProjectShareComponent, { keyboard: true, ignoreBackdropClick: true });\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyboardEvent(event: any) {\n if (this.hotkeyTargetExcludeService.exclude(event)) {\n return;\n }\n\n if (event.key === 'p') {\n this.openFixturePool();\n\n // prevent checkboxes being toggled, if in focus e.g.\n event.stopPropagation();\n event.preventDefault();\n }\n\n if ((event.ctrlKey || event.metaKey) && event.key === 'n') {\n this.projectNew();\n event.stopPropagation();\n event.preventDefault();\n }\n\n if ((event.ctrlKey || event.metaKey) && event.key === 's') {\n this.projectSave();\n event.stopPropagation();\n event.preventDefault();\n }\n\n if ((event.ctrlKey || event.metaKey) && event.key === 'o') {\n this.projectOpen();\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n switchLanguage(language: string) {\n this.translateService.use(language);\n localStorage.setItem('language', language);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sort',\n})\nexport class ArraySortPipe implements PipeTransform {\n transform(array: any, field: string): any[] {\n if (!Array.isArray(array)) {\n return;\n }\n array.sort((a: any, b: any) => {\n if (a[field] < b[field]) {\n return -1;\n } else if (a[field] > b[field]) {\n return 1;\n } else {\n return 0;\n }\n });\n return array;\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { EffectCurveProfileChannels } from '../../models/effect-curve-profile-channel';\nimport { FixtureCapability, FixtureCapabilityColor, FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PresetService } from '../../services/preset.service';\nimport { EffectCurve } from './../../models/effect-curve';\nimport { AnimationService } from './../../services/animation.service';\n\n@Component({\n selector: 'lib-app-effect-curve',\n templateUrl: './effect-curve.component.html',\n styleUrls: ['./effect-curve.component.css'],\n})\nexport class EffectCurveComponent implements OnInit {\n private gridUpdateSubscription: Subscription;\n private ctx: any;\n private maxWidth: number;\n private maxHeight: number;\n\n public lengthMillisMin = 20;\n public lengthMillisMax = 8000;\n public amplitudeMin = 0;\n public amplitudeMax = 4;\n public percentageMin = 0;\n public percentageMax = 1;\n public phaseMillisMin = -1000;\n public phaseMillisMax = 1000;\n public phasingMillisMin = 0;\n public phasingMillisMax = 1000;\n\n // the selected capabilities\n public availableCapabilities: FixtureCapability[] = [];\n\n // the selected channels\n public availableChannels: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n public availableProfiles: FixtureProfile[] = [];\n public selectedProfiles: FixtureProfile[] = [];\n\n @Input() curve: EffectCurve;\n\n // whether the effect is currently being edited (open) or not\n @Input()\n set isSelected(value: boolean) {\n if (value) {\n // start the update timer\n if (!this.gridUpdateSubscription) {\n this.gridUpdateSubscription = timer(0, 15).subscribe(() => {\n this.redraw();\n });\n }\n } else {\n // stop the update timer\n if (this.gridUpdateSubscription) {\n this.gridUpdateSubscription.unsubscribe();\n this.gridUpdateSubscription = undefined;\n }\n }\n }\n\n @ViewChild('curveGrid', { static: true }) curveGrid: ElementRef;\n\n constructor(\n public presetService: PresetService,\n private animationService: AnimationService,\n private fixtureService: FixtureService,\n private translate: TranslateService\n ) {\n this.presetService.fixtureSelectionChanged.subscribe(() => {\n this.updateCapabilitiesAndChannels();\n });\n\n this.updateCapabilitiesAndChannels();\n }\n\n ngOnInit() {\n const canvas = this.curveGrid.nativeElement;\n this.ctx = canvas.getContext('2d');\n this.maxWidth = canvas.width;\n this.maxHeight = canvas.height;\n\n this.redraw();\n }\n\n private drawCurrentValue(currMillis: number, radius: number, lineWidth: number, durationMillis: number, maxHeight: number) {\n const currVal = 1 - this.curve.getValueAtMillis(currMillis);\n\n const x = (this.maxWidth * (currMillis % durationMillis)) / durationMillis;\n const y = maxHeight * currVal + lineWidth;\n\n this.ctx.beginPath();\n this.ctx.arc(x, y, radius, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = '#fff';\n this.ctx.fill();\n this.ctx.lineWidth = 1;\n this.ctx.strokeStyle = '#000';\n this.ctx.stroke();\n }\n\n private getPhasingCount(): number {\n let count = 0;\n const countedDmxChannels: number[] = [];\n\n for (const fixtureUuid of this.presetService.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getFixtureByUuid(fixtureUuid);\n\n if (!countedDmxChannels.includes(fixture.dmxFirstChannel)) {\n count++;\n countedDmxChannels.push(fixture.dmxFirstChannel);\n }\n }\n\n return count;\n }\n\n redraw() {\n this.ctx.clearRect(0, 0, this.maxWidth, this.maxHeight);\n this.ctx.fillStyle = '#fff';\n this.ctx.strokeStyle = '#fff';\n\n // the width of the lines\n const width = 3;\n\n this.ctx.lineWidth = width;\n\n let oldX: number;\n let oldY: number;\n\n let step = 50;\n\n if (length < 500) {\n step = 5;\n }\n\n const durationMillis = this.curve.lengthMillis * Math.max(Math.round(4 - this.curve.lengthMillis / 1000), 1);\n const maxHeight = this.maxHeight - width * 2;\n\n // draw the curve\n for (let i = -step * 2; i < durationMillis + step * 2; i += step) {\n const val = 1 - this.curve.getValueAtMillis(i);\n\n // Scale the values to the grid dimensions\n const x = (this.maxWidth * i) / durationMillis;\n const y = maxHeight * val + width;\n\n if (oldY) {\n this.ctx.beginPath();\n this.ctx.moveTo(oldX, oldY);\n this.ctx.lineTo(x, y);\n this.ctx.stroke();\n }\n\n oldX = x;\n oldY = y;\n }\n\n // draw the current value\n this.drawCurrentValue(this.animationService.timeMillis % durationMillis, 5, width, durationMillis, maxHeight);\n\n // draw the phasing values (chase), if required\n let phasingCount = 0;\n\n if (this.curve.phasingMillis > 0 && this.presetService.selectedPreset) {\n phasingCount = this.getPhasingCount();\n }\n\n for (let i = 1; i < phasingCount; i++) {\n this.drawCurrentValue(\n (this.animationService.timeMillis - i * this.curve.phasingMillis) % durationMillis,\n 3,\n width,\n durationMillis,\n maxHeight\n );\n }\n }\n\n private calculateChannelCapabilities() {\n this.availableChannels = this.presetService.getSelectedProfileChannels(this.selectedProfiles);\n }\n\n changeProfileSelection($event: any, profile: FixtureProfile) {\n if (this.selectedProfiles.indexOf(profile) >= 0) {\n this.selectedProfiles.splice(this.selectedProfiles.indexOf(profile), 1);\n } else {\n this.selectedProfiles.push(profile);\n }\n\n this.calculateChannelCapabilities();\n }\n\n private updateCapabilitiesAndChannels() {\n // capabilities\n this.availableCapabilities = [];\n\n if (this.presetService.hasCapabilityDimmer()) {\n const capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.Intensity;\n this.availableCapabilities.push(capability);\n }\n\n if (this.presetService.hasCapabilityColor()) {\n let capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.ColorIntensity;\n capability.color = FixtureCapabilityColor.Red;\n this.availableCapabilities.push(capability);\n\n capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.ColorIntensity;\n capability.color = FixtureCapabilityColor.Green;\n this.availableCapabilities.push(capability);\n\n capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.ColorIntensity;\n capability.color = FixtureCapabilityColor.Blue;\n this.availableCapabilities.push(capability);\n }\n\n if (this.presetService.hasCapabilityPanTilt()) {\n let capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.Pan;\n this.availableCapabilities.push(capability);\n\n capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.Tilt;\n this.availableCapabilities.push(capability);\n }\n\n // calculate all profiles\n this.availableProfiles = this.presetService.getSelectedProfiles();\n\n // select all profiles by default\n this.selectedProfiles = [...this.availableProfiles];\n\n // calculate all channels\n this.calculateChannelCapabilities();\n }\n\n getCapabilityName(capability: FixtureCapability): Observable<string> {\n return this.translate\n .get(['designer.fixtureCapabilityType.' + capability.type, 'designer.fixtureCapabilityColor.' + capability.color])\n .pipe(\n map((result: string) => {\n let name = '';\n name += result['designer.fixtureCapabilityType.' + capability.type];\n\n if (capability.color) {\n name += ', ' + result['designer.fixtureCapabilityColor.' + capability.color];\n } else {\n return name;\n }\n\n return name;\n })\n );\n }\n\n capabilityChecked(capability: FixtureCapability): boolean {\n for (const existingCapability of this.curve.capabilities) {\n if (\n this.fixtureService.capabilitiesMatch(\n existingCapability.type,\n capability.type,\n existingCapability.color,\n capability.color,\n null,\n null,\n null,\n null\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n toggleCapability(event: any, capability: FixtureCapability) {\n if (event.currentTarget.checked) {\n // add the capability\n this.curve.capabilities.push(capability);\n } else {\n // Remove the channel\n for (let i = 0; i < this.curve.capabilities.length; i++) {\n const existingCapability = this.curve.capabilities[i];\n if (\n this.fixtureService.capabilitiesMatch(\n existingCapability.type,\n capability.type,\n existingCapability.color,\n capability.color,\n null,\n null,\n null,\n null\n )\n ) {\n this.curve.capabilities.splice(i, 1);\n }\n }\n }\n\n this.presetService.previewLive();\n }\n\n getChannelName(profileName: string, channelName: string) {\n if (this.availableProfiles.length > 1) {\n return profileName + ' - ' + channelName;\n }\n\n return channelName;\n }\n\n channelChecked(profile: FixtureProfile, channel: CachedFixtureChannel): boolean {\n for (const profileChannels of this.curve.channels) {\n if (profileChannels.profileUuid === profile.uuid) {\n if (profileChannels.channels.includes(channel.name)) {\n return true;\n }\n\n break;\n }\n }\n\n return false;\n }\n\n toggleChannel(event: any, profile: FixtureProfile, channel: CachedFixtureChannel) {\n // add the profile, if necessary\n let profileContained = false;\n for (const profileChannels of this.curve.channels) {\n if (profileChannels.profileUuid === profile.uuid) {\n profileContained = true;\n break;\n }\n }\n\n if (!profileContained) {\n const profileChannels = new EffectCurveProfileChannels();\n profileChannels.profileUuid = profile.uuid;\n this.curve.channels.push(profileChannels);\n }\n\n // add or delete the channel\n for (const profileChannels of this.curve.channels) {\n if (profileChannels.profileUuid === profile.uuid) {\n const index = profileChannels.channels.indexOf(channel.name);\n\n if (index >= 0) {\n profileChannels.channels.splice(index, 1);\n } else {\n profileChannels.channels.push(channel.name);\n }\n\n break;\n }\n }\n\n this.presetService.previewLive();\n }\n\n setLengthMillis(value: any) {\n if (!isNaN(value) && value >= this.lengthMillisMin && value <= this.lengthMillisMax) {\n this.curve.lengthMillis = +value;\n this.presetService.previewLive();\n }\n }\n\n setAmplitude(value: any) {\n if (!isNaN(value) && value >= this.amplitudeMin && value <= this.amplitudeMax) {\n this.curve.amplitude = +value;\n this.presetService.previewLive();\n }\n }\n\n setPosition(value: any) {\n if (!isNaN(value) && value >= this.percentageMin && value <= this.percentageMax) {\n this.curve.position = +value;\n this.presetService.previewLive();\n }\n }\n\n setPhaseMillis(value: any) {\n if (!isNaN(value) && value >= this.phaseMillisMin && value <= this.phaseMillisMax) {\n this.curve.phaseMillis = +value;\n this.presetService.previewLive();\n }\n }\n\n setPhasingMillis(value: any) {\n if (!isNaN(value) && value >= this.phasingMillisMin && value <= this.phasingMillisMax) {\n this.curve.phasingMillis = +value;\n this.presetService.previewLive();\n }\n }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'lib-app-effect-pan-tilt',\n templateUrl: './effect-pan-tilt.component.html',\n styleUrls: ['./effect-pan-tilt.component.css'],\n})\nexport class EffectPanTiltComponent implements OnInit {\n @ViewChild('panTiltGrid') panTiltGrid: ElementRef;\n\n // private line = d3.line();\n private svg;\n private path;\n\n private points = [\n [0, 500],\n [500, 0],\n [1000, 500],\n [500, 1000],\n ];\n\n private dragged = null;\n private selected = this.points[0];\n\n constructor() {}\n\n private redraw() {}\n\n ngOnInit() {}\n}\n","import { Component, OnInit } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Effect } from '../models/effect';\nimport { EffectCurve } from '../models/effect-curve';\nimport { EffectPanTilt } from '../models/effect-pan-tilt';\nimport { EffectService } from '../services/effect.service';\nimport { PresetService } from '../services/preset.service';\nimport { UuidService } from '../services/uuid.service';\nimport { WarningDialogService } from '../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-app-effect',\n templateUrl: './effect.component.html',\n styleUrls: ['./effect.component.css'],\n})\nexport class EffectComponent implements OnInit {\n constructor(\n private uuidService: UuidService,\n public presetService: PresetService,\n public effectService: EffectService,\n private warningDialogService: WarningDialogService\n ) {}\n\n ngOnInit() {}\n\n private addEffect(effect: Effect) {\n this.effectService.selectedEffect = effect;\n\n if (this.presetService.selectedPreset) {\n this.presetService.selectedPreset.effects.push(effect);\n }\n }\n\n addCurveEffect() {\n const effect = new EffectCurve();\n effect.uuid = this.uuidService.getUuid();\n this.addEffect(effect);\n this.presetService.previewLive();\n }\n\n addPanTiltEffect() {\n this.addEffect(new EffectPanTilt());\n }\n\n openEffect(effect: Effect, event: any) {\n if (event) {\n this.effectService.selectedEffect = effect;\n } else {\n if (this.effectService.selectedEffect === effect) {\n this.effectService.selectedEffect = undefined;\n }\n }\n }\n\n deleteEffect(effect: Effect) {\n this.warningDialogService\n .show('designer.effect.delete-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.presetService.selectedPreset.effects.splice(this.presetService.selectedPreset.effects.indexOf(effect), 1);\n this.presetService.previewLive();\n }\n })\n )\n .subscribe();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { CachedFixtureCapability } from '../../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../../models/fixture-profile';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-channel',\n templateUrl: './fixture-capability-channel.component.html',\n styleUrls: ['./fixture-capability-channel.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FixtureCapabilityChannelComponent implements OnInit {\n @ViewChild('sliderValue', { static: false }) sliderValue: ElementRef;\n\n selectedCapability: CachedFixtureCapability;\n _channel: CachedFixtureChannel;\n\n rangeMin = 0;\n rangeMax = 0;\n defaultValue = 0;\n value = 0;\n templateValue = 0;\n\n valueSetTimer: any;\n\n @Input()\n profile: FixtureProfile;\n\n @Input()\n set channel(value: CachedFixtureChannel) {\n this._channel = value;\n this.updateChannel();\n }\n\n @Input()\n capabilityIndex: number;\n\n constructor(private presetService: PresetService) {}\n\n private updateChannel() {\n this.selectedCapability = this._channel.capabilities[0];\n\n this.value = this.presetService.getChannelValue(this._channel.name, this.profile.uuid);\n this.calculateTemplateValue();\n\n if (this.value >= 0) {\n for (const capability of this._channel.capabilities) {\n if (capability.capability.dmxRange.length > 0 && capability.centerValue === this.value) {\n this.selectedCapability = capability;\n break;\n }\n }\n }\n\n this.rangeMin = this.getRangeMin();\n this.rangeMax = this.getRangeMax();\n this.defaultValue = this.getDefaultValue();\n }\n\n capabilityHasRange(): boolean {\n if (this._channel.capabilities && this._channel.capabilities.length === 1) {\n return true;\n }\n\n if (this.selectedCapability && this.selectedCapability.capability.angleStart) {\n return true;\n }\n\n return false;\n }\n\n private getRangeMin(): number {\n if (this.selectedCapability.capability.dmxRange.length > 0) {\n return this.selectedCapability.capability.dmxRange[0];\n }\n\n return 0;\n }\n\n private getRangeMax(): number {\n if (this.selectedCapability.capability.dmxRange.length > 0) {\n return this.selectedCapability.capability.dmxRange[1];\n }\n\n return this._channel.maxValue;\n }\n\n ngOnInit() {}\n\n setValue(value: any, ignoreCapabilityRange: boolean = false) {\n if (isNaN(value)) {\n return;\n }\n\n if (!ignoreCapabilityRange && (value < this.getRangeMin() || value > this.getRangeMax())) {\n return;\n }\n\n this.value = value;\n this.calculateTemplateValue();\n\n this.presetService.setChannelValue(this._channel.name, this.profile.uuid, value);\n if (this.sliderValue) {\n // update the value without change detector for performance reasons and only in a specific\n // interval. each value set will trigger a layout/reflow event and slow down the performance\n // TODO use the same technique in the dimmer/pan/tilt/color sliders\n if (!this.valueSetTimer) {\n this.valueSetTimer = setTimeout(() => {\n this.sliderValue.nativeElement.value = this.value;\n this.valueSetTimer = undefined;\n }, 30);\n }\n }\n this.presetService.previewLive();\n }\n\n private calculateTemplateValue() {\n this.templateValue = this.value ? this.value : this.getDefaultValue();\n }\n\n private getDefaultValue(): number {\n if (this._channel.defaultValue) {\n return this._channel.defaultValue;\n }\n\n return 0;\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.setValue(this.getDefaultValue(), true);\n } else {\n this.presetService.deleteChannelValue(this._channel.name, this.profile.uuid);\n this.selectedCapability = this._channel.capabilities[0];\n this.value = undefined;\n this.calculateTemplateValue();\n }\n this.presetService.previewLive();\n }\n\n capabilitySelected() {\n // select the center value of the selected capability\n if (this.capabilityHasRange) {\n this.setValue(this.selectedCapability.capability.dmxRange[0], true);\n } else {\n this.setValue(this.selectedCapability.centerValue, true);\n }\n }\n}\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureCapability } from '../../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../../models/cached-fixture-channel';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { FixtureProfile } from '../../../models/fixture-profile';\nimport { FixtureWheel } from '../../../models/fixture-wheel';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-color-wheel',\n templateUrl: './fixture-capability-color-wheel.component.html',\n styleUrls: ['./fixture-capability-color-wheel.component.css'],\n})\nexport class FixtureCapabilityColorWheelComponent implements OnInit, OnDestroy {\n _fixtureProfile: FixtureProfile;\n _channel: CachedFixtureChannel;\n wheelName: string;\n wheel: FixtureWheel;\n slotCapabilities: CachedFixtureCapability[];\n\n private colorChangeSubscription: Subscription;\n\n @Input()\n set profile(value: FixtureProfile) {\n this._fixtureProfile = value;\n this.update();\n }\n\n @Input()\n set channel(value: CachedFixtureChannel) {\n this._channel = value;\n this.update();\n }\n\n @Input()\n wheelIndex: number;\n\n @Input()\n showContainer = false;\n\n constructor(public presetService: PresetService, private changeDetectorRef: ChangeDetectorRef, private fixtureService: FixtureService) {}\n\n ngOnInit() {\n this.colorChangeSubscription = this.presetService.fixtureColorChanged.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnDestroy() {\n this.colorChangeSubscription.unsubscribe();\n }\n\n private update() {\n if (this._fixtureProfile && this._channel) {\n this.wheelName = undefined;\n this.slotCapabilities = [];\n\n // get the wheel name\n for (const capability of this._channel.capabilities) {\n if (capability.wheel) {\n this.wheelName = capability.wheelName;\n break;\n }\n }\n if (!this.wheelName) {\n this.wheelName = this._channel.name;\n }\n\n this.wheel = this.fixtureService.getWheelByName(this._fixtureProfile, this.wheelName);\n\n // calculate all available slots\n for (const capability of this._channel.capabilities) {\n if (capability.capability.type === FixtureCapabilityType.WheelSlot) {\n this.slotCapabilities.push(capability);\n }\n }\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n getCapabilityColorStyle(capability: CachedFixtureCapability): any {\n let property = 'background-color';\n let value = 'black';\n let colors: string[] = [];\n\n if (capability.wheelSlots) {\n for (const slot of capability.wheelSlots) {\n // calculate the color based on the color wheel slot\n if (slot.colors.length > 0) {\n colors = colors.concat(slot.colors);\n }\n }\n }\n\n if (colors.length > 1) {\n // mixed colors -> gradient\n let colorString: string;\n for (const color of colors) {\n if (colorString) {\n colorString += ', ';\n } else {\n colorString = '';\n }\n colorString += color;\n }\n property = 'background-image';\n value = 'linear-gradient(to bottom right, ' + colorString + ')';\n } else if (colors.length === 1) {\n value = colors[0];\n } else {\n value = '#fff';\n }\n\n const style = {};\n style[property] = value;\n return style;\n }\n\n getCurrentSlotNumber(): number {\n const capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n\n if (capabilityValue) {\n return capabilityValue.slotNumber;\n }\n return undefined;\n }\n\n slotCapabilityIsSelected(slotNumber: number): boolean {\n const selectedSlotNumber = this.getCurrentSlotNumber();\n\n if (selectedSlotNumber >= 0) {\n // a slot is selected\n return selectedSlotNumber === slotNumber;\n } else {\n // no slot is selected and the capability is inactive\n // -> show the approx. color, if a color or a similar slot from a different wheel has been selected\n const approximatedCapability = this.presetService.getApproximatedColorWheelCapability(\n this.presetService.selectedPreset,\n this._channel\n );\n\n if (approximatedCapability) {\n return slotNumber === approximatedCapability.capability.slotNumber;\n } else {\n return false;\n }\n }\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n 1,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n } else {\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n }\n\n this.presetService.previewLive();\n }\n\n selectSlotNumber(slotNumber: number) {\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n slotNumber,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n this.presetService.previewLive();\n }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { FixtureCapabilityValue } from '../../../models/fixture-capability-value';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\ndeclare var iro: any;\n\n@Component({\n selector: 'lib-app-fixture-capability-color',\n templateUrl: './fixture-capability-color.component.html',\n styleUrls: ['./fixture-capability-color.component.css'],\n})\nexport class FixtureCapabilityColorComponent implements OnInit, OnDestroy {\n color = '#ffffff';\n colorPicker: any;\n active = false;\n private colorPickerMounted = false;\n\n // avoid internal updating events\n private updatingColor = false;\n\n private updateSubscription: Subscription;\n\n constructor(private presetService: PresetService, private fixtureService: FixtureService, private changeDetectorRef: ChangeDetectorRef) {\n this.updateSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n this.update();\n this.changeDetectorRef.detectChanges();\n });\n this.update();\n }\n\n private update() {\n let red: number;\n let green: number;\n let blue: number;\n let capabilityValue: FixtureCapabilityValue;\n capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Red\n );\n if (capabilityValue) {\n red = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Green\n );\n if (capabilityValue) {\n green = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Blue\n );\n if (capabilityValue) {\n blue = 255 * capabilityValue.valuePercentage;\n }\n if (red !== undefined && green !== undefined && blue !== undefined) {\n this.active = true;\n } else {\n this.active = false;\n red = 255;\n green = 255;\n blue = 255;\n }\n this.color = this.fixtureService.rgbToHex(red, green, blue);\n this.setPickerColor(red, green, blue);\n }\n\n private setPickerColor(red: number, green: number, blue: number) {\n this.updatingColor = true;\n if (this.colorPicker) {\n this.colorPicker.color.rgb = { r: red, g: green, b: blue };\n }\n this.updatingColor = false;\n }\n\n ngOnDestroy() {\n this.updateSubscription.unsubscribe();\n }\n\n ngOnInit() {\n this.colorPicker = new iro.ColorPicker('#color-picker-container', {\n width: 180,\n color: this.color,\n borderWidth: 1,\n borderColor: '#ffffff',\n sliderMargin: 20,\n });\n\n this.colorPicker.on('color:change', this.changeColor.bind(this));\n\n // mounted may be called, before this callback has been added. use input:start therefore\n this.colorPicker.on('input:start', this.mount.bind(this));\n }\n\n mount() {\n this.colorPickerMounted = true;\n }\n\n private updateFixtureColor(color: any) {\n if (this.presetService.selectedPreset) {\n if (color) {\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n color.rgb.r / 255,\n undefined,\n FixtureCapabilityColor.Red\n );\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n color.rgb.g / 255,\n undefined,\n FixtureCapabilityColor.Green\n );\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n color.rgb.b / 255,\n undefined,\n FixtureCapabilityColor.Blue\n );\n } else {\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Red\n );\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Green\n );\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Blue\n );\n }\n this.changeDetectorRef.detectChanges();\n this.presetService.fixtureColorChanged.next();\n this.presetService.previewLive();\n }\n }\n\n changeActive(active: boolean) {\n this.active = active;\n\n if (active) {\n this.updateFixtureColor(this.colorPicker.color);\n } else {\n this.updateFixtureColor(undefined);\n this.setPickerColor(255, 255, 255);\n this.color = '#ffffff';\n }\n this.presetService.previewLive();\n }\n\n changeColor(color: any) {\n if (!this.colorPickerMounted || this.updatingColor) {\n return;\n }\n\n this.active = true;\n this.color = color.hexString;\n this.updateFixtureColor(color);\n }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-dimmer',\n templateUrl: './fixture-capability-dimmer.component.html',\n styleUrls: ['./fixture-capability-dimmer.component.css'],\n})\nexport class FixtureCapabilityDimmerComponent implements OnInit {\n constructor(private presetService: PresetService, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n getValue(): number {\n const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);\n if (capabilityValue) {\n return capabilityValue.valuePercentage;\n }\n return undefined;\n }\n\n getValueText(): number {\n const value = this.getValue();\n if (value >= 0) {\n return Math.round(value * 100 * 100) / 100;\n }\n return undefined;\n }\n\n setValue(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity, value);\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.setValue(1);\n } else {\n this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);\n this.changeDetectorRef.detectChanges();\n }\n this.presetService.previewLive();\n }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-pan-tilt',\n templateUrl: './fixture-capability-pan-tilt.component.html',\n styleUrls: ['./fixture-capability-pan-tilt.component.css'],\n})\nexport class FixtureCapabilityPanTiltComponent implements OnInit {\n constructor(private presetService: PresetService, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n getValuePan(): number {\n const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan);\n if (capabilityValue) {\n return capabilityValue.valuePercentage;\n }\n return undefined;\n }\n\n getValueTextPan(): number {\n const value = this.getValuePan();\n if (value >= 0) {\n return Math.round(value * 100 * 100) / 100;\n }\n return undefined;\n }\n\n setValuePan(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan, value);\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n getValueTilt(): number {\n const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt);\n if (capabilityValue) {\n return capabilityValue.valuePercentage;\n }\n return undefined;\n }\n\n getValueTextTilt(): number {\n const value = this.getValueTilt();\n if (value >= 0) {\n return Math.round(value * 100 * 100) / 100;\n }\n return undefined;\n }\n\n setValueTilt(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt, value);\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.setValuePan(0.5);\n this.setValueTilt(0.5);\n } else {\n this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan);\n this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt);\n this.changeDetectorRef.detectChanges();\n }\n this.presetService.previewLive();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureWheelSlotType } from '../../models/fixture-wheel-slot';\nimport { FixtureService } from '../../services/fixture.service';\nimport { IntroService } from '../../services/intro.service';\nimport { PresetService } from '../../services/preset.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture-capability',\n templateUrl: './fixture-capability.component.html',\n styleUrls: ['./fixture-capability.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FixtureCapabilityComponent implements OnInit, OnDestroy {\n // map containing the profile and the channel name containing the wheel\n colorWheelChannels: Map<FixtureProfile, CachedFixtureChannel> = new Map<FixtureProfile, CachedFixtureChannel>();\n\n private fixtureSelectionChangedSubscription: Subscription;\n private previewSelectionChangedSubscription: Subscription;\n\n constructor(\n public presetService: PresetService,\n private fixtureService: FixtureService,\n private changeDetectorRef: ChangeDetectorRef,\n public projectService: ProjectService,\n public introService: IntroService\n ) {\n this.fixtureSelectionChangedSubscription = this.presetService.fixtureSelectionChanged.subscribe(() => {\n this.update();\n });\n\n this.previewSelectionChangedSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n this.update();\n });\n\n this.introService.stepChanged.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.fixtureSelectionChangedSubscription.unsubscribe();\n this.previewSelectionChangedSubscription.unsubscribe();\n }\n\n private wheelInList(wheels: Map<FixtureProfile, CachedFixtureChannel>, profile: FixtureProfile, channel: CachedFixtureChannel) {\n wheels.forEach((existingChannel: CachedFixtureChannel, existingProfile: FixtureProfile) => {\n if (existingProfile.uuid === profile.uuid && existingChannel.name === channel.name) {\n return true;\n }\n });\n\n return false;\n }\n\n private updateColorWheels() {\n this.colorWheelChannels = new Map<FixtureProfile, CachedFixtureChannel>();\n\n if (!this.presetService.selectedPreset) {\n return;\n }\n\n for (const fixtureUuid of this.presetService.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n for (const channel of fixture.channels) {\n for (const capability of channel.capabilities) {\n if (capability.wheel && capability.wheelSlots && capability.wheelSlots.length > 0) {\n if (this.fixtureService.wheelHasSlotType(capability.wheel, FixtureWheelSlotType.Color)) {\n // color wheel\n if (!this.wheelInList(this.colorWheelChannels, fixture.profile, channel)) {\n this.colorWheelChannels.set(fixture.profile, channel);\n }\n } else if (this.fixtureService.wheelHasSlotType(capability.wheel, FixtureWheelSlotType.Gobo)) {\n // gobo wheel\n // TODO\n }\n }\n }\n }\n }\n }\n\n private update() {\n this.updateColorWheels();\n this.changeDetectorRef.detectChanges();\n }\n\n isChrome(): boolean {\n if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n return true;\n }\n return false;\n }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { PresetService } from '../../services/preset.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture-channel',\n templateUrl: './fixture-channel.component.html',\n styleUrls: ['./fixture-channel.component.css'],\n})\nexport class FixtureChannelComponent implements OnInit, OnDestroy {\n public channelCapabilities: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n public profiles: FixtureProfile[] = [];\n public selectedProfiles: FixtureProfile[] = [];\n\n private fixtureSelectionChangedSubscription: Subscription;\n private previewSelectionChangedSubscription: Subscription;\n\n constructor(public presetService: PresetService, private changeDetectorRef: ChangeDetectorRef, public projectService: ProjectService) {\n this.fixtureSelectionChangedSubscription = this.presetService.fixtureSelectionChanged.subscribe(() => {\n this.calculateProfiles();\n });\n\n this.previewSelectionChangedSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n this.calculateProfiles();\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.fixtureSelectionChangedSubscription.unsubscribe();\n this.previewSelectionChangedSubscription.unsubscribe();\n }\n\n private calculateChannelCapabilities() {\n this.channelCapabilities = this.presetService.getSelectedProfileChannels(this.selectedProfiles);\n\n this.changeDetectorRef.detectChanges();\n }\n\n private calculateProfiles() {\n // calculate all profiels\n this.profiles = this.presetService.getSelectedProfiles();\n\n // select all profiles by default\n this.selectedProfiles = [...this.profiles];\n\n this.calculateChannelCapabilities();\n }\n\n changeProfileSelection($event: any, profile: FixtureProfile) {\n if (this.selectedProfiles.indexOf(profile) >= 0) {\n this.selectedProfiles.splice(this.selectedProfiles.indexOf(profile), 1);\n } else {\n this.selectedProfiles.push(profile);\n }\n\n this.calculateChannelCapabilities();\n }\n\n isChrome(): boolean {\n if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n return true;\n }\n return false;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Positioning } from '../../../models/fixture';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-settings-position',\n templateUrl: './fixture-settings-position.component.html',\n styleUrls: ['./fixture-settings-position.component.css'],\n})\nexport class FixtureSettingsPositionComponent implements OnInit {\n selectUndefinedOptionValue: any = undefined;\n\n selectedPositioning: string = undefined;\n\n positionX = 0;\n positionY = 0;\n positionZ = 0;\n\n positionXMin = -400;\n positionXMax = 400;\n positionYMin = 0;\n positionYMax = 400;\n positionZMin = -400;\n positionZMax = 400;\n\n rotationX = 0;\n rotationY = 0;\n rotationZ = 0;\n\n rotationMin = 0;\n rotationMax = 360;\n\n constructor(public fixtureService: FixtureService, private presetService: PresetService) {\n presetService.fixtureSelectionSettingsChanged.subscribe(() => {\n this.updateSelection();\n });\n }\n\n ngOnInit() {}\n\n private updateSelection() {\n // get all display values for the selected settings fixtures\n this.selectedPositioning = undefined;\n\n this.positionX = undefined;\n this.positionY = undefined;\n this.positionZ = undefined;\n\n this.rotationX = undefined;\n this.rotationY = undefined;\n this.rotationZ = undefined;\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.selectedPositioning) {\n if (this.selectedPositioning !== fixture.positioning) {\n this.selectedPositioning = undefined;\n break;\n }\n } else {\n this.selectedPositioning = fixture.positioning;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.positionX) {\n if (this.positionX !== fixture.positionX) {\n this.positionX = undefined;\n break;\n }\n } else {\n this.positionX = fixture.positionX;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.positionY) {\n if (this.positionY !== fixture.positionY) {\n this.positionY = undefined;\n break;\n }\n } else {\n this.positionY = fixture.positionY;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.positionZ) {\n if (this.positionZ !== fixture.positionZ) {\n this.positionZ = undefined;\n break;\n }\n } else {\n this.positionZ = fixture.positionZ;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.rotationX) {\n if (this.rotationX !== fixture.rotationX) {\n this.rotationX = undefined;\n break;\n }\n } else {\n this.rotationX = fixture.rotationX;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.rotationY) {\n if (this.rotationY !== fixture.rotationY) {\n this.rotationY = undefined;\n break;\n }\n } else {\n this.rotationY = fixture.rotationY;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.rotationZ) {\n if (this.rotationZ !== fixture.rotationZ) {\n this.rotationZ = undefined;\n break;\n }\n } else {\n this.rotationZ = fixture.rotationZ;\n }\n }\n }\n\n changePosition(positioningStr: string) {\n const positioning: Positioning = Positioning[positioningStr];\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n fixture.positioning = positioning;\n }\n }\n\n changePositionManual(position: string, value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (position === 'x') {\n if (value >= this.positionXMin && value <= this.positionXMax) {\n this.positionX = +value;\n }\n } else if (position === 'y') {\n if (value >= this.positionYMin && value <= this.positionYMax) {\n this.positionY = +value;\n }\n } else if (position === 'z') {\n if (value >= this.positionZMin && value <= this.positionZMax) {\n this.positionZ = +value;\n }\n }\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (position === 'x') {\n if (value >= this.positionXMin && value <= this.positionXMax) {\n fixture.positionX = +value;\n }\n } else if (position === 'y') {\n if (value >= this.positionYMin && value <= this.positionYMax) {\n fixture.positionY = +value;\n }\n } else if (position === 'z') {\n if (value >= this.positionZMin && value <= this.positionZMax) {\n fixture.positionZ = +value;\n }\n }\n }\n }\n\n changeRotationManual(rotation: string, value: any) {\n if (isNaN(value) || value < this.rotationMin || value > this.rotationMax) {\n return;\n }\n\n if (rotation === 'x') {\n this.rotationX = +value;\n } else if (rotation === 'y') {\n this.rotationY = +value;\n } else if (rotation === 'z') {\n this.rotationZ = +value;\n }\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (rotation === 'x') {\n fixture.rotationX = +value;\n } else if (rotation === 'y') {\n fixture.rotationY = +value;\n } else if (rotation === 'z') {\n fixture.rotationZ = +value;\n }\n }\n }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { PreviewService } from '../../../services/preview.service';\nimport { ProjectService } from '../../../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture-settings-stage',\n templateUrl: './fixture-settings-stage.component.html',\n styleUrls: ['./fixture-settings-stage.component.css'],\n})\nexport class FixtureSettingsStageComponent implements OnInit {\n constructor(public projectService: ProjectService, public previewService: PreviewService, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n update() {\n this.previewService.updateStage();\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PresetService } from '../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-settings',\n templateUrl: './fixture-settings.component.html',\n styleUrls: ['./fixture-settings.component.css'],\n})\nexport class FixtureSettingsComponent implements OnInit {\n dmxChannels: number[] = [];\n\n constructor(private fixtureService: FixtureService, public presetService: PresetService) {\n for (let i = 0; i < 512; i++) {\n this.dmxChannels.push(0);\n }\n }\n\n ngOnInit() {}\n\n isChrome(): boolean {\n if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n return true;\n }\n return false;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Fixture } from '../models/fixture';\nimport { FixturePoolService } from '../services/fixture-pool.service';\nimport { FixtureService } from '../services/fixture.service';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture',\n templateUrl: './fixture.component.html',\n styleUrls: ['./fixture.component.css'],\n})\nexport class FixtureComponent implements OnInit {\n constructor(\n public projectService: ProjectService,\n public presetService: PresetService,\n private fixturePoolService: FixturePoolService,\n public fixtureService: FixtureService,\n public introService: IntroService\n ) {}\n\n ngOnInit() {}\n\n fixtureIsSelected(fixture: Fixture): boolean {\n if (this.fixtureService.settingsSelection) {\n return this.fixtureService.settingsFixtureIsSelected(fixture);\n } else {\n return this.presetService.fixtureIsSelected(fixture);\n }\n }\n\n selectFixture(event: any, fixture: Fixture) {\n if (this.fixtureService.settingsSelection) {\n // select fixtures for the settings\n this.fixtureService.switchSettingsFixtureSelection(fixture);\n this.presetService.fixtureSelectionSettingsChanged.next();\n } else {\n // select fixtures for the current preset\n this.presetService.switchFixtureSelection(fixture);\n this.presetService.fixtureSelectionChanged.next();\n this.presetService.previewLive();\n }\n }\n\n selectAll() {\n this.presetService.selectAllFixtures();\n this.presetService.fixtureSelectionChanged.next();\n }\n\n selectNone() {\n this.presetService.selectNoFixtures();\n this.presetService.fixtureSelectionChanged.next();\n }\n\n openFixturePool() {\n this.fixturePoolService.open();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { IntroService } from '../services/intro.service';\n\n@Component({\n selector: 'lib-app-intro',\n templateUrl: './intro.component.html',\n styleUrls: ['./intro.component.css'],\n})\nexport class IntroComponent implements OnInit {\n constructor(public introService: IntroService) {}\n\n ngOnInit() {}\n\n close() {\n this.introService.setShowIntro(false);\n }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\n\n@Component({\n selector: 'lib-app-master-dimmer',\n templateUrl: './master-dimmer.component.html',\n styleUrls: ['./master-dimmer.component.css'],\n})\nexport class MasterDimmerComponent implements OnInit {\n constructor(public projectService: ProjectService, private changeDetectorRef: ChangeDetectorRef, private presetService: PresetService) {}\n\n ngOnInit() {}\n\n setValue(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.projectService.project.masterDimmerValue = value;\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n getValue(): number {\n return Math.round(this.projectService.project.masterDimmerValue * 100 * 100) / 100;\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Preset } from '../../models/preset';\n\n@Component({\n selector: 'lib-preset-settings',\n templateUrl: './preset-settings.component.html',\n styleUrls: ['./preset-settings.component.css'],\n})\nexport class PresetSettingsComponent implements OnInit {\n preset: Preset;\n\n name: string;\n startMillis: number;\n endMillis: number;\n fadeInMillis: number;\n fadeOutMillis: number;\n fadeInPre: boolean;\n fadeOutPost: boolean;\n\n constructor(public bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.name = this.preset.name;\n this.startMillis = this.preset.startMillis;\n this.endMillis = this.preset.endMillis;\n this.fadeInMillis = this.preset.fadeInMillis;\n this.fadeOutMillis = this.preset.fadeOutMillis;\n this.fadeInPre = this.preset.fadeInPre;\n this.fadeOutPost = this.preset.fadeOutPost;\n }\n\n ok() {\n this.preset.name = this.name;\n\n if (this.startMillis === undefined || this.startMillis === null || (this.startMillis as any) === '') {\n this.preset.startMillis = undefined;\n } else if (!isNaN(this.startMillis) && this.startMillis >= 0) {\n this.preset.startMillis = +this.startMillis;\n }\n if (this.endMillis === undefined || this.endMillis === null || (this.endMillis as any) === '') {\n this.preset.endMillis = undefined;\n } else if (!isNaN(this.endMillis) && this.endMillis >= 0) {\n this.preset.endMillis = +this.endMillis;\n }\n if (!isNaN(this.fadeInMillis) && this.fadeInMillis >= 0) {\n this.preset.fadeInMillis = +this.fadeInMillis;\n }\n if (!isNaN(this.fadeOutMillis) && this.fadeOutMillis >= 0) {\n this.preset.fadeOutMillis = +this.fadeOutMillis;\n }\n\n this.preset.fadeInPre = this.fadeInPre;\n this.preset.fadeOutPost = this.fadeOutPost;\n\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Preset } from '../models/preset';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { SceneService } from '../services/scene.service';\nimport { PresetSettingsComponent } from './preset-settings/preset-settings.component';\n\n@Component({\n selector: 'lib-app-preset',\n templateUrl: './preset.component.html',\n styleUrls: ['./preset.component.css'],\n})\nexport class PresetComponent implements OnInit {\n constructor(\n public presetService: PresetService,\n public sceneService: SceneService,\n public projectService: ProjectService,\n public introService: IntroService,\n private modalService: BsModalService\n ) {}\n\n ngOnInit() {}\n\n selectPreset(index: number) {\n this.projectService.project.previewPreset = true;\n this.presetService.selectPreset(index);\n }\n\n enableCheckbox(): boolean {\n return this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1;\n }\n\n activatePreset(active: boolean, index: number) {\n if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n const uuid = this.projectService.project.presets[index].uuid;\n\n if (active) {\n // Activate a new uuid\n this.sceneService.selectedScenes[0].presetUuids.push(uuid);\n } else {\n // Remove the uuid\n for (let i = 0; i < this.sceneService.selectedScenes[0].presetUuids.length; i++) {\n if (this.sceneService.selectedScenes[0].presetUuids[i] === uuid) {\n this.sceneService.selectedScenes[0].presetUuids.splice(i, 1);\n return;\n }\n }\n }\n }\n }\n\n addPreset() {\n this.presetService.addPreset();\n\n if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n this.sceneService.selectedScenes[0].presetUuids.push(this.presetService.selectedPreset.uuid);\n }\n }\n\n removePreset() {\n if (!this.presetService.selectedPreset) {\n return;\n }\n\n this.projectService.project.presets.splice(this.projectService.project.presets.indexOf(this.presetService.selectedPreset), 1);\n this.presetService.selectPreset(0);\n }\n\n openSettings(preset: Preset) {\n const bsModalRef = this.modalService.show(PresetSettingsComponent, {\n keyboard: true,\n ignoreBackdropClick: false,\n class: '',\n initialState: { preset },\n });\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Scene } from '../../models/scene';\n\n@Component({\n selector: 'lib-scene-settings',\n templateUrl: './scene-settings.component.html',\n styleUrls: ['./scene-settings.component.css'],\n})\nexport class SceneSettingsComponent implements OnInit {\n scene: Scene;\n\n name: string;\n fadeInMillis: number;\n fadeOutMillis: number;\n fadeInPre: boolean;\n fadeOutPost: boolean;\n\n constructor(public bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.name = this.scene.name;\n this.fadeInMillis = this.scene.fadeInMillis;\n this.fadeOutMillis = this.scene.fadeOutMillis;\n this.fadeInPre = this.scene.fadeInPre;\n this.fadeOutPost = this.scene.fadeOutPost;\n }\n\n ok() {\n this.scene.name = this.name;\n\n if (!isNaN(this.fadeInMillis) && this.fadeInMillis >= 0) {\n this.scene.fadeInMillis = +this.fadeInMillis;\n }\n if (!isNaN(this.fadeOutMillis) && this.fadeOutMillis >= 0) {\n this.scene.fadeOutMillis = +this.fadeOutMillis;\n }\n\n this.scene.fadeInPre = this.fadeInPre;\n this.scene.fadeOutPost = this.fadeOutPost;\n\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Scene } from '../models/scene';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { SceneService } from '../services/scene.service';\nimport { SceneSettingsComponent } from './scene-settings/scene-settings.component';\n\n@Component({\n selector: 'lib-app-scene',\n templateUrl: './scene.component.html',\n styleUrls: ['./scene.component.css'],\n})\nexport class SceneComponent implements OnInit {\n constructor(\n public sceneService: SceneService,\n public presetService: PresetService,\n public projectService: ProjectService,\n private modalService: BsModalService,\n public introService: IntroService\n ) {}\n\n ngOnInit() {}\n\n selectScene(event: any, index: number) {\n this.sceneService.selectScene(index);\n }\n\n removeScene() {\n if (this.sceneService.selectedScenes.length === 0) {\n return;\n }\n\n this.sceneService.removeScene(this.sceneService.selectedScenes[0]);\n }\n\n openSettings(scene: Scene) {\n const bsModalRef = this.modalService.show(SceneSettingsComponent, {\n keyboard: true,\n ignoreBackdropClick: false,\n class: '',\n initialState: { scene },\n });\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgxBootstrapSliderModule } from 'ngx-bootstrap-slider';\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { DropzoneModule } from 'ngx-dropzone-wrapper';\nimport { SortablejsModule } from 'ngx-sortablejs';\nimport { ToastrModule } from 'ngx-toastr';\nimport { ArraySortPipe } from './array-sort-pipe';\nimport { DesignerComponent } from './designer.component';\nimport { EffectCurveComponent } from './effect/effect-curve/effect-curve.component';\nimport { EffectPanTiltComponent } from './effect/effect-pan-tilt/effect-pan-tilt.component';\nimport { EffectComponent } from './effect/effect.component';\nimport { ErrorDialogComponent } from './error-dialog/error-dialog.component';\nimport { FixturePoolCreateFromFileComponent } from './fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component';\nimport { FixturePoolComponent } from './fixture-pool/fixture-pool.component';\nimport { FixtureCapabilityChannelComponent } from './fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component';\nimport { FixtureCapabilityColorWheelComponent } from './fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component';\nimport { FixtureCapabilityColorComponent } from './fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component';\nimport { FixtureCapabilityDimmerComponent } from './fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component';\nimport { FixtureCapabilityPanTiltComponent } from './fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component';\nimport { FixtureCapabilityComponent } from './fixture/fixture-capability/fixture-capability.component';\nimport { FixtureChannelComponent } from './fixture/fixture-channel/fixture-channel.component';\nimport { FixtureSettingsPositionComponent } from './fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component';\nimport { FixtureSettingsStageComponent } from './fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component';\nimport { FixtureSettingsComponent } from './fixture/fixture-settings/fixture-settings.component';\nimport { FixtureComponent } from './fixture/fixture.component';\nimport { IntroComponent } from './intro/intro.component';\nimport { MasterDimmerComponent } from './master-dimmer/master-dimmer.component';\nimport { PresetSettingsComponent } from './preset/preset-settings/preset-settings.component';\nimport { PresetComponent } from './preset/preset.component';\nimport { PreviewComponent } from './preview/preview.component';\nimport { ProjectBrowserComponent } from './project/project-browser/project-browser.component';\nimport { ProjectImportComponent } from './project/project-import/project-import.component';\nimport { ProjectSaveComponent } from './project/project-save/project-save.component';\nimport { ProjectShareComponent } from './project/project-share/project-share.component';\nimport { SceneSettingsComponent } from './scene/scene-settings/scene-settings.component';\nimport { SceneComponent } from './scene/scene.component';\nimport { CompositionSettingsComponent } from './timeline/composition-settings/composition-settings.component';\nimport { TimelineGridComponent } from './timeline/timeline-grid/timeline-grid.component';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { UserLoginComponent } from './user/user-login/user-login.component';\nimport { UserRegisterComponent } from './user/user-register/user-register.component';\nimport { WaitDialogComponent } from './wait-dialog/wait-dialog.component';\nimport { WarningDialogComponent } from './warning-dialog/warning-dialog.component';\n\n@NgModule({\n declarations: [\n DesignerComponent,\n WarningDialogComponent,\n PreviewComponent,\n EffectCurveComponent,\n EffectPanTiltComponent,\n SceneComponent,\n TimelineComponent,\n FixtureCapabilityColorComponent,\n FixtureComponent,\n FixtureSettingsPositionComponent,\n FixtureCapabilityComponent,\n FixtureSettingsComponent,\n EffectComponent,\n FixturePoolComponent,\n PresetComponent,\n MasterDimmerComponent,\n FixtureCapabilityDimmerComponent,\n TimelineGridComponent,\n CompositionSettingsComponent,\n ArraySortPipe,\n FixtureCapabilityPanTiltComponent,\n FixtureCapabilityChannelComponent,\n FixtureChannelComponent,\n FixtureCapabilityColorWheelComponent,\n UserLoginComponent,\n UserRegisterComponent,\n ProjectBrowserComponent,\n WaitDialogComponent,\n ProjectImportComponent,\n ProjectShareComponent,\n ErrorDialogComponent,\n FixtureSettingsStageComponent,\n IntroComponent,\n PresetSettingsComponent,\n SceneSettingsComponent,\n ProjectSaveComponent,\n FixturePoolCreateFromFileComponent,\n ],\n imports: [\n RouterModule.forRoot([]),\n BrowserModule,\n BrowserAnimationsModule,\n HttpClientModule,\n FormsModule,\n NgxBootstrapSliderModule,\n TranslateModule,\n AccordionModule,\n PopoverModule,\n TypeaheadModule,\n SortablejsModule,\n DropzoneModule,\n ToastrModule.forRoot({\n newestOnTop: true,\n }),\n ],\n exports: [DesignerComponent],\n})\nexport class DesignerModule {}\n"],"names":["Injectable","map","HttpHeaders","HttpClient","Router","ActivatedRoute","TranslateService","ToastrService","of","forkJoin","GLTFLoader","Observable","Subject","timer","guess","THREE.MeshStandardMaterial","THREE.BoxBufferGeometry","THREE.Mesh","THREE.MeshLambertMaterial","THREE.Math","THREE.Object3D","THREE.ShaderMaterial","THREE.Color","THREE.CylinderGeometry","THREE.Matrix4","THREE.SpotLight","THREE.SpotLightHelper","THREE.PointLight","THREE.WebGLRenderer","THREE.PerspectiveCamera","OrbitControls","THREE.Vector3","THREE.BoxGeometry","THREE.Scene","THREE.AmbientLight","ViewChild","ElementRef","HostListener","Component","finalize","BsModalService","BsModalRef","mergeMap","catchError","ChangeDetectorRef","Input","ViewEncapsulation","Pipe","ChangeDetectionStrategy","NgModule","RouterModule","BrowserModule","BrowserAnimationsModule","HttpClientModule","FormsModule","NgxBootstrapSliderModule","TranslateModule","AccordionModule","PopoverModule","TypeaheadModule","SortablejsModule","DropzoneModule","ToastrModule"],"mappings":";;;;;;;;;;;;;IAAA;IACA;AACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;AACF;IACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;IAC7C,QAAQ,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;IAClG,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;AACD;IACO,IAAI,QAAQ,GAAG,WAAW;IACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,SAAS;IACT,QAAQ,OAAO,CAAC,CAAC;IACjB,MAAK;IACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,EAAC;AACD;IACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;IACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,SAAS;IACT,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;AACD;IACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IAC1D,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;AACD;IACO,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;IAC/C,IAAI,OAAO,UAAU,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE;IACzE,CAAC;AACD;IACO,SAAS,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE;IACvD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;AACD;IACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;IAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;IACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;IACtB,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;IAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IACjE,gBAAgB;IAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;IAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAC3C,aAAa;IACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,KAAK;IACL,CAAC;AACD;IACO,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;IACpE,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;IAC5B,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACH;IACO,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC;AACD;IACO,SAAS,QAAQ,CAAC,CAAC,EAAE;IAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClF,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO;IAClD,QAAQ,IAAI,EAAE,YAAY;IAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACpD,SAAS;IACT,KAAK,CAAC;IACN,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;AACD;IACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,IAAI;IACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnF,KAAK;IACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IAC3C,YAAY;IACZ,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,SAAS;IACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;IACzC,KAAK;IACL,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;AACD;IACA;IACO,SAAS,QAAQ,GAAG;IAC3B,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;IACtD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;AACD;IACA;IACO,SAAS,cAAc,GAAG;IACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxF,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;IACzE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;AACD;IACO,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE;IACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;IACrE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;AACD;IACO,SAAS,OAAO,CAAC,CAAC,EAAE;IAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;AACD;IACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;IACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;AACD;IACO,SAAS,gBAAgB,CAAC,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChJ,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;AACD;IACO,SAAS,aAAa,CAAC,CAAC,EAAE;IACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;AACD;IACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE;IAClD,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;IACnH,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACF;IACA,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;IACzD,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;IACpB,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;AACF;IACO,SAAS,YAAY,CAAC,GAAG,EAAE;IAClC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7I,IAAI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;AACD;IACO,SAAS,eAAe,CAAC,GAAG,EAAE;IACrC,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;AACD;IACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE;IAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC9E,KAAK;IACL,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACD;IACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;IACpE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC9E,KAAK;IACL,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,CAAC;IACjB;;;QCtOE;SAAgB;;QADL,eAAe;YAH3BA,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,eAAe,CAE3B;8BAPD;KAKA;;ICLA,IAAY,qBA4CX;IA5CD,WAAY,qBAAqB;QAC/B,kDAAyB,CAAA;QACzB,wDAA+B,CAAA;QAC/B,oDAA2B,CAAA;QAC3B,0DAAiC,CAAA;QACjC,gDAAuB,CAAA;QACvB,0DAAiC,CAAA;QACjC,oDAA2B,CAAA;QAC3B,8DAAqC,CAAA;QACrC,oCAAW,CAAA;QACX,wDAA+B,CAAA;QAC/B,sCAAa,CAAA;QACb,0DAAiC,CAAA;QACjC,sDAA6B,CAAA;QAC7B,gDAAuB,CAAA;QACvB,kDAAyB,CAAA;QACzB,gEAAuC,CAAA;QACvC,wDAA+B,CAAA;QAC/B,oDAA2B,CAAA;QAC3B,0DAAiC,CAAA;QACjC,4DAAmC,CAAA;QACnC,8DAAqC,CAAA;QACrC,wCAAe,CAAA;QACf,sCAAa,CAAA;QACb,sCAAa,CAAA;QACb,kDAAyB,CAAA;QACzB,wCAAe,CAAA;QACf,oDAA2B,CAAA;QAC3B,wCAAe,CAAA;QACf,wDAA+B,CAAA;QAC/B,0DAAiC,CAAA;QACjC,wDAA+B,CAAA;QAC/B,oEAA2C,CAAA;QAC3C,oCAAW,CAAA;QACX,gDAAuB,CAAA;QACvB,4CAAmB,CAAA;QACnB,gDAAuB,CAAA;QACvB,8CAAqB,CAAA;QACrB,wCAAe,CAAA;QACf,sCAAa,CAAA;QACb,oDAA2B,CAAA;QAC3B,4CAAmB,CAAA;QACnB,0CAAiB,CAAA;QACjB,sDAA6B,CAAA;IAC/B,CAAC,EA5CW,qBAAqB,KAArB,qBAAqB,QA4ChC;IAED,IAAY,sBAcX;IAdD,WAAY,sBAAsB;QAChC,qCAAW,CAAA;QACX,yCAAe,CAAA;QACf,uCAAa,CAAA;QACb,uCAAa,CAAA;QACb,6CAAmB,CAAA;QACnB,2CAAiB,CAAA;QACjB,yCAAe,CAAA;QACf,yCAAe,CAAA;QACf,mDAA2B,CAAA;QAC3B,mDAA2B,CAAA;QAC3B,mCAAS,CAAA;QACT,uCAAa,CAAA;QACb,2CAAiB,CAAA;IACnB,CAAC,EAdW,sBAAsB,KAAtB,sBAAsB,QAcjC;IAED;QAcE,2BAAY,IAAU;YATtB,aAAQ,GAAa,EAAE,CAAC;YAUtB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC/B;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SAC7B;QACH,wBAAC;IAAD,CAAC;;IC7FD;QAOE,wBAAY,IAAU;;YANtB,uBAAkB,GAAa,EAAE,CAAC;YAGlC,iBAAY,GAAwB,EAAE,CAAC;YAIrC,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;aACnD;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAElD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC1D;iBAAM,IAAI,IAAI,CAAC,YAAY,EAAE;;oBAC5B,KAAyB,IAAA,KAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAvC,IAAM,UAAU,WAAA;wBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;qBAC3D;;;;;;;;;aACF;SACF;QACH,qBAAC;IAAD,CAAC;;IC7BD;QAKE,qBAAY,IAAU;YAFtB,aAAQ,GAAU,EAAE,CAAC;YAGnB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEhC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC/B;SACF;QACH,kBAAC;IAAD,CAAC;;ICjBD,IAAY,oBAUX;IAVD,WAAY,oBAAoB;QAC9B,qCAAa,CAAA;QACb,yCAAiB,CAAA;QACjB,uCAAe,CAAA;QACf,qCAAa,CAAA;QACb,uCAAe,CAAA;QACf,qCAAa,CAAA;QACb,uCAAe,CAAA;QACf,iEAAyC,CAAA;QACzC,6DAAqC,CAAA;IACvC,CAAC,EAVW,oBAAoB,KAApB,oBAAoB,QAU/B;IAED;QAKE,0BAAY,IAAU;YAFtB,WAAM,GAAa,EAAE,CAAC;YAGpB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;aAC3B;SACF;QACH,uBAAC;IAAD,CAAC;;IC1BD;QAGE,sBAAY,IAAU;;YAFtB,UAAK,GAAuB,EAAE,CAAC;YAG7B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;;oBACd,KAAmB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;wBAA1B,IAAM,IAAI,WAAA;wBACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC7C;;;;;;;;;aACF;SACF;QACH,mBAAC;IAAD,CAAC;;ICZD,IAAY,eAkBX;IAlBD,WAAY,eAAe;QACzB,sCAAmB,CAAA;QACnB,kDAAiC,CAAA;QACjC,oCAAiB,CAAA;QACjB,oCAAiB,CAAA;QACjB,8BAAW,CAAA;QACX,oCAAiB,CAAA;QACjB,kCAAe,CAAA;QACf,kCAAe,CAAA;QACf,oCAAiB,CAAA;QACjB,8CAA6B,CAAA;QAC7B,0CAAyB,CAAA;QACzB,sCAAmB,CAAA;QACnB,kCAAe,CAAA;QACf,kCAAe,CAAA;QACf,oCAAiB,CAAA;QACjB,kCAAe,CAAA;QACf,oDAAmC,CAAA;IACrC,CAAC,EAlBW,eAAe,KAAf,eAAe,QAkB1B;IAED;QAiBE,wBAAY,IAAU;;YAXtB,oBAAe,GAAG,KAAK,CAAC;YAGxB,eAAU,GAAsB,EAAE,CAAC;YACnC,sBAAiB,GAAQ,EAAE,CAAC;YAE5B,WAAM,GAAQ,EAAE,CAAC;;YAGjB,UAAK,GAAkB,EAAE,CAAC;YAGxB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;;YAGD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC9C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;YAExD,IAAI,IAAI,CAAC,UAAU,EAAE;;oBACnB,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,UAAU,CAAA,gBAAA,4BAAE;wBAAnC,IAAM,QAAQ,WAAA;wBACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAkB,CAAC,CAAC,CAAC;qBAC3D;;;;;;;;;aACF;iBAAM,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAsB,CAAC,CAAC,CAAC;aACpE;YACD,IAAI,IAAI,CAAC,MAAM,EAAE;;oBACf,KAAuB,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,gBAAA,4BAAE;wBAA5C,IAAM,QAAQ,WAAA;wBACjB,IAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;qBAC/B;;;;;;;;;aACF;YACD,IAAI,IAAI,CAAC,KAAK,EAAE;;oBACd,KAAmB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;wBAA1B,IAAM,IAAI,WAAA;wBACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;qBACxC;;;;;;;;;aACF;YACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;;oBAC1B,KAAuB,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA,gBAAA,4BAAE;wBAAvD,IAAM,QAAQ,WAAA;wBACjB,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAC5E,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;qBACnD;;;;;;;;;aACF;YACD,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;aAC7C;SACF;QACH,qBAAC;IAAD,CAAC;;IC3ED;QAAA;YAIE,aAAQ,GAA2B,EAAE,CAAC;SACvC;QAAD,oBAAC;IAAD,CAAC;;ICND;QAAA;;YAUE,eAAU,GAAuB,EAAE,CAAC;;YAGpC,iBAAY,GAAG,KAAK,CAAC;SAGtB;QAAD,8BAAC;IAAD,CAAC;;IChBD;QAAA;;YAQE,iBAAY,GAA8B,EAAE,CAAC;SAU9C;QAAD,2BAAC;IAAD,CAAC;;ICtBD;QAKE,eAAY,GAAY,EAAE,KAAc,EAAE,IAAa;YACrD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QACH,YAAC;IAAD,CAAC;;ICVD,IAAY,WAMX;IAND,WAAY,WAAW;QACrB,oCAAqB,CAAA;QACrB,kCAAmB,CAAA;QACnB,0CAA2B,CAAA;QAC3B,wCAAyB,CAAA;QACzB,gCAAiB,CAAA;IACnB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;IAED;QAoBE,iBAAY,IAAU;YAftB,oBAAe,GAAG,CAAC,CAAC;YAEpB,gBAAW,GAAgB,WAAW,CAAC,QAAQ,CAAC;;;YAIhD,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;;YAGd,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;YAGZ,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACjC;QACH,cAAC;IAAD,CAAC;;IC/CD;QAKE,6BAAY,IAAU;YACpB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACjC;QACH,0BAAC;IAAD,CAAC;;ICZD;QA+BE,qBAAY,IAAU;;;YA1Bf,aAAQ,GAAG,OAAO,CAAC;YAGnB,uBAAkB,GAAG,KAAK,CAAC;YAE3B,mBAAc,GAAG,GAAG,CAAC;YACrB,uBAAkB,GAAG,CAAC,CAAC;YACvB,uBAAkB,GAAG,CAAC,CAAC;YAEvB,eAAU,GAAG,IAAI,CAAC;YAElB,iBAAY,GAAG,KAAK,CAAC;;YAGrB,aAAQ,GAAG,SAAS,CAAC;YACrB,qBAAgB,GAAG,CAAC,CAAC;;YAGrB,mBAAc,GAAG,CAAC,CAAC;;YAGnB,mBAAc,GAAG,CAAC,CAAC;;YAGnB,yBAAoB,GAA0B,EAAE,CAAC;YAGtD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;;YAGlC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAE1C,IAAI,IAAI,CAAC,oBAAoB,EAAE;;oBAC7B,KAAkC,IAAA,KAAA,SAAA,IAAI,CAAC,oBAAoB,CAAA,gBAAA,4BAAE;wBAAxD,IAAM,mBAAmB,WAAA;wBAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC;qBAC9E;;;;;;;;;aACF;SACF;QACH,kBAAC;IAAD,CAAC;;IC9DD;QAKE,gBAAY,IAAY,EAAE,IAAU;YAFpC,YAAO,GAAG,IAAI,CAAC;YAGb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEjB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SAC7B;QACH,aAAC;IAAD,CAAC;;ICfD;QAIE,oCAAY,IAAU;;YAFtB,aAAQ,GAAa,EAAE,CAAC;YAGtB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAEpC,IAAI,IAAI,CAAC,QAAQ,EAAE;;oBACjB,KAAsB,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,gBAAA,4BAAE;wBAA7C,IAAM,OAAO,WAAA;wBAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAC7B;;;;;;;;;aACF;SACF;QACH,iCAAC;IAAD,CAAC;;ICbD;QAAiC,+BAAM;QAYrC,qBAAY,IAAU;;YAAtB,YACE,kBAAM,OAAO,EAAE,IAAI,CAAC,SAwBrB;YApCD,eAAS,GAAG,MAAM,CAAC;YAEnB,kBAAY,GAAwB,EAAE,CAAC;YACvC,cAAQ,GAAiC,EAAE,CAAC;YAE5C,kBAAY,GAAG,IAAI,CAAC;YACpB,iBAAW,GAAG,CAAC,CAAC;YAChB,eAAS,GAAG,CAAC,CAAC;YACd,cAAQ,GAAG,GAAG,CAAC;YACf,mBAAa,GAAG,CAAC,CAAC;YAKhB,IAAI,CAAC,IAAI,EAAE;;aAEV;YAED,IAAI,IAAI,CAAC,YAAY,EAAE;;oBACrB,KAAyB,IAAA,KAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAvC,IAAM,UAAU,WAAA;wBACnB,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;qBAC3D;;;;;;;;;aACF;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;;oBACjB,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,4BAAE;wBAAhC,IAAM,OAAO,WAAA;wBAChB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;qBAC7D;;;;;;;;;aACF;YAED,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;SACjC;QAEM,sCAAgB,GAAvB,UAAwB,UAAkB,EAAE,YAAqB;;YAE/D,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,IAAI,YAAY,EAAE;gBAChB,YAAY,GAAG,YAAY,CAAC;aAC7B;YAED,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;;YAGnE,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,QAAQ,IAAI,CAAC,SAAS;gBACpB,KAAK,MAAM;oBACT,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBACxH,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;wBAC5F,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;qBAC5C;yBAAM;wBACL,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;qBAC5C;oBACD,MAAM;gBACR,KAAK,UAAU;;oBAEb,MAAM;gBACR,KAAK,UAAU;;oBAEb,MAAM;gBACR,KAAK,kBAAkB;;oBAErB,MAAM;aACT;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACxC;QACH,kBAAC;IAAD,CA5EA,CAAiC,MAAM;;ICFvC;QAAmC,iCAAM;QAGvC,uBAAY,IAAU;YAAtB,YACE,kBAAM,UAAU,EAAE,IAAI,CAAC,SACxB;YAJD,mBAAa,GAAG,CAAC,CAAC;;SAIjB;QAED,wCAAgB,GAAhB,UAAiB,UAAkB,EAAE,YAAqB;;YAExD,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,IAAI,YAAY,EAAE;gBAChB,YAAY,GAAG,YAAY,CAAC;aAC7B;;;;YAOD,OAAO,CAAC,CAAC;SACV;QACH,oBAAC;IAAD,CAtBA,CAAmC,MAAM;;ICAzC;QAWE,gCAAY,IAAU;YACpB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YACD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAEpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SACnC;QACH,6BAAC;IAAD,CAAC;;ICzBD;QAKE,6BAAY,IAAU;YACpB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SACzB;QACH,0BAAC;IAAD,CAAC;;ICPD;QA2BE,gBAAY,IAAU;;;YAtBtB,iBAAY,GAAa,EAAE,CAAC;;YAG5B,yBAAoB,GAA0B,EAAE,CAAC;YACjD,4BAAuB,GAA6B,EAAE,CAAC;;YAGvD,YAAO,GAAa,EAAE,CAAC;;YAQvB,iBAAY,GAAG,CAAC,CAAC;YACjB,kBAAa,GAAG,CAAC,CAAC;;YAGlB,cAAS,GAAG,KAAK,CAAC;YAClB,gBAAW,GAAG,KAAK,CAAC;YAGlB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,IAAI,CAAC,oBAAoB,EAAE;;oBAC7B,KAAkC,IAAA,KAAA,SAAA,IAAI,CAAC,oBAAoB,CAAA,gBAAA,4BAAE;wBAAxD,IAAM,mBAAmB,WAAA;wBAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC;qBAC9E;;;;;;;;;aACF;YACD,IAAI,IAAI,CAAC,uBAAuB,EAAE;;oBAChC,KAAqC,IAAA,KAAA,SAAA,IAAI,CAAC,uBAAuB,CAAA,gBAAA,4BAAE;wBAA9D,IAAM,sBAAsB,WAAA;wBAC/B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC;qBACvF;;;;;;;;;aACF;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;;oBAChB,KAAqB,IAAA,KAAA,SAAA,IAAI,CAAC,OAAO,CAAA,gBAAA,4BAAE;wBAA9B,IAAM,MAAM,WAAA;wBACf,QAAQ,MAAM,CAAC,IAAI;4BACjB,KAAK,OAAO;gCACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gCAC3C,MAAM;4BACR,KAAK,UAAU;gCACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gCAC7C,MAAM;yBACT;qBACF;;;;;;;;;aACF;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;SACrC;QACH,aAAC;IAAD,CAAC;;ICpED;QAiBE,eAAY,IAAU;YAbtB,UAAK,GAAG,MAAM,CAAC;;YAGf,gBAAW,GAAa,EAAE,CAAC;;YAG3B,iBAAY,GAAG,CAAC,CAAC;YACjB,kBAAa,GAAG,CAAC,CAAC;;YAGlB,cAAS,GAAG,KAAK,CAAC;YAClB,gBAAW,GAAG,KAAK,CAAC;YAGlB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;aACrC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;SACrC;QACH,YAAC;IAAD,CAAC;;IC7BD;QA8BE,iBAAY,IAAU;;YAxBf,iBAAY,GAAG,GAAG,CAAC;YACnB,kBAAa,GAAG,GAAG,CAAC;YACpB,iBAAY,GAAG,GAAG,CAAC;YAEnB,uBAAkB,GAAG,EAAE,CAAC;YACxB,yBAAoB,GAAG,CAAC,CAAC;YACzB,uBAAkB,GAAG,EAAE,CAAC;YAExB,sBAAiB,GAAG,CAAC,CAAC;YAGtB,uBAAkB,GAAa,EAAE,CAAC;;YAGlC,kBAAa,GAAG,IAAI,CAAC;YAIrB,iBAAY,GAAkB,EAAE,CAAC;YACjC,oBAAe,GAAqB,EAAE,CAAC;YACvC,aAAQ,GAAc,EAAE,CAAC;YACzB,WAAM,GAAY,EAAE,CAAC;YACrB,YAAO,GAAa,EAAE,CAAC;YAG5B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAElC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAEtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACtD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAElD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAEhD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAE5D,IAAI,IAAI,CAAC,YAAY,EAAE;;oBACrB,KAA0B,IAAA,KAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAxC,IAAM,WAAW,WAAA;wBACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;qBACtD;;;;;;;;;aACF;YAED,IAAI,IAAI,CAAC,eAAe,EAAE;;oBACxB,KAA6B,IAAA,KAAA,SAAA,IAAI,CAAC,eAAe,CAAA,gBAAA,4BAAE;wBAA9C,IAAM,cAAc,WAAA;wBACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;qBAC/D;;;;;;;;;aACF;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;;oBACjB,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,4BAAE;wBAAhC,IAAM,OAAO,WAAA;wBAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;qBAC1C;;;;;;;;;aACF;YAED,IAAI,IAAI,CAAC,MAAM,EAAE;;oBACf,KAAoB,IAAA,KAAA,SAAA,IAAI,CAAC,MAAM,CAAA,gBAAA,4BAAE;wBAA5B,IAAM,KAAK,WAAA;wBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;qBACpC;;;;;;;;;aACF;YAED,IAAI,IAAI,CAAC,OAAO,EAAE;;oBAChB,KAAqB,IAAA,KAAA,SAAA,IAAI,CAAC,OAAO,CAAA,gBAAA,4BAAE;wBAA9B,IAAM,MAAM,WAAA;wBACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;qBACvC;;;;;;;;;aACF;SACF;QACH,cAAC;IAAD,CAAC;;;QC5EC,qBAAoB,IAAgB;YAAhB,SAAI,GAAJ,IAAI,CAAY;YAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;QAEO,0CAAoB,GAA5B;YACE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;gBAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aACtF;YACD,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAClD;;QAGD,8BAAQ,GAAR,UAAS,KAAa,EAAE,QAAgB,EAAE,QAAgB;YACxD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC5G;;QAGD,2BAAK,GAAL,UAAM,KAAa,EAAE,QAAgB;YAArC,iBAkBC;YAjBC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAChFC,aAAG,CAAC,UAAC,MAAW;gBACd,KAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC1B,KAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;gBAGhC,KAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;gBAClC,KAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;;gBAGlE,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,CAAC;gBAC1C,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC9E,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC;gBAEhD,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC,CACH,CAAC;SACH;QAED,4BAAM,GAAN;YACE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACjC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAC3C,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAEpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;QAED,gCAAU,GAAV;YACE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,OAAO,KAAK,CAAC;aACd;YAED,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE;gBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC;SACb;QAED,gCAAU,GAAV;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;gBACtB,OAAO,IAAI,CAAC;aACb;YAED,IAAI,OAAO,GAAG,IAAIC,gBAAW,EAAE,CAAC;YAChC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,OAAO,CAAC;SAChB;QAED,wCAAkB,GAAlB,UAAmB,OAAgB;YACjC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,EAAE,EAAE;gBACd,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC1D;iBAAM;gBACL,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;aACtC;SACF;QAED,0CAAoB,GAApB;YACE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACtC,OAAO,IAAI,CAAC;aACb;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;SAC3D;QAED,4CAAsB,GAAtB;YACE,OAAO,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC5C;;oBAxFyBC,eAAU;;;QANzB,WAAW;YAHvBH,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAO0BG,eAAU;WANzB,WAAW,CA+FvB;0BAxGD;KASA;;;QCHE;SAAgB;QAEhB,6BAAO,GAAP;YACE,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAC,CAAC;;gBAE/D,IAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;gBAGnC,IAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;gBAE1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aACvB,CAAC,CAAC;SACJ;;QAbU,WAAW;YAHvBH,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,WAAW,CAcvB;0BAnBD;KAKA;;;QCaE,wBACU,WAAwB,EACxB,IAAgB,EAChB,WAAwB,EACxB,MAAc,EACd,cAA8B,EAC9B,gBAAkC,EAClC,aAA4B;YAN5B,gBAAW,GAAX,WAAW,CAAa;YACxB,SAAI,GAAJ,IAAI,CAAY;YAChB,gBAAW,GAAX,WAAW,CAAa;YACxB,WAAM,GAAN,MAAM,CAAQ;YACd,mBAAc,GAAd,cAAc,CAAgB;YAC9B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,kBAAa,GAAb,aAAa,CAAe;YAEpC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;SACnC;QAEO,gCAAO,GAAf,UAAgB,OAAgB;YAAhC,iBAqBC;YApBC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CACxGC,aAAG,CAAC,UAAC,QAAa;gBAChB,IAAI,QAAQ,EAAE;oBACZ,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;oBACzB,IAAI,QAAQ,CAAC,UAAU,EAAE;wBACvB,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;qBAC1C;oBACD,IAAM,WAAW,GAAW;wBAC1B,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,KAAK,EAAE,OAAO,CAAC,UAAU;qBAC1B,CAAC;oBACF,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;wBACvB,UAAU,EAAE,KAAI,CAAC,cAAc;wBAC/B,WAAW,aAAA;wBACX,mBAAmB,EAAE,OAAO;qBAC7B,CAAC,CAAC;iBACJ;gBACD,OAAO,IAAI,CAAC;aACb,CAAC,CACH,CAAC;SACH;QAED,6BAAI,GAAJ,UAAK,OAAgB;YAArB,iBAuBC;;YArBC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAC7B;gBACE,IAAM,GAAG,GAAG,+BAA+B,CAAC;gBAC5C,IAAM,KAAK,GAAG,qCAAqC,CAAC;gBAEpD,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;oBACvD,KAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxD,CAAC,CAAC;gBAEH,KAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;aAC9C,EACD,UAAC,QAAQ;gBACP,IAAM,GAAG,GAAG,6BAA6B,CAAC;gBAC1C,IAAM,KAAK,GAAG,mCAAmC,CAAC;gBAClD,IAAM,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;gBAE5E,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;oBACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC3E,CAAC,CAAC;aACJ,CACF,CAAC;SACH;QAED,uCAAc,GAAd;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAC/EA,aAAG,CAAC,UAAC,QAAa;;gBAChB,IAAM,QAAQ,GAAc,EAAE,CAAC;;oBAC/B,KAAsB,IAAA,aAAA,SAAA,QAAQ,CAAA,kCAAA,wDAAE;wBAA3B,IAAM,OAAO,qBAAA;wBAChB,IAAM,aAAa,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC3C,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qBAC9B;;;;;;;;;gBACD,OAAO,QAAQ,CAAC;aACjB,CAAC,CACH,CAAC;SACH;QAED,sCAAa,GAAb,UAAc,OAAgB;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SAC3H;QAED,mCAAU,GAAV,UAAW,EAAU,EAAE,IAAY,EAAE,UAAmB;YACtD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAClIA,aAAG,CAAC,UAAC,QAAa;gBAChB,IAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;gBAEhB,OAAO,OAAO,CAAC;aAChB,CAAC,CACH,CAAC;SACH;;oBAvFsB,WAAW;oBAClBE,eAAU;oBACH,WAAW;oBAChBC,aAAM;oBACEC,qBAAc;oBACZC,uBAAgB;oBACnBC,uBAAa;;;QAX3B,cAAc;YAH1BP,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAMuB,WAAW;gBAClBG,eAAU;gBACH,WAAW;gBAChBC,aAAM;gBACEC,qBAAc;gBACZC,uBAAgB;gBACnBC,uBAAa;WAX3B,cAAc,CA6F1B;6BA3GD;KAcA;;;QCiBE,wBACU,IAAgB,EAChB,cAA8B,EAC9B,gBAAkC,EAClC,aAA4B,EAC5B,WAAwB;YAJxB,SAAI,GAAJ,IAAI,CAAY;YAChB,mBAAc,GAAd,cAAc,CAAgB;YAC9B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,kBAAa,GAAb,aAAa,CAAe;YAC5B,gBAAW,GAAX,WAAW,CAAa;YAZlC,mBAAc,GAAoB,EAAE,CAAC;;YAGrC,sBAAiB,GAAG,KAAK,CAAC;YAE1B,6BAAwB,GAAc,EAAE,CAAC;SAQrC;QAEJ,yCAAgB,GAAhB,UAAiB,IAAY;;;gBAC3B,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,OAAO,WAAA;oBAChB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;wBACzB,OAAO,OAAO,CAAC;qBAChB;iBACF;;;;;;;;;SACF;QAED,+CAAsB,GAAtB,UAAuB,IAAY;;;gBACjC,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAA,gBAAA,4BAAE;oBAAtC,IAAM,OAAO,WAAA;oBAChB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;wBACjC,OAAO,OAAO,CAAC;qBAChB;iBACF;;;;;;;;;SACF;;QAGD,0CAAiB,GAAjB;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CACnCN,aAAG,CAAC,UAAC,QAAkB;;gBACrB,IAAM,cAAc,GAAqB,EAAE,CAAC;;oBAE5C,KAAsB,IAAA,aAAA,SAAA,QAAQ,CAAA,kCAAA,wDAAE;wBAA3B,IAAM,OAAO,qBAAA;wBAChB,cAAc,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;qBAClD;;;;;;;;;gBAED,OAAO,cAAc,CAAC;aACvB,CAAC,CACH,CAAC;SACH;QAED,yCAAgB,GAAhB,UAAiB,IAAY;;;gBAC3B,KAA6B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAA,gBAAA,4BAAE;oBAArE,IAAM,cAAc,WAAA;oBACvB,IAAI,cAAc,CAAC,IAAI,KAAK,IAAI,EAAE;wBAChC,OAAO,cAAc,CAAC;qBACvB;iBACF;;;;;;;;;SACF;QAED,0CAAiB,GAAjB,UAAkB,IAAY;YAA9B,iBAgBC;YAfC,IAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,aAAa,EAAE;;gBAEjB,OAAOO,OAAE,CAAC,SAAS,CAAC,CAAC;aACtB;;YAGD,OAAOC,aAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACzHR,aAAG,CAAC,UAAC,MAAM;gBACT,IAAM,UAAU,yBAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAK,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC;gBACrD,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBACtD,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAClE,CAAC,CACH,CAAC;SACH;QAED,4CAAmB,GAAnB,UAAoB,KAAa;;YAE/B,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;aAClD;iBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC9B,IAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;aAC3B;YAED,OAAO,SAAS,CAAC;SAClB;QAED,2CAAkB,GAAlB,UAAmB,KAAmB,EAAE,UAAkB;;YACxD,IAAI,MAAM,GAAa,EAAE,CAAC;YAC1B,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;;gBAEzD,KAAmB,IAAA,eAAA,SAAA,UAAU,CAAA,sCAAA,8DAAE;oBAA1B,IAAM,IAAI,uBAAA;oBACb,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;wBACzC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACrC;iBACF;;;;;;;;;YAED,OAAO,MAAM,CAAC;SACf;QAED,+CAAsB,GAAtB,UAAuB,KAAmB,EAAE,UAAkB;;YAC5D,IAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC1D,IAAM,SAAS,GAAY,EAAE,CAAC;YAE9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,OAAO,SAAS,CAAC;aAClB;;gBAED,KAAoB,IAAA,WAAA,SAAA,MAAM,CAAA,8BAAA,kDAAE;oBAAvB,IAAM,KAAK,mBAAA;oBACd,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;iBACtC;;;;;;;;;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAClC;QAEO,uCAAc,GAAtB,UAAuB,CAAS;YAC9B,IAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;SAC3C;QAED,iCAAQ,GAAR,UAAS,CAAS,EAAE,CAAS,EAAE,CAAS;YACtC,OAAO,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SACvF;QAED,iCAAQ,GAAR,UAAS,GAAW;;YAElB,IAAM,cAAc,GAAG,kCAAkC,CAAC;YAC1D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,UAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC9B,CAAC,CAAC;YAEH,IAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrE,OAAO,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;SAC7G;QAED,kCAAS,GAAT,UAAU,MAAe;;;YAEvB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC,GAAG,CAAC,CAAC;;gBAEV,KAAoB,IAAA,WAAA,SAAA,MAAM,CAAA,8BAAA,kDAAE;oBAAvB,IAAM,KAAK,mBAAA;oBACd,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;oBACf,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;oBACjB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;iBACjB;;;;;;;;;YAED,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;YACnB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;YACnB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;YAEnB,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3B;QAED,yCAAgB,GAAhB,UAAiB,KAAmB,EAAE,QAA8B;;;gBAClE,KAAmB,IAAA,KAAA,SAAA,KAAK,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAA3B,IAAM,IAAI,WAAA;oBACb,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;wBAC1B,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,uCAAc,GAAd,UAAe,OAAuB,EAAE,SAAiB;YACvD,KAAK,IAAM,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBACrC,IAAI,QAAQ,KAAK,SAAS,EAAE;oBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACjC;aACF;;YAGD,OAAO,SAAS,CAAC;SAClB;QAEO,sCAAa,GAArB,UAAsB,KAAmB,EAAE,UAAkB;;YAE3D,IAAM,KAAK,GAAuB,EAAE,CAAC;YAErC,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO,KAAK,CAAC;aACd;YAED,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;gBAE3C,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;iBACjC;aACF;iBAAM;;gBAEL,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;aACzC;YAED,OAAO,KAAK,CAAC;SACd;QAED,yCAAgB,GAAhB,UAAiB,OAAuB,EAAE,OAAgB;;;gBACxD,KAAmB,IAAA,KAAA,SAAA,OAAO,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAA7B,IAAM,IAAI,WAAA;oBACb,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,aAAa,EAAE;4BAC5C,OAAO,IAAI,CAAC;yBACb;qBACF;yBAAM;wBACL,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,EAAE;4BACvC,OAAO,IAAI,CAAC;yBACb;qBACF;iBACF;;;;;;;;;SACF;QAEO,6CAAoB,GAA5B,UAA6B,UAA6B,EAAE,WAAmB,EAAE,OAAuB;YACtG,IAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;YAC9D,uBAAuB,CAAC,UAAU,GAAG,UAAU,CAAC;YAChD,IAAI,UAAU,CAAC,UAAU,EAAE;;gBAEzB,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE;oBACxC,uBAAuB,CAAC,SAAS,GAAG,UAAU,CAAC,KAAe,CAAC;iBAChE;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;oBAC1C,uBAAuB,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACzD;qBAAM;oBACL,uBAAuB,CAAC,SAAS,GAAG,WAAW,CAAC;iBACjD;gBACD,uBAAuB,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBAChG,uBAAuB,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC9G,uBAAuB,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;aACzH;YACD,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3G,uBAAuB,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAC9C,CAAC,uBAAuB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CACtG,CAAC;aACH;YACD,OAAO,uBAAuB,CAAC;SAChC;QAEO,iDAAwB,GAAhC,UACE,cAA8B,EAC9B,WAAmB,EACnB,OAAuB;;YAEvB,IAAM,WAAW,GAA8B,EAAE,CAAC;YAElD,IAAI,cAAc,CAAC,UAAU,EAAE;gBAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;aAC9F;iBAAM,IAAI,cAAc,CAAC,YAAY,EAAE;;oBACtC,KAAyB,IAAA,KAAA,SAAA,cAAc,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAjD,IAAM,UAAU,WAAA;wBACnB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;qBAC/E;;;;;;;;;aACF;YAED,OAAO,WAAW,CAAC;SACpB;QAEO,6CAAoB,GAA5B,UAA6B,cAA8B;YACzD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxE;QAEO,iDAAwB,GAAhC,UAAiC,cAA8B;YAC7D,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;gBAChC,OAAO,SAAS,CAAC;aAClB;YAED,IAAI,KAAK,CAAC,cAAc,CAAC,YAAmB,CAAC,IAAK,cAAc,CAAC,YAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;gBAEtG,IAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAE,cAAc,CAAC,YAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7F,IAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;gBAC3D,OAAO,CAAC,QAAQ,GAAG,GAAG,IAAI,UAAU,CAAC;aACtC;iBAAM;;gBAEL,OAAO,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAmB,CAAC,CAAC;aAC5D;SACF;QAEO,+CAAsB,GAA9B,UAA+B,OAA6B,EAAE,OAAuB;;;gBACnF,KAAgC,IAAA,KAAA,SAAA,OAAO,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAjD,IAAM,iBAAiB,WAAA;oBAC1B,IAAI,iBAAiB,CAAC,YAAY,EAAE;wBAClC,OAAO,iBAAiB,CAAC,KAAK,CAAC;qBAChC;iBACF;;;;;;;;;YAED,OAAO,SAAS,CAAC;SAClB;;;;;;;;;QAYD,yCAAgB,GAAhB,UAAiB,OAAsB,EAAE,WAAmB;;;gBAC1D,KAAsB,IAAA,KAAA,SAAA,OAAO,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAAnC,IAAM,OAAO,WAAA;oBAChB,IACE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;yBAC5C,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EACjF;wBACA,OAAO,OAAO,CAAC;qBAChB;iBACF;;;;;;;;;YAED,OAAO,SAAS,CAAC;SAClB;QAED,0CAAiB,GAAjB,UAAkB,OAAuB,EAAE,IAAiB;;YAC1D,IAAM,QAAQ,GAA2B,EAAE,CAAC;YAE5C,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,QAAQ,CAAC;aACjB;;gBAED,KAAmC,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA,gBAAA,4BAAE;oBAAtE,IAAM,oBAAoB,WAAA;oBAC7B,IAAM,gBAAgB,GAAmB,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;;wBAEzF,KAAsB,IAAA,qBAAA,SAAA,IAAI,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4BAAhC,IAAM,OAAO,WAAA;;4BAEhB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gCAC/B,IAAM,WAAW,GAAW,OAAiB,CAAC;;gCAG9C,IAAI,WAAW,KAAK,oBAAoB,EAAE;oCACxC,IAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;oCACxD,oBAAoB,CAAC,OAAO,GAAG,gBAAgB,CAAC;oCAChD,oBAAoB,CAAC,IAAI,GAAG,oBAAoB,CAAC;oCACjD,oBAAoB,CAAC,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;oCAC/H,IAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;oCACjF,IAAI,YAAY,EAAE;wCAChB,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;qCAClD;oCACD,oBAAoB,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;oCACxF,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;oCAC7F,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;iCACrC;6BACF;iCAAM;;gCAEL,QAAQ,CAAC,IAAI,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;6BAC3C;yBACF;;;;;;;;;iBACF;;;;;;;;;YAED,OAAO,QAAQ,CAAC;SACjB;QAED,6CAAoB,GAApB;;;;YAGE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;;gBAEzB,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,OAAO,WAAA;oBAChB,IAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;oBAE1C,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;oBAChC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACnE,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC3E,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;oBAE3F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACzC;;;;;;;;;SACF;QAED,0CAAiB,GAAjB,UACE,KAA4B,EAC5B,KAA4B,EAC5B,MAA8B,EAC9B,MAA8B,EAC9B,MAAc,EACd,MAAc,EACd,YAAoB,EACpB,YAAoB;;YAGpB,QACE,KAAK,KAAK,KAAK;iBACd,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC;iBAC7B,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC;iBAC7B,CAAC,YAAY,IAAI,YAAY,KAAK,YAAY,CAAC,EAChD;SACH;QAED,kDAAyB,GAAzB,UAA0B,OAAgB;;;gBACxC,KAA8B,IAAA,KAAA,SAAA,IAAI,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAAxD,IAAM,eAAe,WAAA;oBACxB,IAAI,eAAe,KAAK,OAAO,EAAE;wBAC/B,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,uDAA8B,GAA9B,UAA+B,OAAgB;YAC7C,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE;gBAC3C,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACzF;iBAAM;gBACL,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7C;SACF;QAED,4CAAmB,GAAnB,UAAoB,OAAuB;YACzC,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,EAAE,CAAC;aACX;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnC,OAAO,EAAE,CAAC;aACX;YACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBAC1B,OAAO,EAAE,CAAC;aACX;YACD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;SACpE;QAED,uCAAc,GAAd;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;SAChD;QAED,8CAAqB,GAArB,UAAsB,WAAsB,EAAE,cAAsB;;;YAElE,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,gBAAgB,GAAG,CAAC,CAAC;;oBAEzB,KAAsB,IAAA,gCAAA,SAAA,WAAW,CAAA,CAAA,wCAAA,iEAAE;wBAA9B,IAAM,OAAO,wBAAA;wBAChB,IAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;wBAExF,IAAI,CAAC,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;;4BAEtF,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,gBAAgB,EAAE;gCAC3C,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;6BACzE;yBACF;qBACF;;;;;;;;;gBAED,IAAI,gBAAgB,GAAG,CAAC,EAAE;oBACxB,CAAC,IAAI,gBAAgB,GAAG,CAAC,CAAC;oBAC1B,YAAY,GAAG,CAAC,CAAC;iBAClB;qBAAM;oBACL,YAAY,EAAE,CAAC;iBAChB;gBAED,IAAI,YAAY,KAAK,cAAc,EAAE;oBACnC,OAAO,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;iBAC7B;aACF;;YAGD,OAAO,CAAC,CAAC,CAAC;SACX;QAED,mCAAU,GAAV,UAAW,OAAuB,EAAE,WAAsB;;YAA1D,iBA4CC;YA3CC,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAE9B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1C,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAE5B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7C,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACpD;;YAGD,IAAI,qBAA6B,CAAC;;gBAClC,KAA8B,IAAA,gBAAA,SAAA,WAAW,CAAA,wCAAA,iEAAE;oBAAtC,IAAM,eAAe,wBAAA;oBACxB,IAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;oBAE3E,IAAI,eAAe,KAAK,OAAO,EAAE;wBAC/B,qBAAqB,GAAG,eAAe,CAAC,aAAa,CAAC;wBACtD,MAAM;qBACP;iBACF;;;;;;;;;YAED,IAAI,qBAAqB,EAAE;gBACzB,OAAO,CAAC,aAAa,GAAG,qBAAqB,CAAC;aAC/C;iBAAM;gBACL,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aAC7E;YAED,IAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YACxF,IAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEnF,IAAI,YAAY,IAAI,CAAC,EAAE;gBACrB,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC;gBACvC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,OAAO,OAAO,CAAC;aAChB;iBAAM;;gBAEL,IAAM,KAAG,GAAG,qCAAqC,CAAC;gBAClD,IAAM,OAAK,GAAG,2CAA2C,CAAC;gBAE1D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAG,EAAE,OAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;oBACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAG,CAAC,EAAE,MAAM,CAAC,OAAK,CAAC,CAAC,CAAC;iBACtD,CAAC,CAAC;aACJ;SACF;;oBApeeE,eAAU;oBACA,cAAc;oBACZG,uBAAgB;oBACnBC,uBAAa;oBACf,WAAW;;;QAbvB,cAAc;YAH1BP,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAUgBG,eAAU;gBACA,cAAc;gBACZG,uBAAgB;gBACnBC,uBAAa;gBACf,WAAW;WAbvB,cAAc,CA8e1B;6BArgBD;KAuBA;;;QCPE;YANQ,WAAM,GAAG,IAAIG,qBAAU,EAAE,CAAC;YAC1B,iBAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;;YAG7C,sBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;SAEtD;QAER,sCAAS,GAAjB,UAAkB,IAAY;YAA9B,iBAwBC;YAvBC,OAAO,IAAIC,eAAU,CAAC,UAAC,QAAQ;gBAC7B,KAAI,CAAC,MAAM,CAAC,IAAI,CACd,2BAA2B,GAAG,IAAI,GAAG,OAAO;;gBAG5C,UAAC,IAAS;oBACR,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAErC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAE5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC;iBACrB;;gBAGD,UAAC,GAAQ,KAAO;;gBAGhB,UAAC,KAAU;oBACT,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACvB,CACF,CAAC;aACH,CAAC,CAAC;SACJ;QAEO,qCAAQ,GAAhB,UAAiB,IAAY;YAA7B,iBAiBC;YAhBC,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1CV,aAAG,CAAC,UAAC,KAAU;gBACb,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEhC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE5B,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACnC,KAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEpC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;aACtB,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE7C,OAAO,UAAU,CAAC;SACnB;QAED,oCAAO,GAAP,UAAQ,IAAY;YAClB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAOO,OAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;aAChD;YAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAChE;;QA5DU,kBAAkB;YAH9BR,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,kBAAkB,CA6D9B;iCAtED;KASA;;ICLA;QAKE,2BAAY,MAAc,EAAE,MAA2B,EAAE,KAAY;YACnE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;QACH,wBAAC;IAAD,CAAC;;;QCNC;YAFA,eAAU,GAAG,CAAC,CAAC;SAEC;;QAHL,gBAAgB;YAH5BA,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,gBAAgB,CAI5B;+BATD;KAKA;;;QCgBE;YAbO,uBAAkB,GAAG,KAAK,CAAC;YAC3B,mBAAc,GAAG,KAAK,CAAC;YACvB,mBAAc,GAAG,KAAK,CAAC;YACvB,iBAAY,GAAG,CAAC,CAAC;YACjB,mBAAc,GAAG,KAAK,CAAC;YACvB,uBAAkB,GAAG,KAAK,CAAC;YAC3B,gBAAW,GAAG,KAAK,CAAC;YACpB,kBAAa,GAAG,KAAK,CAAC;YACtB,UAAK,GAAG,KAAK,CAAC;YACd,uBAAkB,GAAG,KAAK,CAAC;YAE3B,sBAAiB,GAAkB,IAAIY,YAAO,EAAQ,CAAC;SAE9C;;QAfL,aAAa;YAHzBZ,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,aAAa,CAgBzB;4BAtBD;KAMA;;;QCIE;SAAgB;;QAJL,aAAa;YAHzBA,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,aAAa,CAKzB;4BAXD;KAMA;;;QCmCE,uBACU,aAA4B,EAC5B,WAAwB,EACxB,cAA8B,EAC9B,cAA8B,EAC9B,aAA4B,EAC5B,IAAgB,EAChB,gBAAkC;YANlC,kBAAa,GAAb,aAAa,CAAe;YAC5B,gBAAW,GAAX,WAAW,CAAa;YACxB,mBAAc,GAAd,cAAc,CAAgB;YAC9B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,kBAAa,GAAb,aAAa,CAAe;YAC5B,SAAI,GAAJ,IAAI,CAAY;YAChB,qBAAgB,GAAhB,gBAAgB,CAAkB;;YAtB5C,4BAAuB,GAAkB,IAAIY,YAAO,EAAQ,CAAC;;YAG7D,4BAAuB,GAAkB,IAAIA,YAAO,EAAQ,CAAC;;YAG7D,oCAA+B,GAAkB,IAAIA,YAAO,EAAQ,CAAC;;;YAIrE,wBAAmB,GAAkB,IAAIA,YAAO,EAAQ,CAAC;YAGzD,sBAAiB,GAAG,KAAK,CAAC;SAUtB;QAEJ,uCAAe,GAAf,UAAgB,IAAY;;;gBAC1B,KAAqB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAA,gBAAA,4BAAE;oBAArD,IAAM,MAAM,WAAA;oBACf,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;wBACxB,OAAO,MAAM,CAAC;qBACf;iBACF;;;;;;;;;SACF;QAED,yCAAiB,GAAjB,UAAkB,OAAgB,EAAE,MAAe;;;YAEjD,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;iBAC9B;qBAAM;oBACL,OAAO,KAAK,CAAC;iBACd;aACF;;gBAED,KAAkC,IAAA,KAAA,SAAA,MAAM,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAlD,IAAM,mBAAmB,WAAA;oBAC5B,IAAI,mBAAmB,KAAK,OAAO,CAAC,IAAI,EAAE;wBACxC,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,8CAAsB,GAAtB,UAAuB,OAAgB;;YACrC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,OAAO;aACR;;;YAID,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBACnC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACrE,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjG,IAAI,cAAc,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,EAAE;wBAC9D,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC/C;iBACF;aACF;iBAAM;;oBACL,KAA6B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAA,gBAAA,4BAAE;wBAA9D,IAAM,cAAc,WAAA;wBACvB,IAAI,cAAc,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,EAAE;4BAC9D,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;yBAC5D;qBACF;;;;;;;;;aACF;SACF;QAED,yCAAiB,GAAjB;;YACE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,OAAO;aACR;;gBAED,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,OAAO,WAAA;oBAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;wBACpC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;qBACrD;iBACF;;;;;;;;;SACF;QAED,wCAAgB,GAAhB;YACE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,OAAO;aACR;YAED,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,EAAE,CAAC;SACvC;QAEM,6CAAqB,GAA5B;;;;;gBAGE,KAAqB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAA,gBAAA,4BAAE;oBAArD,IAAM,MAAM,WAAA;oBACf,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBACxD,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnF,IAAI,CAAC,aAAa,EAAE;4BAClB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBAClC;qBACF;iBACF;;;;;;;;;SACF;QAEM,8CAAsB,GAA7B;;;;;gBAGE,KAAqB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAA,gBAAA,4BAAE;oBAArD,IAAM,MAAM,WAAA;oBACf,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBACxD,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;;4BACnF,KAA6B,IAAA,oBAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;gCAA9D,IAAM,cAAc,WAAA;gCACvB,IAAI,cAAc,CAAC,eAAe,KAAK,aAAa,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE;oCACvH,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iCAC/C;6BACF;;;;;;;;;qBACF;iBACF;;;;;;;;;SACF;QAED,6CAAqB,GAArB,UACE,MAAc,EACd,cAAqC,EACrC,KAA8B,EAC9B,KAAc,EACd,WAAoB;YAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9D,IACE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,EACtC,cAAc,EACd,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,EACvC,KAAK,EACL,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,EACvC,KAAK,EACL,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,EAC7C,WAAW,CACZ,EACD;oBACA,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5C,OAAO;iBACR;aACF;SACF;QAED,0CAAkB,GAAlB,UACE,MAAc,EACd,cAAqC,EACrC,eAAuB,EACvB,UAAmB,EACnB,KAA8B,EAC9B,KAAc,EACd,WAAoB;;YAGpB,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE9E,IAAM,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC;YAC5D,sBAAsB,CAAC,IAAI,GAAG,cAAc,CAAC;YAC7C,sBAAsB,CAAC,KAAK,GAAG,KAAK,CAAC;YACrC,sBAAsB,CAAC,KAAK,GAAG,KAAK,CAAC;YACrC,sBAAsB,CAAC,eAAe,GAAG,eAAe,CAAC;YACzD,sBAAsB,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/C,sBAAsB,CAAC,WAAW,GAAG,WAAW,CAAC;YAEjD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SAC7D;QAED,0CAAkB,GAAlB,UACE,MAAc,EACd,cAAqC,EACrC,KAA8B,EAC9B,KAAc,EACd,WAAoB;;;gBAEpB,KAA8B,IAAA,KAAA,SAAA,MAAM,CAAC,uBAAuB,CAAA,gBAAA,4BAAE;oBAAzD,IAAM,eAAe,WAAA;oBACxB,IACE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,eAAe,CAAC,IAAI,EACpB,cAAc,EACd,eAAe,CAAC,KAAK,EACrB,KAAK,EACL,eAAe,CAAC,KAAK,EACrB,KAAK,EACL,eAAe,CAAC,WAAW,EAC3B,WAAW,CACZ,EACD;wBACA,OAAO,eAAe,CAAC;qBACxB;iBACF;;;;;;;;;YACD,OAAO,SAAS,CAAC;SAClB;QAED,0CAAkB,GAAlB,UAAmB,WAAmB,EAAE,WAAmB;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxE,IACE,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW;oBACvE,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,EACvE;oBACA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtD,OAAO;iBACR;aACF;SACF;QAED,uCAAe,GAAf,UAAgB,WAAmB,EAAE,WAAmB,EAAE,KAAa;;YAErE,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAElD,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;YACtD,mBAAmB,CAAC,WAAW,GAAG,WAAW,CAAC;YAC9C,mBAAmB,CAAC,WAAW,GAAG,WAAW,CAAC;YAC9C,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;YAElC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACpE;QAED,uCAAe,GAAf,UAAgB,WAAmB,EAAE,WAAmB;;;gBACtD,KAA2B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAA,gBAAA,4BAAE;oBAAhE,IAAM,YAAY,WAAA;oBACrB,IAAI,YAAY,CAAC,WAAW,KAAK,WAAW,IAAI,YAAY,CAAC,WAAW,KAAK,WAAW,EAAE;wBACxF,OAAO,YAAY,CAAC,KAAK,CAAC;qBAC3B;iBACF;;;;;;;;;SACF;QAED,2DAAmC,GAAnC,UAAoC,MAAc,EAAE,aAAmC;;;;YAGrF,IAAI,QAAgB,CAAC;YACrB,IAAI,UAAkB,CAAC;YACvB,IAAI,SAAiB,CAAC;YACtB,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,IAAI,oBAA6C,CAAC;YAClD,IAAI,eAAuC,CAAC;YAE5C,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACpH,IAAI,eAAe,EAAE;gBACnB,QAAQ,GAAG,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;aAClD;YACD,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACtH,IAAI,eAAe,EAAE;gBACnB,UAAU,GAAG,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;aACpD;YACD,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACrH,IAAI,eAAe,EAAE;gBACnB,SAAS,GAAG,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;aACnD;YAED,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE;;;aAG3C;YAED,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE;;oBACjF,KAAyB,IAAA,KAAA,SAAA,aAAa,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAhD,IAAM,UAAU,WAAA;wBACnB,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE;4BACpC,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;4BAClH,IAAI,UAAU,EAAE;gCACd,IAAM,IAAI,GACR,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;gCAExH,IAAI,IAAI,GAAG,UAAU,EAAE;oCACrB,UAAU,GAAG,IAAI,CAAC;oCAClB,oBAAoB,GAAG,UAAU,CAAC;iCACnC;6BACF;yBACF;qBACF;;;;;;;;;aACF;YAED,OAAO,oBAAoB,CAAC;SAC7B;QAEO,yCAAiB,GAAzB,UAA0B,IAA2B;;;;gBAEnD,KAA0B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,WAAW,WAAA;oBACpB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;;wBACxE,KAAsB,IAAA,qBAAA,SAAA,OAAO,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4BAAnC,IAAM,OAAO,WAAA;4BAChB,IAAI,OAAO,CAAC,OAAO,EAAE;;oCACnB,KAAyB,IAAA,qBAAA,SAAA,OAAO,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;wCAA1C,IAAM,UAAU,WAAA;wCACnB,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE;4CACvC,OAAO,IAAI,CAAC;yCACb;qCACF;;;;;;;;;6BACF;yBACF;;;;;;;;;iBACF;;;;;;;;;YACD,OAAO,KAAK,CAAC;SACd;QAED,2CAAmB,GAAnB;YACE,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;SAChE;QAED,0CAAkB,GAAlB;;;YAIE,IAAI,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE;gBAChE,OAAO,IAAI,CAAC;aACb;YAED,OAAO,KAAK,CAAC;SACd;QAED,sDAA8B,GAA9B;;;;YAIE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC7B,OAAO,IAAI,CAAC;aACb;;;gBAGD,KAA0B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,WAAW,WAAA;oBACpB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;;wBACxE,KAAsB,IAAA,qBAAA,SAAA,OAAO,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4BAAnC,IAAM,OAAO,WAAA;4BAChB,IAAI,OAAO,CAAC,UAAU,EAAE;gCACtB,OAAO,IAAI,CAAC;6BACb;yBACF;;;;;;;;;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,4CAAoB,GAApB;YACE,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;;YAGpB,IAAI,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;gBACrD,MAAM,GAAG,IAAI,CAAC;aACf;YAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;gBACtD,OAAO,GAAG,IAAI,CAAC;aAChB;YAED,IAAI,MAAM,IAAI,OAAO,EAAE;gBACrB,OAAO,IAAI,CAAC;aACb;YAED,OAAO,KAAK,CAAC;SACd;QAED,oCAAY,GAAZ,UAAa,KAAa;YACxB,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC;YAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YACjG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QAED,2CAAmB,GAAnB;;YAEE,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnE,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACpE;SACF;QAED,iCAAS,GAAT,UAAU,IAAa;YACrB,IAAM,MAAM,GAAW,IAAI,MAAM,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC;;YAGnC,IAAI,0BAA0B,GAAG,CAAC,CAAC;YAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnE,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAClE,0BAA0B,GAAG,CAAC,CAAC;oBAC/B,MAAM;iBACP;aACF;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAClF,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;SAC/C;QAED,2CAAmB,GAAnB;;YACE,IAAM,QAAQ,GAAqB,EAAE,CAAC;YAEtC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,OAAO,QAAQ,CAAC;aACjB;;gBAED,KAA0B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,WAAW,WAAA;oBACpB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBAClE,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBAE1E,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACjC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBACxB;iBACF;;;;;;;;;YAED,OAAO,QAAQ,CAAC;SACjB;QAED,kDAA0B,GAA1B,UAA2B,gBAAkC;;YAA7D,iBAgCC;YA/BC,IAAM,iBAAiB,GAAgD,IAAI,GAAG,EAA0C,CAAC;YAEzH,IAAM,sBAAsB,GAAG,IAAI,GAAG,EAAiC,CAAC;;gBACxE,KAAsB,IAAA,qBAAA,SAAA,gBAAgB,CAAA,kDAAA,gFAAE;oBAAnC,IAAM,OAAO,6BAAA;oBAChB,IAAM,KAAK,GAAkB,EAAE,CAAC;;wBAChC,KAA0B,IAAA,qBAAA,SAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;4BAAvD,IAAM,WAAW,WAAA;4BACpB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;4BACxE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gCACnC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;6BAC1B;yBACF;;;;;;;;;oBACD,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;iBAC5C;;;;;;;;;;YAGD,sBAAsB,CAAC,OAAO,CAAC,UAAC,KAAoB,EAAE,OAAuB;;gBAC3E,IAAM,eAAe,GAA2B,EAAE,CAAC;;oBACnD,KAAmB,IAAA,UAAA,SAAA,KAAK,CAAA,4BAAA,+CAAE;wBAArB,IAAM,IAAI,kBAAA;wBACb,IAAM,QAAQ,GAAG,KAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gDAC3D,OAAO;;;4BAGhB,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,GAAA,CAAC,EAAE;gCAC5E,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;6BAC/B;;;4BALH,KAAsB,IAAA,6BAAA,SAAA,QAAQ,CAAA,CAAA,kCAAA;gCAAzB,IAAM,OAAO,qBAAA;wCAAP,OAAO;6BAMjB;;;;;;;;;qBACF;;;;;;;;;gBACD,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;aACjD,CAAC,CAAC;YAEH,OAAO,iBAAiB,CAAC;SAC1B;QAED,mCAAW,GAAX,UAAY,eAA4B,EAAE,cAAuB;YAAjE,iBAkCC;YAlCW,gCAAA,EAAA,oBAA4B;YACtC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;gBACnC,OAAO;aACR;;;YAID,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,eAAe,EAAE;gBAC7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,OAAO;aACR;YAED,IAAI,QAAQ,GAAG,cAAc,CAAC;YAE9B,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;aACzD;YAED,IAAI,CAAC,IAAI;iBACN,IAAI,CAAC,yBAAyB,GAAG,QAAQ,GAAG,mBAAmB,GAAG,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;iBAC/H,SAAS,EAAE,CAAC;YAEf,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAE/B,IAAI,CAAC,eAAe,EAAE;gBACpB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;oBACjC,KAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;oBAClC,IAAI,KAAI,CAAC,iBAAiB,EAAE;wBAC1B,KAAI,CAAC,IAAI;6BACN,IAAI,CAAC,yBAAyB,GAAG,QAAQ,GAAG,mBAAmB,GAAG,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;6BAC/H,SAAS,EAAE,CAAC;qBAChB;iBACF,EAAE,EAAE,CAAC,CAAC;aACR;SACF;QAED,uCAAe,GAAf;YACE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;gBACnC,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;SACvD;;oBAjdwB,aAAa;oBACf,WAAW;oBACR,cAAc;oBACd,cAAc;oBACf,aAAa;oBACtBT,eAAU;oBACE,gBAAgB;;;QA1BjC,aAAa;YAHzBH,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAqByB,aAAa;gBACf,WAAW;gBACR,cAAc;gBACd,cAAc;gBACf,aAAa;gBACtBG,eAAU;gBACE,gBAAgB;WA1BjC,aAAa,CAsezB;4BA5fD;KAsBA;;;QCDE,sBACU,WAAwB,EACxB,aAA4B,EAC5B,aAA4B,EAC5B,cAA8B;YAH9B,gBAAW,GAAX,WAAW,CAAa;YACxB,kBAAa,GAAb,aAAa,CAAe;YAC5B,kBAAa,GAAb,aAAa,CAAe;YAC5B,mBAAc,GAAd,cAAc,CAAgB;YAZxC,mBAAc,GAAY,EAAE,CAAC;YAC7B,gBAAW,GAAa,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAE3F,sBAAiB,GAAG,KAAK,CAAC;YAE1B,iBAAY,GAAkB,IAAIS,YAAO,EAAQ,CAAC;YAClD,kBAAa,GAAkB,IAAIA,YAAO,EAAQ,CAAC;SAO/C;QAEJ,sCAAe,GAAf,UAAgB,KAAY;;;gBAC1B,KAA4B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAA,gBAAA,4BAAE;oBAA5C,IAAM,aAAa,WAAA;oBACtB,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;wBACrC,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,uCAAgB,GAAhB,UAAiB,MAAc;;YAC7B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5D,OAAO,KAAK,CAAC;aACd;;gBAED,KAAmB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA,gBAAA,4BAAE;oBAAlD,IAAM,IAAI,WAAA;oBACb,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;wBACxB,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,2CAAoB,GAApB,UAAqB,KAAY;;YAE/B,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACnD,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;wBAC9C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACjC,OAAO;qBACR;iBACF;aACF;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjC;YAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC3B;QAED,oDAA6B,GAA7B;;;;;YAKE,IAAI,eAAe,CAAC;;;;gBAIpB,KAAoB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAA,gBAAA,4BAAE;oBAApC,IAAM,KAAK,WAAA;;wBACd,KAAyB,IAAA,oBAAA,SAAA,KAAK,CAAC,WAAW,CAAA,CAAA,gBAAA,4BAAE;4BAAvC,IAAM,UAAU,WAAA;4BACnB,eAAe,GAAG,UAAU,CAAC;4BAE7B,IAAI,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE;;gCAEzD,OAAO;6BACR;yBACF;;;;;;;;;iBACF;;;;;;;;;YAED,IAAI,CAAC,eAAe,EAAE;gBACpB,OAAO;aACR;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnE,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE;oBACnE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM;iBACP;aACF;SACF;QAED,kCAAW,GAAX,UAAY,KAAa;;YACvB,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC;YAE9C,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;gBACtD,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;aAC1B;iBAAM;gBACL,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACtE;qBAAM;oBACL,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACrE;aACF;YAED,IAAI,CAAC,6BAA6B,EAAE,CAAC;;YAGrC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;YAElD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,EAAE,CAAC;;gBACpD,KAAoB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAA,gBAAA,4BAAE;oBAApC,IAAM,KAAK,WAAA;oBACd,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBACjE;;;;;;;;;YACD,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAEjC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC3B;QAED,+BAAQ,GAAR,UAAS,IAAa;YACpB,IAAM,KAAK,GAAU,IAAI,KAAK,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,WAAW,CAAC;YAEjC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACvE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC3E;iBAAM;gBACL,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC1E;;YAGD,IAAI,yBAAyB,GAAG,CAAC,CAAC;YAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClE,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC/D,yBAAyB,GAAG,CAAC,CAAC;oBAC9B,MAAM;iBACP;aACF;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/E,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;SAC7C;QAED,kCAAW,GAAX,UAAY,KAAY;;;;gBAEtB,KAA0B,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,WAAW,WAAA;oBACpB,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBACrE,IAAM,yBAAyB,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;wBACtE,IAAI,yBAAyB,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,EAAE;4BACtD,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBAC/C;qBACF;iBACF;;;;;;;;;;YAGD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aACrB;YAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;QAED,qCAAc,GAAd,UAAe,IAAY;;;gBACzB,KAAoB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAA,gBAAA,4BAAE;oBAAnD,IAAM,KAAK,WAAA;oBACd,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;wBACvB,OAAO,KAAK,CAAC;qBACd;iBACF;;;;;;;;;SACF;;oBA9JsB,WAAW;oBACT,aAAa;oBACb,aAAa;oBACZ,cAAc;;;QAb7B,YAAY;YAHxBZ,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAWuB,WAAW;gBACT,aAAa;gBACb,aAAa;gBACZ,cAAc;WAb7B,YAAY,CAyKxB;2BArLD;KAYA;;;QCoCE,yBACU,YAA0B,EAC1B,aAA4B,EAC5B,cAA8B,EAC9B,IAAgB,EAChB,aAA4B;YALtC,iBAiBC;YAhBS,iBAAY,GAAZ,YAAY,CAAc;YAC1B,kBAAa,GAAb,aAAa,CAAe;YAC5B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,SAAI,GAAJ,IAAI,CAAY;YAChB,kBAAa,GAAb,aAAa,CAAe;YA7B/B,cAAS,GAAG,QAAQ,CAAC;YAErB,SAAI,GAAG,CAAC,CAAC;YAGR,qBAAgB,GAAG,KAAK,CAAC;YAEzB,cAAS,GAAG,GAAG,CAAC;YAChB,2BAAsB,GAAG,GAAG,CAAC;YAC7B,yBAAoB,GAAG,GAAG,CAAC;YAE5B,oBAAe,GAAkB,IAAIY,YAAO,EAAE,CAAC;YAC/C,kBAAa,GAAkB,IAAIA,YAAO,EAAE,CAAC;;;YAQ7C,kCAA6B,GAAG,KAAK,CAAC;YAEtC,qBAAgB,GAAG,KAAK,CAAC;YAS9B,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBACnD,KAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;gBACxC,KAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;gBACvC,KAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC;gBACxC,KAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB,CAAC,CAAC;SACJ;QAEO,0CAAgB,GAAxB;;;YAEE,IAAI,IAAI,CAAC,UAAU,EAAE;;oBACnB,KAAkB,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,4BAAE;wBAAxD,IAAM,GAAG,WAAA;wBACZ,IAAM,MAAM,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtD,MAAM,CAAC,MAAM,EAAE,CAAC;qBACjB;;;;;;;;;aACF;;YAGD,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QAEO,6BAAG,GAAX,UAAY,GAAW,EAAE,IAAY;YACnC,IAAI,CAAC,GAAG,EAAE;gBACR,GAAG,GAAG,CAAC,CAAC;aACT;YAED,IAAI,MAAM,GAAW,GAAG,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE;gBAC3B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;aACvB;YAED,OAAO,MAAM,CAAC;SACf;QAEO,kCAAQ,GAAhB,UAAiB,MAAc,EAAE,aAA6B;YAA7B,8BAAA,EAAA,oBAA6B;YAC5D,IAAM,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YAC7C,IAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC;YACvE,IAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC;YAE/D,IAAI,aAAa,EAAE;gBACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAClF;iBAAM;gBACL,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aAC1D;SACF;QAEO,2CAAiB,GAAzB;YAAA,iBAyCC;YAxCC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;;YAGD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;YAE1E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACpC,OAAO;aACR;;;;;YAMD,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAM,QAAQ,GAAW,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/D,IAAM,KAAK,GACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY;kBACrE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;kBAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;YAE9F,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;;YAG9D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;;YAGlC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,CAAC;gBAClD,IAAM,UAAU,GAAG,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAE/D,IAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEpC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC1B,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC/B,GAAG,CAAC,IAAI,EAAE,CAAC;aACZ,CAAC,CAAC;SACJ;QAEO,0CAAgB,GAAxB;YAAA,iBAOC;YANC,IAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,IAAM,WAAW,GAAGC,UAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC,SAAS,CAAC;gBAClD,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B,CAAC,CAAC;SACJ;QAEO,yCAAe,GAAvB;YACE,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;aAC3C;SACF;QAED,4CAAkB,GAAlB,UAAmB,OAAe,EAAE,QAAgB;YAClD,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,KAAK,SAAS,EAAE;gBACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,IAAI,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;aAC3H;iBAAM;;gBAEL,IAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,GAAG,EAAE,GAAU,EAAE,CAAC,CAAC;gBACpD,OAAO,GAAG,QAAQ,EAAE,OAAO,GAAG,EAAE,GAAU,EAAE,CAAC,CAAC;;gBAG9C,IAAM,UAAU,GAAG,OAAO,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC;gBAC1D,OAAU,OAAO,SAAI,UAAY,CAAC;aACnC;SACF;QAED,sCAAY,GAAZ,UAAa,QAAgB;YAC3B,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,KAAK,SAAS,EAAE;gBACnD,IAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;gBAExG,IAAI,QAAQ,GAAG,EAAE,EAAE;oBACjB,OAAO,QAAQ,GAAG,CAAC,CAAC;iBACrB;qBAAM,IAAI,QAAQ,GAAG,EAAE,EAAE;oBACxB,OAAO,QAAQ,GAAG,CAAC,CAAC;iBACrB;gBAED,OAAO,QAAQ,CAAC;aACjB;iBAAM;gBACL,IAAI,QAAQ,IAAI,EAAE,EAAE;oBAClB,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;oBAC7B,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC9B,OAAO,EAAE,CAAC;iBACX;gBAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;aACvC;SACF;QAED,8CAAoB,GAApB,UAAqB,QAAgB;YACnC,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,KAAK,SAAS,EAAE;gBACnD,IAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;gBAEvG,OAAO,QAAQ,CAAC;aACjB;iBAAM;gBACL,IAAI,QAAQ,IAAI,EAAE,EAAE;oBAClB,OAAO,EAAE,CAAC;iBACX;qBAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;oBAC7B,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC9B,OAAO,CAAC,CAAC;iBACV;gBAED,OAAO,CAAC,CAAC;aACV;SACF;QAED,gDAAsB,GAAtB,UAAuB,QAAgB;YACrC,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,KAAK,SAAS,EAAE;gBACnD,OAAO,CAAC,CAAC;aACV;iBAAM;gBACL,IAAI,QAAQ,IAAI,EAAE,EAAE;oBAClB,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;oBAC7B,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC9B,OAAO,CAAC,CAAC;iBACV;gBACD,OAAO,CAAC,CAAC;aACV;SACF;QAEO,2CAAiB,GAAzB,UAA0B,CAAM;YAAhC,iBAgCC;;YA9BC,IAAM,OAAO,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACzE,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAEtE,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3D,IAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAE/D,IAAI,QAAgB,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY,GAAG,WAAW,EAAE;gBACpF,QAAQ;oBACN,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI;yBACrF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAE5E,IAAI,QAAQ,GAAG,CAAC,EAAE;oBAChB,QAAQ,GAAG,CAAC,CAAC;iBACd;aACF;iBAAM;gBACL,QAAQ;oBACN,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI;wBACvF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;wBAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;aACvD;YAED,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEjC,UAAU,CAAC;gBACT,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACjC,KAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC1B,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;aACpH,EAAE,CAAC,CAAC,CAAC;SACP;QAED,mCAAS,GAAT,UAAU,IAAS;YAAnB,iBAYC;YAXC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,UAAU,CAAC;oBACT,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC;oBAChC,KAAI,CAAC,iBAAiB,EAAE,CAAC;iBAC1B,EAAE,CAAC,CAAC,CAAC;aACP;SACF;QAEO,2CAAiB,GAAzB;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC;SACb;QAED,mCAAS,GAAT,UAAU,gBAAsB;YAC9B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;gBAC7B,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtF,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,OAAO;aACR;YAED,IAAM,mBAAmB,GAAwB,IAAI,mBAAmB,EAAE,CAAC;YAC3E,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEzE,IAAI,gBAAgB,EAAE;gBACpB,mBAAmB,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;gBAChE,mBAAmB,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC;aAC7D;iBAAM;gBACL,mBAAmB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;gBAC7E,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;aAClF;YAED,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAExE,IAAI,CAAC,sBAAsB,GAAG,mBAAmB,CAAC;YAElD,IAAI,gBAAgB,EAAE;gBACpB,gBAAgB,CAAC,KAAK;oBACpB,OAAO;wBACP,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1D,IAAI;wBACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1D,IAAI;wBACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1D,IAAI;wBACJ,IAAI,CAAC,oBAAoB;wBACzB,GAAG,CAAC;gBACN,gBAAgB,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;gBAC/F,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3E;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAEO,+CAAqB,GAA7B;YACE,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;gBACvC,OAAO,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;aAC/F;YAED,OAAO,SAAS,CAAC;SAClB;QAEO,6CAAmB,GAA3B;YACE,OAAO,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACzD;QAED,mDAAyB,GAAzB;YACE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;aAChC;SACF;QAED,2CAAiB,GAAjB;YACE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;aAC7B;SACF;QAED,0CAAgB,GAAhB;YAAA,iBAiLC;YAhLC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;gBAC3C,OAAO;aACR;YAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE7B,UAAU,CAAC;gBACT,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;oBAClC,SAAS,EAAE,WAAW;oBACtB,SAAS,EAAE,OAAO;oBAClB,aAAa,EAAE,OAAO;;oBAEtB,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,KAAK;;;;oBAIf,OAAO,EAAE;wBACP,YAAY,CAAC,MAAM,CAAC;;4BAElB,OAAO,EAAE,CAAC;4BACV,KAAK,EAAE,SAAS;4BAChB,UAAU,EAAE,KAAK;yBAClB,CAAC;wBACF,aAAa,CAAC,MAAM,CAAC;4BACnB,aAAa,EAAE;gCACb,IAAI,EAAE,CAAC;6BACR;4BACD,KAAK,EAAE,MAAM;4BACb,kBAAkB,EAAE,KAAI,CAAC,qBAAqB,EAAE;4BAChD,gBAAgB,EAAE,KAAI,CAAC,mBAAmB,EAAE;yBAC7C,CAAC;wBACF,cAAc,CAAC,MAAM,CAAC;4BACpB,SAAS,EAAE,oBAAoB;4BAC/B,gBAAgB,EAAE,MAAM;4BACxB,kBAAkB,EAAE,MAAM;4BAC1B,MAAM,EAAE,KAAI,CAAC,mBAAmB,EAAE;4BAClC,kBAAkB,EAAE,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAI,CAAC;4BACtD,YAAY,EAAE,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,CAAC;4BAC1C,oBAAoB,EAAE,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAI,CAAC;4BAC1D,sBAAsB,EAAE,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAI,CAAC;yBAC/D,CAAC;qBACH;iBACF,CAAC,CAAC;gBAEH,IAAI,aAAqB,CAAC;gBAE1B,IAAI,KAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;;oBAEzC,aAAa,GAAG,gBAAgB,GAAG,KAAI,CAAC,mBAAmB,CAAC,aAAa,GAAG,aAAa,CAAC;iBAC3F;qBAAM;;oBAEL,aAAa;wBACX,0BAA0B;4BAC1B,KAAI,CAAC,mBAAmB,CAAC,IAAI;4BAC7B,GAAG;4BACH,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC9G;gBAED,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC;gBAEjE,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;oBAC1B,UAAU,CAAC;;wBAET,IAAI,KAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;;4BAEzC,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;yBAC/B;6BAAM;;4BAEL,KAAI,CAAC,mBAAmB,CAAC,YAAY,GAAG,IAAI,CAAC;4BAC7CC,0BAAK,CAAC,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;iCAClC,IAAI,CAAC,UAAC,EAAe;oCAAb,YAAG,EAAE,kBAAM;;gCAElB,KAAI,CAAC,mBAAmB,CAAC,cAAc,GAAG,GAAG,CAAC;gCAC9C,KAAI,CAAC,mBAAmB,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC;gCAC1D,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;6BAC/B,CAAC;iCACD,KAAK,CAAC,UAAC,GAAG;;gCAET,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;gCACnE,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;6BAC/B,CAAC,CAAC;yBACN;wBAED,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;wBACpE,KAAI,CAAC,cAAc,EAAE,CAAC;;wBAGtB,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE;4BAC1D,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;;;;;4BAMxF,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;yBACzF,CAAC,CAAC;;wBAGH,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE;4BAC9D,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;yBACrC,CAAC,CAAC;wBACH,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE;4BAC9D,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;yBACrC,CAAC,CAAC;wBACH,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAC,CAAM;4BACpE,IAAM,IAAI,GAAG,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;4BAC/D,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;4BAChC,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACnD,CAAC,CAAC;;;wBAIH,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;;wBAGpC,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAC,CAAM;4BACpE,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;4BAC7B,KAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;yBAC3B,CAAC,CAAC;wBAEH,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAC,CAAM;4BACpE,IAAI,KAAI,CAAC,gBAAgB,EAAE;gCACzB,KAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;6BAC3B;yBACF,CAAC,CAAC;wBAEH,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAM;4BAClE,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;yBAC/B,CAAC,CAAC;wBAEH,KAAI,CAAC,iBAAiB,EAAE,CAAC;wBAEzB,KAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;wBAC1B,KAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;qBAC7B,EAAE,CAAC,CAAC,CAAC;iBACP,CAAC,CAAC;gBAEH,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAU;;;oBAGrC,KAAI,CAAC,yBAAyB,EAAE,CAAC;iBAClC,CAAC,CAAC;gBAEH,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;oBACzB,KAAI,CAAC,iBAAiB,EAAE,CAAC;iBAC1B,CAAC,CAAC;gBAEH,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;oBACzB,KAAI,CAAC,gBAAgB,EAAE,CAAC;iBACzB,CAAC,CAAC;gBAEH,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;oBAC1B,KAAI,CAAC,eAAe,EAAE,CAAC;iBACxB,CAAC,CAAC;gBAEH,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAC,MAAM;;oBAE1C,IAAI,KAAI,CAAC,YAAY,CAAC,cAAc,IAAI,KAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;wBACrF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;4BACxB,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;yBACxB;qBACF;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;4BACxB,MAAM,CAAC,MAAM,EAAE,CAAC;yBACjB;qBACF;iBACF,CAAC,CAAC;gBAEH,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAC,MAAW;oBAC/C,KAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;oBAC1B,KAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;iBAClC,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;SACP;QAEO,kCAAQ,GAAhB,UAAiB,GAAW;YAC1B,IAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrE,OAAO,MAAM;kBACT;oBACE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;iBAC3B;kBACD,IAAI,CAAC;SACV;QAEO,+CAAqB,GAA7B;;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;;gBAED,KAAkB,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,4BAAE;oBAAxD,IAAM,GAAG,WAAA;oBACZ,IAAM,MAAM,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;oBAItD,IAAI,MAAM,CAAC,KAAK,EAAE;wBAChB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;wBAE/B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;wBACpB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;wBACtB,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;wBAErC,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;4BACnD,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC;4BACxC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;4BACnB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;4BACrB,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;yBACrC;wBAED,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;wBAEnC,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,KAAK,MAAM,CAAC,mBAAmB,EAAE;4BAC7F,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;4BACtC,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;yBACnC;wBAED,MAAM,CAAC,KAAK;4BACV,OAAO;gCACP,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gCACnC,IAAI;gCACJ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gCACnC,IAAI;gCACJ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gCACnC,IAAI;gCACJ,SAAS;gCACT,GAAG,CAAC;wBACN,MAAM,CAAC,YAAY,EAAE,CAAC;qBACvB;iBACF;;;;;;;;;SACF;QAED,8CAAoB,GAApB;;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChC,OAAO;aACR;;gBAED,KAAkB,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,4BAAE;oBAAxD,IAAM,GAAG,WAAA;oBACZ,IAAM,MAAM,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEtD,IAAI,IAAI,CAAC,sBAAsB,KAAK,MAAM,CAAC,mBAAmB,EAAE;wBAC9D,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,GAAG,IAAI,CAAC;wBAC9D,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,IAAI,CAAC;wBAC1D,MAAM,CAAC,YAAY,EAAE,CAAC;wBACtB,MAAM;qBACP;iBACF;;;;;;;;;SACF;QAEO,2CAAiB,GAAzB,UAA0B,mBAAyC;YACjE,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,KAAK,mBAAmB,EAAE;;gBAEtF,OAAO;aACR;YAED,IAAI,mBAAmB,EAAE;gBACvB,IAAI,CAAC,sBAAsB,GAAG,mBAAmB,CAAC;aACnD;YAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAEO,kDAAwB,GAAhC,UAAiC,KAAa;;YAE5C,IAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;SACpE;QAEO,uCAAa,GAArB,UAAsB,gBAAqB,EAAE,KAAY,EAAE,mBAAwC,EAAE,MAAe;YAApH,iBAsBC;YArBC,gBAAgB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAC3D,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;YAC/B,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;YAEjC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAK;gBACjC,IAAI,KAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;oBAC5C,KAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;iBAC7C;aACF,CAAC,CAAC;YAEH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE;gBAC5B,KAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;gBAC5C,IAAI,KAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;;;oBAGvC,gBAAgB,CAAC,KAAK,GAAG,KAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBAC/E,gBAAgB,CAAC,GAAG,GAAG,KAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;iBAC5E;gBACD,mBAAmB,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;gBAChE,mBAAmB,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC;aAC7D,CAAC,CAAC;SACJ;QAEO,oCAAU,GAAlB,UAAmB,mBAAwC,EAAE,KAAY;;YAEvE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;gBAC7B,OAAO;aACR;;YAGD,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBACjD,KAAK,EAAE,mBAAmB,CAAC,WAAW,GAAG,IAAI;gBAC7C,GAAG,EAAE,mBAAmB,CAAC,SAAS,GAAG,IAAI;gBACzC,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;;;;;;;;;;;;;;;;;;YAqBjE,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,sCAAY,GAAZ;;YACE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChC,OAAO;aACR;YAED,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjD,OAAO;aACR;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7E,IAAI,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,sBAAsB,EAAE;;;wBAEpF,KAAkB,IAAA,oBAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA,gBAAA,4BAAE;4BAAxD,IAAM,GAAG,WAAA;4BACZ,IAAM,MAAM,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BAEtD,IAAI,MAAM,CAAC,mBAAmB,KAAK,IAAI,CAAC,sBAAsB,EAAE;gCAC9D,MAAM,CAAC,MAAM,EAAE,CAAC;6BACjB;yBACF;;;;;;;;;oBAED,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;oBACxC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAE3D,OAAO;iBACR;aACF;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,0CAAgB,GAAhB,UAAiB,UAAkB;;;YAEjC,IAAM,aAAa,GAAwB,EAAE,CAAC;YAE9C,KAAK,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE;gBAClG,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;oBAE7D,KAAqB,IAAA,oBAAA,SAAA,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAA,CAAA,gBAAA,4BAAE;wBAA/D,IAAM,MAAM,WAAA;wBACf,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,EAAE;4BACnC,KAAK,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE;;oCACtG,KAAyB,IAAA,oBAAA,SAAA,KAAK,CAAC,WAAW,CAAA,CAAA,gBAAA,4BAAE;wCAAvC,IAAM,UAAU,WAAA;wCACnB,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;4CACxE,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;4CAE9D,IAAI,MAAM,EAAE;gDACV,IAAI,iBAAiB,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gDACxH,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;;gDAGhH,iBAAiB,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;gDAChE,eAAe,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;gDAEjE,IAAI,iBAAiB,IAAI,UAAU,IAAI,eAAe,IAAI,UAAU,EAAE;oDACpE,aAAa,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;iDAClE;6CACF;yCACF;qCACF;;;;;;;;;6BACF;yBACF;qBACF;;;;;;;;;aACF;YAED,OAAO,aAAa,CAAC;SACtB;QAED,wCAAc,GAAd;;YACE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,OAAO;aACR;;;YAID,KAAK,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE;gBAClG,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC7D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;;wBAC7C,KAAkC,IAAA,oBAAA,SAAA,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAA,CAAA,gBAAA,4BAAE;4BAA5E,IAAM,mBAAmB,WAAA;4BAC5B,IAAI,mBAAmB,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,EAAE;gCAChD,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;6BAC7C;yBACF;;;;;;;;;iBACF;aACF;;YAGD,KAAK,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE;gBAClG,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE7D,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;;wBAC5C,KAAkC,IAAA,oBAAA,SAAA,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAA,CAAA,gBAAA,4BAAE;4BAA5E,IAAM,mBAAmB,WAAA;4BAC5B,IAAI,mBAAmB,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,EAAE;gCAChD,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;6BAC7C;yBACF;;;;;;;;;iBACF;aACF;SACF;QAED,oCAAU,GAAV;YACE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEpE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACjF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9E;YACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QAED,qDAA2B,GAA3B;;YAEE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAC3Cb,aAAG,CAAC,UAAC,QAAkB;;gBACrB,IAAM,gBAAgB,GAAa,EAAE,CAAC;;oBAEtC,KAAkC,IAAA,aAAA,SAAA,QAAQ,CAAA,kCAAA,wDAAE;wBAAvC,IAAM,mBAAmB,qBAAA;wBAC5B,gBAAgB,CAAC,IAAI,CAAE,mBAA2B,CAAC,IAAI,CAAC,CAAC;qBAC1D;;;;;;;;;gBAED,OAAO,gBAAgB,CAAC;aACzB,CAAC,CACH,CAAC;SACH;QAED,gDAAsB,GAAtB,UAAuB,KAAa;YAClC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3E,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACpF,IAAI,CAAC,gBAAgB,EAAE,CAAC;;YAGxB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACnB;;oBA7xBuB,YAAY;oBACX,aAAa;oBACZ,cAAc;oBACxBE,eAAU;oBACD,aAAa;;;QA/B3B,eAAe;YAH3BH,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CA4BwB,YAAY;gBACX,aAAa;gBACZ,cAAc;gBACxBG,eAAU;gBACD,aAAa;WA/B3B,eAAe,CAyzB3B;8BA/0BD;KAsBA;;;QCbE;YAFA,cAAS,GAAe,EAAE,CAAC;SAEX;QAEhB,2CAAiB,GAAjB,UAAkB,IAAY;;;gBAC5B,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;oBAAlC,IAAM,QAAQ,WAAA;oBACjB,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;wBAC1B,OAAO,QAAQ,CAAC;qBACjB;iBACF;;;;;;;;;SACF;;QAXU,eAAe;YAH3BH,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,eAAe,CAY3B;8BAlBD;KAMA;;;QCsBE,wBACU,aAA4B,EAC5B,cAA8B,EAC9B,YAA0B,EAC1B,eAAgC,EAChC,eAAgC,EAChC,cAA8B;YAL9B,kBAAa,GAAb,aAAa,CAAe;YAC5B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,iBAAY,GAAZ,YAAY,CAAc;YAC1B,oBAAe,GAAf,eAAe,CAAiB;YAChC,oBAAe,GAAf,eAAe,CAAiB;YAChC,mBAAc,GAAd,cAAc,CAAgB;YAbjC,yBAAoB,GAAkB,IAAIY,YAAO,EAAE,CAAC;YAInD,gBAAW,GAAiB,EAAE,CAAC;YAC/B,kBAAa,GAAG,IAAIG,0BAA0B,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;SASxE;QAEI,oDAA2B,GAAnC,UAAoC,QAAyB,EAAE,YAAoB;;;YAGjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAM,iBAAiB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEtC,IACE,iBAAiB,CAAC,OAAO,CAAC,eAAe,KAAK,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe;oBAC5F,iBAAiB,CAAC,OAAO,CAAC,eAAe,KAAK,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe,EAC5F;oBACA,OAAO,iBAAiB,CAAC;iBAC1B;aACF;YAED,OAAO,SAAS,CAAC;SAClB;QAEM,mCAAU,GAAjB,UAAkB,UAAkB;;;YAElC,IAAI,OAAO,GAAwB,EAAE,CAAC;YAEtC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,KAAK,SAAS,EAAE;;gBAEhD,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;aAC7D;iBAAM;gBACL,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE;;oBAE7C,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;wBACrC,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC9F;iBACF;qBAAM;;oBAEL,KAAK,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE;;4BAClG,KAAoB,IAAA,oBAAA,SAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAA,CAAA,gBAAA,4BAAE;gCAAjD,IAAM,KAAK,WAAA;gCACd,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;oCACtE,KAAK,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE;;4CACtG,KAAyB,IAAA,oBAAA,SAAA,KAAK,CAAC,WAAW,CAAA,CAAA,gBAAA,4BAAE;gDAAvC,IAAM,UAAU,WAAA;;gDAEnB,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;oDACxE,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;oDACxG,MAAM;iDACP;6CACF;;;;;;;;;qCACF;iCACF;6BACF;;;;;;;;;qBACF;iBACF;aACF;YAED,OAAO,OAAO,CAAC;SAChB;QAEO,wCAAe,GAAvB,UACE,qBAA4C,EAC5C,YAAiC,EACjC,mBAA2B,EAC3B,YAAwB;;YAAxB,6BAAA,EAAA,gBAAwB;YAExB,IAAI,QAAQ,GAAW,YAAY,CAAC,KAAK,CAAC;YAC1C,IAAI,aAAa,GAAW,YAAY,CAAC;YAEzC,IAAI,mBAAmB,GAAG,CAAC,EAAE;;;;oBAI3B,KAAmC,IAAA,0BAAA,SAAA,qBAAqB,CAAA,4DAAA,+FAAE;wBAArD,IAAM,oBAAoB,kCAAA;wBAC7B,IACE,oBAAoB,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW;4BAC7D,oBAAoB,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,EAC7D;4BACA,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC;4BAC3C,MAAM;yBACP;qBACF;;;;;;;;;;gBAGD,QAAQ,GAAG,aAAa,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,QAAQ,GAAG,mBAAmB,CAAC;aACvF;;YAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrD,IACE,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW;oBACjE,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,EACjE;oBACA,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnC,MAAM;iBACP;aACF;;YAGD,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;YACtD,mBAAmB,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;YAC3D,mBAAmB,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;YAC3D,mBAAmB,CAAC,KAAK,GAAG,QAAQ,CAAC;YACrC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjD;;QAGO,wCAAe,GAAvB,UAAwB,MAAc,EAAE,WAAmB;;YACzD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAM,kBAAkB,GAAa,EAAE,CAAC;;;gBAGxC,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,OAAO,WAAA;;wBAChB,KAAgC,IAAA,oBAAA,SAAA,MAAM,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;4BAAhD,IAAM,iBAAiB,WAAA;4BAC1B,IAAI,iBAAiB,KAAK,OAAO,CAAC,IAAI,EAAE;gCACtC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE;oCAChC,OAAO,KAAK,CAAC;iCACd;;gCAGD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;oCACzD,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oCACjD,KAAK,EAAE,CAAC;iCACT;gCACD,MAAM;6BACP;yBACF;;;;;;;;;iBACF;;;;;;;;;;YAGD,OAAO,SAAS,CAAC;SAClB;QAEO,2CAAkB,GAA1B,UAA2B,MAAyB,EAAE,UAAkB;;;;YAItE,IAAI,wBAAwB,GAAG,CAAC,CAAC;YACjC,IAAI,yBAAyB,GAAG,CAAC,CAAC;YAClC,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAE5B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;;;gBAIjC,IAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACpI,IAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBAEjI,IAAI,UAAU,GAAG,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,UAAU,GAAG,cAAc,EAAE;;oBAE3F,wBAAwB,GAAG,CAAC,cAAc,GAAG,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;iBACvF;qBAAM,IAAI,UAAU,GAAG,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,UAAU,GAAG,gBAAgB,EAAE;;oBAErG,wBAAwB,GAAG,CAAC,UAAU,GAAG,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;iBACxF;aACF;YAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;;gBAElC,IAAI,iBAAiB,GACnB,MAAM,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBAE9H,IAAI,eAAe,GACjB,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;;gBAGxH,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC9E,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;gBAE/E,IAAI,UAAU,GAAG,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,UAAU,GAAG,eAAe,EAAE;;oBAE9F,yBAAyB,GAAG,CAAC,eAAe,GAAG,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;iBAC1F;qBAAM,IAAI,UAAU,GAAG,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,UAAU,GAAG,iBAAiB,EAAE;;oBAExG,yBAAyB,GAAG,CAAC,UAAU,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;iBAC3F;gBAED,mBAAmB,GAAG,wBAAwB,GAAG,yBAAyB,CAAC;aAC5E;YAED,OAAO,mBAAmB,CAAC;SAC5B;QAEO,4CAAmB,GAA3B,UACE,MAAyB,EACzB,aAA4B,EAC5B,MAA6B,EAC7B,mBAA2B;;YAE3B,IAAI,QAAQ,GAAG,KAAK,CAAC;;;gBAGrB,KAAoC,IAAA,KAAA,SAAA,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAA,gBAAA,4BAAE;oBAAtE,IAAM,qBAAqB,WAAA;;wBAC9B,KAA4B,IAAA,oBAAA,SAAA,aAAa,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4BAA/C,IAAM,aAAa,WAAA;4BACtB,IAAI,aAAa,CAAC,OAAO,EAAE;;oCACzB,KAAgC,IAAA,oBAAA,SAAA,aAAa,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;wCAAvD,IAAM,iBAAiB,WAAA;wCAC1B,IACE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,qBAAqB,CAAC,IAAI,EAC1B,iBAAiB,CAAC,UAAU,CAAC,IAAI,EACjC,qBAAqB,CAAC,KAAK,EAC3B,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAClC,qBAAqB,CAAC,KAAK,EAC3B,iBAAiB,CAAC,SAAS,EAC3B,qBAAqB,CAAC,WAAW,EACjC,aAAa,CAAC,OAAO,CAAC,IAAI,CAC3B,EACD;;4CAEA,IACE,CAAC,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,SAAS;gDAC7D,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,cAAc;gDACrE,qBAAqB,CAAC,eAAe,IAAI,CAAC,EAC1C;;gDAEA,IAAM,eAAe,GAAG,qBAAqB,CAAC,eAAe,CAAC;gDAC9D,IAAM,YAAY,GAAG,CAAC,CAAC;;gDAGvB,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;;oDAE3C,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;oDACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;oDACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;oDAC7D,mBAAmB,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,GAAG,eAAe,CAAC;oDACrE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;oDAErF,IAAI,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,cAAc,EAAE;wDACvE,QAAQ,GAAG,IAAI,CAAC;qDACjB;iDACF;qDAAM;;oDAEL,IAAI,iBAAiB,CAAC,UAAU,CAAC,UAAU,KAAK,KAAK,IAAI,eAAe,KAAK,CAAC,EAAE;wDAC9E,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;wDACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;wDACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;wDAC7D,mBAAmB,CAAC,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC;wDAC1D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;wDAErF,IAAI,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,cAAc,EAAE;4DACvE,QAAQ,GAAG,IAAI,CAAC;yDACjB;qDACF;yDAAM,IACL,CAAC,iBAAiB,CAAC,UAAU,CAAC,eAAe,KAAK,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,eAAe,KAAK,KAAK;wDAClH,iBAAiB,CAAC,UAAU,CAAC,aAAa,KAAK,QAAQ,EACvD;wDACA,IAAM,KAAK,GACT,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,eAAe;4DACvG,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wDAE3C,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;wDACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;wDACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;wDAC7D,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;wDAClC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;wDAErF,IAAI,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,cAAc,EAAE;4DACvE,QAAQ,GAAG,IAAI,CAAC;yDACjB;qDACF;iDACF;6CACF;iDAAM,IACL,CAAC,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,GAAG,IAAI,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI;gDACtH,qBAAqB,CAAC,eAAe,IAAI,CAAC,EAC1C;gDACA,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;gDACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;gDACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;gDAC7D,mBAAmB,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,GAAG,qBAAqB,CAAC,eAAe,CAAC;gDAC3F,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;6CACtD;iDAAM,IACL,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,CAAC,SAAS;gDAC9D,iBAAiB,CAAC,UAAU,CAAC,UAAU,KAAK,qBAAqB,CAAC,UAAU,EAC5E;;gDAEA,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;gDACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;gDACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;gDAC7D,mBAAmB,CAAC,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC;gDAC1D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;;gDAGrD,IAAI,iBAAiB,CAAC,YAAY,EAAE;oDAClC,QAAQ,GAAG,IAAI,CAAC;iDACjB;6CACF;yCACF;qCACF;;;;;;;;;6BACF;;4BAGD,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,UAAU,EAAE;gCACzC,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,mCAAmC,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gCAExG,IAAI,UAAU,EAAE;;oCAEd,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;oCACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;oCACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;oCAC7D,mBAAmB,CAAC,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC;oCACnD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;iCACtD;6BACF;yBACF;;;;;;;;;iBACF;;;;;;;;;SACF;QAEO,yCAAgB,GAAxB,UACE,MAAyB,EACzB,aAA4B,EAC5B,MAA6B,EAC7B,mBAA2B;;;;gBAG3B,KAA4B,IAAA,KAAA,SAAA,aAAa,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAA/C,IAAM,aAAa,WAAA;oBACtB,IAAI,aAAa,CAAC,OAAO,EAAE;;4BACzB,KAA2B,IAAA,qBAAA,SAAA,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAA,CAAA,gBAAA,4BAAE;gCAA1D,IAAM,YAAY,WAAA;gCACrB,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,IAAI,aAAa,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,EAAE;oCAC9G,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;iCACjE;6BACF;;;;;;;;;qBACF;iBACF;;;;;;;;;SACF;QAEO,mCAAU,GAAlB,UACE,UAAkB,EAClB,YAAoB,EACpB,MAAyB,EACzB,aAA4B,EAC5B,MAA6B,EAC7B,mBAA2B;;;gBAE3B,KAAqB,IAAA,KAAA,SAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAA,gBAAA,4BAAE;oBAAvC,IAAM,MAAM,WAAA;oBACf,IAAI,MAAM,CAAC,OAAO,EAAE;;wBAElB,IAAI,MAAM,YAAY,WAAW,EAAE;4BACjC,IAAM,WAAW,GAAG,MAAqB,CAAC;;;gCAG1C,KAAyB,IAAA,qBAAA,SAAA,WAAW,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;oCAA9C,IAAM,UAAU,WAAA;;wCACnB,KAA4B,IAAA,qBAAA,SAAA,aAAa,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4CAA/C,IAAM,aAAa,WAAA;;gDACtB,KAAgC,IAAA,qBAAA,SAAA,aAAa,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;oDAAvD,IAAM,iBAAiB,WAAA;oDAC1B,IACE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,UAAU,CAAC,IAAI,EACf,iBAAiB,CAAC,UAAU,CAAC,IAAI,EACjC,UAAU,CAAC,KAAK,EAChB,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAClC,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,EACD;wDACA,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;wDACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;wDACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;wDAC7D,mBAAmB,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;wDAC5G,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;qDACxE;iDACF;;;;;;;;;yCACF;;;;;;;;;iCACF;;;;;;;;;;;gCAGD,KAA6B,IAAA,qBAAA,SAAA,WAAW,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;oCAA9C,IAAM,cAAc,WAAA;oCACvB,IAAI,cAAc,CAAC,WAAW,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE;;4CAC7D,KAAsB,IAAA,qBAAA,SAAA,cAAc,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;gDAA1C,IAAM,OAAO,WAAA;;oDAChB,KAA4B,IAAA,qBAAA,SAAA,aAAa,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;wDAA/C,IAAM,aAAa,WAAA;wDACtB,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE;4DAClC,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;4DACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;4DACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;4DAC7D,mBAAmB,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;4DAC5G,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;yDACxE;qDACF;;;;;;;;;6CACF;;;;;;;;;wCAED,MAAM;qCACP;iCACF;;;;;;;;;yBACF;;qBAGF;iBACF;;;;;;;;;SACF;;QAGM,yCAAgB,GAAvB,UAAwB,UAAkB,EAAE,OAA4B;;;YAEtE,IAAM,kBAAkB,GAAG,IAAI,GAAG,EAAwC,CAAC;YAE3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClE,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;gBAG5D,IAAI,MAAM,GAA0B,EAAE,CAAC;gBAEvC,IAAM,wBAAwB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;gBAEzG,IAAI,wBAAwB,EAAE;;oBAE5B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;iBAC9E;qBAAM;;;wBAEL,KAA4B,IAAA,qBAAA,SAAA,aAAa,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4BAA/C,IAAM,aAAa,WAAA;4BACtB,IAAI,aAAa,CAAC,OAAO,EAAE;gCACzB,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE;oCACtC,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;oCACtD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;oCACrD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;oCAC7D,mBAAmB,CAAC,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC;oCACvD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;iCACtD;6BACF;yBACF;;;;;;;;;;wBAED,KAAqB,IAAA,4BAAA,SAAA,OAAO,CAAA,CAAA,gCAAA,qDAAE;4BAAzB,IAAM,MAAM,oBAAA;;4BAEf,IAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BAErF,IAAI,YAAY,IAAI,CAAC,EAAE;;;gCAGrB,IAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gCAExE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;gCAC7E,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;gCAC1E,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;6BAC/F;yBACF;;;;;;;;;iBACF;;gBAGD,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;aAC/C;YAED,OAAO,kBAAkB,CAAC;SAC3B;QAEM,0CAAiB,GAAxB,UAAyB,QAAmD,EAAE,iBAAyB;;YAAvG,iBAuCC;;YArCC,OAAO;;;gBAGP,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAA,gBAAA,4BAAE;oBAAlD,IAAM,QAAQ,WAAA;oBACjB,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAC;oBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;wBAC5B,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAChC;iBACF;;;;;;;;;;YAGD,QAAQ,CAAC,OAAO,CAAC,UAAC,aAAoC,EAAE,aAA4B;;;gBAElF,IAAM,QAAQ,GAAa,KAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAGzG,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;oBAC5F,IAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBAC7D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;wBAClC,IAAM,WAAW,GAAG,UAAU,CAAC;;;4BAE/B,KAA2B,IAAA,kCAAA,SAAA,aAAa,CAAA,CAAA,4CAAA,uEAAE;gCAArC,IAAM,YAAY,0BAAA;gCACrB,IAAM,OAAO,GAAG,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;gCACjF,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;oCAC9B,IAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oCAC1E,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;wCAC/D,IAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC;wCAC7E,IAAM,QAAQ,GACZ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;;wCAEpH,MAAM;qCACP;iCACF;6BACF;;;;;;;;;qBACF;iBACF;aACF,CAAC,CAAC;SACJ;QAEM,0CAAiB,GAAxB,UAAyB,IAAY,EAAE,OAA4B;;;gBACjE,KAAqB,IAAA,YAAA,SAAA,OAAO,CAAA,gCAAA,qDAAE;oBAAzB,IAAM,MAAM,oBAAA;;wBACf,KAA0B,IAAA,qBAAA,SAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;4BAAjD,IAAM,WAAW,WAAA;4BACpB,IAAI,WAAW,KAAK,IAAI,EAAE;gCACxB,OAAO,IAAI,CAAC;6BACb;yBACF;;;;;;;;;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAEM,2CAAkB,GAAzB;YACE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;SAClC;QAEM,oCAAW,GAAlB;;YACE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,OAAO;aACR;YAED,IAAI,QAAa,CAAC;YAClB,IAAI,IAAS,CAAC;;;gBAGd,KAA2B,IAAA,KAAA,SAAA,IAAI,CAAC,WAAW,CAAA,gBAAA,4BAAE;oBAAxC,IAAM,YAAY,WAAA;oBACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAChC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBACjC;;;;;;;;;YACD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;;YAGtB,QAAQ,GAAG,IAAIC,uBAAuB,CACpC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,EACxC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CACzC,CAAC;YACF,IAAI,GAAG,IAAIC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAG5B,QAAQ,GAAG,IAAID,uBAAuB,CACpC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EACzC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAC/C,CAAC;YACF,IAAI,GAAG,IAAIC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAClG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9F,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAClG,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAG5B,QAAQ,GAAG,IAAID,uBAAuB,CACpC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EACzC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAC/C,CAAC;YACF,IAAI,GAAG,IAAIC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,EACjG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9F,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAClG,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAG5B,QAAQ,GAAG,IAAID,uBAAuB,CACpC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EACzC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAC/C,CAAC;YACF,IAAI,GAAG,IAAIC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAClG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9F,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,CACnG,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAG5B,QAAQ,GAAG,IAAID,uBAAuB,CACpC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EACzC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAC/C,CAAC;YACF,IAAI,GAAG,IAAIC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,EACjG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9F,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,CACnG,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAG5B,QAAQ,GAAG,IAAID,uBAAuB,CACpC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,EACxC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAChD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CACzC,CAAC;YACF,IAAI,GAAG,IAAIC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,CAAC,EACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa;gBACvC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,oBAAoB,GAAG,CAAC;gBACpD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAChD,CAAC,CACF,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;;oBAvmBwB,aAAa;oBACZ,cAAc;oBAChB,YAAY;oBACT,eAAe;oBACf,eAAe;oBAChB,cAAc;;;QAd7B,cAAc;YAH1BjB,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAUyB,aAAa;gBACZ,cAAc;gBAChB,YAAY;gBACT,eAAe;gBACf,eAAe;gBAChB,cAAc;WAd7B,cAAc,CAinB1B;6BAroBD;KAoBA;;ICXA;QAmBE,mBAAmB,cAA8B,EAAE,OAAsB,EAAE,KAAU;;YAAlE,mBAAc,GAAd,cAAc,CAAgB;YAjBjD,qBAAgB,GAAG,KAAK,CAAC;YACzB,yBAAoB,GAAG,KAAK,CAAC;YAC7B,oBAAe,GAAG,KAAK,CAAC;YAQxB,WAAM,GAAG,CAAC,CAAC;YAEX,eAAU,GAAG,KAAK,CAAC;YACnB,aAAQ,GAAG,KAAK,CAAC;YAKf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;YAGnB,IAAI,CAAC,gBAAgB,GAAG,IAAIkB,yBAAyB,CAAC;gBACpD,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;;;gBAGH,KAA4B,IAAA,KAAA,SAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAA9C,IAAM,aAAa,WAAA;oBACtB,IAAI,aAAa,CAAC,OAAO,EAAE;;4BACzB,KAAyB,IAAA,oBAAA,SAAA,aAAa,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;gCAAhD,IAAM,UAAU,WAAA;gCACnB,QAAQ,UAAU,CAAC,UAAU,CAAC,IAAI;oCAChC,KAAK,qBAAqB,CAAC,SAAS;wCAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;wCAC7B,MAAM;oCACR,KAAK,qBAAqB,CAAC,cAAc;wCACvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;wCAC5B,MAAM;iCACT;6BACF;;;;;;;;;wBAED,IAAI,aAAa,CAAC,UAAU,EAAE;4BAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;yBAClC;qBACF;iBACF;;;;;;;;;SACF;QAES,wCAAoB,GAA9B,UAA+B,OAA6B,EAAE,KAAa;;;gBACzE,KAAyB,IAAA,KAAA,SAAA,OAAO,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAA1C,IAAM,UAAU,WAAA;oBACnB,IACE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;yBAC1C,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC1F;wBACA,OAAO,UAAU,CAAC;qBACnB;iBACF;;;;;;;;;YAED,OAAO,SAAS,CAAC;SAClB;;QAGD,iCAAa,GAAb,UAAc,aAAoC,EAAE,iBAAyB;;;YAE3E,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;iBAAM;gBACL,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;YAED,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;aACpB;;gBAED,KAA2B,IAAA,kBAAA,SAAA,aAAa,CAAA,4CAAA,uEAAE;oBAArC,IAAM,YAAY,0BAAA;oBACrB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;oBAC7F,IAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;oBAE1E,IAAI,UAAU,EAAE;wBACd,QAAQ,UAAU,CAAC,UAAU,CAAC,IAAI;4BAChC,KAAK,qBAAqB,CAAC,SAAS,EAAE;gCACpC,IAAI,eAAe,SAAQ,CAAC;gCAC5B,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oCAC7C,eAAe;wCACb,CAAC,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;6CACtD,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iCAC3E;qCAAM;oCACL,eAAe,GAAG,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;iCACzD;gCACD,IAAI,CAAC,MAAM,GAAG,eAAe,GAAG,iBAAiB,CAAC;gCAClD,MAAM;6BACP;4BACD,KAAK,qBAAqB,CAAC,cAAc,EAAE;gCACzC,IAAM,eAAe,GAAG,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;gCACtE,QAAQ,UAAU,CAAC,UAAU,CAAC,KAAK;oCACjC,KAAK,sBAAsB,CAAC,GAAG;;wCAE7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;wCAC5C,MAAM;oCACR,KAAK,sBAAsB,CAAC,KAAK;;wCAE/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;wCAC9C,MAAM;oCACR,KAAK,sBAAsB,CAAC,IAAI;;wCAE9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;wCAC7C,MAAM;iCACT;gCACD,MAAM;6BACP;4BACD,KAAK,qBAAqB,CAAC,SAAS,EAAE;gCACpC,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gCAClH,IAAI,UAAU,EAAE;oCACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oCAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oCAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iCAC9C;gCACD,MAAM;6BACP;yBACF;qBACF;iBACF;;;;;;;;;SACF;QAED,kCAAc,GAAd,UAAe,MAAsB;;YAEnC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;gBACtC,KAAK,WAAW,CAAC,QAAQ,EAAE;oBACzB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAGC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC3C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACzH,MAAM;iBACP;gBACD,KAAK,WAAW,CAAC,WAAW,EAAE;oBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACzH,MAAM;iBACP;gBACD,KAAK,WAAW,CAAC,OAAO,EAAE;oBACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC3C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACzH,MAAM;iBACP;gBACD,KAAK,WAAW,CAAC,UAAU,EAAE;oBAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACzH,MAAM;iBACP;gBACD,KAAK,WAAW,CAAC,MAAM,EAAE;oBACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACpH,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACxE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACxE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACxE,MAAM;iBACP;aACF;SACF;QAED,2BAAO,GAAP;YACE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;SACjC;QACH,gBAAC;IAAD,CAAC;;ICvKD;QAAoC,kCAAS;QAoJ3C,wBAAY,cAA8B,EAAE,kBAAsC,EAAE,OAAsB,EAAE,KAAU;YAAtH,YACE,kBAAM,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,SAWtC;YA/JgB,4BAAsB,GAAW,CAAC,CAAC;YACnC,2BAAqB,GAAW,CAAC,CAAC;YAI3C,iBAAW,GAAmB,IAAIC,cAAc,EAAE,CAAC;YACnD,oBAAc,GAAmB,IAAIA,cAAc,EAAE,CAAC;YAgJ5DX,aAAQ,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;iBACpD,IAAI,CACHR,aAAG,CAAC,UAAC,EAAc;oBAAd,kBAAc,EAAb,oBAAY;gBAChB,KAAI,CAAC,IAAI,GAAG,YAAY,CAAC;gBAEzB,KAAI,CAAC,aAAa,EAAE,CAAC;aACtB,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;;SAChB;QA7IO,sCAAa,GAArB;YACE,IAAM,YAAY,GAAG;gBACnB,oCAAoC;gBACpC,6BAA6B;gBAE7B,cAAc;gBACd,oDAAoD;gBAEpD,kEAAkE;gBAElE,qBAAqB;gBACrB,0EAA0E;gBAC1E,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,IAAM,cAAc,GAAG;gBACrB,yBAAyB;gBACzB,2BAA2B;gBAC3B,sBAAsB;gBACtB,wBAAwB;gBAExB,6BAA6B;gBAC7B,oCAAoC;gBAEpC,cAAc;gBACd,mEAAmE;gBACnE,+EAA+E;gBAC/E,sDAAsD;gBACtD,sFAAsF;gBACtF,wDAAwD;gBACxD,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;YAIb,IAAM,QAAQ,GAAG,IAAIoB,oBAAoB,CAAC;gBACxC,QAAQ,EAAE;oBACR,UAAU,EAAE;wBACV,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,IAAIC,WAAW,CAAC,OAAO,CAAC;qBAChC;iBACF;gBACD,YAAY,cAAA;gBACZ,cAAc,gBAAA;;gBAEd,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;SACjB;QAEO,4CAAmB,GAA3B;YACE,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAChD;;YAGD,IAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,IAAM,QAAQ,GAAG,IAAIC,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7F,QAAQ,CAAC,WAAW,CAAC,IAAIC,aAAa,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjG,QAAQ,CAAC,WAAW,CAAC,IAAIA,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAEtE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,GAAG,IAAIP,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAE7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;SAC7C;QAEO,sCAAa,GAArB;YACG,IAAI,CAAC,QAAgB,GAAG,IAAIC,yBAAyB,CAAC;gBACrD,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;;YAGnC,IAAI,CAAC,SAAS,GAAG,IAAIO,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;YAE9B,IAAI,CAAC,eAAe,GAAG,IAAIC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;YAGjE,IAAM,eAAe,GAAG,IAAIN,cAAc,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;YAExC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;YAGxC,IAAI,CAAC,UAAU,GAAG,IAAIO,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;;YAGzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAGhC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;QAgBM,kCAAS,GAAhB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QAEM,sCAAa,GAApB,UAAqB,aAAoC,EAAE,iBAAyB;;YAClF,iBAAM,aAAa,YAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAEtD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO;aACR;YAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;YAGtC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,UAAU,EAAE;gBACzC,IAAI,IAAI,CAAC,UAAU,EAAE;;wBACnB,KAAoB,IAAA,KAAA,SAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA,gBAAA,4BAAE;4BAAnC,IAAM,KAAK,WAAA;4BACb,KAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;yBAClD;;;;;;;;;iBACF;qBAAM;;wBACL,KAAoB,IAAA,KAAA,SAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA,gBAAA,4BAAE;4BAAnC,IAAM,KAAK,WAAA;4BACb,KAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;yBAC1C;;;;;;;;;iBACF;gBAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;aACrC;;YAGD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;;YAG9B,IAAM,KAAK,GAAG,IAAIL,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;YAE7G,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,QAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;;;YAItE,IAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/E,IAAI,CAAC,aAAa,CAAC,QAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;YAE1G,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC;YACpE,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC;SACvE;QAED,gCAAO,GAAP;YACE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;SACnC;QACH,qBAAC;IAAD,CAvNA,CAAoC,SAAS;;ICA7C;QAAkC,gCAAS;QAgLzC,sBAAY,cAA8B,EAAE,kBAAsC,EAAE,OAAsB,EAAE,KAAU;YAAtH,YACE,kBAAM,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,SAiBtC;YAjMgB,4BAAsB,GAAW,CAAC,CAAC;YACnC,gCAA0B,GAAW,EAAE,CAAC;YASjD,eAAS,GAAmB,IAAIF,cAAc,EAAE,CAAC;YACjD,oBAAc,GAAmB,IAAIA,cAAc,EAAE,CAAC;YACtD,cAAQ,GAAmB,IAAIA,cAAc,EAAE,CAAC;YAChD,iBAAW,GAAmB,IAAIA,cAAc,EAAE,CAAC;YAqKzDX,aAAQ,CAAC;gBACP,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBAChD,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBAC7C,kBAAkB,CAAC,OAAO,CAAC,kBAAkB,CAAC;aAC/C,CAAC;iBACC,IAAI,CACHR,aAAG,CAAC,UAAC,EAAmB;oBAAnB,kBAAmB,EAAlB,cAAM,EAAE,WAAG,EAAE,YAAI;gBACrB,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gBACf,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBAEjB,KAAI,CAAC,aAAa,EAAE,CAAC;aACtB,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;;SAChB;QAvKO,oCAAa,GAArB;YACE,IAAM,YAAY,GAAG;gBACnB,oCAAoC;gBACpC,6BAA6B;gBAE7B,cAAc;gBACd,oDAAoD;gBAEpD,kEAAkE;gBAElE,qBAAqB;gBACrB,0EAA0E;gBAC1E,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,IAAM,cAAc,GAAG;gBACrB,yBAAyB;gBACzB,2BAA2B;gBAC3B,sBAAsB;gBACtB,wBAAwB;gBAExB,6BAA6B;gBAC7B,oCAAoC;gBAEpC,cAAc;gBACd,mEAAmE;gBACnE,+EAA+E;gBAC/E,sDAAsD;gBACtD,sFAAsF;gBACtF,wDAAwD;gBACxD,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;YAIb,IAAM,QAAQ,GAAG,IAAIoB,oBAAoB,CAAC;gBACxC,QAAQ,EAAE;oBACR,UAAU,EAAE;wBACV,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,IAAIC,WAAW,CAAC,OAAO,CAAC;qBAChC;iBACF;gBACD,YAAY,cAAA;gBACZ,cAAc,gBAAA;;gBAEd,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;SACjB;QAEO,0CAAmB,GAA3B;YACE,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAChD;;YAGD,IAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,IAAM,QAAQ,GAAG,IAAIC,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7F,QAAQ,CAAC,WAAW,CAAC,IAAIC,aAAa,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjG,QAAQ,CAAC,WAAW,CAAC,IAAIA,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;;YAItE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,GAAG,IAAIP,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAE7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;SAC7C;QAEO,oCAAa,GAArB;YACG,IAAI,CAAC,QAAgB,GAAG,IAAIC,yBAAyB,CAAC;gBACrD,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;;YAGnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,IAAM,cAAc,GAAG,IAAIE,cAAc,EAAE,CAAC;YAC5C,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;;YAGnC,IAAI,CAAC,SAAS,GAAG,IAAIK,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;YAE9B,IAAI,CAAC,eAAe,GAAG,IAAIC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;YAGjE,IAAM,eAAe,GAAG,IAAIN,cAAc,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;YAExC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;YAGxC,IAAI,CAAC,UAAU,GAAG,IAAIO,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;;YAGzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;;YAGxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YAG5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;;YAGpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;QAsBM,gCAAS,GAAhB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QAEM,oCAAa,GAApB,UAAqB,aAAoC,EAAE,iBAAyB;;YAClF,iBAAM,aAAa,YAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAEtD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO;aACR;;YAGD,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,MAAM,GAAG,GAAG,CAAC;YAEjB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,OAAO,GAAG,GAAG,CAAC;YAElB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;;;gBAGd,KAA2B,IAAA,kBAAA,SAAA,aAAa,CAAA,4CAAA,uEAAE;oBAArC,IAAM,YAAY,0BAAA;oBACrB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;oBAC7F,IAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC1E,IAAI,UAAU,EAAE;wBACd,QAAQ,UAAU,CAAC,UAAU,CAAC,IAAI;4BAChC,KAAK,qBAAqB,CAAC,GAAG,EAAE;gCAC9B,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gCAC1F,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;gCACxF,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;gCACjD,MAAM;6BACP;4BACD,KAAK,qBAAqB,CAAC,IAAI,EAAE;gCAC/B,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gCAC3F,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;gCAC1F,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;gCAClD,MAAM;6BACP;yBACF;qBACF;iBACF;;;;;;;;;YAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;YAGtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAGR,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/G,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,GAAGA,UAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;;;YAIpH,IAAM,iBAAiB,GAAG,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,oBAAoB,KAAK,iBAAiB,EAAE;gBACnD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAGA,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;gBAC9D,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC;aAC/C;;YAGD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,UAAU,EAAE;gBACzC,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBAC7C,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;iBAC5C;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;iBACpC;gBAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;aACrC;;YAGD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;;YAG9B,IAAM,KAAK,GAAG,IAAIG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;YAE7G,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,QAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;;;YAItE,IAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/E,IAAI,CAAC,aAAa,CAAC,QAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEpG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC;YACzE,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC;;;SAIvE;QAED,8BAAO,GAAP;YACE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;SACnC;QACH,mBAAC;IAAD,CAzSA,CAAkC,SAAS;;;QCyBzC,0BACU,cAA8B,EAC9B,kBAAsC,EACtC,gBAAkC,EAClC,cAA8B,EAC9B,eAAgC,EAChC,cAA8B;YANxC,iBAYC;YAXS,mBAAc,GAAd,cAAc,CAAgB;YAC9B,uBAAkB,GAAlB,kBAAkB,CAAoB;YACtC,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,mBAAc,GAAd,cAAc,CAAgB;YAC9B,oBAAe,GAAf,eAAe,CAAiB;YAChC,mBAAc,GAAd,cAAc,CAAgB;YAdhC,UAAK,GAAQ,KAAK,EAAE,CAAC;;YAGrB,eAAU,GAAgB,EAAE,CAAC;YAanC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,CAAC;;gBAEjD,KAAI,CAAC,YAAY,EAAE,CAAC;aACrB,CAAC,CAAC;SACJ;QAEO,uCAAY,GAApB;;;;gBAEE,KAAwB,IAAA,KAAA,SAAA,IAAI,CAAC,UAAU,CAAA,gBAAA,4BAAE;oBAApC,IAAM,SAAS,WAAA;oBAClB,SAAS,CAAC,OAAO,EAAE,CAAC;iBACrB;;;;;;;;;YACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;;gBAGrB,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAA,gBAAA,4BAAE;oBAArD,IAAM,OAAO,WAAA;oBAChB,QAAQ,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;wBACnC,KAAK,eAAe,CAAC,aAAa,CAAC;4BACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC1G,MAAM;wBACR,KAAK,eAAe,CAAC,eAAe,CAAC;4BACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC5G,MAAM;wBACR,KAAK,eAAe,CAAC,SAAS,CAAC;4BAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC5G,MAAM;qBACT;iBACF;;;;;;;;;SACF;QAED,sBAAY,oCAAM;iBAAlB;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;aACrC;;;WAAA;QAEO,iCAAM,GAAd;YACE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/C;QAEO,8CAAmB,GAA3B,UACE,WAAwB,EACxB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY;YAEZ,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IAAI,aAAa,GAAG,CAAC,CAAC;YAEtB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO,EAAE,KAAK;gBAC1D,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE;oBACvC,aAAa,EAAE,CAAC;iBACjB;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO,EAAE,KAAK;gBAC1D,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE;oBACvC,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,aAAa,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC;oBACjF,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,aAAa,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC;oBACjF,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,aAAa,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC;oBAEjF,aAAa,EAAE,CAAC;iBACjB;aACF,CAAC,CAAC;SACJ;QAEO,kCAAO,GAAf,UAAgB,UAAkB;;YAChC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,KAAK,SAAS,EAAE;;gBAEhD,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;aACtE;YAED,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU,CAAC;;YAG9C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACxB;;YAGD,IAAI,CAAC,mBAAmB,CACtB,WAAW,CAAC,QAAQ,EACpB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC1F,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC1F,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,EACjD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CAClD,CAAC;YACF,IAAI,CAAC,mBAAmB,CACtB,WAAW,CAAC,WAAW,EACvB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,EACjD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CAClD,CAAC;YACF,IAAI,CAAC,mBAAmB,CACtB,WAAW,CAAC,OAAO,EACnB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC1F,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC1F,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,EAClD,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CACnD,CAAC;YACF,IAAI,CAAC,mBAAmB,CACtB,WAAW,CAAC,UAAU,EACtB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAC9C,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,EAClD,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CACnD,CAAC;;;YAIF,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAE3D,IAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;;gBAErF,KAAwB,IAAA,KAAA,SAAA,IAAI,CAAC,UAAU,CAAA,gBAAA,4BAAE;oBAApC,IAAM,SAAS,WAAA;;oBAElB,SAAS,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;;oBAGxH,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;wBACzC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACjG;yBAAM;wBACL,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;qBACvG;iBACF;;;;;;;;;;YAGD,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;;;;YAMzG,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAEjB,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAChD;QAEO,yCAAc,GAAtB;YACE,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAExC,IAAI,MAAM,KAAK,CAAC,EAAE;gBAChB,OAAO,CAAC,CAAC;aACV;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;SAC3D;QAGM,mCAAQ,GAAf;YACE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC1E;QAEO,wCAAa,GAArB;YACE,IAAI,CAAC,QAAQ,GAAG,IAAIM,mBAAmB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;SAClC;QAEO,sCAAW,GAAnB;YACE,IAAI,CAAC,MAAM,GAAG,IAAIC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAChG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;SACzC;QAEO,wCAAa,GAArB;YACE,IAAI,CAAC,QAAQ,GAAG,IAAIC,2BAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC;;YAEhC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAIC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;;SAErD;QAEO,qCAAU,GAAlB;YACE,IAAM,KAAK,GAAG,IAAI,CAAC;YACnB,IAAM,MAAM,GAAG,CAAC,CAAC;YAEjB,IAAM,QAAQ,GAAG,IAAIC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAM,QAAQ,GAAG,IAAIjB,0BAA0B,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAErE,IAAM,KAAK,GAAG,IAAIE,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;YACzD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;YAC5B,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACvB;QAEO,qCAAU,GAAlB;;;;;YAME,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SAChD;QAEO,qCAAU,GAAlB;;YAEE,IAAI,CAAC,KAAK,GAAG,IAAIgB,WAAW,EAAE,CAAC;YAE/B,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;YAGvC,IAAM,OAAO,GAAG,IAAIC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;;YAGxB,IAAI,CAAC,UAAU,EAAE,CAAC;;YAGlB,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;;YAGlC,IAAM,MAAM,GAAG,EAAE,CAAC;YAClB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAIP,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAIA,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAIA,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAEnD,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;YAG1B,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,0CAAe,GAAf;YACE,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACpB;;oBAjRyB,cAAc;oBACV,kBAAkB;oBACpB,gBAAgB;oBAClB,cAAc;oBACb,eAAe;oBAChB,cAAc;;QARxC;YADCQ,cAAS,CAAC,QAAQ,CAAC;sCACDC,eAAU;2DAAC;QA4K9B;YADCC,iBAAY,CAAC,eAAe,CAAC;;;;wDAK7B;QA5LU,gBAAgB;YAL5BC,cAAS,CAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,4EAAuC;;aAExC,CAAC;6CAgB0B,cAAc;gBACV,kBAAkB;gBACpB,gBAAgB;gBAClB,cAAc;gBACb,eAAe;gBAChB,cAAc;WApB7B,gBAAgB,CAiS5B;QAAD,uBAAC;KAjSD;;;QCbE;SAAgB;QAEhB,sCAAQ,GAAR,eAAa;QAHF,mBAAmB;YAL/BA,cAAS,CAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,wgBAA2C;;aAE5C,CAAC;;WACW,mBAAmB,CAI/B;QAAD,0BAAC;KAJD;;;QCaE,4BACU,cAA8B,EAC9B,cAA8B,EAC9B,cAA8B,EAC9B,aAA4B,EAC5B,YAA0B,EAC1B,YAA4B,EAC5B,WAAwB,EACxB,eAAgC,EAChC,MAAc,EACd,cAA8B;YAT9B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,kBAAa,GAAb,aAAa,CAAe;YAC5B,iBAAY,GAAZ,YAAY,CAAc;YAC1B,iBAAY,GAAZ,YAAY,CAAgB;YAC5B,gBAAW,GAAX,WAAW,CAAa;YACxB,oBAAe,GAAf,eAAe,CAAiB;YAChC,WAAM,GAAN,MAAM,CAAQ;YACd,mBAAc,GAAd,cAAc,CAAgB;SACpC;QAEI,sCAAS,GAAjB;YACE,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,CAAC;SACnD;QAEO,0DAA6B,GAArC;;YACE,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACvH,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE;;oBAClD,KAAmB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAA,gBAAA,4BAAE;wBAA9D,IAAM,IAAI,WAAA;wBACb,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC/E;;;;;;;;;aACF;YACD,IAAI,CAAC,eAAe,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrD,IAAI,CAAC,eAAe,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxE,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,uBAAuB,EAAE;oBAC5G,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;oBAC/C,MAAM;iBACP;aACF;SACF;QAED,iCAAI,GAAJ,UAAK,EAAU,EAAE,IAAY,EAAE,UAAmB;YAAlD,iBAiCC;YAhCC,IAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;YAExG,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAC9DrC,aAAG,CAAC,UAAC,OAAO;gBACV,KAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;gBACtC,KAAI,CAAC,6BAA6B,EAAE,CAAC;gBACrC,KAAI,CAAC,SAAS,EAAE,CAAC;gBAEjB,IAAM,WAAW,GAAW;oBAC1B,EAAE,IAAA;oBACF,KAAK,EAAE,OAAO,CAAC,UAAU;iBAC1B,CAAC;gBACF,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;oBACvB,UAAU,EAAE,KAAI,CAAC,cAAc;oBAC/B,WAAW,aAAA;oBACX,mBAAmB,EAAE,OAAO;iBAC7B,CAAC,CAAC;aACJ,CAAC,EACFsC,kBAAQ,CAAC;;;gBAGP,UAAU,CAAC;oBACT,GAAG,CAAC,IAAI,EAAE,CAAC;iBACZ,EAAE,GAAG,CAAC,CAAC;gBACR,UAAU,CAAC;oBACT,GAAG,CAAC,IAAI,EAAE,CAAC;iBACZ,EAAE,GAAG,CAAC,CAAC;gBACR,UAAU,CAAC;oBACT,GAAG,CAAC,IAAI,EAAE,CAAC;iBACZ,EAAE,IAAI,CAAC,CAAC;aACV,CAAC,CACH,CAAC;SACH;QAED,gCAAG,GAAH;;YAEE,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;;YAGpE,IAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEnC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAEjD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAE3E,IAAI,CAAC,eAAe,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrD,IAAI,CAAC,eAAe,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;YAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,IAAM,WAAW,GAAW;gBAC1B,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,EAAE;aACV,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACvB,UAAU,EAAE,IAAI,CAAC,cAAc;gBAC/B,WAAW,aAAA;gBACX,mBAAmB,EAAE,OAAO;aAC7B,CAAC,CAAC;SACJ;QAED,qCAAQ,GAAR;YAAA,iBAKC;;YAHC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;gBAC3B,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;aAC5C,CAAC,CAAC;SACJ;QAED,mCAAM,GAAN,UAAO,IAAY;;YAEjB,IAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;YAEtC,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;oBAnIyB,cAAc;oBACd,cAAc;oBACd,cAAc;oBACf,aAAa;oBACd,YAAY;oBACZC,oBAAc;oBACf,WAAW;oBACP,eAAe;oBACxBpC,aAAM;oBACEC,qBAAc;;;QAX7B,kBAAkB;YAH9BL,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAG0B,cAAc;gBACd,cAAc;gBACd,cAAc;gBACf,aAAa;gBACd,YAAY;gBACZwC,oBAAc;gBACf,WAAW;gBACP,eAAe;gBACxBpC,aAAM;gBACEC,qBAAc;WAX7B,kBAAkB,CAsI9B;iCAzJD;KAmBA;;;QCLE,gCAAoB,UAAsB;YAAtB,eAAU,GAAV,UAAU,CAAY;SAAI;QAE9C,yCAAQ,GAAR;YACE,IAAI,CAAC,OAAO,GAAG,IAAIO,YAAO,EAAE,CAAC;SAC9B;QAEM,mCAAE,GAAT;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAEM,uCAAM,GAAb;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,oDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBAnB+B6B,gBAAU;;QAiB1C;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;yEAGlD;QAxBU,sBAAsB;YALlCC,cAAS,CAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,o8BAA8C;;aAE/C,CAAC;6CAMgCG,gBAAU;WAL/B,sBAAsB,CAyBlC;QAAD,6BAAC;KAzBD;;;QCEE,8BAAoB,YAA4B,EAAU,gBAAkC;YAAxE,iBAAY,GAAZ,YAAY,CAAgB;YAAU,qBAAgB,GAAhB,gBAAgB,CAAkB;SAAI;;QAGhG,mCAAI,GAAJ,UAAK,OAAe;YAApB,iBAoBC;YAnBC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5CxC,aAAG,CAAC,UAAC,MAAM;gBACT,OAAO,MAAM,CAAC;aACf,CAAC,EACFyC,kBAAQ,CAAC,UAAC,MAAM;gBACd,IAAM,UAAU,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjH,UAAU,CAAC,OAAkC,CAAC,OAAO,GAAG,MAAM,CAAC;gBAEhE,OAAQ,UAAU,CAAC,OAAkC,CAAC,OAAO,CAAC,IAAI,CAChEzC,aAAG,CAAC,UAAC,aAAa;oBAChB,IAAI,aAAa,KAAK,CAAC,EAAE;wBACvB,OAAO,IAAI,CAAC;qBACb;oBAED,OAAO,KAAK,CAAC;iBACd,CAAC,CACH,CAAC;aACH,CAAC,CACH,CAAC;SACH;;oBAvBiCuC,oBAAc;oBAA4BlC,uBAAgB;;;QADjF,oBAAoB;YAHhCN,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAEkCwC,oBAAc,EAA4BlC,uBAAgB;WADjF,oBAAoB,CAyBhC;mCAnCD;KAUA;;;QCSE,iCACU,UAAsB,EACtB,cAA8B,EAC9B,kBAAsC,EACtC,WAAwB,EACxB,oBAA0C,EAC1C,aAA4B;YAL5B,eAAU,GAAV,UAAU,CAAY;YACtB,mBAAc,GAAd,cAAc,CAAgB;YAC9B,uBAAkB,GAAlB,kBAAkB,CAAoB;YACtC,gBAAW,GAAX,WAAW,CAAa;YACxB,yBAAoB,GAApB,oBAAoB,CAAsB;YAC1C,kBAAa,GAAb,aAAa,CAAe;YATtC,aAAQ,GAAc,EAAE,CAAC;YACzB,YAAO,GAAG,IAAI,CAAC;YAUb,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QAEO,8CAAY,GAApB;YAAA,iBAKC;YAJC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,UAAC,QAAQ;gBACtD,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB,CAAC,CAAC;SACJ;QAED,0CAAQ,GAAR,eAAa;QAEb,wCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,6CAAW,GAAX,UAAY,OAAgB;YAA5B,iBAKC;YAJC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;gBAC/D,KAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;aAC9C,CAAC,CAAC;SACJ;QAED,+CAAa,GAAb,UAAc,OAAgB;YAA9B,iBAaC;YAZC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,iCAAiC,CAAC;iBACvC,IAAI,CACHL,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAC,QAAQ;wBAC5D,KAAI,CAAC,YAAY,EAAE,CAAC;qBACrB,CAAC,CAAC;iBACJ;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;;oBA3CqBwC,gBAAU;oBACN,cAAc;oBACV,kBAAkB;oBACzB,WAAW;oBACF,oBAAoB;oBAC3B,aAAa;;QAV3B,uBAAuB;YALnCH,cAAS,CAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,8vDAA+C;;aAEhD,CAAC;6CAMsBG,gBAAU;gBACN,cAAc;gBACV,kBAAkB;gBACzB,WAAW;gBACF,oBAAoB;gBAC3B,aAAa;WAV3B,uBAAuB,CAiDnC;QAAD,8BAAC;KAjDD;;;QCEE,gCACS,UAAsB,EACrB,gBAAkC,EAClC,aAA4B,EAC5B,kBAAsC;YAHvC,eAAU,GAAV,UAAU,CAAY;YACrB,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,kBAAa,GAAb,aAAa,CAAe;YAC5B,uBAAkB,GAAlB,kBAAkB,CAAoB;SAC5C;QAEJ,yCAAQ,GAAR;YAAA,iBA+BC;YA9BC,IAAI,CAAC,cAAc,GAAG;gBACpB,GAAG,EAAE,OAAO;gBACZ,cAAc,EAAE,KAAK;gBACrB,WAAW,EAAE,EAAE;gBACf,aAAa,EAAE,MAAM;gBACrB,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,UAAC,IAAS,EAAE,IAAS;oBAC3B,IAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAChC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,KAAU;wBAC5C,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACpD,IAAI,CAAC,OAAO,CAAC,CAAC;wBACd,KAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;qBACxB,CAAC,CAAC;oBACH,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACzB;gBACD,eAAe,EAAE,2FAIhB;aACF,CAAC;YAEF,IAAI,CAAC,gBAAgB;iBAClB,GAAG,CAAC,gCAAgC,CAAC;iBACrC,IAAI,CACHxC,aAAG,CAAC,UAAC,MAAM;gBACT,KAAI,CAAC,aAAa,GAAG,0DAA0D,GAAG,MAAM,CAAC;aAC1F,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAEM,8CAAa,GAApB,UAAqB,IAAS;YAA9B,iBAWC;YAVC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;;gBAEvB,OAAO;aACR;YAED,IAAM,GAAG,GAAG,kCAAkC,CAAC;YAC/C,IAAM,KAAK,GAAG,wCAAwC,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;gBACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;aACtH,CAAC,CAAC;SACJ;QAED,mCAAE,GAAF;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,uCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,oDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBA/DoBwC,gBAAU;oBACHnC,uBAAgB;oBACnBC,uBAAa;oBACR,kBAAkB;;QA0DhD;YADC8B,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;yEAGlD;QApEU,sBAAsB;YALlCC,cAAS,CAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,2pBAA8C;;aAE/C,CAAC;6CAMqBG,gBAAU;gBACHnC,uBAAgB;gBACnBC,uBAAa;gBACR,kBAAkB;WARrC,sBAAsB,CAqElC;QAAD,6BAAC;KArED;;;QCKE,8BACU,UAAsB,EACtB,cAA8B,EAC9B,oBAA0C,EAC1C,aAA4B;YAH5B,eAAU,GAAV,UAAU,CAAY;YACtB,mBAAc,GAAd,cAAc,CAAgB;YAC9B,yBAAoB,GAApB,oBAAoB,CAAsB;YAC1C,kBAAa,GAAb,aAAa,CAAe;YARtC,aAAQ,GAAc,EAAE,CAAC;YACzB,YAAO,GAAG,IAAI,CAAC;YASb,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE;gBACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;aACrD;iBAAM;gBACL,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;aAClC;SACF;QAED,uCAAQ,GAAR,eAAa;QAEL,2CAAY,GAApB;YAAA,iBAKC;YAJC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,UAAC,QAAQ;gBACtD,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB,CAAC,CAAC;SACJ;QAED,qCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,4CAAa,GAAb,UAAc,OAAgB;YAC5B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SACjD;QAEO,8CAAe,GAAvB,UAAwB,IAAY,EAAE,IAAY;;;gBAChD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAAhC,IAAM,OAAO,WAAA;oBAChB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;wBAClD,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YACD,OAAO,KAAK,CAAC;SACd;QAEO,qCAAM,GAAd;YACE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,0CAAW,GAAX;YAAA,iBAeC;YAdC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;gBACrH,IAAI,CAAC,oBAAoB;qBACtB,IAAI,CAAC,oCAAoC,CAAC;qBAC1C,IAAI,CACHN,aAAG,CAAC,UAAC,MAAM;oBACT,IAAI,MAAM,EAAE;wBACV,KAAI,CAAC,MAAM,EAAE,CAAC;qBACf;iBACF,CAAC,CACH;qBACA,SAAS,EAAE,CAAC;aAChB;iBAAM;gBACL,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;SACF;QAED,4CAAa,GAAb,UAAc,OAAgB;YAA9B,iBAaC;YAZC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,iCAAiC,CAAC;iBACvC,IAAI,CACHA,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAC,QAAQ;wBAC5D,KAAI,CAAC,YAAY,EAAE,CAAC;qBACrB,CAAC,CAAC;iBACJ;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAGD,kDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;;oBAhFqBwC,gBAAU;oBACN,cAAc;oBACR,oBAAoB;oBAC3B,aAAa;;QA2EtC;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;uEAGlD;QAtFU,oBAAoB;YALhCC,cAAS,CAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,y+DAA4C;;aAE7C,CAAC;6CAOsBG,gBAAU;gBACN,cAAc;gBACR,oBAAoB;gBAC3B,aAAa;WAT3B,oBAAoB,CAuFhC;QAAD,2BAAC;KAvFD;;;QCDE,+BAAmB,UAAsB,EAAU,cAA8B;YAA9D,eAAU,GAAV,UAAU,CAAY;YAAU,mBAAc,GAAd,cAAc,CAAgB;SAAI;QAErF,wCAAQ,GAAR;YACE,IAAI,CAAC,SAAS;gBACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC;SAChI;QAED,kCAAE,GAAF;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,sCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,mDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBAlB8BA,gBAAU;oBAA0B,cAAc;;QAgBjF;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;wEAGlD;QArBU,qBAAqB;YALjCC,cAAS,CAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,6wBAA6C;;aAE9C,CAAC;6CAI+BG,gBAAU,EAA0B,cAAc;WAHtE,qBAAqB,CAsBjC;QAAD,4BAAC;KAtBD;;;QCME,8BAAoB,UAAsB;YAAtB,eAAU,GAAV,UAAU,CAAY;SAAI;QAE9C,uCAAQ,GAAR;YACE,IAAI,CAAC,OAAO,GAAG,IAAI7B,YAAO,EAAE,CAAC;SAC9B;QAEM,iCAAE,GAAT;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAEM,qCAAM,GAAb;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,kDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBAnB+B6B,gBAAU;;QAiB1C;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;uEAGlD;QAzBU,oBAAoB;YALhCC,cAAS,CAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,w2BAA4C;;aAE7C,CAAC;6CAOgCG,gBAAU;WAN/B,oBAAoB,CA0BhC;QAAD,2BAAC;KA1BD;;;QCEE,4BAAoB,YAA4B,EAAU,gBAAkC;YAAxE,iBAAY,GAAZ,YAAY,CAAgB;YAAU,qBAAgB,GAAhB,gBAAgB,CAAkB;SAAI;;QAGhG,iCAAI,GAAJ,UAAK,OAAe,EAAE,OAAgB;YAAtC,iBAqBC;YApBC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5CxC,aAAG,CAAC,UAAC,MAAM;gBACT,OAAO,MAAM,CAAC;aACf,CAAC,EACFyC,kBAAQ,CAAC,UAAC,MAAM;gBACd,IAAM,UAAU,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/G,UAAU,CAAC,OAAgC,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC7D,UAAU,CAAC,OAAgC,CAAC,OAAO,GAAG,OAAO,CAAC;gBAE/D,OAAQ,UAAU,CAAC,OAAgC,CAAC,OAAO,CAAC,IAAI,CAC9DzC,aAAG,CAAC,UAAC,WAAW;oBACd,IAAI,WAAW,KAAK,CAAC,EAAE;wBACrB,OAAO,IAAI,CAAC;qBACb;oBAED,OAAO,KAAK,CAAC;iBACd,CAAC,CACH,CAAC;aACH,CAAC,CACH,CAAC;SACH;;oBAxBiCuC,oBAAc;oBAA4BlC,uBAAgB;;;QADjF,kBAAkB;YAH9BN,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAEkCwC,oBAAc,EAA4BlC,uBAAgB;WADjF,kBAAkB,CA0B9B;iCApCD;KAUA;;;QCWE,4CACS,UAAsB,EACrB,gBAAkC,EAClC,aAA4B,EAC5B,cAA8B,EAC9B,cAA8B;YAJ/B,eAAU,GAAV,UAAU,CAAY;YACrB,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,kBAAa,GAAb,aAAa,CAAe;YAC5B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,mBAAc,GAAd,cAAc,CAAgB;YAPjC,YAAO,GAA4B,IAAIM,YAAO,EAAE,CAAC;SAQpD;QAEJ,qDAAQ,GAAR;YAAA,iBAoEC;YAnEC,IAAI,CAAC,cAAc,GAAG;gBACpB,GAAG,EAAE,OAAO;gBACZ,cAAc,EAAE,KAAK;gBACrB,WAAW,EAAE,EAAE;gBACf,aAAa,EAAE,OAAO;gBACtB,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,UAAC,IAAS,EAAE,IAAS;oBAC3B,IAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAChC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,KAAU;;wBAE5C,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;wBACjC,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9B,IACE,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CACnB,6GAA6G,CAC9G,EACD;;;;4BAIA,IAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;4BACtD,IAAM,gBAAgB,GAAG,qBAAqB,CAAC;4BAC/C,IAAM,IAAI,GAAG,qBAAqB,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;4BAC9D,IAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;4BAEzC,OAAO,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;4BACtD,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;4BAC5C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;4BACpB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;;4BAG/B,IAAM,aAAa,GAAG,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;4BACjE,IAAI,CAAC,aAAa,EAAE;gCAClB,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;6BAC3D;;4BAGD,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BAC3B,KAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;yBACxB;6BAAM;;4BAEL,IAAM,KAAG,GAAG,oDAAoD,CAAC;4BACjE,IAAM,OAAK,GAAG,wCAAwC,CAAC;4BACvD,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAG,EAAE,OAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;gCACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAG,CAAC,EAAE,MAAM,CAAC,OAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;6BAC5G,CAAC,CAAC;yBACJ;wBAED,IAAI,CAAC,OAAO,CAAC,CAAC;qBACf,CAAC,CAAC;oBACH,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACzB;gBACD,eAAe,EAAE,2FAIhB;aACF,CAAC;YAEF,IAAI,CAAC,gBAAgB;iBAClB,GAAG,CAAC,gCAAgC,CAAC;iBACrC,IAAI,CACHX,aAAG,CAAC,UAAC,MAAM;gBACT,KAAI,CAAC,aAAa,GAAG,0DAA0D,GAAG,MAAM,CAAC;aAC1F,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAEM,0DAAa,GAApB,UAAqB,IAAS;YAA9B,iBAWC;YAVC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;;gBAEvB,OAAO;aACR;YAED,IAAM,GAAG,GAAG,kCAAkC,CAAC;YAC/C,IAAM,KAAK,GAAG,wCAAwC,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;gBACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;aACtH,CAAC,CAAC;SACJ;QAED,+CAAE,GAAF;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,mDAAM,GAAN;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,gEAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBAvGoBwC,gBAAU;oBACHnC,uBAAgB;oBACnBC,uBAAa;oBACZ,cAAc;oBACd,cAAc;;QAiGxC;YADC8B,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;qFAGlD;QA7GU,kCAAkC;YAL9CC,cAAS,CAAC;gBACT,QAAQ,EAAE,mCAAmC;gBAC7C,isBAA6D;;aAE9D,CAAC;6CAOqBG,gBAAU;gBACHnC,uBAAgB;gBACnBC,uBAAa;gBACZ,cAAc;gBACd,cAAc;WAV7B,kCAAkC,CA8G9C;QAAD,yCAAC;KA9GD;;;QCyBE,8BACS,UAAsB,EACtB,cAA8B,EAC7B,WAAwB,EACzB,cAA8B,EAC7B,cAA8B,EAC9B,gBAAkC,EAClC,aAA4B,EAC5B,aAA4B,EAC7B,aAA4B,EAC3B,YAA4B;YAT7B,eAAU,GAAV,UAAU,CAAY;YACtB,mBAAc,GAAd,cAAc,CAAgB;YAC7B,gBAAW,GAAX,WAAW,CAAa;YACzB,mBAAc,GAAd,cAAc,CAAgB;YAC7B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,kBAAa,GAAb,aAAa,CAAe;YAC5B,kBAAa,GAAb,aAAa,CAAe;YAC7B,kBAAa,GAAb,aAAa,CAAe;YAC3B,iBAAY,GAAZ,YAAY,CAAgB;YA3B/B,oBAAe,GAAG,KAAK,CAAC;YAIxB,gBAAW,GAAa,EAAE,CAAC;YAG3B,uBAAkB,GAAG,KAAK,CAAC;YAI3B,YAAO,GAAoB,IAAIK,YAAO,EAAE,CAAC;YAkB9C,IAAI,CAAC,WAAW,YAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;aACzC;SACF;QAED,uCAAQ,GAAR;YACE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1B;YAED,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QAEO,2CAAY,GAApB;YAAA,iBAQC;YAPC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAE5B,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,UAAC,QAAQ;gBACzD,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,KAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,KAAI,CAAC,eAAe,GAAG,KAAK,CAAC;aAC9B,CAAC,CAAC;SACJ;QAED,4CAAa,GAAb,UAAc,OAAgB;YAC5B,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;YACxC,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aACzF;YACD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;SAChC;QAED,6CAAc,GAAd;;YACE,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACtC,OAAO;aACR;YAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAE3B,IAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAElD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAAhC,IAAM,OAAO,WAAA;oBAChB,IAAI,aAAa,GAAG,CAAC,CAAC;;wBAEtB,KAAsB,IAAA,4BAAA,SAAA,QAAQ,CAAA,CAAA,kCAAA,wDAAE;4BAA3B,IAAM,OAAO,qBAAA;4BAChB,IACE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;gCAChE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;gCAChE,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAC5E;gCACA,aAAa,EAAE,CAAC;6BACjB;yBACF;;;;;;;;;oBAED,IAAI,aAAa,KAAK,QAAQ,CAAC,MAAM,EAAE;wBACrC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBACrC;iBACF;;;;;;;;;SACF;QAED,yCAAU,GAAV,UAAW,aAA6B;YAAxC,iBAQC;;;YALC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;gBAClE,IAAM,OAAO,GAAG,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACzE,IAAM,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;gBAC7E,KAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aAChC,CAAC,CAAC;SACJ;QAED,sCAAO,GAAP,UAAQ,eAAwB;YAC9B,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1C,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;YAClD,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;YACpC,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;YACtD,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC;YAC1D,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC;YAE1D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC7B;QAED,4CAAa,GAAb,UAAc,OAAgB;;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;oBAC7C,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;wBAChD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;qBAC/B;oBACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC9B,MAAM;iBACP;aACF;YAED,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5E,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE;;YAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3E,IAAI,WAAW,GAAG,KAAK,CAAC;;oBAExB,KAA4B,IAAA,oBAAA,SAAA,IAAI,CAAC,WAAW,CAAA,CAAA,gBAAA,4BAAE;wBAAzC,IAAM,aAAa,WAAA;wBACtB,IAAI,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;4BACrF,WAAW,GAAG,IAAI,CAAC;4BACnB,MAAM;yBACP;qBACF;;;;;;;;;gBAED,IAAI,CAAC,WAAW,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC1D;aACF;SACF;QAED,8CAAe,GAAf,UAAgB,KAAa;;;gBAC3B,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,WAAW,CAAA,gBAAA,4BAAE;oBAAnC,IAAM,OAAO,WAAA;oBAChB,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEtH,IAAI,KAAK,IAAI,OAAO,CAAC,eAAe,IAAI,KAAK,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;wBAC9F,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,mDAAoB,GAApB,UAAqB,KAAa;;;gBAChC,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,WAAW,CAAA,gBAAA,4BAAE;oBAAnC,IAAM,OAAO,WAAA;oBAChB,IAAI,KAAK,KAAK,OAAO,CAAC,eAAe,EAAE;wBACrC,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,iDAAkB,GAAlB,UAAmB,KAAa;;;gBAC9B,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,WAAW,CAAA,gBAAA,4BAAE;oBAAnC,IAAM,OAAO,WAAA;oBAChB,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEtH,IAAI,KAAK,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAChE,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,gDAAiB,GAAjB,UAAkB,KAAa;;YAC7B,IAAI,eAAwB,CAAC;;gBAE7B,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,WAAW,CAAA,gBAAA,4BAAE;oBAAnC,IAAM,OAAO,WAAA;oBAChB,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEtH,IAAI,KAAK,IAAI,OAAO,CAAC,eAAe,IAAI,KAAK,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;wBAC9F,IAAI,eAAe,EAAE;4BACnB,IAAI,eAAe,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,IAAI,eAAe,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE;;;gCAG1H,OAAO,IAAI,CAAC;6BACb;yBACF;6BAAM;4BACL,eAAe,GAAG,OAAO,CAAC;yBAC3B;qBACF;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,+CAAgB,GAAhB,UAAiB,KAAU;;;YAEzB,IAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACjD,IAAI,kBAA2B,CAAC;;;;gBAIhC,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,WAAW,CAAA,gBAAA,4BAAE;oBAAnC,IAAM,OAAO,WAAA;oBAChB,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEtH,IAAI,aAAa,IAAI,OAAO,CAAC,eAAe,IAAI,aAAa,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBACnH,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;4BACpC,kBAAkB,GAAG,OAAO,CAAC;4BAC7B,MAAM;yBACP;wBAED,IAAI,CAAC,kBAAkB,EAAE;4BACvB,kBAAkB,GAAG,OAAO,CAAC;yBAC9B;qBACF;iBACF;;;;;;;;;YAED,IAAI,kBAAkB,EAAE;gBACtB,IAAI,kBAAkB,KAAK,IAAI,CAAC,eAAe,EAAE;oBAC/C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;iBACxC;gBAED,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,GAAG,aAAa,GAAG,kBAAkB,CAAC,eAAe,CAAC;aAC7E;SACF;QAED,8CAAe,GAAf,UAAgB,KAAa;YAC3B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;YAED,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;gBACjD,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC/C,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EACtE,IAAI,CAAC,eAAe,CACrB,CAAC;gBAEF,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACvE,OAAO,IAAI,CAAC;iBACb;aACF;YAED,OAAO,KAAK,CAAC;SACd;;QAID,sCAAO,GAAP,UAAQ,KAAU;;YAEhB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACpC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;SACpC;QAED,+CAAgB,GAAhB,UAAiB,KAAU;;YAEzB,IAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAEjD,IACE,IAAI,CAAC,kBAAkB;gBACvB,aAAa,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC;gBAC3C,aAAa;oBACX,IAAI,CAAC,iBAAiB;oBACtB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EACzE,IAAI,CAAC,kBAAkB,CACxB,CAAC,QAAQ,CAAC,MAAM;oBACjB,CAAC;oBACD,GAAG,EACL;gBACA,IAAI,CAAC,kBAAkB,CAAC,eAAe,GAAG,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;aAClF;SACF;QAED,iCAAE,GAAF;YAAA,iBA0BC;oCAxBU,CAAC;gBACR,IAAI,OAAK,iBAAiB,CAAC,CAAC,CAAC,EAAE;oBAC7B,IAAM,KAAG,GAAG,wCAAwC,CAAC;oBACrD,IAAM,OAAK,GAAG,8CAA8C,CAAC;oBAE7D,OAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAG,EAAE,OAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;wBACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAG,CAAC,EAAE,MAAM,CAAC,OAAK,CAAC,CAAC,CAAC;qBACtD,CAAC,CAAC;;iBAGJ;;;;YAVH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE;sCAAvC,CAAC;;;aAWT;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAExD,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAEjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,qCAAM,GAAN;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,6CAAc,GAAd;YAAA,iBA+BC;YA9BC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;;YAG7B,IAAI,CAAC,cAAc;iBAChB,cAAc,EAAE;iBAChB,IAAI,CACH2B,kBAAQ,CAAC;gBACP,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B,CAAC,EACFI,oBAAU,CAAC;gBACT,IAAM,GAAG,GAAG,6CAA6C,CAAC;gBAC1D,IAAM,KAAK,GAAG,mDAAmD,CAAC;gBAElE,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;oBACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACtD,CAAC,CAAC;gBAEH,OAAO,SAAS,CAAC;aAClB,CAAC,CACH;iBACA,SAAS,CAAC;gBACT,KAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,IAAM,GAAG,GAAG,wCAAwC,CAAC;gBACrD,IAAM,KAAK,GAAG,8CAA8C,CAAC;gBAE7D,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;oBACvD,KAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxD,CAAC,CAAC;aACJ,CAAC,CAAC;SACN;QAED,2DAA4B,GAA5B;YAAA,iBAMC;YALC,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7H,UAAU,CAAC,OAA8C,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,OAAuB;gBACnG,IAAM,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;gBAC7E,KAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aAChC,CAAC,CAAC;SACJ;QAGD,kDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBApVoBF,gBAAU;oBACN,cAAc;oBAChB,WAAW;oBACT,cAAc;oBACb,cAAc;oBACZnC,uBAAgB;oBACnBC,uBAAa;oBACb,aAAa;oBACd,aAAa;oBACbiC,oBAAc;;QAoOtC;YADCH,iBAAY,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;2DAK1C;QAiGD;YADCA,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;uEAGlD;QAzWU,oBAAoB;YALhCC,cAAS,CAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,o1VAA4C;;aAE7C,CAAC;6CAsBqBG,gBAAU;gBACN,cAAc;gBAChB,WAAW;gBACT,cAAc;gBACb,cAAc;gBACZnC,uBAAgB;gBACnBC,uBAAa;gBACb,aAAa;gBACd,aAAa;gBACbiC,oBAAc;WA9B3B,oBAAoB,CA0WhC;QAAD,2BAAC;KA1WD;;;QCXE,4BAAoB,YAA4B;YAA5B,iBAAY,GAAZ,YAAY,CAAgB;YAFxC,sBAAiB,GAAG,KAAK,CAAC;SAEkB;QAEpD,iCAAI,GAAJ;YAAA,iBAUC;YATC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YACpI,UAAU,CAAC,OAAgC,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,MAAM;gBACpE,KAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC,CAAC,CAAC;SACJ;;oBAZiCA,oBAAc;;;QAHrC,kBAAkB;YAH9BxC,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAIkCwC,oBAAc;WAHrC,kBAAkB,CAgB9B;iCAvBD;KAOA;;;QCDE;SAAgB;QAEhB,4CAAO,GAAP,UAAQ,KAAU;;YAEhB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjB,OAAO,KAAK,CAAC;aACd;YAED,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;gBACrC,OAAO,IAAI,CAAC;aACb;YAED,OAAO,KAAK,CAAC;SACd;;QAdU,0BAA0B;YAHtCxC,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;;WACW,0BAA0B,CAetC;yCApBD;KAKA;;;QCUE,sBAAoB,aAA4B;YAA5B,kBAAa,GAAb,aAAa,CAAe;YAPhD,cAAS,GAAG,KAAK,CAAC;YAClB,eAAU,GAAG,OAAO,CAAC;YACrB,0BAAqB,GAAG,EAAE,CAAC;YAC3B,2BAAsB,GAAG,EAAE,CAAC;YAC5B,kBAAa,GAAG,kDAAkD,CAAC;YACnE,gBAAW,GAAkB,IAAIY,YAAO,EAAQ,CAAC;SAEG;QAEpD,8BAAO,GAAP;;YAEE,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC5B,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBACrC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC;iBAC/D;qBAAM;oBACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;iBACvB;aACF;SACF;QAED,mCAAY,GAAZ,UAAa,KAAc;YACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,KAAK,EAAE;gBACT,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC3C;iBAAM;gBACL,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;aAC5C;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QAED,4BAAK,GAAL;YACE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QAED,+BAAQ,GAAR,UAAS,IAAY;YACnB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,OAAO,KAAK,CAAC;aACd;YAED,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC;SACb;QAED,2BAAI,GAAJ;YACE,QAAQ,IAAI,CAAC,UAAU;gBACrB,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC5B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC7B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC5B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;oBACjC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,cAAc;oBACjB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;oBAC3B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC7B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;oBAC3B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;aACT;YAED,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QAED,2BAAI,GAAJ;YACE,QAAQ,IAAI,CAAC,UAAU;gBACrB,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;oBAC1B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC5B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC7B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,cAAc;oBACjB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC5B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;oBACjC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;oBAC3B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC7B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;oBACjC,MAAM;aACT;YAED,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;;oBA3HkC,aAAa;;;QARrC,YAAY;YAHxBZ,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CASmC,aAAa;WARrC,YAAY,CAoIxB;2BA3ID;KAOA;;;QCaE,4BAAoB,UAAsB,EAAU,WAAwB;YAAxD,eAAU,GAAV,UAAU,CAAY;YAAU,gBAAW,GAAX,WAAW,CAAa;YAT5E,UAAK,GAAG,EAAE,CAAC;YACX,cAAS,GAAG,KAAK,CAAC;YAElB,UAAK,GAAG,EAAE,CAAC;YACX,aAAQ,GAAG,EAAE,CAAC;SAKkE;QAEhF,qCAAQ,GAAR,eAAa;QAEb,mCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,kCAAK,GAAL;YAAA,iBA0BC;YAzBC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACjC,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC;gBAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,OAAO;aACR;YAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CACzD;gBACE,KAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACvB,IAAI,KAAI,CAAC,OAAO,EAAE;oBAChB,KAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;iBACrB;aACF,EACD,UAAC,QAAQ;gBACP,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;oBAC1C,KAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;iBACnC;qBAAM;oBACL,KAAI,CAAC,KAAK,GAAG,UAAU,CAAC;iBACzB;gBACD,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB,CACF,CAAC;SACH;QAGD,gDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;;oBAvC+ByC,gBAAU;oBAAuB,WAAW;;QAqC5E;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;qEAGlD;QAjDU,kBAAkB;YAL9BC,cAAS,CAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,43EAA0C;;aAE3C,CAAC;6CAWgCG,gBAAU,EAAuB,WAAW;WAVjE,kBAAkB,CAkD9B;QAAD,yBAAC;KAlDD;;;QCaE,+BAAoB,UAAsB,EAAU,YAA4B,EAAU,WAAwB;YAA9F,eAAU,GAAV,UAAU,CAAY;YAAU,iBAAY,GAAZ,YAAY,CAAgB;YAAU,gBAAW,GAAX,WAAW,CAAa;YAXlH,UAAK,GAAG,EAAE,CAAC;YACX,gBAAW,GAAG,KAAK,CAAC;YAEpB,aAAQ,GAAG,EAAE,CAAC;YACd,UAAK,GAAG,EAAE,CAAC;YACX,aAAQ,GAAG,EAAE,CAAC;YACd,mBAAc,GAAG,EAAE,CAAC;SAKkG;QAEtH,wCAAQ,GAAR,eAAa;QAEb,sCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,qCAAK,GAAL;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SACrI;QAEO,4CAAY,GAApB,UAAqB,KAAa;;YAEhC,IAAM,EAAE,GAAG,yJAAyJ,CAAC;YACrK,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SAC7C;QAED,wCAAQ,GAAR;YAAA,iBAuCC;YAtCC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC3E,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC;gBAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAClC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,EAAE;gBACzC,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC;gBACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,OAAO;aACR;YAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAC3E;;gBAEE,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;oBAC1D,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,KAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;iBACxB,CAAC,CAAC;aACJ,EACD,UAAC,QAAQ;gBACP,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;oBAC1C,KAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;iBACnC;qBAAM;oBACL,KAAI,CAAC,KAAK,GAAG,UAAU,CAAC;iBACzB;gBACD,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B,CACF,CAAC;SACH;QAGD,mDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;;oBA/D+BA,gBAAU;oBAAwBD,oBAAc;oBAAuB,WAAW;;QA6DlH;YADCH,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;wEAGlD;QA3EU,qBAAqB;YALjCC,cAAS,CAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,qsIAA6C;;aAE9C,CAAC;6CAagCG,gBAAU,EAAwBD,oBAAc,EAAuB,WAAW;WAZvG,qBAAqB,CA4EjC;QAAD,4BAAC;KA5ED;;;QCAE,gCAAoB,WAAwB,EAAU,YAA4B,EAAU,aAA4B;YAApG,gBAAW,GAAX,WAAW,CAAa;YAAU,iBAAY,GAAZ,YAAY,CAAgB;YAAU,kBAAa,GAAb,aAAa,CAAe;SAAI;;QAG5H,sCAAK,GAAL;YACE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE;gBACjC,OAAOhC,OAAE,CAAC,IAAI,CAAC,CAAC;aACjB;YAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACtC,OAAOA,OAAE,CAAC,IAAI,CAAC,CAAC;aACjB;YAED,IAAM,OAAO,GAAG,IAAII,YAAO,EAAQ,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,SAAA,EAAE,EAAE,CAAC,CAAC;YACzH,OAAO,OAAO,CAAC;SAChB;;oBAfgC,WAAW;oBAAwB4B,oBAAc;oBAAyB,aAAa;;;QAD7G,sBAAsB;YAHlCxC,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;6CAEiC,WAAW,EAAwBwC,oBAAc,EAAyB,aAAa;WAD7G,sBAAsB,CAiBlC;qCA3BD;KAUA;;;QCuBE,sCACS,UAAsB,EACrB,eAAgC,EACjC,aAA4B,EAC3B,gBAAkC,EAClC,IAAgB,EAChB,oBAA0C,EAC1C,aAA4B,EAC5B,cAA8B;YAP/B,eAAU,GAAV,UAAU,CAAY;YACrB,oBAAe,GAAf,eAAe,CAAiB;YACjC,kBAAa,GAAb,aAAa,CAAe;YAC3B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,SAAI,GAAJ,IAAI,CAAY;YAChB,yBAAoB,GAApB,oBAAoB,CAAsB;YAC1C,kBAAa,GAAb,aAAa,CAAe;YAC5B,mBAAc,GAAd,cAAc,CAAgB;YApBxC,6BAAwB,GAAa,EAAE,CAAC;YAEjC,YAAO,GAAoB,IAAI5B,YAAO,EAAE,CAAC;YAKzC,kBAAa,GAAa,EAAE,CAAC;YAC7B,0BAAqB,GAAa,EAAE,CAAC;YAErC,cAAS,GAAG,KAAK,CAAC;SAWrB;QAEJ,+CAAQ,GAAR;YAAA,iBA8CC;YA7CC,IAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;YACvF,IAAI,CAAC,cAAc,GAAG;gBACpB,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,8BAA8B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,aAAa,GAAG,SAAS;gBACpH,cAAc,EAAE,KAAK;gBACrB,WAAW,EAAE,GAAG;gBAChB,aAAa,EAAE,SAAS;gBACxB,OAAO,EAAE,CAAC;gBACV,eAAe,EAAE,CAAC;gBAClB,eAAe,EAAE,+sBAkBhB;aACF,CAAC;YAEF,IAAI,CAAC,gBAAgB;iBAClB,GAAG,CAAC,gCAAgC,CAAC;iBACrC,IAAI,CACHX,aAAG,CAAC,UAAC,MAAM;gBACT,KAAI,CAAC,aAAa,GAAG,0DAA0D,GAAG,MAAM,CAAC;aAC1F,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;YAEf,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,IAAI,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE;gBACtD,IAAI,CAAC,eAAe,CAAC,2BAA2B,EAAE,CAAC,SAAS,CAAC,UAAC,gBAAgB;oBAC5E,KAAI,CAAC,wBAAwB,GAAG,gBAAgB,CAAC;iBAClD,CAAC,CAAC;aACJ;SACF;QAED,yCAAE,GAAF;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,6CAAM,GAAN;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,0DAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;QAEO,sDAAe,GAAvB,UAAwB,IAAS;YAC/B,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;QAEO,gDAAS,GAAjB;YAAA,iBAsBC;YArBC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;gBAC1C,OAAO;aACR;YAED,IAAI,CAAC,IAAI;iBACN,GAAG,CAAC,WAAW,CAAC;iBAChB,IAAI,CACHA,aAAG,CAAC,UAAC,QAAkB;;gBACrB,KAAI,CAAC,aAAa,GAAG,EAAE,CAAC;;oBAExB,KAAmB,IAAA,aAAA,SAAA,QAAQ,CAAA,kCAAA,wDAAE;wBAAxB,IAAM,IAAI,qBAAA;;wBAEb,IAAK,IAAY,CAAC,SAAS,EAAE;4BAC3B,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAI,CAAC,eAAe,CAAE,IAAY,CAAC,SAAS,CAAC,CAAC,CAAC;yBACxE;qBACF;;;;;;;;;gBAED,KAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAEM,oDAAa,GAApB,UAAqB,IAAS;YAA9B,iBAQC;YAPC,IAAM,GAAG,GAAG,kCAAkC,CAAC;YAC/C,IAAM,KAAK,GAAG,wCAAwC,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,MAAM;gBACvD,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;;gBAErH,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;aACtC,CAAC,CAAC;SACJ;QAEM,sDAAe,GAAtB,UAAuB,IAAS;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;;YAGjB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC;;YAGtC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;;YAGrC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE9C,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;;gBAEzC,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC;aAC5C;SACF;QAEM,sDAAe,GAAtB,UAAuB,IAAS;YAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;QAEM,kDAAW,GAAlB,UAAmB,IAAS;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;;QAGD,0DAAmB,GAAnB,UAAoB,WAAoB;;YACtC,IAAI,CAAC,WAAW,EAAE;gBAChB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;gBAChD,OAAO;aACR;YAED,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;;gBAEhC,KAAmB,IAAA,KAAA,SAAA,IAAI,CAAC,aAAa,CAAA,gBAAA,4BAAE;oBAAlC,IAAM,IAAI,WAAA;oBACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;wBAChE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACvC;iBACF;;;;;;;;;SACF;QAED,yDAAkB,GAAlB,UAAmB,YAAoB;YACrC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;;YAG9C,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAC5C;QAED,iDAAU,GAAV,UAAW,YAAoB;YAA/B,iBAkBC;YAjBC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,uCAAuC,CAAC;iBAC7C,IAAI,CACHA,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,KAAI,CAAC,IAAI;yBACN,IAAI,CAAC,mBAAmB,GAAG,YAAY,GAAG,aAAa,EAAE,SAAS,CAAC;yBACnE,IAAI,CACHA,aAAG,CAAC,UAAC,QAAkB;wBACrB,KAAI,CAAC,SAAS,EAAE,CAAC;qBAClB,CAAC,CACH;yBACA,SAAS,EAAE,CAAC;iBAChB;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;;oBAlLoBwC,gBAAU;oBACJ,eAAe;oBAClB,aAAa;oBACTnC,uBAAgB;oBAC5BH,eAAU;oBACM,oBAAoB;oBAC3BI,uBAAa;oBACZ,cAAc;;QA8DxC;YADC8B,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;+EAGlD;QAtFU,4BAA4B;YALxCC,cAAS,CAAC;gBACT,QAAQ,EAAE,8BAA8B;gBACxC,uiKAAoD;;aAErD,CAAC;6CAgBqBG,gBAAU;gBACJ,eAAe;gBAClB,aAAa;gBACTnC,uBAAgB;gBAC5BH,eAAU;gBACM,oBAAoB;gBAC3BI,uBAAa;gBACZ,cAAc;WAtB7B,4BAA4B,CAkMxC;QAAD,mCAAC;KAlMD;;;QCDE,+BAAmB,UAAsB,EAAS,eAAgC;YAA/D,eAAU,GAAV,UAAU,CAAY;YAAS,oBAAe,GAAf,eAAe,CAAiB;YAChF,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAC7D,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,mBAAmB,CAAC,cAAc,CAAC;YACzE,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;YACjF,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;YACjF,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,mBAAmB,CAAC,UAAU,CAAC;YACjE,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;YAC7E,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,mBAAmB,CAAC,cAAc,CAAC;SAC1E;QAED,wCAAQ,GAAR,eAAa;QAEb,kCAAE,GAAF;YACE,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClE,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC9E,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACtF,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACtF,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACtE,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAClF,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAE9E,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,sCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,mDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBAhC8BkC,gBAAU;oBAA0B,eAAe;;QA8BlF;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;wEAGlD;QAzCU,qBAAqB;YALjCC,cAAS,CAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,srHAA6C;;aAE9C,CAAC;6CAU+BG,gBAAU,EAA0B,eAAe;WATvE,qBAAqB,CA0CjC;QAAD,4BAAC;KA1CD;;;QCsBE,2BACS,eAAgC,EAC/B,iBAAoC,EACpC,YAA4B,EAC5B,WAAwB,EACzB,cAA8B,EAC7B,0BAAsD,EACtD,oBAA0C,EAC1C,IAAgB,EAChB,aAA4B,EAC5B,aAA4B,EAC7B,YAA0B;YAXnC,iBAmBC;YAlBQ,oBAAe,GAAf,eAAe,CAAiB;YAC/B,sBAAiB,GAAjB,iBAAiB,CAAmB;YACpC,iBAAY,GAAZ,YAAY,CAAgB;YAC5B,gBAAW,GAAX,WAAW,CAAa;YACzB,mBAAc,GAAd,cAAc,CAAgB;YAC7B,+BAA0B,GAA1B,0BAA0B,CAA4B;YACtD,yBAAoB,GAApB,oBAAoB,CAAsB;YAC1C,SAAI,GAAJ,IAAI,CAAY;YAChB,kBAAa,GAAb,aAAa,CAAe;YAC5B,kBAAa,GAAb,aAAa,CAAe;YAC7B,iBAAY,GAAZ,YAAY,CAAc;YAEjC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC;gBAC7C,KAAI,CAAC,QAAQ,EAAE,CAAC;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC3C,KAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aACxC,CAAC,CAAC;SACJ;QAED,oCAAQ,GAAR,eAAa;QAEb,2CAAe,GAAf,eAAoB;QAGb,oCAAQ,GAAf;YACE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO;aACR;;;YAID,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACtD,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAEvD,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;YAEzD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;;gBAEjG,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;oBACnC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBACnD;gBAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;gBACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB;SACF;QAED,gCAAI,GAAJ;YACE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,WAAW,CAC5B,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,EAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CACpE,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxC;QAED,iCAAK,GAAL;YACE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACzC;QAED,kCAAM,GAAN;YACE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC3C;QAED,qCAAS,GAAT,UAAU,gBAAsB;YAC9B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;SAClD;QAED,wCAAY,GAAZ;YACE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;SACrC;QAED,4CAAgB,GAAhB;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;SAC7H;QAEO,2CAAe,GAAvB;YACE,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE,CAAC;SAClD;QAED,6CAAiB,GAAjB;YAAA,iBAwBC;YAvBC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,8CAA8C,CAAC;iBACpD,IAAI,CACHxC,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,IAAI,KAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;;wBAEzC,KAAI,CAAC,eAAe,EAAE,CAAC;qBACxB;yBAAM;;wBAEL,KAAI,CAAC,IAAI;6BACN,IAAI,CAAC,8BAA8B,GAAG,KAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;6BAC/F,IAAI,CACHA,aAAG,CAAC,UAAC,QAAkB;4BACrB,KAAI,CAAC,eAAe,EAAE,CAAC;yBACxB,CAAC,CACH;6BACA,SAAS,EAAE,CAAC;qBAChB;iBACF;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAEO,mDAAuB,GAA/B,UAAgC,gBAAyB,EAAE,cAA4B;YAAvF,iBA8BC;YA7BC,IAAM,eAAe,GACnB,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAE3G,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACtE,QAAQ,EAAE,KAAK;gBACf,mBAAmB,EAAE,IAAI;gBACzB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;aAC/C,CAAC,CAAC;YAEF,UAAU,CAAC,OAAwC,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,MAAM;gBAC5E,IAAI,MAAM,KAAK,CAAC,EAAE;;oBAEhB,IAAI,cAAc,EAAE;wBAClB,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBAC/D,KAAI,CAAC,eAAe,CAAC,wBAAwB,GAAG,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;;wBAGpG,IAAI,KAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE;;;yBAGvD;qBACF;yBAAM;wBACL,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,eAAe,CAAC;qBAC9E;oBAED,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;iBACvE;aACF,CAAC,CAAC;SACJ;QAED,+CAAmB,GAAnB;YACE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;SAC7E;QAED,0CAAc,GAAd;;YAEE,IAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YACtC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,GAAG,iBAAiB,CAAC;YAErC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACtD;QAED,6CAAiB,GAAjB,UAAkB,KAAa;YAC7B,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;SACpD;QAGD,+CAAmB,GAAnB,UAAoB,KAAoB;YACtC,IAAI,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAClD,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE;gBAC7C,OAAO;aACR;YAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,KAAK,QAAQ,EAAE;oBAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;qBAAM;oBACL,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;;gBAGD,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;SACF;QAED,gDAAoB,GAApB,UAAqB,KAAU;YAC7B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE;gBAChD,OAAO;aACR;YAED,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC7B,OAAO;aACR;YAED,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC;YACjE,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;SAC7C;QAED,8CAAkB,GAAlB,UAAmB,KAAU;YAC3B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE;gBAChD,OAAO;aACR;YAED,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC7B,OAAO;aACR;YAED,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;YAC/D,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;SAC7C;;oBAhNyB,eAAe;oBACZ2C,sBAAiB;oBACtBJ,oBAAc;oBACf,WAAW;oBACT,cAAc;oBACD,0BAA0B;oBAChC,oBAAoB;oBACpCrC,eAAU;oBACD,aAAa;oBACb,aAAa;oBACf,YAAY;;QAnBnC;YADCgC,cAAS,CAAC,aAAa,CAAC;sCACZC,eAAU;8DAAC;QAGxB;YADCD,cAAS,CAAC,aAAa,CAAC;sCACZC,eAAU;8DAAC;QA+BxB;YADCC,iBAAY,CAAC,eAAe,CAAC;;;;yDAuB7B;QAmHD;YADCA,iBAAY,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAC;;6CAClB,aAAa;;oEAoBvC;QAjMU,iBAAiB;YAL7BC,cAAS,CAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,45LAAwC;;aAEzC,CAAC;6CAY0B,eAAe;gBACZM,sBAAiB;gBACtBJ,oBAAc;gBACf,WAAW;gBACT,cAAc;gBACD,0BAA0B;gBAChC,oBAAoB;gBACpCrC,eAAU;gBACD,aAAa;gBACb,aAAa;gBACf,YAAY;WArBxB,iBAAiB,CA4N7B;QAAD,wBAAC;KA5ND;;;QCyFE,2BACU,gBAAkC,EAClC,cAA8B,EAC/B,aAA4B,EAC3B,kBAAsC,EACtC,0BAAsD,EACtD,YAA4B,EAC7B,WAAwB,EACvB,sBAA8C,EAC9C,aAA4B,EAC5B,kBAAsC,EACtC,oBAA0C,EAC1C,kBAAsC,EACtC,cAA8B,EAC9B,eAAgC,EACjC,YAA0B;YAfnC,iBAoBC;YAnBS,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,mBAAc,GAAd,cAAc,CAAgB;YAC/B,kBAAa,GAAb,aAAa,CAAe;YAC3B,uBAAkB,GAAlB,kBAAkB,CAAoB;YACtC,+BAA0B,GAA1B,0BAA0B,CAA4B;YACtD,iBAAY,GAAZ,YAAY,CAAgB;YAC7B,gBAAW,GAAX,WAAW,CAAa;YACvB,2BAAsB,GAAtB,sBAAsB,CAAwB;YAC9C,kBAAa,GAAb,aAAa,CAAe;YAC5B,uBAAkB,GAAlB,kBAAkB,CAAoB;YACtC,yBAAoB,GAApB,oBAAoB,CAAsB;YAC1C,uBAAkB,GAAlB,kBAAkB,CAAoB;YACtC,mBAAc,GAAd,cAAc,CAAgB;YAC9B,oBAAe,GAAf,eAAe,CAAiB;YACjC,iBAAY,GAAZ,YAAY,CAAc;;YA7B3B,uBAAkB,GAAG,EAAE,CAAC;YAExB,sBAAiB,GAAG,EAAE,CAAC;YAExB,sBAAiB,GAAG,CAAC,CAAC;YAE7B,eAAU,GAAG,YAAY,CAAC;YAyBxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC7C,KAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B,CAAC,CAAC;SACJ;QAhGD,sBAAI,2CAAY;iBAAhB,UAAiB,KAAa;gBAC5B,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;gBACxC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;aAC7C;;;WAAA;QAGD,sBAAI,4DAA6B;iBAAjC,UAAkC,KAAc;gBAC9C,IAAI,CAAC,eAAe,CAAC,6BAA6B,GAAG,KAAK,CAAC;aAC5D;;;WAAA;QAGD,sBAAI,sCAAO;iBAAX,UAAY,KAAa;gBACvB,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;aACpC;;;WAAA;QAGD,sBAAI,iDAAkB;iBAAtB,UAAuB,KAAc;gBACnC,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,KAAK,CAAC;aAC/C;;;WAAA;QAGD,sBAAI,6CAAc;iBAAlB,UAAmB,KAAc;gBAC/B,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC;aAC3C;;;WAAA;QAGD,sBAAI,6CAAc;iBAAlB,UAAmB,KAAc;gBAC/B,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC;aAC3C;;;WAAA;QAGD,sBAAI,6CAAc;iBAAlB,UAAmB,KAAc;gBAC/B,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC;aAC3C;;;WAAA;QAGD,sBAAI,iDAAkB;iBAAtB,UAAuB,KAAc;gBACnC,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,KAAK,CAAC;aAC/C;;;WAAA;QAGD,sBAAI,0CAAW;iBAAf,UAAgB,KAAc;gBAC5B,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC;aACxC;;;WAAA;QAGD,sBAAI,4CAAa;iBAAjB,UAAkB,KAAc;gBAC9B,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;aAC1C;;;WAAA;QAGD,sBAAI,oCAAK;iBAAT,UAAU,KAAc;gBACtB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;aAC7B;;;WAAA;QAGD,sBAAI,iDAAkB;iBAAtB,UAAuB,KAAc;gBACnC,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,KAAK,CAAC;aAC/C;;;WAAA;QAuCD,oCAAQ,GAAR;YAAA,iBA4DC;YA3DC,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;aAC7D;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACjC;YAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,IAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,IAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAExC,IAAI,SAAS,EAAE;;gBAEb,IAAI,CAAC,UAAU,EAAE;oBACf,UAAU,GAAG,EAAE,CAAC;iBACjB;gBAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,SAAS,CACzF,eAAQ,EACR,UAAC,QAAQ;oBACP,IAAI,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;oBAE1E,IAAI,GAAG,GAAG,EAAE,CAAC;oBAEb,IAAI,KAAK,KAAK,eAAe,EAAE;wBAC7B,GAAG,GAAG,2CAA2C,CAAC;wBAClD,KAAK,GAAG,SAAS,CAAC;qBACnB;yBAAM;wBACL,GAAG,GAAG,6BAA6B,CAAC;qBACrC;oBAED,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC;wBACjD,KAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;qBAC/B,CAAC,CAAC;iBACJ,CACF,CAAC;aACH;iBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,EAAE;;gBAElI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAC,SAAS,CACxH,eAAQ,EACR,UAAC,QAAQ;oBACP,IAAM,GAAG,GAAG,6BAA6B,CAAC;oBAC1C,IAAM,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;oBAE5E,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC;wBACjD,KAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;qBAC/B,CAAC,CAAC;iBACJ,CACF,CAAC;aACH;iBAAM;gBACL,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;;oBAEzC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;iBACpC;qBAAM;oBACL,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;iBAC/B;aACF;SACF;QAEO,+CAAmB,GAA3B;YACE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;SAC7G;QAEO,oCAAQ,GAAhB;YACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;aAClC;YAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;aACnC;SACF;QAED,2CAAe,GAAf;YAAA,iBA6BC;;YA3BC,UAAU,CAAC;gBACT,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;oBACjC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;oBACnB,SAAS,EAAE,UAAU;oBACrB,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,KAAI,CAAC,iBAAiB;oBAClC,MAAM,EAAE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC;iBACjC,CAAC,CAAC;gBAEH,KAAK,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;oBACzC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;oBACnB,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,KAAI,CAAC,iBAAiB;oBAClC,MAAM,EAAE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC;iBACjC,CAAC,CAAC;gBAEH,KAAK,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE;oBACrD,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAClB,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,KAAI,CAAC,iBAAiB;oBAClC,MAAM,EAAE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC;oBAChC,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;gBAEH,KAAI,CAAC,QAAQ,EAAE,CAAC;aACjB,CAAC,CAAC;SACJ;QAED,mCAAO,GAAP,UAAQ,GAAW;;YAGjB,IAAI,GAAG,KAAK,UAAU,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,iBAAiB,GAAG,IAAI,CAAC;aAC9C;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAC/C;YAED,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;SACvB;QAED,2CAAe,GAAf;YACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;SAChC;QAED,sCAAU,GAAV;YAAA,iBAWC;YAVC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,uCAAuC,CAAC;iBAC7C,IAAI,CACHF,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,KAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;iBAC/B;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAED,uCAAW,GAAX;YAAA,iBAaC;YAZC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,uCAAuC,CAAC;iBAC7C,IAAI,CACHA,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,KAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;wBAC5C,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;qBACjG,CAAC,CAAC;iBACJ;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAED,uCAAW,GAAX;YAAA,iBAUC;YATC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE;;gBAEpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACvD;iBAAM;;gBAEL,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;oBAC5C,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;iBAC9F,CAAC,CAAC;aACJ;SACF;QAED,yCAAa,GAAb;YAAA,iBAIC;YAHC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;gBAC5C,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;aAC9F,CAAC,CAAC;SACJ;QAED,wCAAY,GAAZ;YACE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;SAC/F;QAED,yCAAa,GAAb;YAAA,iBAWC;YAVC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,uCAAuC,CAAC;iBAC7C,IAAI,CACHA,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;iBAChG;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;QAED,yCAAa,GAAb;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClE,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,+BAA+B,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACpC;QAED,wCAAY,GAAZ;YACE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE;;gBAEnC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC3E,OAAO;aACR;;YAGD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9F;QAGD,+CAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAClD,OAAO;aACR;YAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;;gBAGvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACzD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACzD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;SACF;QAED,0CAAc,GAAd,UAAe,QAAgB;YAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SAC5C;;oBAzQ2BK,uBAAgB;oBAClB,cAAc;oBAChB,aAAa;oBACP,kBAAkB;oBACV,0BAA0B;oBACxCkC,oBAAc;oBAChB,WAAW;oBACC,sBAAsB;oBAC/BjC,uBAAa;oBACR,kBAAkB;oBAChB,oBAAoB;oBACtB,kBAAkB;oBACtB,cAAc;oBACb,eAAe;oBACnB,YAAY;;QA3FnC;YADCsC,UAAK,EAAE;;;6DAIP;QAGD;YADCA,UAAK,EAAE;;;8EAGP;QAGD;YADCA,UAAK,EAAE;;;wDAGP;QAGD;YADCA,UAAK,EAAE;;;mEAGP;QAGD;YADCA,UAAK,EAAE;;;+DAGP;QAGD;YADCA,UAAK,EAAE;;;+DAGP;QAGD;YADCA,UAAK,EAAE;;;+DAGP;QAGD;YADCA,UAAK,EAAE;;;mEAGP;QAGD;YADCA,UAAK,EAAE;;;4DAGP;QAGD;YADCA,UAAK,EAAE;;;8DAGP;QAGD;YADCA,UAAK,EAAE;;;sDAIP;QAGD;YADCA,UAAK,EAAE;;;mEAGP;QAYD;YADCV,cAAS,CAAC,gBAAgB,CAAC;sCACV,gBAAgB;mEAAC;QAGnC;YADCA,cAAS,CAAC,iBAAiB,CAAC;sCACV,iBAAiB;oEAAC;QAyOrC;YADCE,iBAAY,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;oEA+B5C;QAnVU,iBAAiB;YAN7BC,cAAS,CAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,4qXAAwC;gBAExC,aAAa,EAAEQ,sBAAiB,CAAC,IAAI;;aACtC,CAAC;6CAgF4BxC,uBAAgB;gBAClB,cAAc;gBAChB,aAAa;gBACP,kBAAkB;gBACV,0BAA0B;gBACxCkC,oBAAc;gBAChB,WAAW;gBACC,sBAAsB;gBAC/BjC,uBAAa;gBACR,kBAAkB;gBAChB,oBAAoB;gBACtB,kBAAkB;gBACtB,cAAc;gBACb,eAAe;gBACnB,YAAY;WA7FxB,iBAAiB,CAyV7B;QAAD,wBAAC;KAzVD;;;QC3BA;SAgBC;QAfC,iCAAS,GAAT,UAAU,KAAU,EAAE,KAAa;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO;aACR;YACD,KAAK,CAAC,IAAI,CAAC,UAAC,CAAM,EAAE,CAAM;gBACxB,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;oBACvB,OAAO,CAAC,CAAC,CAAC;iBACX;qBAAM,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC9B,OAAO,CAAC,CAAC;iBACV;qBAAM;oBACL,OAAO,CAAC,CAAC;iBACV;aACF,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;SACd;QAfU,aAAa;YAHzBwC,SAAI,CAAC;gBACJ,IAAI,EAAE,MAAM;aACb,CAAC;WACW,aAAa,CAgBzB;QAAD,oBAAC;KAhBD;;;QC6DE,8BACS,aAA4B,EAC3B,gBAAkC,EAClC,cAA8B,EAC9B,SAA2B;YAJrC,iBAWC;YAVQ,kBAAa,GAAb,aAAa,CAAe;YAC3B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,mBAAc,GAAd,cAAc,CAAgB;YAC9B,cAAS,GAAT,SAAS,CAAkB;YA9C9B,oBAAe,GAAG,EAAE,CAAC;YACrB,oBAAe,GAAG,IAAI,CAAC;YACvB,iBAAY,GAAG,CAAC,CAAC;YACjB,iBAAY,GAAG,CAAC,CAAC;YACjB,kBAAa,GAAG,CAAC,CAAC;YAClB,kBAAa,GAAG,CAAC,CAAC;YAClB,mBAAc,GAAG,CAAC,IAAI,CAAC;YACvB,mBAAc,GAAG,IAAI,CAAC;YACtB,qBAAgB,GAAG,CAAC,CAAC;YACrB,qBAAgB,GAAG,IAAI,CAAC;;YAGxB,0BAAqB,GAAwB,EAAE,CAAC;;YAGhD,sBAAiB,GAAgD,IAAI,GAAG,EAA0C,CAAC;YACnH,sBAAiB,GAAqB,EAAE,CAAC;YACzC,qBAAgB,GAAqB,EAAE,CAAC;YA+B7C,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBACnD,KAAI,CAAC,6BAA6B,EAAE,CAAC;aACtC,CAAC,CAAC;YAEH,IAAI,CAAC,6BAA6B,EAAE,CAAC;SACtC;QA9BD,sBAAI,4CAAU;;iBAAd,UAAe,KAAc;gBAD7B,iBAgBC;gBAdC,IAAI,KAAK,EAAE;;oBAET,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;wBAChC,IAAI,CAAC,sBAAsB,GAAGlC,UAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;4BACnD,KAAI,CAAC,MAAM,EAAE,CAAC;yBACf,CAAC,CAAC;qBACJ;iBACF;qBAAM;;oBAEL,IAAI,IAAI,CAAC,sBAAsB,EAAE;wBAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;wBAC1C,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;qBACzC;iBACF;aACF;;;WAAA;QAiBD,uCAAQ,GAAR;YACE,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAC5C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YAE/B,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;QAEO,+CAAgB,GAAxB,UAAyB,UAAkB,EAAE,MAAc,EAAE,SAAiB,EAAE,cAAsB,EAAE,SAAiB;YACvH,IAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAE5D,IAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,cAAc,CAAC;YAC3E,IAAM,CAAC,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YAE1C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAEO,8CAAe,GAAvB;;YACE,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAM,kBAAkB,GAAa,EAAE,CAAC;;gBAExC,KAA0B,IAAA,KAAA,SAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAArE,IAAM,WAAW,WAAA;oBACpB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBAElE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;wBACzD,KAAK,EAAE,CAAC;wBACR,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;qBAClD;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,qCAAM,GAAN;YACE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;;YAG9B,IAAM,KAAK,GAAG,CAAC,CAAC;YAEhB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YAE3B,IAAI,IAAY,CAAC;YACjB,IAAI,IAAY,CAAC;YAEjB,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,MAAM,GAAG,GAAG,EAAE;gBAChB,IAAI,GAAG,CAAC,CAAC;aACV;YAED,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7G,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;;YAG7C,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;gBAChE,IAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;gBAG/C,IAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,cAAc,CAAC;gBAC/C,IAAM,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;gBAElC,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;iBACnB;gBAED,IAAI,GAAG,CAAC,CAAC;gBACT,IAAI,GAAG,CAAC,CAAC;aACV;;YAGD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;;YAG9G,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACrE,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;aACvC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,CAAC,gBAAgB,CACnB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,cAAc,EAClF,CAAC,EACD,KAAK,EACL,cAAc,EACd,SAAS,CACV,CAAC;aACH;SACF;QAEO,2DAA4B,GAApC;YACE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC/F;QAED,qDAAsB,GAAtB,UAAuB,MAAW,EAAE,OAAuB;YACzD,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC/C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACzE;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrC;YAED,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;QAEO,4DAA6B,GAArC;;YAEE,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;YAEhC,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,EAAE;gBAC5C,IAAM,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBAC3C,UAAU,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC;gBAClD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7C;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE;gBAC3C,IAAI,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBACzC,UAAU,CAAC,IAAI,GAAG,qBAAqB,CAAC,cAAc,CAAC;gBACvD,UAAU,CAAC,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC;gBAC9C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE5C,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBACrC,UAAU,CAAC,IAAI,GAAG,qBAAqB,CAAC,cAAc,CAAC;gBACvD,UAAU,CAAC,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC;gBAChD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE5C,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBACrC,UAAU,CAAC,IAAI,GAAG,qBAAqB,CAAC,cAAc,CAAC;gBACvD,UAAU,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC;gBAC/C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7C;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,EAAE;gBAC7C,IAAI,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBACzC,UAAU,CAAC,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC;gBAC5C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE5C,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBACrC,UAAU,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;gBAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7C;;YAGD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;;YAGlE,IAAI,CAAC,gBAAgB,YAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;;YAGpD,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;QAED,gDAAiB,GAAjB,UAAkB,UAA6B;YAC7C,OAAO,IAAI,CAAC,SAAS;iBAClB,GAAG,CAAC,CAAC,iCAAiC,GAAG,UAAU,CAAC,IAAI,EAAE,kCAAkC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;iBACjH,IAAI,CACHZ,aAAG,CAAC,UAAC,MAAc;gBACjB,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,IAAI,IAAI,MAAM,CAAC,iCAAiC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEpE,IAAI,UAAU,CAAC,KAAK,EAAE;oBACpB,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,kCAAkC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;iBAC9E;qBAAM;oBACL,OAAO,IAAI,CAAC;iBACb;gBAED,OAAO,IAAI,CAAC;aACb,CAAC,CACH,CAAC;SACL;QAED,gDAAiB,GAAjB,UAAkB,UAA6B;;;gBAC7C,KAAiC,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAArD,IAAM,kBAAkB,WAAA;oBAC3B,IACE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,kBAAkB,CAAC,IAAI,EACvB,UAAU,CAAC,IAAI,EACf,kBAAkB,CAAC,KAAK,EACxB,UAAU,CAAC,KAAK,EAChB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,EACD;wBACA,OAAO,IAAI,CAAC;qBACb;iBACF;;;;;;;;;YACD,OAAO,KAAK,CAAC;SACd;QAED,+CAAgB,GAAhB,UAAiB,KAAU,EAAE,UAA6B;YACxD,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;;gBAE/B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC1C;iBAAM;;gBAEL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACvD,IAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACtD,IACE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,kBAAkB,CAAC,IAAI,EACvB,UAAU,CAAC,IAAI,EACf,kBAAkB,CAAC,KAAK,EACxB,UAAU,CAAC,KAAK,EAChB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,EACD;wBACA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACtC;iBACF;aACF;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,6CAAc,GAAd,UAAe,WAAmB,EAAE,WAAmB;YACrD,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,OAAO,WAAW,GAAG,KAAK,GAAG,WAAW,CAAC;aAC1C;YAED,OAAO,WAAW,CAAC;SACpB;QAED,6CAAc,GAAd,UAAe,OAAuB,EAAE,OAA6B;;;gBACnE,KAA8B,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAA9C,IAAM,eAAe,WAAA;oBACxB,IAAI,eAAe,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE;wBAChD,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BACnD,OAAO,IAAI,CAAC;yBACb;wBAED,MAAM;qBACP;iBACF;;;;;;;;;YAED,OAAO,KAAK,CAAC;SACd;QAED,4CAAa,GAAb,UAAc,KAAU,EAAE,OAAuB,EAAE,OAA6B;;;YAE9E,IAAI,gBAAgB,GAAG,KAAK,CAAC;;gBAC7B,KAA8B,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAA9C,IAAM,eAAe,WAAA;oBACxB,IAAI,eAAe,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE;wBAChD,gBAAgB,GAAG,IAAI,CAAC;wBACxB,MAAM;qBACP;iBACF;;;;;;;;;YAED,IAAI,CAAC,gBAAgB,EAAE;gBACrB,IAAM,eAAe,GAAG,IAAI,0BAA0B,EAAE,CAAC;gBACzD,eAAe,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC3C;;;gBAGD,KAA8B,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA,gBAAA,4BAAE;oBAA9C,IAAM,eAAe,WAAA;oBACxB,IAAI,eAAe,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE;wBAChD,IAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAE7D,IAAI,KAAK,IAAI,CAAC,EAAE;4BACd,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBAC3C;6BAAM;4BACL,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;yBAC7C;wBAED,MAAM;qBACP;iBACF;;;;;;;;;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,8CAAe,GAAf,UAAgB,KAAU;YACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;gBACnF,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;aAClC;SACF;QAED,2CAAY,GAAZ,UAAa,KAAU;YACrB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC7E,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;aAClC;SACF;QAED,0CAAW,GAAX,UAAY,KAAU;YACpB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC/E,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC;gBAC7B,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;aAClC;SACF;QAED,6CAAc,GAAd,UAAe,KAAU;YACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE;gBACjF,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;aAClC;SACF;QAED,+CAAgB,GAAhB,UAAiB,KAAU;YACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACrF,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;aAClC;SACF;;oBA3UuB,aAAa;oBACT,gBAAgB;oBAClB,cAAc;oBACnBK,uBAAgB;;QA3B5B;YAARuC,UAAK,EAAE;sCAAQ,WAAW;2DAAC;QAI5B;YADCA,UAAK,EAAE;;;8DAgBP;QAEyC;YAAzCV,cAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;sCAAYC,eAAU;+DAAC;QA9CrD,oBAAoB;YALhCE,cAAS,CAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,o7QAA4C;;aAE7C,CAAC;6CAkDwB,aAAa;gBACT,gBAAgB;gBAClB,cAAc;gBACnBhC,uBAAgB;WApD1B,oBAAoB,CA6XhC;QAAD,2BAAC;KA7XD;;;QCME;YAVQ,WAAM,GAAG;gBACf,CAAC,CAAC,EAAE,GAAG,CAAC;gBACR,CAAC,GAAG,EAAE,CAAC,CAAC;gBACR,CAAC,IAAI,EAAE,GAAG,CAAC;gBACX,CAAC,GAAG,EAAE,IAAI,CAAC;aACZ,CAAC;YAEM,YAAO,GAAG,IAAI,CAAC;YACf,aAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAElB;QAER,uCAAM,GAAd,eAAmB;QAEnB,yCAAQ,GAAR,eAAa;QApBa;YAAzB6B,cAAS,CAAC,aAAa,CAAC;sCAAcC,eAAU;mEAAC;QADvC,sBAAsB;YALlCE,cAAS,CAAC;gBACT,QAAQ,EAAE,yBAAyB;gBACnC,6JAA+C;;aAEhD,CAAC;;WACW,sBAAsB,CAsBlC;QAAD,6BAAC;KAtBD;;;QCSE,yBACU,WAAwB,EACzB,aAA4B,EAC5B,aAA4B,EAC3B,oBAA0C;YAH1C,gBAAW,GAAX,WAAW,CAAa;YACzB,kBAAa,GAAb,aAAa,CAAe;YAC5B,kBAAa,GAAb,aAAa,CAAe;YAC3B,yBAAoB,GAApB,oBAAoB,CAAsB;SAChD;QAEJ,kCAAQ,GAAR,eAAa;QAEL,mCAAS,GAAjB,UAAkB,MAAc;YAC9B,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC;YAE3C,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACrC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxD;SACF;QAED,wCAAc,GAAd;YACE,IAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,0CAAgB,GAAhB;YACE,IAAI,CAAC,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;SACrC;QAED,oCAAU,GAAV,UAAW,MAAc,EAAE,KAAU;YACnC,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC;aAC5C;iBAAM;gBACL,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,KAAK,MAAM,EAAE;oBAChD,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC;iBAC/C;aACF;SACF;QAED,sCAAY,GAAZ,UAAa,MAAc;YAA3B,iBAYC;YAXC,IAAI,CAAC,oBAAoB;iBACtB,IAAI,CAAC,gCAAgC,CAAC;iBACtC,IAAI,CACHrC,aAAG,CAAC,UAAC,MAAM;gBACT,IAAI,MAAM,EAAE;oBACV,KAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,KAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/G,KAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;iBAClC;aACF,CAAC,CACH;iBACA,SAAS,EAAE,CAAC;SAChB;;oBAjDsB,WAAW;oBACV,aAAa;oBACb,aAAa;oBACL,oBAAoB;;QALzC,eAAe;YAL3BqC,cAAS,CAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,mzGAAsC;;aAEvC,CAAC;6CAGuB,WAAW;gBACV,aAAa;gBACb,aAAa;gBACL,oBAAoB;WALzC,eAAe,CAoD3B;QAAD,sBAAC;KApDD;;;QCuBE,2CAAoB,aAA4B;YAA5B,kBAAa,GAAb,aAAa,CAAe;YApBhD,aAAQ,GAAG,CAAC,CAAC;YACb,aAAQ,GAAG,CAAC,CAAC;YACb,iBAAY,GAAG,CAAC,CAAC;YACjB,UAAK,GAAG,CAAC,CAAC;YACV,kBAAa,GAAG,CAAC,CAAC;SAgBkC;QARpD,sBAAI,sDAAO;iBAAX,UAAY,KAA2B;gBACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;;;WAAA;QAOO,yDAAa,GAArB;;YACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAExD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvF,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE9B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;;oBACnB,KAAyB,IAAA,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAhD,IAAM,UAAU,WAAA;wBACnB,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,EAAE;4BACtF,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;4BACrC,MAAM;yBACP;qBACF;;;;;;;;;aACF;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;SAC5C;QAED,8DAAkB,GAAlB;YACE,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzE,OAAO,IAAI,CAAC;aACb;YAED,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,UAAU,EAAE;gBAC5E,OAAO,IAAI,CAAC;aACb;YAED,OAAO,KAAK,CAAC;SACd;QAEO,uDAAW,GAAnB;YACE,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACvD;YAED,OAAO,CAAC,CAAC;SACV;QAEO,uDAAW,GAAnB;YACE,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACvD;YAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC/B;QAED,oDAAQ,GAAR,eAAa;QAEb,oDAAQ,GAAR,UAAS,KAAU,EAAE,qBAAsC;YAA3D,iBAyBC;YAzBoB,sCAAA,EAAA,6BAAsC;YACzD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;gBAChB,OAAO;aACR;YAED,IAAI,CAAC,qBAAqB,KAAK,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;gBACxF,OAAO;aACR;YAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE9B,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjF,IAAI,IAAI,CAAC,WAAW,EAAE;;;;gBAIpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;wBAC9B,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;wBAClD,KAAI,CAAC,aAAa,GAAG,SAAS,CAAC;qBAChC,EAAE,EAAE,CAAC,CAAC;iBACR;aACF;YACD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAEO,kEAAsB,GAA9B;YACE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;SACvE;QAEO,2DAAe,GAAvB;YACE,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;gBAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;aACnC;YAED,OAAO,CAAC,CAAC;SACV;QAED,wDAAY,GAAZ,UAAa,MAAe;YAC1B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;aAC7C;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;aAC/B;YACD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,8DAAkB,GAAlB;;YAEE,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;aACrE;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aAC1D;SACF;;oBA9GkC,aAAa;;QAzBH;YAA5CH,cAAS,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;sCAAcC,eAAU;8EAAC;QAcrE;YADCS,UAAK,EAAE;sCACC,cAAc;0EAAC;QAGxB;YADCA,UAAK,EAAE;sCACW,oBAAoB;6CAApB,oBAAoB;wEAGtC;QAGD;YADCA,UAAK,EAAE;;kFACgB;QAxBb,iCAAiC;YAN7CP,cAAS,CAAC;gBACT,QAAQ,EAAE,oCAAoC;gBAC9C,o/FAA0D;gBAE1D,eAAe,EAAEU,4BAAuB,CAAC,MAAM;;aAChD,CAAC;6CA2BmC,aAAa;WA1BrC,iCAAiC,CAyI7C;QAAD,wCAAC;KAzID;;;QC8BE,8CAAmB,aAA4B,EAAU,iBAAoC,EAAU,cAA8B;YAAlH,kBAAa,GAAb,aAAa,CAAe;YAAU,sBAAiB,GAAjB,iBAAiB,CAAmB;YAAU,mBAAc,GAAd,cAAc,CAAgB;YAFrI,kBAAa,GAAG,KAAK,CAAC;SAEmH;QAjBzI,sBAAI,yDAAO;iBAAX,UAAY,KAAqB;gBAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;;;WAAA;QAGD,sBAAI,yDAAO;iBAAX,UAAY,KAA2B;gBACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;;;WAAA;QAUD,uDAAQ,GAAR;YAAA,iBAIC;YAHC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,CAAC;gBAC9E,KAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aACxC,CAAC,CAAC;SACJ;QAED,0DAAW,GAAX;YACE,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;SAC5C;QAEO,qDAAM,GAAd;;YACE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;;;oBAG3B,KAAyB,IAAA,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAhD,IAAM,UAAU,WAAA;wBACnB,IAAI,UAAU,CAAC,KAAK,EAAE;4BACpB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;4BACtC,MAAM;yBACP;qBACF;;;;;;;;;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;iBACrC;gBAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;;oBAGtF,KAAyB,IAAA,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,gBAAA,4BAAE;wBAAhD,IAAM,UAAU,WAAA;wBACnB,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,qBAAqB,CAAC,SAAS,EAAE;4BAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;yBACxC;qBACF;;;;;;;;;aACF;YAED,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC;QAED,sEAAuB,GAAvB,UAAwB,UAAmC;;YACzD,IAAI,QAAQ,GAAG,kBAAkB,CAAC;YAClC,IAAI,KAAK,GAAG,OAAO,CAAC;YACpB,IAAI,MAAM,GAAa,EAAE,CAAC;YAE1B,IAAI,UAAU,CAAC,UAAU,EAAE;;oBACzB,KAAmB,IAAA,KAAA,SAAA,UAAU,CAAC,UAAU,CAAA,gBAAA,4BAAE;wBAArC,IAAM,IAAI,WAAA;;wBAEb,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC1B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;yBACrC;qBACF;;;;;;;;;aACF;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAErB,IAAI,WAAW,SAAQ,CAAC;;oBACxB,KAAoB,IAAA,WAAA,SAAA,MAAM,CAAA,8BAAA,kDAAE;wBAAvB,IAAM,KAAK,mBAAA;wBACd,IAAI,WAAW,EAAE;4BACf,WAAW,IAAI,IAAI,CAAC;yBACrB;6BAAM;4BACL,WAAW,GAAG,EAAE,CAAC;yBAClB;wBACD,WAAW,IAAI,KAAK,CAAC;qBACtB;;;;;;;;;gBACD,QAAQ,GAAG,kBAAkB,CAAC;gBAC9B,KAAK,GAAG,mCAAmC,GAAG,WAAW,GAAG,GAAG,CAAC;aACjE;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACnB;iBAAM;gBACL,KAAK,GAAG,MAAM,CAAC;aAChB;YAED,IAAM,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YACxB,OAAO,KAAK,CAAC;SACd;QAED,mEAAoB,GAApB;YACE,IAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAC3D,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,SAAS,EAC/B,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAC1B,CAAC;YAEF,IAAI,eAAe,EAAE;gBACnB,OAAO,eAAe,CAAC,UAAU,CAAC;aACnC;YACD,OAAO,SAAS,CAAC;SAClB;QAED,uEAAwB,GAAxB,UAAyB,UAAkB;YACzC,IAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAEvD,IAAI,kBAAkB,IAAI,CAAC,EAAE;;gBAE3B,OAAO,kBAAkB,KAAK,UAAU,CAAC;aAC1C;iBAAM;;;gBAGL,IAAM,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,mCAAmC,CACnF,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,IAAI,CAAC,QAAQ,CACd,CAAC;gBAEF,IAAI,sBAAsB,EAAE;oBAC1B,OAAO,UAAU,KAAK,sBAAsB,CAAC,UAAU,CAAC,UAAU,CAAC;iBACpE;qBAAM;oBACL,OAAO,KAAK,CAAC;iBACd;aACF;SACF;QAED,2DAAY,GAAZ,UAAa,MAAe;YAC1B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,SAAS,EAC/B,SAAS,EACT,CAAC,EACD,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAC1B,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACtC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,SAAS,EAC/B,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAC1B,CAAC;aACH;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,+DAAgB,GAAhB,UAAiB,UAAkB;YACjC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,SAAS,EAC/B,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAC1B,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;;oBAvJiC,aAAa;oBAA6BJ,sBAAiB;oBAA0B,cAAc;;QAjBrI;YADCC,UAAK,EAAE;sCACW,cAAc;6CAAd,cAAc;2EAGhC;QAGD;YADCA,UAAK,EAAE;sCACW,oBAAoB;6CAApB,oBAAoB;2EAGtC;QAGD;YADCA,UAAK,EAAE;;gFACW;QAGnB;YADCA,UAAK,EAAE;;mFACc;QAzBX,oCAAoC;YALhDP,cAAS,CAAC;gBACT,QAAQ,EAAE,wCAAwC;gBAClD,0/CAA8D;;aAE/D,CAAC;6CA4BkC,aAAa,EAA6BM,sBAAiB,EAA0B,cAAc;WA3B1H,oCAAoC,CAmLhD;QAAD,2CAAC;KAnLD;;;QCUE,yCAAoB,aAA4B,EAAU,cAA8B,EAAU,iBAAoC;YAAtI,iBAMC;YANmB,kBAAa,GAAb,aAAa,CAAe;YAAU,mBAAc,GAAd,cAAc,CAAgB;YAAU,sBAAiB,GAAjB,iBAAiB,CAAmB;YAVtI,UAAK,GAAG,SAAS,CAAC;YAElB,WAAM,GAAG,KAAK,CAAC;YACP,uBAAkB,GAAG,KAAK,CAAC;;YAG3B,kBAAa,GAAG,KAAK,CAAC;YAK5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC7E,KAAI,CAAC,MAAM,EAAE,CAAC;gBACd,KAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aACxC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;QAEO,gDAAM,GAAd;YACE,IAAI,GAAW,CAAC;YAChB,IAAI,KAAa,CAAC;YAClB,IAAI,IAAY,CAAC;YACjB,IAAI,eAAuC,CAAC;YAC5C,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACrD,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,sBAAsB,CAAC,GAAG,CAC3B,CAAC;YACF,IAAI,eAAe,EAAE;gBACnB,GAAG,GAAG,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;aAC7C;YACD,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACrD,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,sBAAsB,CAAC,KAAK,CAC7B,CAAC;YACF,IAAI,eAAe,EAAE;gBACnB,KAAK,GAAG,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;aAC/C;YACD,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACrD,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,sBAAsB,CAAC,IAAI,CAC5B,CAAC;YACF,IAAI,eAAe,EAAE;gBACnB,IAAI,GAAG,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;aAC9C;YACD,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE;gBAClE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,GAAG,GAAG,GAAG,CAAC;gBACV,KAAK,GAAG,GAAG,CAAC;gBACZ,IAAI,GAAG,GAAG,CAAC;aACZ;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACvC;QAEO,wDAAc,GAAtB,UAAuB,GAAW,EAAE,KAAa,EAAE,IAAY;YAC7D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;aAC5D;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B;QAED,qDAAW,GAAX;YACE,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;SACvC;QAED,kDAAQ,GAAR;YACE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,yBAAyB,EAAE;gBAChE,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,SAAS;gBACtB,YAAY,EAAE,EAAE;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;YAGjE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;QAED,+CAAK,GAAL;YACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAChC;QAEO,4DAAkB,GAA1B,UAA2B,KAAU;YACnC,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACrC,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EACjB,SAAS,EACT,sBAAsB,CAAC,GAAG,CAC3B,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EACjB,SAAS,EACT,sBAAsB,CAAC,KAAK,CAC7B,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EACjB,SAAS,EACT,sBAAsB,CAAC,IAAI,CAC5B,CAAC;iBACH;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACtC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,sBAAsB,CAAC,GAAG,CAC3B,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACtC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,sBAAsB,CAAC,KAAK,CAC7B,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACtC,IAAI,CAAC,aAAa,CAAC,cAAc,EACjC,qBAAqB,CAAC,cAAc,EACpC,sBAAsB,CAAC,IAAI,CAC5B,CAAC;iBACH;gBACD,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;gBACvC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;aAClC;SACF;QAED,sDAAY,GAAZ,UAAa,MAAe;YAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACjD;iBAAM;gBACL,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBACnC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;aACxB;YACD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,qDAAW,GAAX,UAAY,KAAU;YACpB,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE;gBAClD,OAAO;aACR;YAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAChC;;oBApJkC,aAAa;oBAA0B,cAAc;oBAA6BA,sBAAiB;;QAX3H,+BAA+B;YAL3CN,cAAS,CAAC;gBACT,QAAQ,EAAE,kCAAkC;gBAC5C,w3BAAwD;;aAEzD,CAAC;6CAYmC,aAAa,EAA0B,cAAc,EAA6BM,sBAAiB;WAX3H,+BAA+B,CAgK3C;QAAD,sCAAC;KAhKD;;;QCJE,0CAAoB,aAA4B,EAAU,iBAAoC;YAA1E,kBAAa,GAAb,aAAa,CAAe;YAAU,sBAAiB,GAAjB,iBAAiB,CAAmB;SAAI;QAElG,mDAAQ,GAAR,eAAa;QAEb,mDAAQ,GAAR;YACE,IAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAClI,IAAI,eAAe,EAAE;gBACnB,OAAO,eAAe,CAAC,eAAe,CAAC;aACxC;YACD,OAAO,SAAS,CAAC;SAClB;QAED,uDAAY,GAAZ;YACE,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;aAC5C;YACD,OAAO,SAAS,CAAC;SAClB;QAED,mDAAQ,GAAR,UAAS,KAAU;YACjB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;gBAChB,OAAO;aACR;YAED,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACjH,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,uDAAY,GAAZ,UAAa,MAAe;YAC1B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;gBAC7G,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aACxC;YACD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;;oBA1CkC,aAAa;oBAA6BA,sBAAiB;;QADnF,gCAAgC;YAL5CN,cAAS,CAAC;gBACT,QAAQ,EAAE,mCAAmC;gBAC7C,k+CAAyD;;aAE1D,CAAC;6CAEmC,aAAa,EAA6BM,sBAAiB;WADnF,gCAAgC,CA4C5C;QAAD,uCAAC;KA5CD;;;QCCE,2CAAoB,aAA4B,EAAU,iBAAoC;YAA1E,kBAAa,GAAb,aAAa,CAAe;YAAU,sBAAiB,GAAjB,iBAAiB,CAAmB;SAAI;QAElG,oDAAQ,GAAR,eAAa;QAEb,uDAAW,GAAX;YACE,IAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAC5H,IAAI,eAAe,EAAE;gBACnB,OAAO,eAAe,CAAC,eAAe,CAAC;aACxC;YACD,OAAO,SAAS,CAAC;SAClB;QAED,2DAAe,GAAf;YACE,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;aAC5C;YACD,OAAO,SAAS,CAAC;SAClB;QAED,uDAAW,GAAX,UAAY,KAAU;YACpB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;gBAChB,OAAO;aACR;YAED,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3G,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,wDAAY,GAAZ;YACE,IAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC7H,IAAI,eAAe,EAAE;gBACnB,OAAO,eAAe,CAAC,eAAe,CAAC;aACxC;YACD,OAAO,SAAS,CAAC;SAClB;QAED,4DAAgB,GAAhB;YACE,IAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;aAC5C;YACD,OAAO,SAAS,CAAC;SAClB;QAED,wDAAY,GAAZ,UAAa,KAAU;YACrB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;gBAChB,OAAO;aACR;YAED,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5G,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,wDAAY,GAAZ,UAAa,MAAe;YAC1B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBACvG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACxG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aACxC;YACD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;;oBA1EkC,aAAa;oBAA6BA,sBAAiB;;QADnF,iCAAiC;YAL7CN,cAAS,CAAC;gBACT,QAAQ,EAAE,qCAAqC;gBAC/C,6jFAA2D;;aAE5D,CAAC;6CAEmC,aAAa,EAA6BM,sBAAiB;WADnF,iCAAiC,CA4E7C;QAAD,wCAAC;KA5ED;;;QCcE,oCACS,aAA4B,EAC3B,cAA8B,EAC9B,iBAAoC,EACrC,cAA8B,EAC9B,YAA0B;YALnC,iBAkBC;YAjBQ,kBAAa,GAAb,aAAa,CAAe;YAC3B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,sBAAiB,GAAjB,iBAAiB,CAAmB;YACrC,mBAAc,GAAd,cAAc,CAAgB;YAC9B,iBAAY,GAAZ,YAAY,CAAc;;YAVnC,uBAAkB,GAA8C,IAAI,GAAG,EAAwC,CAAC;YAY9G,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC9F,KAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC9F,KAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC;gBACtC,KAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aACxC,CAAC,CAAC;SACJ;QAED,6CAAQ,GAAR,eAAa;QAEb,gDAAW,GAAX;YACE,IAAI,CAAC,mCAAmC,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,mCAAmC,CAAC,WAAW,EAAE,CAAC;SACxD;QAEO,gDAAW,GAAnB,UAAoB,MAAiD,EAAE,OAAuB,EAAE,OAA6B;YAC3H,MAAM,CAAC,OAAO,CAAC,UAAC,eAAqC,EAAE,eAA+B;gBACpF,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;oBAClF,OAAO,IAAI,CAAC;iBACb;aACF,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC;SACd;QAEO,sDAAiB,GAAzB;;YACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAwC,CAAC;YAE1E,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACtC,OAAO;aACR;;gBAED,KAA0B,IAAA,KAAA,SAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAArE,IAAM,WAAW,WAAA;oBACpB,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;;wBACxE,KAAsB,IAAA,oBAAA,SAAA,OAAO,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4BAAnC,IAAM,OAAO,WAAA;;gCAChB,KAAyB,IAAA,oBAAA,SAAA,OAAO,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;oCAA1C,IAAM,UAAU,WAAA;oCACnB,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wCACjF,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE;;4CAEtF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;gDACxE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;6CACvD;yCACF;6CAAM,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE;;;yCAG7F;qCACF;iCACF;;;;;;;;;yBACF;;;;;;;;;iBACF;;;;;;;;;SACF;QAEO,2CAAM,GAAd;YACE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC;QAED,6CAAQ,GAAR;YACE,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClD,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;SACd;;oBAzEuB,aAAa;oBACX,cAAc;oBACXA,sBAAiB;oBACrB,cAAc;oBAChB,YAAY;;QAZxB,0BAA0B;YANtCN,cAAS,CAAC;gBACT,QAAQ,EAAE,4BAA4B;gBACtC,ypFAAkD;gBAElD,eAAe,EAAEU,4BAAuB,CAAC,MAAM;;aAChD,CAAC;6CASwB,aAAa;gBACX,cAAc;gBACXJ,sBAAiB;gBACrB,cAAc;gBAChB,YAAY;WAZxB,0BAA0B,CAkFtC;QAAD,iCAAC;KAlFD;;;QCIE,iCAAmB,aAA4B,EAAU,iBAAoC,EAAS,cAA8B;YAApI,iBAQC;YARkB,kBAAa,GAAb,aAAa,CAAe;YAAU,sBAAiB,GAAjB,iBAAiB,CAAmB;YAAS,mBAAc,GAAd,cAAc,CAAgB;YAP7H,wBAAmB,GAAgD,IAAI,GAAG,EAA0C,CAAC;YACrH,aAAQ,GAAqB,EAAE,CAAC;YAChC,qBAAgB,GAAqB,EAAE,CAAC;YAM7C,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC9F,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC9F,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B,CAAC,CAAC;SACJ;QAED,0CAAQ,GAAR,eAAa;QAEb,6CAAW,GAAX;YACE,IAAI,CAAC,mCAAmC,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,mCAAmC,CAAC,WAAW,EAAE,CAAC;SACxD;QAEO,8DAA4B,GAApC;YACE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEhG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC;QAEO,mDAAiB,GAAzB;;YAEE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;;YAGzD,IAAI,CAAC,gBAAgB,YAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE3C,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;QAED,wDAAsB,GAAtB,UAAuB,MAAW,EAAE,OAAuB;YACzD,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC/C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACzE;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrC;YAED,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;QAED,0CAAQ,GAAR;YACE,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClD,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;SACd;;oBAhDiC,aAAa;oBAA6BA,sBAAiB;oBAAyB,cAAc;;QARzH,uBAAuB;YALnCN,cAAS,CAAC;gBACT,QAAQ,EAAE,yBAAyB;gBACnC,m4EAA+C;;aAEhD,CAAC;6CASkC,aAAa,EAA6BM,sBAAiB,EAAyB,cAAc;WARzH,uBAAuB,CAyDnC;QAAD,8BAAC;KAzDD;;;QCqBE,0CAAmB,cAA8B,EAAU,aAA4B;YAAvF,iBAIC;YAJkB,mBAAc,GAAd,cAAc,CAAgB;YAAU,kBAAa,GAAb,aAAa,CAAe;YAtBvF,+BAA0B,GAAQ,SAAS,CAAC;YAE5C,wBAAmB,GAAW,SAAS,CAAC;YAExC,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;YAEd,iBAAY,GAAG,CAAC,GAAG,CAAC;YACpB,iBAAY,GAAG,GAAG,CAAC;YACnB,iBAAY,GAAG,CAAC,CAAC;YACjB,iBAAY,GAAG,GAAG,CAAC;YACnB,iBAAY,GAAG,CAAC,GAAG,CAAC;YACpB,iBAAY,GAAG,GAAG,CAAC;YAEnB,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;YACd,cAAS,GAAG,CAAC,CAAC;YAEd,gBAAW,GAAG,CAAC,CAAC;YAChB,gBAAW,GAAG,GAAG,CAAC;YAGhB,aAAa,CAAC,+BAA+B,CAAC,SAAS,CAAC;gBACtD,KAAI,CAAC,eAAe,EAAE,CAAC;aACxB,CAAC,CAAC;SACJ;QAED,mDAAQ,GAAR,eAAa;QAEL,0DAAe,GAAvB;;;YAEE,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YAErC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;gBAE3B,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,IAAI,CAAC,mBAAmB,EAAE;wBAC5B,IAAI,IAAI,CAAC,mBAAmB,KAAK,OAAO,CAAC,WAAW,EAAE;4BACpD,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;4BACrC,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;qBAChD;iBACF;;;;;;;;;;gBACD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;4BACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;4BAC3B,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;qBACpC;iBACF;;;;;;;;;;gBACD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;4BACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;4BAC3B,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;qBACpC;iBACF;;;;;;;;;;gBACD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;4BACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;4BAC3B,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;qBACpC;iBACF;;;;;;;;;;gBACD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;4BACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;4BAC3B,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;qBACpC;iBACF;;;;;;;;;;gBACD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;4BACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;4BAC3B,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;qBACpC;iBACF;;;;;;;;;;gBACD,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;4BACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;4BAC3B,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;qBACpC;iBACF;;;;;;;;;SACF;QAED,yDAAc,GAAd,UAAe,cAAsB;;YACnC,IAAM,WAAW,GAAgB,WAAW,CAAC,cAAc,CAAC,CAAC;;gBAE7D,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;iBACnC;;;;;;;;;SACF;QAED,+DAAoB,GAApB,UAAqB,QAAgB,EAAE,KAAU;;YAC/C,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;gBAChB,OAAO;aACR;YAED,IAAI,QAAQ,KAAK,GAAG,EAAE;gBACpB,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;oBAC5D,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;iBACzB;aACF;iBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAC3B,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;oBAC5D,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;iBACzB;aACF;iBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAC3B,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;oBAC5D,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;iBACzB;aACF;;gBAED,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,QAAQ,KAAK,GAAG,EAAE;wBACpB,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;4BAC5D,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;yBAC5B;qBACF;yBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;wBAC3B,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;4BAC5D,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;yBAC5B;qBACF;yBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;wBAC3B,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;4BAC5D,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;yBAC5B;qBACF;iBACF;;;;;;;;;SACF;QAED,+DAAoB,GAApB,UAAqB,QAAgB,EAAE,KAAU;;YAC/C,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;gBACxE,OAAO;aACR;YAED,IAAI,QAAQ,KAAK,GAAG,EAAE;gBACpB,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;aACzB;iBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;aACzB;iBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;aACzB;;gBAED,KAAsB,IAAA,KAAA,SAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAA,gBAAA,4BAAE;oBAA/D,IAAM,OAAO,WAAA;oBAChB,IAAI,QAAQ,KAAK,GAAG,EAAE;wBACpB,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;qBAC5B;yBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;wBAC3B,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;qBAC5B;yBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE;wBAC3B,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;qBAC5B;iBACF;;;;;;;;;SACF;;oBA9JkC,cAAc;oBAAyB,aAAa;;QAvB5E,gCAAgC;YAL5CN,cAAS,CAAC;gBACT,QAAQ,EAAE,mCAAmC;gBAC7C,i3LAAyD;;aAE1D,CAAC;6CAwBmC,cAAc,EAAyB,aAAa;WAvB5E,gCAAgC,CAsL5C;QAAD,uCAAC;KAtLD;;;QCAE,uCAAmB,cAA8B,EAAS,cAA8B,EAAU,iBAAoC;YAAnH,mBAAc,GAAd,cAAc,CAAgB;YAAS,mBAAc,GAAd,cAAc,CAAgB;YAAU,sBAAiB,GAAjB,iBAAiB,CAAmB;SAAI;QAE1I,gDAAQ,GAAR,eAAa;QAEb,8CAAM,GAAN;YACE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC;;oBAPkC,cAAc;oBAAyB,cAAc;oBAA6BM,sBAAiB;;QAD3H,6BAA6B;YALzCN,cAAS,CAAC;gBACT,QAAQ,EAAE,gCAAgC;gBAC1C,8gMAAsD;;aAEvD,CAAC;6CAEmC,cAAc,EAAyB,cAAc,EAA6BM,sBAAiB;WAD3H,6BAA6B,CASzC;QAAD,oCAAC;KATD;;;QCGE,kCAAoB,cAA8B,EAAS,aAA4B;YAAnE,mBAAc,GAAd,cAAc,CAAgB;YAAS,kBAAa,GAAb,aAAa,CAAe;YAFvF,gBAAW,GAAa,EAAE,CAAC;YAGzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1B;SACF;QAED,2CAAQ,GAAR,eAAa;QAEb,2CAAQ,GAAR;YACE,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClD,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;SACd;;oBAbmC,cAAc;oBAAwB,aAAa;;QAH5E,wBAAwB;YALpCN,cAAS,CAAC;gBACT,QAAQ,EAAE,0BAA0B;gBACpC,m6BAAgD;;aAEjD,CAAC;6CAIoC,cAAc,EAAwB,aAAa;WAH5E,wBAAwB,CAiBpC;QAAD,+BAAC;KAjBD;;;QCKE,0BACS,cAA8B,EAC9B,aAA4B,EAC3B,kBAAsC,EACvC,cAA8B,EAC9B,YAA0B;YAJ1B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,kBAAa,GAAb,aAAa,CAAe;YAC3B,uBAAkB,GAAlB,kBAAkB,CAAoB;YACvC,mBAAc,GAAd,cAAc,CAAgB;YAC9B,iBAAY,GAAZ,YAAY,CAAc;SAC/B;QAEJ,mCAAQ,GAAR,eAAa;QAEb,4CAAiB,GAAjB,UAAkB,OAAgB;YAChC,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;gBACzC,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;aAC/D;iBAAM;gBACL,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;aACtD;SACF;QAED,wCAAa,GAAb,UAAc,KAAU,EAAE,OAAgB;YACxC,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;;gBAEzC,IAAI,CAAC,cAAc,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;gBAC5D,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;aAC3D;iBAAM;;gBAEL,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;gBAClD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;aAClC;SACF;QAED,oCAAS,GAAT;YACE,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACnD;QAED,qCAAU,GAAV;YACE,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACnD;QAED,0CAAe,GAAf;YACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;SAChC;;oBA1CwB,cAAc;oBACf,aAAa;oBACP,kBAAkB;oBACvB,cAAc;oBAChB,YAAY;;QANxB,gBAAgB;YAL5BA,cAAS,CAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,oqEAAuC;;aAExC,CAAC;6CAGyB,cAAc;gBACf,aAAa;gBACP,kBAAkB;gBACvB,cAAc;gBAChB,YAAY;WANxB,gBAAgB,CA6C5B;QAAD,uBAAC;KA7CD;;;QCJE,wBAAmB,YAA0B;YAA1B,iBAAY,GAAZ,YAAY,CAAc;SAAI;QAEjD,iCAAQ,GAAR,eAAa;QAEb,8BAAK,GAAL;YACE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACvC;;oBANgC,YAAY;;QADlC,cAAc;YAL1BA,cAAS,CAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,ijDAAqC;;aAEtC,CAAC;6CAEiC,YAAY;WADlC,cAAc,CAQ1B;QAAD,qBAAC;KARD;;;QCEE,+BAAmB,cAA8B,EAAU,iBAAoC,EAAU,aAA4B;YAAlH,mBAAc,GAAd,cAAc,CAAgB;YAAU,sBAAiB,GAAjB,iBAAiB,CAAmB;YAAU,kBAAa,GAAb,aAAa,CAAe;SAAI;QAEzI,wCAAQ,GAAR,eAAa;QAEb,wCAAQ,GAAR,UAAS,KAAU;YACjB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;gBAChB,OAAO;aACR;YAED,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACtD,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;QAED,wCAAQ,GAAR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;SACpF;;oBApBkC,cAAc;oBAA6BM,sBAAiB;oBAAyB,aAAa;;QAD1H,qBAAqB;YALjCN,cAAS,CAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,o/DAA6C;;aAE9C,CAAC;6CAEmC,cAAc,EAA6BM,sBAAiB,EAAyB,aAAa;WAD1H,qBAAqB,CAsBjC;QAAD,4BAAC;KAtBD;;;QCWE,iCAAmB,UAAsB;YAAtB,eAAU,GAAV,UAAU,CAAY;SAAI;QAE7C,0CAAQ,GAAR;YACE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SAC5C;QAED,oCAAE,GAAF;YACE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAE7B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAK,IAAI,CAAC,WAAmB,KAAK,EAAE,EAAE;gBACnG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;aACrC;iBAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE;gBAC5D,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aAC7C;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAK,IAAI,CAAC,SAAiB,KAAK,EAAE,EAAE;gBAC7F,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;aACnC;iBAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE;gBACxD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;aACzC;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;gBACvD,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;aAC/C;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;gBACzD,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;aACjD;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAE3C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,wCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,qDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBA7C8BH,gBAAU;;QA2CzC;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;0EAGlD;QAxDU,uBAAuB;YALnCC,cAAS,CAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,kqHAA+C;;aAEhD,CAAC;6CAY+BG,gBAAU;WAX9B,uBAAuB,CAyDnC;QAAD,8BAAC;KAzDD;;;QCME,yBACS,aAA4B,EAC5B,YAA0B,EAC1B,cAA8B,EAC9B,YAA0B,EACzB,YAA4B;YAJ7B,kBAAa,GAAb,aAAa,CAAe;YAC5B,iBAAY,GAAZ,YAAY,CAAc;YAC1B,mBAAc,GAAd,cAAc,CAAgB;YAC9B,iBAAY,GAAZ,YAAY,CAAc;YACzB,iBAAY,GAAZ,YAAY,CAAgB;SAClC;QAEJ,kCAAQ,GAAR,eAAa;QAEb,sCAAY,GAAZ,UAAa,KAAa;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACxC;QAED,wCAAc,GAAd;YACE,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC;SAC1F;QAED,wCAAc,GAAd,UAAe,MAAe,EAAE,KAAa;YAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrF,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;gBAE7D,IAAI,MAAM,EAAE;;oBAEV,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5D;qBAAM;;oBAEL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC/E,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;4BAC/D,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC7D,OAAO;yBACR;qBACF;iBACF;aACF;SACF;QAED,mCAAS,GAAT;YACE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAE/B,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrF,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC9F;SACF;QAED,sCAAY,GAAZ;YACE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACtC,OAAO;aACR;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9H,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SACpC;QAED,sCAAY,GAAZ,UAAa,MAAc;YACzB,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjE,QAAQ,EAAE,IAAI;gBACd,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,EAAE,MAAM,QAAA,EAAE;aACzB,CAAC,CAAC;SACJ;;oBA7DuB,aAAa;oBACd,YAAY;oBACV,cAAc;oBAChB,YAAY;oBACXD,oBAAc;;QAN3B,eAAe;YAL3BF,cAAS,CAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,swEAAsC;;aAEvC,CAAC;6CAGwB,aAAa;gBACd,YAAY;gBACV,cAAc;gBAChB,YAAY;gBACXE,oBAAc;WAN3B,eAAe,CAgE3B;QAAD,sBAAC;KAhED;;;QCIE,gCAAmB,UAAsB;YAAtB,eAAU,GAAV,UAAU,CAAY;SAAI;QAE7C,yCAAQ,GAAR;YACE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;SAC3C;QAED,mCAAE,GAAF;YACE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;gBACvD,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;aAC9C;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;gBACzD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;aAChD;YAED,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAE1C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAED,uCAAM,GAAN;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;QAGD,oDAAmB,GAAnB,UAAoB,KAAU;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;;oBAjC8BC,gBAAU;;QA+BzC;YADCJ,iBAAY,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;yEAGlD;QA1CU,sBAAsB;YALlCC,cAAS,CAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,gxFAA8C;;aAE/C,CAAC;6CAU+BG,gBAAU;WAT9B,sBAAsB,CA2ClC;QAAD,6BAAC;KA3CD;;;QCME,wBACS,YAA0B,EAC1B,aAA4B,EAC5B,cAA8B,EAC7B,YAA4B,EAC7B,YAA0B;YAJ1B,iBAAY,GAAZ,YAAY,CAAc;YAC1B,kBAAa,GAAb,aAAa,CAAe;YAC5B,mBAAc,GAAd,cAAc,CAAgB;YAC7B,iBAAY,GAAZ,YAAY,CAAgB;YAC7B,iBAAY,GAAZ,YAAY,CAAc;SAC/B;QAEJ,iCAAQ,GAAR,eAAa;QAEb,oCAAW,GAAX,UAAY,KAAU,EAAE,KAAa;YACnC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACtC;QAED,oCAAW,GAAX;YACE,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjD,OAAO;aACR;YAED,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SACpE;QAED,qCAAY,GAAZ,UAAa,KAAY;YACvB,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChE,QAAQ,EAAE,IAAI;gBACd,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,EAAE,KAAK,OAAA,EAAE;aACxB,CAAC,CAAC;SACJ;;oBA5BsB,YAAY;oBACX,aAAa;oBACZ,cAAc;oBACfD,oBAAc;oBACf,YAAY;;QANxB,cAAc;YAL1BF,cAAS,CAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,g8EAAqC;;aAEtC,CAAC;6CAGuB,YAAY;gBACX,aAAa;gBACZ,cAAc;gBACfE,oBAAc;gBACf,YAAY;WANxB,cAAc,CA+B1B;QAAD,qBAAC;KA/BD;;;QCiGA;SAA8B;QAAjB,cAAc;YA3D1BS,aAAQ,CAAC;gBACR,YAAY,EAAE;oBACZ,iBAAiB;oBACjB,sBAAsB;oBACtB,gBAAgB;oBAChB,oBAAoB;oBACpB,sBAAsB;oBACtB,cAAc;oBACd,iBAAiB;oBACjB,+BAA+B;oBAC/B,gBAAgB;oBAChB,gCAAgC;oBAChC,0BAA0B;oBAC1B,wBAAwB;oBACxB,eAAe;oBACf,oBAAoB;oBACpB,eAAe;oBACf,qBAAqB;oBACrB,gCAAgC;oBAChC,qBAAqB;oBACrB,4BAA4B;oBAC5B,aAAa;oBACb,iCAAiC;oBACjC,iCAAiC;oBACjC,uBAAuB;oBACvB,oCAAoC;oBACpC,kBAAkB;oBAClB,qBAAqB;oBACrB,uBAAuB;oBACvB,mBAAmB;oBACnB,sBAAsB;oBACtB,qBAAqB;oBACrB,oBAAoB;oBACpB,6BAA6B;oBAC7B,cAAc;oBACd,uBAAuB;oBACvB,sBAAsB;oBACtB,oBAAoB;oBACpB,kCAAkC;iBACnC;gBACD,OAAO,EAAE;oBACPC,mBAAY,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxBC,6BAAa;oBACbC,kCAAuB;oBACvBC,qBAAgB;oBAChBC,iBAAW;oBACXC,2CAAwB;oBACxBC,sBAAe;oBACfC,yBAAe;oBACfC,qBAAa;oBACbC,yBAAe;oBACfC,8BAAgB;oBAChBC,iCAAc;oBACdC,sBAAY,CAAC,OAAO,CAAC;wBACnB,WAAW,EAAE,IAAI;qBAClB,CAAC;iBACH;gBACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;aAC7B,CAAC;WACW,cAAc,CAAG;QAAD,qBAAC;KAA9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|