From 867456103802c4a76f38f6ba9aea1e326411566d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8E=89=E7=90=A6?= <7507756+jiang_yuqi@user.noreply.gitee.com> Date: Sat, 24 Aug 2024 11:53:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 16 - .../common/core/utils/bean/BeanUtils.java | 57 +- .../core/web/controller/BaseController.java | 9 + .../flowable/domain/FlowableCategory.java | 83 - .../flowable/domain/FlowableDeploy.java | 70 - .../flowable/domain/FlowableFieldDef.java | 126 -- .../flowable/domain/FlowableFieldRef.java | 97 - .../flowable/domain/FlowableFieldSearch.java | 13 - .../yanzhu/flowable/domain/FlowableModel.java | 165 -- .../flowable/domain/FlowableModelPage.java | 97 - .../yanzhu/flowable/domain/SysDeployForm.java | 64 + .../yanzhu/flowable/domain/SysExpression.java | 100 + .../com/yanzhu/flowable/domain/SysForm.java | 70 + .../yanzhu/flowable/domain/SysListener.java | 126 ++ .../yanzhu/flowable/domain/SysTaskForm.java | 65 + .../domain/bo/FlowableMetaInfoBo.java | 30 - .../flowable/domain/bo/FlowableModelBo.java | 49 - .../flowable/domain/dto/FlowCommentDto.java | 25 + .../flowable/domain/dto/FlowFromFieldDTO.java | 15 + .../flowable/domain/dto/FlowNextDto.java | 30 + .../domain/{my => dto}/FlowProcDefDto.java | 7 +- .../flowable/domain/dto/FlowSaveXmlVo.java | 28 + .../flowable/domain/dto/FlowTaskDto.java | 102 ++ .../flowable/domain/dto/FlowViewerDto.java | 23 + .../flowable/domain/vo/FlowQueryVo.java | 33 + .../yanzhu/flowable/domain/vo/FlowTaskVo.java | 56 + .../flowable/domain/vo/ReturnTaskNodeVo.java | 23 + .../flowable/mapper/FlowDeployMapper.java | 22 + .../mapper/FlowableCategoryMapper.java | 61 - .../mapper/FlowableFieldDefMapper.java | 69 - .../mapper/FlowableFieldRefMapper.java | 61 - .../mapper/FlowableModelPageMapper.java | 61 - .../flowable/mapper/SysDeployFormMapper.java | 72 + .../flowable/mapper/SysExpressionMapper.java | 62 + .../yanzhu/flowable/mapper/SysFormMapper.java | 62 + .../flowable/mapper/SysListenerMapper.java | 62 + .../flowable/mapper/SysTaskFormMapper.java | 62 + .../mapper/flowable/FlowDeployMapper.xml | 31 + .../flowable/FlowableFieldDefMapper.xml | 113 -- .../flowable/FlowableFieldRefMapper.xml | 89 - .../flowable/FlowableModelPageMapper.xml | 87 - .../mapper/flowable/SysDeployFormMapper.xml | 66 + ...goryMapper.xml => SysExpressionMapper.xml} | 89 +- .../mapper/flowable/SysFormMapper.xml | 82 + .../mapper/flowable/SysListenerMapper.xml | 115 ++ .../mapper/flowable/SysTaskFormMapper.xml | 61 + yanzhu-modules/yanzhu-flowable/pom.xml | 13 +- .../common/constant/ProcessConstants.java | 6 - .../flowable/common/enums/CacheType.java | 29 - .../flowable/common/enums/FlowComment.java | 4 +- .../flowable/common/enums/FormType.java | 33 - .../flowable/common/expand/el/BaseEl.java | 12 + .../flowable/common/expand/el/FlowEl.java | 26 + .../ExpressionLanguageJavaFunction.java | 26 + .../flowable/config/FlowableConfig.java | 64 +- .../flowable/config/FlowableEngineConfig.java | 63 - .../config/FlowableGlobalListenerConfig.java | 82 +- .../controller/FlowDefinitionController.java | 210 +++ .../controller/FlowInstanceController.java | 66 + .../controller/FlowTaskController.java | 281 +++ .../FlowableCategoryController.java | 98 - .../controller/FlowableDeployController.java | 97 - .../FlowableFieldDefController.java | 109 -- .../FlowableFieldRefController.java | 113 -- .../controller/FlowableModelController.java | 172 -- .../FlowableModelPageController.java | 152 -- .../controller/SysExpressionController.java | 92 + .../controller/SysFormController.java | 112 ++ .../controller/SysListenerController.java | 98 + .../flow/CustomProcessDiagramCanvas.java | 1 + .../flowable/flow/FindNextNodeUtil.java | 10 +- .../com/yanzhu/flowable/flow/ModelHelper.java | 143 -- .../com/yanzhu/flowable/flow/ModelUtils.java | 372 ---- .../flowable/rpc/IRemoteSystemService.java | 35 + .../flowable/rpc/RemoteSystemService.java | 72 + .../service/IFlowDefinitionService.java | 78 + .../service/IFlowInstanceService.java | 54 + .../flowable/service/IFlowTaskService.java | 217 +++ .../service/IFlowableCategoryService.java | 69 - .../service/IFlowableDeployService.java | 68 - .../service/IFlowableFieldDefService.java | 70 - .../service/IFlowableFieldRefService.java | 62 - .../service/IFlowableModelPageService.java | 83 - .../service/IFlowableModelService.java | 96 - .../service/ISysDeployFormService.java | 70 + .../service/ISysExpressionService.java | 62 + .../flowable/service/ISysFormService.java | 61 + .../flowable/service/ISysListenerService.java | 62 + .../flowable/service/ISysTaskFormService.java | 62 + .../impl/FlowDefinitionServiceImpl.java | 232 +++ .../service/impl/FlowInstanceServiceImpl.java | 118 ++ .../service/impl/FlowTaskServiceImpl.java | 1308 ++++++++++++++ .../impl/FlowableCategoryServiceImpl.java | 126 -- .../impl/FlowableDeployServiceImpl.java | 222 --- .../impl/FlowableFieldDefServiceImpl.java | 109 -- .../impl/FlowableFieldRefServiceImpl.java | 97 - .../impl/FlowableModelPageServiceImpl.java | 183 -- .../impl/FlowableModelServiceImpl.java | 423 ----- .../impl/SysDeployFormServiceImpl.java | 105 ++ .../impl/SysExpressionServiceImpl.java | 97 + .../service/impl/SysFormServiceImpl.java | 90 + .../service/impl/SysListenerServiceImpl.java | 97 + .../service/impl/SysTaskFormServiceImpl.java | 87 + .../yanzhu/flowable/util/WorkflowUtil.java | 14 + .../com/yanzhu/system/rpc/SysRoleRpc.java | 32 + .../com/yanzhu/system/rpc/SysUserRpc.java | 34 + yanzhu-ui-vue3/README.md | 55 +- yanzhu-ui-vue3/package.json | 35 +- yanzhu-ui-vue3/src/App.vue | 20 +- yanzhu-ui-vue3/src/animate.ts | 48 - yanzhu-ui-vue3/src/api/flowable/category.js | 44 - yanzhu-ui-vue3/src/api/flowable/def.js | 52 - yanzhu-ui-vue3/src/api/flowable/definition.js | 140 ++ yanzhu-ui-vue3/src/api/flowable/expression.js | 44 + yanzhu-ui-vue3/src/api/flowable/finished.js | 79 + yanzhu-ui-vue3/src/api/flowable/form.js | 68 + yanzhu-ui-vue3/src/api/flowable/listener.js | 44 + yanzhu-ui-vue3/src/api/flowable/model.js | 83 - yanzhu-ui-vue3/src/api/flowable/page.js | 53 - yanzhu-ui-vue3/src/api/flowable/process.js | 113 ++ yanzhu-ui-vue3/src/api/flowable/ref.js | 52 - yanzhu-ui-vue3/src/api/flowable/todo.js | 132 ++ yanzhu-ui-vue3/src/api/system/area.js | 68 - .../src/assets/images/bg_file_v1.jpg | Bin 391778 -> 0 bytes .../src/assets/images/bg_file_v2.png | Bin 48231 -> 0 bytes .../src/assets/images/bg_file_v3.png | Bin 5115 -> 0 bytes .../src/assets/images/order/order_v1.png | Bin 54651 -> 0 bytes yanzhu-ui-vue3/src/assets/images/pay.png | Bin 0 -> 140720 bytes yanzhu-ui-vue3/src/assets/images/task_bg.png | Bin 54651 -> 0 bytes .../src/assets/styles/flow-viewer.scss | 101 ++ yanzhu-ui-vue3/src/assets/styles/index.scss | 10 - yanzhu-ui-vue3/src/assets/styles/ruoyi.scss | 5 + yanzhu-ui-vue3/src/assets/styles/sidebar.scss | 2 +- .../src/assets/styles/transition.scss | 4 - .../src/components/DictTag/index.vue | 49 +- .../src/components/Editor/index.vue | 2 +- .../src/components/IconSelect/index.vue | 83 +- .../src/components/ImagePreview/index.vue | 3 +- .../src/components/ImageUpload/index.vue | 2 +- .../src/components/Process/README.md | 181 ++ .../components/Process/common/bpmnUtils.js | 119 ++ .../src/components/Process/common/index.js | 12 + .../components/Process/common/parseElement.js | 55 + .../Process/customPanel/CustomContextPad.js} | 294 ++- .../Process/customPanel/CustomPalette.js | 142 ++ .../Process/customPanel/customTranslate.js | 20 + .../components/Process/customPanel/index.js | 8 + .../src/components/Process/designer.vue | 198 ++ .../Process/flowable/flowable.json} | 20 + .../src/components/Process/flowable/init.js | 33 + .../src/components/Process/index.vue | 334 ++++ .../Process/lang}/zh.js | 183 +- .../components/Process/panel/commonPanel.vue | 80 + .../Process/panel/conditionPanel.vue | 163 ++ .../Process/panel/executionListener.vue | 469 +++++ .../components/Process/panel/formPanel.vue | 72 + .../Process/panel/multiInstance.vue | 231 +++ .../components/Process/panel/otherPanel.vue | 56 + .../components/Process/panel/taskListener.vue | 527 ++++++ .../components/Process/panel/taskPanel.vue | 400 ++++ .../Process/style}/process-panel.scss | 21 +- .../src/components/Process/viewer/index.vue | 269 +++ .../src/components/ProcessDesigner/index.vue | 214 --- .../src/components/ProcessViewer/index.vue | 237 --- .../src/components/TopNav/index.vue | 8 +- .../src/components/bpmn/PropertyPanel.vue | 304 ---- .../context-pad/CustomContextPadProvider.ts | 512 ------ .../bpmn/extension/FlowableExtension.ts | 10 - .../components/bpmn/form/ApproverConfig.vue | 205 --- .../src/components/bpmn/form/BasicSetting.vue | 100 - .../bpmn/form/ExecutionListener.vue | 290 --- .../bpmn/form/ExecutionListenerForm.vue | 74 - .../bpmn/form/ListenerFieldInject.vue | 277 --- .../src/components/bpmn/form/PageConfig.vue | 98 - .../components/bpmn/form/SeqFlowConfig.vue | 172 -- .../src/components/bpmn/form/TaskListener.vue | 290 --- .../components/bpmn/form/TaskListenerForm.vue | 62 - .../src/components/bpmn/form/util.ts | 35 - .../components/bpmn/moddle/CustomModdle.ts | 6 - .../src/components/flow/ElInputTag/index.vue | 178 ++ .../src/components/flow/Expression/index.vue | 112 ++ .../src/components/flow/Role/index.vue | 175 ++ .../src/components/flow/User/index.vue | 249 +++ .../src/components/vform/designer.umd.js | 1539 ++++++++++++++++ .../src/layout/components/AppMain.vue | 19 +- .../src/layout/components/Sidebar/Logo.vue | 2 +- .../layout/components/TagsView/ScrollPane.vue | 2 +- yanzhu-ui-vue3/src/layout/index.vue | 2 +- .../src/lib/vform/designer.style.css | 16 - yanzhu-ui-vue3/src/lib/vform/designer.umd.js | 1601 ----------------- yanzhu-ui-vue3/src/main.js | 10 +- .../src/modules/auto-place/CustomAutoPlace.js | 81 - .../src/modules/auto-place/index.js | 6 - .../modules/custom-renderer/CustomRenderer.js | 17 - .../src/modules/custom-renderer/index.js | 6 - .../src/modules/rules/CustomRules.js | 16 - yanzhu-ui-vue3/src/modules/rules/index.js | 6 - yanzhu-ui-vue3/src/package/Log.js | 99 - .../src/package/designer/ProcessDesigner.vue | 514 ------ yanzhu-ui-vue3/src/package/designer/index.js | 7 - .../designer/plugins/content-pad/index.js | 6 - .../package/designer/plugins/defaultEmpty.js | 24 - .../descriptor/activitiDescriptor.json | 1071 ----------- .../plugins/descriptor/camundaDescriptor.json | 1087 ----------- .../activiti/activitiExtension.js | 73 - .../extension-moddle/activiti/index.js | 10 - .../extension-moddle/camunda/extension.js | 144 -- .../plugins/extension-moddle/camunda/index.js | 7 - .../flowable/flowableExtension.js | 72 - .../extension-moddle/flowable/index.js | 10 - .../designer/plugins/palette/CustomPalette.js | 156 -- .../package/designer/plugins/palette/index.js | 6 - .../plugins/palette/paletteProvider.js | 160 -- .../plugins/translate/customTranslate.js | 41 - yanzhu-ui-vue3/src/package/index.js | 21 - .../src/package/palette/ProcessPalette.vue | 106 -- yanzhu-ui-vue3/src/package/palette/index.js | 7 - .../src/package/penal/PropertiesPanel.vue | 213 --- .../package/penal/base/ElementBaseInfo.vue | 80 - .../penal/flow-condition/FlowCondition.vue | 142 -- .../src/package/penal/form/ElementForm.vue | 372 ---- yanzhu-ui-vue3/src/package/penal/index.js | 7 - .../penal/listeners/ElementListeners.vue | 303 ---- .../penal/listeners/UserTaskListeners.vue | 322 ---- .../src/package/penal/listeners/template.js | 178 -- .../src/package/penal/listeners/utilSelf.js | 62 - .../multi-instance/ElementMultiInstance.vue | 200 -- .../penal/other/ElementOtherConfig.vue | 59 - .../penal/properties/ElementProperties.vue | 141 -- .../penal/signal-message/SignalAndMessage.vue | 110 -- .../src/package/penal/task/ElementTask.vue | 72 - .../task/task-components/ReceiveTask.vue | 103 -- .../penal/task/task-components/ScriptTask.vue | 85 - .../penal/task/task-components/UserTask.vue | 86 - .../src/package/theme/element-variables.scss | 70 - yanzhu-ui-vue3/src/package/theme/index.scss | 170 -- .../src/package/theme/process-designer.scss | 157 -- yanzhu-ui-vue3/src/package/utils.js | 71 - yanzhu-ui-vue3/src/plugins/tab.js | 8 +- yanzhu-ui-vue3/src/router/index.js | 80 +- yanzhu-ui-vue3/src/store/modules/modeler.js | 42 + yanzhu-ui-vue3/src/utils/StrUtil.js | 553 ++++++ yanzhu-ui-vue3/src/utils/min-dash.js | 694 ------- .../src/views/flowable/def/index.vue | 305 ---- .../src/views/flowable/definition/index.vue | 355 ++++ .../src/views/flowable/definition/model.vue | 138 ++ .../src/views/flowable/deploy/index.vue | 436 ----- .../{category => expression}/index.vue | 149 +- .../src/views/flowable/listener/index.vue | 319 ++++ .../views/flowable/model/fieldmaintenance.vue | 281 --- .../src/views/flowable/model/index.vue | 538 ------ .../src/views/flowable/ref/index.vue | 280 --- .../flowable/task/finished/detail/index.vue | 256 +++ .../views/flowable/task/finished/index.vue | 179 ++ .../views/flowable/task/flowForm/index.vue | 139 ++ .../src/views/flowable/task/form/index.vue | 260 +++ .../flowable/task/myProcess/detail/index.vue | 253 +++ .../views/flowable/task/myProcess/index.vue | 299 +++ .../flowable/task/myProcess/send/index.vue | 269 +++ .../views/flowable/task/todo/detail/index.vue | 558 ++++++ .../src/views/flowable/task/todo/index.vue | 170 ++ yanzhu-ui-vue3/src/views/index.vue | 52 +- .../src/views/system/area/index.vue | 319 ---- .../src/views/system/menu/index.vue | 2 +- yanzhu-ui-vue3/vite.config.js | 11 +- yanzhu-ui-vue3/vite/plugins/compression.ts | 28 - yanzhu-ui-vue3/vite/plugins/icons.ts | 8 - yanzhu-ui-vue3/vite/plugins/unocss.ts | 13 - 268 files changed, 16443 insertions(+), 19369 deletions(-) delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableCategory.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableDeploy.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldDef.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldRef.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldSearch.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModel.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModelPage.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysDeployForm.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysExpression.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysForm.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysListener.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysTaskForm.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableMetaInfoBo.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableModelBo.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowCommentDto.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowFromFieldDTO.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowNextDto.java rename yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/{my => dto}/FlowProcDefDto.java (92%) create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowSaveXmlVo.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowTaskDto.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowViewerDto.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowQueryVo.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowTaskVo.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/ReturnTaskNodeVo.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowDeployMapper.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableCategoryMapper.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldDefMapper.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldRefMapper.java delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableModelPageMapper.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysDeployFormMapper.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysExpressionMapper.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysFormMapper.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysListenerMapper.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysTaskFormMapper.java create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowDeployMapper.xml delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldDefMapper.xml delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldRefMapper.xml delete mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableModelPageMapper.xml create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysDeployFormMapper.xml rename yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/{FlowableCategoryMapper.xml => SysExpressionMapper.xml} (53%) create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysFormMapper.xml create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysListenerMapper.xml create mode 100644 yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysTaskFormMapper.xml delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/CacheType.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FormType.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/BaseEl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/FlowEl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/function/ExpressionLanguageJavaFunction.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableEngineConfig.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowDefinitionController.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowInstanceController.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowTaskController.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableCategoryController.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableDeployController.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldDefController.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldRefController.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelController.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelPageController.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysExpressionController.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysFormController.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysListenerController.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelHelper.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelUtils.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/IRemoteSystemService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/RemoteSystemService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowDefinitionService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowInstanceService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowTaskService.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableCategoryService.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableDeployService.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldDefService.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldRefService.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelPageService.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysDeployFormService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysExpressionService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysFormService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysListenerService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysTaskFormService.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowDefinitionServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowInstanceServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowTaskServiceImpl.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableCategoryServiceImpl.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableDeployServiceImpl.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldDefServiceImpl.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldRefServiceImpl.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelPageServiceImpl.java delete mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysDeployFormServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysExpressionServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysFormServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysListenerServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysTaskFormServiceImpl.java create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/util/WorkflowUtil.java create mode 100644 yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysRoleRpc.java create mode 100644 yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysUserRpc.java delete mode 100644 yanzhu-ui-vue3/src/animate.ts delete mode 100644 yanzhu-ui-vue3/src/api/flowable/category.js delete mode 100644 yanzhu-ui-vue3/src/api/flowable/def.js create mode 100644 yanzhu-ui-vue3/src/api/flowable/definition.js create mode 100644 yanzhu-ui-vue3/src/api/flowable/expression.js create mode 100644 yanzhu-ui-vue3/src/api/flowable/finished.js create mode 100644 yanzhu-ui-vue3/src/api/flowable/form.js create mode 100644 yanzhu-ui-vue3/src/api/flowable/listener.js delete mode 100644 yanzhu-ui-vue3/src/api/flowable/model.js delete mode 100644 yanzhu-ui-vue3/src/api/flowable/page.js create mode 100644 yanzhu-ui-vue3/src/api/flowable/process.js delete mode 100644 yanzhu-ui-vue3/src/api/flowable/ref.js create mode 100644 yanzhu-ui-vue3/src/api/flowable/todo.js delete mode 100644 yanzhu-ui-vue3/src/api/system/area.js delete mode 100644 yanzhu-ui-vue3/src/assets/images/bg_file_v1.jpg delete mode 100644 yanzhu-ui-vue3/src/assets/images/bg_file_v2.png delete mode 100644 yanzhu-ui-vue3/src/assets/images/bg_file_v3.png delete mode 100644 yanzhu-ui-vue3/src/assets/images/order/order_v1.png create mode 100644 yanzhu-ui-vue3/src/assets/images/pay.png delete mode 100644 yanzhu-ui-vue3/src/assets/images/task_bg.png create mode 100644 yanzhu-ui-vue3/src/assets/styles/flow-viewer.scss create mode 100644 yanzhu-ui-vue3/src/components/Process/README.md create mode 100644 yanzhu-ui-vue3/src/components/Process/common/bpmnUtils.js create mode 100644 yanzhu-ui-vue3/src/components/Process/common/index.js create mode 100644 yanzhu-ui-vue3/src/components/Process/common/parseElement.js rename yanzhu-ui-vue3/src/{package/designer/plugins/content-pad/contentPadProvider.js => components/Process/customPanel/CustomContextPad.js} (61%) create mode 100644 yanzhu-ui-vue3/src/components/Process/customPanel/CustomPalette.js create mode 100644 yanzhu-ui-vue3/src/components/Process/customPanel/customTranslate.js create mode 100644 yanzhu-ui-vue3/src/components/Process/customPanel/index.js create mode 100644 yanzhu-ui-vue3/src/components/Process/designer.vue rename yanzhu-ui-vue3/src/{package/designer/plugins/descriptor/flowableDescriptor.json => components/Process/flowable/flowable.json} (98%) create mode 100644 yanzhu-ui-vue3/src/components/Process/flowable/init.js create mode 100644 yanzhu-ui-vue3/src/components/Process/index.vue rename yanzhu-ui-vue3/src/{package/designer/plugins/translate => components/Process/lang}/zh.js (70%) create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/commonPanel.vue create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/conditionPanel.vue create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/executionListener.vue create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/formPanel.vue create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/multiInstance.vue create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/otherPanel.vue create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/taskListener.vue create mode 100644 yanzhu-ui-vue3/src/components/Process/panel/taskPanel.vue rename yanzhu-ui-vue3/src/{package/theme => components/Process/style}/process-panel.scss (87%) create mode 100644 yanzhu-ui-vue3/src/components/Process/viewer/index.vue delete mode 100644 yanzhu-ui-vue3/src/components/ProcessDesigner/index.vue delete mode 100644 yanzhu-ui-vue3/src/components/ProcessViewer/index.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/PropertyPanel.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/context-pad/CustomContextPadProvider.ts delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/extension/FlowableExtension.ts delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/ApproverConfig.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/BasicSetting.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/ExecutionListener.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/ExecutionListenerForm.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/ListenerFieldInject.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/PageConfig.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/SeqFlowConfig.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/TaskListener.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/TaskListenerForm.vue delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/form/util.ts delete mode 100644 yanzhu-ui-vue3/src/components/bpmn/moddle/CustomModdle.ts create mode 100644 yanzhu-ui-vue3/src/components/flow/ElInputTag/index.vue create mode 100644 yanzhu-ui-vue3/src/components/flow/Expression/index.vue create mode 100644 yanzhu-ui-vue3/src/components/flow/Role/index.vue create mode 100644 yanzhu-ui-vue3/src/components/flow/User/index.vue create mode 100644 yanzhu-ui-vue3/src/components/vform/designer.umd.js delete mode 100644 yanzhu-ui-vue3/src/lib/vform/designer.style.css delete mode 100644 yanzhu-ui-vue3/src/lib/vform/designer.umd.js delete mode 100644 yanzhu-ui-vue3/src/modules/auto-place/CustomAutoPlace.js delete mode 100644 yanzhu-ui-vue3/src/modules/auto-place/index.js delete mode 100644 yanzhu-ui-vue3/src/modules/custom-renderer/CustomRenderer.js delete mode 100644 yanzhu-ui-vue3/src/modules/custom-renderer/index.js delete mode 100644 yanzhu-ui-vue3/src/modules/rules/CustomRules.js delete mode 100644 yanzhu-ui-vue3/src/modules/rules/index.js delete mode 100644 yanzhu-ui-vue3/src/package/Log.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/ProcessDesigner.vue delete mode 100644 yanzhu-ui-vue3/src/package/designer/index.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/content-pad/index.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/defaultEmpty.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/descriptor/activitiDescriptor.json delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/descriptor/camundaDescriptor.json delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/activitiExtension.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/index.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/extension.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/index.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/flowableExtension.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/index.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/palette/CustomPalette.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/palette/index.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/palette/paletteProvider.js delete mode 100644 yanzhu-ui-vue3/src/package/designer/plugins/translate/customTranslate.js delete mode 100644 yanzhu-ui-vue3/src/package/index.js delete mode 100644 yanzhu-ui-vue3/src/package/palette/ProcessPalette.vue delete mode 100644 yanzhu-ui-vue3/src/package/palette/index.js delete mode 100644 yanzhu-ui-vue3/src/package/penal/PropertiesPanel.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/base/ElementBaseInfo.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/flow-condition/FlowCondition.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/form/ElementForm.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/index.js delete mode 100644 yanzhu-ui-vue3/src/package/penal/listeners/ElementListeners.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/listeners/UserTaskListeners.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/listeners/template.js delete mode 100644 yanzhu-ui-vue3/src/package/penal/listeners/utilSelf.js delete mode 100644 yanzhu-ui-vue3/src/package/penal/multi-instance/ElementMultiInstance.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/other/ElementOtherConfig.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/properties/ElementProperties.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/signal-message/SignalAndMessage.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/task/ElementTask.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/task/task-components/ReceiveTask.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/task/task-components/ScriptTask.vue delete mode 100644 yanzhu-ui-vue3/src/package/penal/task/task-components/UserTask.vue delete mode 100644 yanzhu-ui-vue3/src/package/theme/element-variables.scss delete mode 100644 yanzhu-ui-vue3/src/package/theme/index.scss delete mode 100644 yanzhu-ui-vue3/src/package/theme/process-designer.scss delete mode 100644 yanzhu-ui-vue3/src/package/utils.js create mode 100644 yanzhu-ui-vue3/src/store/modules/modeler.js create mode 100644 yanzhu-ui-vue3/src/utils/StrUtil.js delete mode 100644 yanzhu-ui-vue3/src/utils/min-dash.js delete mode 100644 yanzhu-ui-vue3/src/views/flowable/def/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/definition/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/definition/model.vue delete mode 100644 yanzhu-ui-vue3/src/views/flowable/deploy/index.vue rename yanzhu-ui-vue3/src/views/flowable/{category => expression}/index.vue (56%) create mode 100644 yanzhu-ui-vue3/src/views/flowable/listener/index.vue delete mode 100644 yanzhu-ui-vue3/src/views/flowable/model/fieldmaintenance.vue delete mode 100644 yanzhu-ui-vue3/src/views/flowable/model/index.vue delete mode 100644 yanzhu-ui-vue3/src/views/flowable/ref/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/finished/detail/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/finished/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/flowForm/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/form/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/myProcess/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/myProcess/send/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/todo/detail/index.vue create mode 100644 yanzhu-ui-vue3/src/views/flowable/task/todo/index.vue delete mode 100644 yanzhu-ui-vue3/src/views/system/area/index.vue delete mode 100644 yanzhu-ui-vue3/vite/plugins/compression.ts delete mode 100644 yanzhu-ui-vue3/vite/plugins/icons.ts delete mode 100644 yanzhu-ui-vue3/vite/plugins/unocss.ts diff --git a/pom.xml b/pom.xml index 4d1a5d72..d8c03357 100644 --- a/pom.xml +++ b/pom.xml @@ -34,8 +34,6 @@ 0.9.1 8.2.2 4.1.2 - 7.0.0 - 2.1.2 2.14.2 @@ -145,20 +143,6 @@ ${transmittable-thread-local.version} - - - jakarta.mail - jakarta.mail-api - ${jakarta.version} - - - - - org.flowable - flowable-spring-boot-starter - ${flowable.version} - - com.yanzhu diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/bean/BeanUtils.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/bean/BeanUtils.java index 59b52779..1bea09dc 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/bean/BeanUtils.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/bean/BeanUtils.java @@ -1,8 +1,10 @@ package com.yanzhu.common.core.utils.bean; +import com.yanzhu.common.core.utils.StringUtils; + +import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -107,4 +109,55 @@ public class BeanUtils extends org.springframework.beans.BeanUtils { return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); } + + /** + * Java Bean 转换为 Map + * @param bean + * @return + * @throws IllegalAccessException + */ + public static Map beanToMap(Object bean) throws IllegalAccessException { + if (bean == null) { + return new HashMap<>(); + } + Map map = new HashMap<>(); + Class beanClass = bean.getClass(); + Field[] fields = beanClass.getDeclaredFields(); + + for (Field field : fields) { + field.setAccessible(true); // 允许访问私有字段 + String fieldName = field.getName(); + Object value = field.get(bean); + map.put(fieldName, value); + } + return map; + } + + /** + * toUnderlineCase 是 Hutool 库中的一个方法, + * 用于将驼峰命名法的字符串转换为下划线分隔的字符串(即蛇形命名法)。 + * 比如,将 "myVariableName" 转换成 "my_variable_name"。 + * 如下是自定义实现 + * @param str + * @return + */ + public static String toUnderlineCase(CharSequence str) { + if (StringUtils.isEmpty(str)) { + return null; + } + StringBuilder result = new StringBuilder(); + char[] chars = str.toString().toCharArray(); + + for (char c : chars) { + if (Character.isUpperCase(c)) { + if (result.length() > 0) { + result.append('_'); + } + result.append(Character.toLowerCase(c)); + } else { + result.append(c); + } + } + return result.toString(); + } } diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/controller/BaseController.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/controller/BaseController.java index b8dc8fd0..070a8903 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/controller/BaseController.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/controller/BaseController.java @@ -71,6 +71,15 @@ public class BaseController return rspData; } + protected TableDataInfo getDataTable(PageInfo pageInfo) { + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setRows(pageInfo.getList()); + rspData.setMsg("查询成功"); + rspData.setTotal(pageInfo.getTotal()); + return rspData; + } + /** * 返回成功 */ diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableCategory.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableCategory.java deleted file mode 100644 index 59dc37e0..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableCategory.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.yanzhu.flowable.domain; - -import com.yanzhu.common.core.annotation.Excel; -import com.yanzhu.common.core.web.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 流程分类对象 flowable_category - * - * @author ruoyi - * @date 2023-11-27 - */ -public class FlowableCategory extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 流程分类id */ - private Long id; - - /** 流程分类名称 */ - @Excel(name = "流程分类名称") - private String name; - - /** 分类编码 */ - @Excel(name = "分类编码") - private String code; - - /** 删除标志(0代表存在 2代表删除) */ - private String delFlag; - - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - public void setName(String name) - { - this.name = name; - } - - public String getName() - { - return name; - } - public void setCode(String code) - { - this.code = code; - } - - public String getCode() - { - return code; - } - public void setDelFlag(String delFlag) - { - this.delFlag = delFlag; - } - - public String getDelFlag() - { - return delFlag; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("name", getName()) - .append("code", getCode()) - .append("remark", getRemark()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("delFlag", getDelFlag()) - .toString(); - } -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableDeploy.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableDeploy.java deleted file mode 100644 index 60ac42d8..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableDeploy.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.yanzhu.flowable.domain; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.yanzhu.common.core.annotation.Excel; -import com.yanzhu.common.core.web.domain.BaseEntity; -import lombok.Data; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -import java.util.Date; - -/** - * 流程部署对象 flowable_deploy - * - * @author ruoyi - * @date 2023-12-18 - */ -@Data -public class FlowableDeploy extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 流程定义ID */ - @Excel(name = "流程定义ID") - private String definitionId; - - /** 流程名称 */ - @Excel(name = "流程名称") - private String processName; - - /** 流程Key */ - @Excel(name = "流程Key") - private String processKey; - - /** 分类编码 */ - @Excel(name = "分类编码") - private String category; - - /** 版本 */ - @Excel(name = "版本") - private Integer version; - - /** 部署ID */ - @Excel(name = "部署ID") - private String deploymentId; - - /** 流程定义状态 */ - @Excel(name = "流程定义状态") - private Boolean suspended; - - /** 部署时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "部署时间", width = 30, dateFormat = "yyyy-MM-dd") - private Date deploymentTime; - - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("definitionId", getDefinitionId()) - .append("processName", getProcessName()) - .append("processKey", getProcessKey()) - .append("category", getCategory()) - .append("version", getVersion()) - .append("deploymentId", getDeploymentId()) - .append("suspended", getSuspended()) - .append("deploymentTime", getDeploymentTime()) - .toString(); - } -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldDef.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldDef.java deleted file mode 100644 index 2349a9eb..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldDef.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.yanzhu.flowable.domain; - -import com.yanzhu.common.core.annotation.Excel; -import com.yanzhu.common.core.web.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 流程字段定义对象 flowable_field_def - * - * @author ruoyi - * @date 2023-12-26 - */ -public class FlowableFieldDef extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 主键ID */ - private String id; - - /** 数据库字段/表单字段 */ - @Excel(name = "数据库字段/表单字段") - private String field; - - /** 字段名/表单字段名 */ - @Excel(name = "字段名/表单字段名") - private String label; - - /** 字段宽度 */ - @Excel(name = "字段宽度") - private Long width; - - /** 字段组件类型 */ - @Excel(name = "字段组件类型") - private String type; - - /** 字段定义 */ - @Excel(name = "字段定义") - private String scheme; - - /** 字段范围 */ - @Excel(name = "字段范围") - private String scope; - - public void setId(String id) - { - this.id = id; - } - - public String getId() - { - return id; - } - public void setField(String field) - { - this.field = field; - } - - public String getField() - { - return field; - } - public void setLabel(String label) - { - this.label = label; - } - - public String getLabel() - { - return label; - } - public void setWidth(Long width) - { - this.width = width; - } - - public Long getWidth() - { - return width; - } - public void setType(String type) - { - this.type = type; - } - - public String getType() - { - return type; - } - public void setScheme(String scheme) - { - this.scheme = scheme; - } - - public String getScheme() - { - return scheme; - } - public void setScope(String scope) - { - this.scope = scope; - } - - public String getScope() - { - return scope; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("field", getField()) - .append("label", getLabel()) - .append("remark", getRemark()) - .append("width", getWidth()) - .append("type", getType()) - .append("scheme", getScheme()) - .append("scope", getScope()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .toString(); - } -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldRef.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldRef.java deleted file mode 100644 index 6d46b664..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldRef.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.yanzhu.flowable.domain; - -import com.yanzhu.common.core.annotation.Excel; -import com.yanzhu.common.core.web.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 流程字段引用关系对象 flowable_field_ref - * - * @author ruoyi - * @date 2023-12-26 - */ -public class FlowableFieldRef extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 主键ID */ - private String id; - - /** 模块 */ - @Excel(name = "模块") - private String module; - - /** 模型标识 */ - @Excel(name = "模型标识") - private String mkey; - - /** 字段ID */ - @Excel(name = "字段ID") - private String fieldId; - - /** 版本号 */ - @Excel(name = "版本号") - private Long version; - - public void setId(String id) - { - this.id = id; - } - - public String getId() - { - return id; - } - public void setModule(String module) - { - this.module = module; - } - - public String getModule() - { - return module; - } - public void setMkey(String mkey) - { - this.mkey = mkey; - } - - public String getMkey() - { - return mkey; - } - public void setFieldId(String fieldId) - { - this.fieldId = fieldId; - } - - public String getFieldId() - { - return fieldId; - } - public void setVersion(Long version) - { - this.version = version; - } - - public Long getVersion() - { - return version; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("module", getModule()) - .append("mkey", getMkey()) - .append("fieldId", getFieldId()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("version", getVersion()) - .toString(); - } -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldSearch.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldSearch.java deleted file mode 100644 index 095b3f3e..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableFieldSearch.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.yanzhu.flowable.domain; - -import lombok.Data; - -/** - * 为了方便查询,提供一个组合类 - */ -@Data -public class FlowableFieldSearch extends FlowableFieldRef { - - /** 字段范围 */ - private String scope; -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModel.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModel.java deleted file mode 100644 index 8c15cdc0..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModel.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.yanzhu.flowable.domain; - -import com.yanzhu.common.core.annotation.Excel; -import com.yanzhu.common.core.web.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 流程模型对象 flowable_model - * - * @author ruoyi - * @date 2023-11-28 - */ -public class FlowableModel extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 模型ID */ - @Excel(name = "模型ID") - private String modelId; - - /** 模型名称 */ - @Excel(name = "模型名称") - private String modelName; - - /** 模型Key */ - @Excel(name = "模型Key") - private String modelKey; - - /** 分类编码 */ - @Excel(name = "分类编码") - private String category; - - /** 版本 */ - @Excel(name = "版本") - private Integer version; - - /** 表单类型 */ - @Excel(name = "表单类型") - private Integer formType; - - /** 表单ID */ - @Excel(name = "表单ID") - private Long formId; - - /** 模型描述 */ - @Excel(name = "模型描述") - private String description; - - /** 流程xm */ - @Excel(name = "流程xm") - private String bpmnXml; - - /** 表单内容 */ - @Excel(name = "表单内容") - private String content; - - public void setModelId(String modelId) - { - this.modelId = modelId; - } - - public String getModelId() - { - return modelId; - } - public void setModelName(String modelName) - { - this.modelName = modelName; - } - - public String getModelName() - { - return modelName; - } - public void setModelKey(String modelKey) - { - this.modelKey = modelKey; - } - - public String getModelKey() - { - return modelKey; - } - public void setCategory(String category) - { - this.category = category; - } - - public String getCategory() - { - return category; - } - public void setVersion(Integer version) - { - this.version = version; - } - - public Integer getVersion() - { - return version; - } - public void setFormType(Integer formType) - { - this.formType = formType; - } - - public Integer getFormType() - { - return formType; - } - public void setFormId(Long formId) - { - this.formId = formId; - } - - public Long getFormId() - { - return formId; - } - public void setDescription(String description) - { - this.description = description; - } - - public String getDescription() - { - return description; - } - public void setBpmnXml(String bpmnXml) - { - this.bpmnXml = bpmnXml; - } - - public String getBpmnXml() - { - return bpmnXml; - } - public void setContent(String content) - { - this.content = content; - } - - public String getContent() - { - return content; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("modelId", getModelId()) - .append("modelName", getModelName()) - .append("modelKey", getModelKey()) - .append("category", getCategory()) - .append("version", getVersion()) - .append("formType", getFormType()) - .append("formId", getFormId()) - .append("description", getDescription()) - .append("createTime", getCreateTime()) - .append("bpmnXml", getBpmnXml()) - .append("content", getContent()) - .toString(); - } -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModelPage.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModelPage.java deleted file mode 100644 index 05d780da..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/FlowableModelPage.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.yanzhu.flowable.domain; - -import com.yanzhu.common.core.annotation.Excel; -import com.yanzhu.common.core.web.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 建模页面绑定对象 flowable_model_page - * - * @author ruoyi - * @date 2023-12-26 - */ -public class FlowableModelPage extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 主键ID */ - private String id; - - /** 模块 */ - @Excel(name = "模块") - private String module; - - /** 模型标识 */ - @Excel(name = "模型标识") - private String mkey; - - /** 页面名称 */ - @Excel(name = "页面名称") - private String name; - - /** 页面定义 */ - @Excel(name = "页面定义") - private String pageScheme; - - public void setId(String id) - { - this.id = id; - } - - public String getId() - { - return id; - } - public void setModule(String module) - { - this.module = module; - } - - public String getModule() - { - return module; - } - public void setMkey(String mkey) - { - this.mkey = mkey; - } - - public String getMkey() - { - return mkey; - } - public void setName(String name) - { - this.name = name; - } - - public String getName() - { - return name; - } - public void setPageScheme(String pageScheme) - { - this.pageScheme = pageScheme; - } - - public String getPageScheme() - { - return pageScheme; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("module", getModule()) - .append("mkey", getMkey()) - .append("name", getName()) - .append("pageScheme", getPageScheme()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .toString(); - } -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysDeployForm.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysDeployForm.java new file mode 100644 index 00000000..f91d88ca --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysDeployForm.java @@ -0,0 +1,64 @@ +package com.yanzhu.flowable.domain; + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 流程实例关联表单对象 sys_instance_form + * + * @author Tony + * @date 2021-03-30 + */ +public class SysDeployForm extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 表单主键 */ + @Excel(name = "表单主键") + private Long formId; + + /** 流程定义主键 */ + @Excel(name = "流程定义主键") + private String deployId; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setFormId(Long formId) + { + this.formId = formId; + } + + public Long getFormId() + { + return formId; + } + + public String getDeployId() { + return deployId; + } + + public void setDeployId(String deployId) { + this.deployId = deployId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("formId", getFormId()) + .append("deployId", getDeployId()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysExpression.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysExpression.java new file mode 100644 index 00000000..00b06369 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysExpression.java @@ -0,0 +1,100 @@ +package com.yanzhu.flowable.domain; + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 流程达式对象 sys_expression + * + * @author ruoyi + * @date 2022-12-12 + */ +public class SysExpression extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 表单主键 */ + private Long id; + + /** 表达式名称 */ + @Excel(name = "表达式名称") + private String name; + + /** 表达式内容 */ + @Excel(name = "表达式内容") + private String expression; + /** + * 表达式类型 exp_data_type + * fixed: 系统指定 + * dynamic: 动态选择 + * + * */ + private String dataType; + + /** 状态 */ + private Integer status; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setExpression(String expression) + { + this.expression = expression; + } + + public String getExpression() + { + return expression; + } + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public void setStatus(Integer status) + { + this.status = status; + } + + public Integer getStatus() + { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("name", getName()) + .append("expression", getExpression()) + .append("dataType", getDataType()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("createBy", getCreateBy()) + .append("updateBy", getUpdateBy()) + .append("status", getStatus()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysForm.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysForm.java new file mode 100644 index 00000000..c60b2f57 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysForm.java @@ -0,0 +1,70 @@ +package com.yanzhu.flowable.domain; + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 流程表单对象 sys_task_form + * + * @author Tony + * @date 2021-03-30 + */ +public class SysForm extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 表单主键 */ + private Long formId; + + /** 表单名称 */ + @Excel(name = "表单名称") + private String formName; + + /** 表单内容 */ + @Excel(name = "表单内容") + private String formContent; + + public void setFormId(Long formId) + { + this.formId = formId; + } + + public Long getFormId() + { + return formId; + } + public void setFormName(String formName) + { + this.formName = formName; + } + + public String getFormName() + { + return formName; + } + public void setFormContent(String formContent) + { + this.formContent = formContent; + } + + public String getFormContent() + { + return formContent; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("formId", getFormId()) + .append("formName", getFormName()) + .append("formContent", getFormContent()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("createBy", getCreateBy()) + .append("updateBy", getUpdateBy()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysListener.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysListener.java new file mode 100644 index 00000000..488dc4bf --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysListener.java @@ -0,0 +1,126 @@ +package com.yanzhu.flowable.domain; + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 流程监听对象 sys_listener + * + * @author Tony + * @date 2022-12-25 + */ +public class SysListener extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 表单主键 */ + private Long id; + + /** 名称 */ + @Excel(name = "名称") + private String name; + + /** 监听类型 */ + @Excel(name = "监听类型") + private String type; + + /** 事件类型 */ + @Excel(name = "事件类型") + private String eventType; + + /** 值类型 */ + @Excel(name = "值类型") + private String valueType; + + /** 执行内容 */ + @Excel(name = "执行内容") + private String value; + + /** 状态 */ + @Excel(name = "状态") + private Integer status; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setType(String type) + { + this.type = type; + } + + public String getType() + { + return type; + } + public void setEventType(String eventType) + { + this.eventType = eventType; + } + + public String getEventType() + { + return eventType; + } + public void setValueType(String valueType) + { + this.valueType = valueType; + } + + public String getValueType() + { + return valueType; + } + public void setValue(String value) + { + this.value = value; + } + + public String getValue() + { + return value; + } + public void setStatus(Integer status) + { + this.status = status; + } + + public Integer getStatus() + { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("name", getName()) + .append("type", getType()) + .append("eventType", getEventType()) + .append("valueType", getValueType()) + .append("value", getValue()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("createBy", getCreateBy()) + .append("updateBy", getUpdateBy()) + .append("status", getStatus()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysTaskForm.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysTaskForm.java new file mode 100644 index 00000000..6a033889 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/SysTaskForm.java @@ -0,0 +1,65 @@ +package com.yanzhu.flowable.domain; + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 流程任务关联单对象 sys_task_form + * + * @author Tony + * @date 2021-04-03 + */ +public class SysTaskForm extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 表单主键 */ + @Excel(name = "表单主键") + private Long formId; + + /** 所属任务 */ + @Excel(name = "所属任务") + private String taskId; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setFormId(Long formId) + { + this.formId = formId; + } + + public Long getFormId() + { + return formId; + } + public void setTaskId(String taskId) + { + this.taskId = taskId; + } + + public String getTaskId() + { + return taskId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("formId", getFormId()) + .append("taskId", getTaskId()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableMetaInfoBo.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableMetaInfoBo.java deleted file mode 100644 index cd0f8365..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableMetaInfoBo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.yanzhu.flowable.domain.bo; - -import lombok.Data; - -/** - * @author ruoyi - * @createTime 2023/11/28 - */ -@Data -public class FlowableMetaInfoBo { - - /** - * 创建者(username) - */ - private String createUser; - - /** - * 流程描述 - */ - private String description; - /** - * 表单类型 - */ - private Integer formType; - /** - * 表单编号 - */ - private Long formId; - -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableModelBo.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableModelBo.java deleted file mode 100644 index b95722f3..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/bo/FlowableModelBo.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.yanzhu.flowable.domain.bo; - -import lombok.Data; - -/** - * flowable 流程模型对象 - * - * @author ruoyi - * @createtime 2023/11/28 - */ -@Data -public class FlowableModelBo { - /** - * 模型主键 - */ - private String modelId; - /** - * 模型名称 - */ - private String modelName; - /** - * 模型Key - */ - private String modelKey; - /** - * 流程分类 - */ - private String category; - /** - * 描述 - */ - private String description; - /** - * 表单类型 - */ - private Integer formType; - /** - * 表单主键 - */ - private Long formId; - /** - * 流程xml - */ - private String bpmnXml; - /** - * 是否保存为新版本 - */ - private Boolean newVersion; -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowCommentDto.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowCommentDto.java new file mode 100644 index 00000000..df35522c --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowCommentDto.java @@ -0,0 +1,25 @@ +package com.yanzhu.flowable.domain.dto; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Tony + * @date 2021/3/28 15:50 + */ +@Data +@Builder +public class FlowCommentDto implements Serializable { + + /** + * 意见类别 0 正常意见 1 退回意见 2 驳回意见 + */ + private String type; + + /** + * 意见内容 + */ + private String comment; +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowFromFieldDTO.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowFromFieldDTO.java new file mode 100644 index 00000000..ab8c76b6 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowFromFieldDTO.java @@ -0,0 +1,15 @@ +package com.yanzhu.flowable.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Tony + * @date 2021/3/31 23:20 + */ +@Data +public class FlowFromFieldDTO implements Serializable { + + private Object fields; +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowNextDto.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowNextDto.java new file mode 100644 index 00000000..1aebbe05 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowNextDto.java @@ -0,0 +1,30 @@ +package com.yanzhu.flowable.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 动态人员、组 + * @author Tony + * @date 2021/4/17 22:59 + */ +@Data +public class FlowNextDto implements Serializable { + + /** + * 审批人类型 + */ + private String type; + + /** + * 是否需要动态指定任务审批人 + */ + private String dataType; + + /** + * 流程变量 + */ + private String vars; + +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/my/FlowProcDefDto.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowProcDefDto.java similarity index 92% rename from yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/my/FlowProcDefDto.java rename to yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowProcDefDto.java index 0d100339..0429ca84 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/my/FlowProcDefDto.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowProcDefDto.java @@ -1,5 +1,4 @@ -package com.yanzhu.flowable.domain.my; - +package com.yanzhu.flowable.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -34,9 +33,6 @@ public class FlowProcDefDto implements Serializable { @ApiModelProperty("流程分类") private String category; - @ApiModelProperty("流程分类名称") - private String categoryName; - @ApiModelProperty("配置表单名称") private String formName; @@ -67,5 +63,4 @@ public class FlowProcDefDto implements Serializable { @ApiModelProperty("项目名称") private String projectName; - } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowSaveXmlVo.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowSaveXmlVo.java new file mode 100644 index 00000000..00311897 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowSaveXmlVo.java @@ -0,0 +1,28 @@ +package com.yanzhu.flowable.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Tony + * @date 2021/3/28 19:48 + */ +@Data +public class FlowSaveXmlVo implements Serializable { + + /** + * 流程名称 + */ + private String name; + + /** + * 流程分类 + */ + private String category; + + /** + * xml 文件 + */ + private String xml; +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowTaskDto.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowTaskDto.java new file mode 100644 index 00000000..cf539650 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowTaskDto.java @@ -0,0 +1,102 @@ +package com.yanzhu.flowable.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

工作流任务

+ * + * @author Tony + * @date 2021-04-03 + */ +@Getter +@Setter +@ApiModel("工作流任务相关-返回参数") +public class FlowTaskDto implements Serializable { + + @ApiModelProperty("任务编号") + private String taskId; + + @ApiModelProperty("任务执行编号") + private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务Key") + private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门名称") + private String deptName; + + @ApiModelProperty("流程发起人部门名称") + private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + @ApiModelProperty("任务执行人部门") + private String assigneeDeptName;; + + @ApiModelProperty("流程发起人Id") + private String startUserId; + + @ApiModelProperty("流程发起人名称") + private String startUserName; + + @ApiModelProperty("流程类型") + private String category; + + @ApiModelProperty("流程变量信息") + private Object variables; + + @ApiModelProperty("局部变量信息") + private Object taskLocalVars; + + @ApiModelProperty("流程部署编号") + private String deployId; + + @ApiModelProperty("流程ID") + private String procDefId; + + @ApiModelProperty("流程key") + private String procDefKey; + + @ApiModelProperty("流程定义名称") + private String procDefName; + + @ApiModelProperty("流程定义内置使用版本") + private int procDefVersion; + + @ApiModelProperty("流程实例ID") + private String procInsId; + + @ApiModelProperty("历史流程实例ID") + private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + + @ApiModelProperty("候选执行人") + private String candidate; + + @ApiModelProperty("任务创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowViewerDto.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowViewerDto.java new file mode 100644 index 00000000..8f01f936 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/dto/FlowViewerDto.java @@ -0,0 +1,23 @@ +package com.yanzhu.flowable.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Tony + * @date 2021/4/21 20:55 + */ +@Data +public class FlowViewerDto implements Serializable { + + /** + * 流程key + */ + private String key; + + /** + * 是否完成(已经审批) + */ + private boolean completed; +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowQueryVo.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowQueryVo.java new file mode 100644 index 00000000..25eb4aad --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowQueryVo.java @@ -0,0 +1,33 @@ +package com.yanzhu.flowable.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

流程任务

+ * + * @author Tony + * @date 2021-04-03 + */ +@Data +@ApiModel("工作流任务相关--请求参数") +public class FlowQueryVo { + + @ApiModelProperty("流程名称") + private String name; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + + @ApiModelProperty("当前页码") + private Integer pageNum; + + @ApiModelProperty("每页条数") + private Integer pageSize; + + +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowTaskVo.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowTaskVo.java new file mode 100644 index 00000000..dcca168e --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/FlowTaskVo.java @@ -0,0 +1,56 @@ +package com.yanzhu.flowable.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + *

流程任务

+ * + * @author Tony + * @date 2021-04-03 + */ +@Data +@ApiModel("工作流任务相关--请求参数") +public class FlowTaskVo { + + @ApiModelProperty("任务Id") + private String taskId; + + @ApiModelProperty("用户Id") + private String userId; + + @ApiModelProperty("任务意见") + private String comment; + + @ApiModelProperty("流程实例Id") + private String instanceId; + + @ApiModelProperty("节点") + private String targetKey; + + private String deploymentId; + @ApiModelProperty("流程环节定义ID") + private String defId; + + @ApiModelProperty("子执行流ID") + private String currentChildExecutionId; + + @ApiModelProperty("子执行流是否已执行") + private Boolean flag; + + @ApiModelProperty("流程变量信息") + private Map variables; + + @ApiModelProperty("审批人") + private String assignee; + + @ApiModelProperty("候选人") + private List candidateUsers; + + @ApiModelProperty("审批组") + private List candidateGroups; +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/ReturnTaskNodeVo.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/ReturnTaskNodeVo.java new file mode 100644 index 00000000..0085e543 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/domain/vo/ReturnTaskNodeVo.java @@ -0,0 +1,23 @@ +package com.yanzhu.flowable.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

可退回节点

+ * + * @author tony + * @date 2022-04-23 11:01:52 + */ +@Data +@ApiModel("可退回节点") +public class ReturnTaskNodeVo { + + @ApiModelProperty("任务Id") + private String id; + + @ApiModelProperty("用户Id") + private String name; + +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowDeployMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowDeployMapper.java new file mode 100644 index 00000000..68cb8036 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowDeployMapper.java @@ -0,0 +1,22 @@ +package com.yanzhu.flowable.mapper; + +import com.yanzhu.flowable.domain.dto.FlowProcDefDto; + +import java.util.List; + +/** + * 流程定义查询 + * + * @author Tony + * @email + * @date 2022/1/29 5:44 下午 + **/ +public interface FlowDeployMapper { + + /** + * 流程定义列表 + * @param name + * @return + */ + List selectDeployList(String name); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableCategoryMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableCategoryMapper.java deleted file mode 100644 index 95948e16..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableCategoryMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yanzhu.flowable.mapper; - -import java.util.List; -import com.yanzhu.flowable.domain.FlowableCategory; - -/** - * 流程分类Mapper接口 - * - * @author ruoyi - * @date 2023-11-27 - */ -public interface FlowableCategoryMapper -{ - /** - * 查询流程分类 - * - * @param id 流程分类主键 - * @return 流程分类 - */ - public FlowableCategory selectFlowableCategoryById(Long id); - - /** - * 查询流程分类列表 - * - * @param flowableCategory 流程分类 - * @return 流程分类集合 - */ - public List selectFlowableCategoryList(FlowableCategory flowableCategory); - - /** - * 新增流程分类 - * - * @param flowableCategory 流程分类 - * @return 结果 - */ - public int insertFlowableCategory(FlowableCategory flowableCategory); - - /** - * 修改流程分类 - * - * @param flowableCategory 流程分类 - * @return 结果 - */ - public int updateFlowableCategory(FlowableCategory flowableCategory); - - /** - * 删除流程分类 - * - * @param id 流程分类主键 - * @return 结果 - */ - public int deleteFlowableCategoryById(Long id); - - /** - * 批量删除流程分类 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteFlowableCategoryByIds(Long[] ids); -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldDefMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldDefMapper.java deleted file mode 100644 index 4e88ca5c..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldDefMapper.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.yanzhu.flowable.mapper; - -import java.util.List; -import com.yanzhu.flowable.domain.FlowableFieldDef; -import com.yanzhu.flowable.domain.FlowableFieldSearch; - -/** - * 流程字段定义Mapper接口 - * - * @author ruoyi - * @date 2023-12-26 - */ -public interface FlowableFieldDefMapper -{ - /** - * 查询流程字段定义 - * - * @param id 流程字段定义主键 - * @return 流程字段定义 - */ - public FlowableFieldDef selectFlowableFieldDefById(String id); - - /** - * 查询流程字段定义列表 - * - * @param flowableFieldDef 流程字段定义 - * @return 流程字段定义集合 - */ - public List selectFlowableFieldDefList(FlowableFieldDef flowableFieldDef); - - /** - * 新增流程字段定义 - * - * @param flowableFieldDef 流程字段定义 - * @return 结果 - */ - public int insertFlowableFieldDef(FlowableFieldDef flowableFieldDef); - - /** - * 修改流程字段定义 - * - * @param flowableFieldDef 流程字段定义 - * @return 结果 - */ - public int updateFlowableFieldDef(FlowableFieldDef flowableFieldDef); - - /** - * 删除流程字段定义 - * - * @param id 流程字段定义主键 - * @return 结果 - */ - public int deleteFlowableFieldDefById(String id); - - /** - * 批量删除流程字段定义 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteFlowableFieldDefByIds(String[] ids); - - /** - * 查询流程字段引用关系列表(不翻页,关联字段定义表查询) - * @param flowableFieldSearch - * @return - */ - public List listCombination(FlowableFieldSearch flowableFieldSearch); -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldRefMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldRefMapper.java deleted file mode 100644 index 77ef1e6f..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableFieldRefMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yanzhu.flowable.mapper; - -import java.util.List; -import com.yanzhu.flowable.domain.FlowableFieldRef; - -/** - * 流程字段引用关系Mapper接口 - * - * @author ruoyi - * @date 2023-12-26 - */ -public interface FlowableFieldRefMapper -{ - /** - * 查询流程字段引用关系 - * - * @param id 流程字段引用关系主键 - * @return 流程字段引用关系 - */ - public FlowableFieldRef selectFlowableFieldRefById(String id); - - /** - * 查询流程字段引用关系列表 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 流程字段引用关系集合 - */ - public List selectFlowableFieldRefList(FlowableFieldRef flowableFieldRef); - - /** - * 新增流程字段引用关系 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 结果 - */ - public int insertFlowableFieldRef(FlowableFieldRef flowableFieldRef); - - /** - * 修改流程字段引用关系 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 结果 - */ - public int updateFlowableFieldRef(FlowableFieldRef flowableFieldRef); - - /** - * 删除流程字段引用关系 - * - * @param id 流程字段引用关系主键 - * @return 结果 - */ - public int deleteFlowableFieldRefById(String id); - - /** - * 批量删除流程字段引用关系 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteFlowableFieldRefByIds(String[] ids); -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableModelPageMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableModelPageMapper.java deleted file mode 100644 index f90c9714..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/FlowableModelPageMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yanzhu.flowable.mapper; - -import java.util.List; -import com.yanzhu.flowable.domain.FlowableModelPage; - -/** - * 建模页面绑定Mapper接口 - * - * @author ruoyi - * @date 2023-12-25 - */ -public interface FlowableModelPageMapper -{ - /** - * 查询建模页面绑定 - * - * @param id 建模页面绑定主键 - * @return 建模页面绑定 - */ - public FlowableModelPage selectFlowableModelPageById(String id); - - /** - * 查询建模页面绑定列表 - * - * @param flowableModelPage 建模页面绑定 - * @return 建模页面绑定集合 - */ - public List selectFlowableModelPageList(FlowableModelPage flowableModelPage); - - /** - * 新增建模页面绑定 - * - * @param flowableModelPage 建模页面绑定 - * @return 结果 - */ - public int insertFlowableModelPage(FlowableModelPage flowableModelPage); - - /** - * 修改建模页面绑定 - * - * @param flowableModelPage 建模页面绑定 - * @return 结果 - */ - public int updateFlowableModelPage(FlowableModelPage flowableModelPage); - - /** - * 删除建模页面绑定 - * - * @param id 建模页面绑定主键 - * @return 结果 - */ - public int deleteFlowableModelPageById(String id); - - /** - * 批量删除建模页面绑定 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteFlowableModelPageByIds(String[] ids); -} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysDeployFormMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysDeployFormMapper.java new file mode 100644 index 00000000..c9fa5cd1 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysDeployFormMapper.java @@ -0,0 +1,72 @@ +package com.yanzhu.flowable.mapper; + +import com.yanzhu.flowable.domain.SysDeployForm; +import com.yanzhu.flowable.domain.SysForm; + +import java.util.List; + +/** + * 流程实例关联表单Mapper接口 + * + * @author Tony + * @date 2021-03-30 + */ +public interface SysDeployFormMapper +{ + /** + * 查询流程实例关联表单 + * + * @param id 流程实例关联表单ID + * @return 流程实例关联表单 + */ + public SysDeployForm selectSysDeployFormById(Long id); + + /** + * 查询流程实例关联表单列表 + * + * @param SysDeployForm 流程实例关联表单 + * @return 流程实例关联表单集合 + */ + public List selectSysDeployFormList(SysDeployForm SysDeployForm); + + /** + * 新增流程实例关联表单 + * + * @param SysDeployForm 流程实例关联表单 + * @return 结果 + */ + public int insertSysDeployForm(SysDeployForm SysDeployForm); + + /** + * 修改流程实例关联表单 + * + * @param SysDeployForm 流程实例关联表单 + * @return 结果 + */ + public int updateSysDeployForm(SysDeployForm SysDeployForm); + + /** + * 删除流程实例关联表单 + * + * @param id 流程实例关联表单ID + * @return 结果 + */ + public int deleteSysDeployFormById(Long id); + + /** + * 批量删除流程实例关联表单 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysDeployFormByIds(Long[] ids); + + + + /** + * 查询流程挂着的表单 + * @param deployId + * @return + */ + SysForm selectSysDeployFormByDeployId(String deployId); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysExpressionMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysExpressionMapper.java new file mode 100644 index 00000000..bdeef941 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysExpressionMapper.java @@ -0,0 +1,62 @@ +package com.yanzhu.flowable.mapper; + +import com.yanzhu.flowable.domain.SysExpression; + +import java.util.List; + +/** + * 流程达式Mapper接口 + * + * @author ruoyi + * @date 2022-12-12 + */ +public interface SysExpressionMapper +{ + /** + * 查询流程达式 + * + * @param id 流程达式主键 + * @return 流程达式 + */ + public SysExpression selectSysExpressionById(Long id); + + /** + * 查询流程达式列表 + * + * @param sysExpression 流程达式 + * @return 流程达式集合 + */ + public List selectSysExpressionList(SysExpression sysExpression); + + /** + * 新增流程达式 + * + * @param sysExpression 流程达式 + * @return 结果 + */ + public int insertSysExpression(SysExpression sysExpression); + + /** + * 修改流程达式 + * + * @param sysExpression 流程达式 + * @return 结果 + */ + public int updateSysExpression(SysExpression sysExpression); + + /** + * 删除流程达式 + * + * @param id 流程达式主键 + * @return 结果 + */ + public int deleteSysExpressionById(Long id); + + /** + * 批量删除流程达式 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSysExpressionByIds(Long[] ids); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysFormMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysFormMapper.java new file mode 100644 index 00000000..183f9630 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysFormMapper.java @@ -0,0 +1,62 @@ +package com.yanzhu.flowable.mapper; + +import com.yanzhu.flowable.domain.SysForm; + +import java.util.List; + +/** + * 流程表单Mapper接口 + * + * @author Tony + * @date 2021-03-30 + */ +public interface SysFormMapper +{ + /** + * 查询流程表单 + * + * @param formId 流程表单ID + * @return 流程表单 + */ + public SysForm selectSysFormById(Long formId); + + /** + * 查询流程表单列表 + * + * @param sysForm 流程表单 + * @return 流程表单集合 + */ + public List selectSysFormList(SysForm sysForm); + + /** + * 新增流程表单 + * + * @param sysForm 流程表单 + * @return 结果 + */ + public int insertSysForm(SysForm sysForm); + + /** + * 修改流程表单 + * + * @param sysForm 流程表单 + * @return 结果 + */ + public int updateSysForm(SysForm sysForm); + + /** + * 删除流程表单 + * + * @param formId 流程表单ID + * @return 结果 + */ + public int deleteSysFormById(Long formId); + + /** + * 批量删除流程表单 + * + * @param formIds 需要删除的数据ID + * @return 结果 + */ + public int deleteSysFormByIds(Long[] formIds); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysListenerMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysListenerMapper.java new file mode 100644 index 00000000..c4b43efe --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysListenerMapper.java @@ -0,0 +1,62 @@ +package com.yanzhu.flowable.mapper; + +import com.yanzhu.flowable.domain.SysListener; + +import java.util.List; + +/** + * 流程监听Mapper接口 + * + * @author Tony + * @date 2022-12-25 + */ +public interface SysListenerMapper +{ + /** + * 查询流程监听 + * + * @param id 流程监听主键 + * @return 流程监听 + */ + public SysListener selectSysListenerById(Long id); + + /** + * 查询流程监听列表 + * + * @param sysListener 流程监听 + * @return 流程监听集合 + */ + public List selectSysListenerList(SysListener sysListener); + + /** + * 新增流程监听 + * + * @param sysListener 流程监听 + * @return 结果 + */ + public int insertSysListener(SysListener sysListener); + + /** + * 修改流程监听 + * + * @param sysListener 流程监听 + * @return 结果 + */ + public int updateSysListener(SysListener sysListener); + + /** + * 删除流程监听 + * + * @param id 流程监听主键 + * @return 结果 + */ + public int deleteSysListenerById(Long id); + + /** + * 批量删除流程监听 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSysListenerByIds(Long[] ids); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysTaskFormMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysTaskFormMapper.java new file mode 100644 index 00000000..0d0a1d68 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/flowable/mapper/SysTaskFormMapper.java @@ -0,0 +1,62 @@ +package com.yanzhu.flowable.mapper; + +import com.yanzhu.flowable.domain.SysTaskForm; + +import java.util.List; + +/** + * 流程任务关联单Mapper接口 + * + * @author Tony + * @date 2021-04-03 + */ +public interface SysTaskFormMapper +{ + /** + * 查询流程任务关联单 + * + * @param id 流程任务关联单ID + * @return 流程任务关联单 + */ + public SysTaskForm selectSysTaskFormById(Long id); + + /** + * 查询流程任务关联单列表 + * + * @param sysTaskForm 流程任务关联单 + * @return 流程任务关联单集合 + */ + public List selectSysTaskFormList(SysTaskForm sysTaskForm); + + /** + * 新增流程任务关联单 + * + * @param sysTaskForm 流程任务关联单 + * @return 结果 + */ + public int insertSysTaskForm(SysTaskForm sysTaskForm); + + /** + * 修改流程任务关联单 + * + * @param sysTaskForm 流程任务关联单 + * @return 结果 + */ + public int updateSysTaskForm(SysTaskForm sysTaskForm); + + /** + * 删除流程任务关联单 + * + * @param id 流程任务关联单ID + * @return 结果 + */ + public int deleteSysTaskFormById(Long id); + + /** + * 批量删除流程任务关联单 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysTaskFormByIds(Long[] ids); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowDeployMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowDeployMapper.xml new file mode 100644 index 00000000..1f08e80b --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowDeployMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldDefMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldDefMapper.xml deleted file mode 100644 index 26d501ce..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldDefMapper.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - select id, field, label, remark, width, type, scheme, scope, update_by, update_time, create_by, create_time from flowable_field_def - - - - - - - - - - insert into flowable_field_def - - id, - field, - label, - remark, - width, - type, - scheme, - scope, - update_by, - update_time, - create_by, - create_time, - - - #{id}, - #{field}, - #{label}, - #{remark}, - #{width}, - #{type}, - #{scheme}, - #{scope}, - #{updateBy}, - #{updateTime}, - #{createBy}, - #{createTime}, - - - - - update flowable_field_def - - field = #{field}, - label = #{label}, - remark = #{remark}, - width = #{width}, - type = #{type}, - scheme = #{scheme}, - scope = #{scope}, - update_by = #{updateBy}, - update_time = #{updateTime}, - create_by = #{createBy}, - create_time = #{createTime}, - - where id = #{id} - - - - delete from flowable_field_def where id = #{id} - - - - delete from flowable_field_def where id in - - #{id} - - - diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldRefMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldRefMapper.xml deleted file mode 100644 index 42a7a100..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableFieldRefMapper.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, module, mkey, field_id, create_by, create_time, update_by, update_time, version from flowable_field_ref - - - - - - - - insert into flowable_field_ref - - id, - module, - mkey, - field_id, - create_by, - create_time, - update_by, - update_time, - version, - - - #{id}, - #{module}, - #{mkey}, - #{fieldId}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{version}, - - - - - update flowable_field_ref - - module = #{module}, - mkey = #{mkey}, - field_id = #{fieldId}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - version = #{version}, - - where id = #{id} - - - - delete from flowable_field_ref where id = #{id} - - - - delete from flowable_field_ref where id in - - #{id} - - - \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableModelPageMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableModelPageMapper.xml deleted file mode 100644 index dbcbef53..00000000 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableModelPageMapper.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, module, mkey, name, page_scheme, update_by, update_time, create_by, create_time from flowable_model_page - - - - - - - - insert into flowable_model_page - - module, - mkey, - name, - page_scheme, - update_by, - update_time, - create_by, - create_time, - - - #{module}, - #{mkey}, - #{name}, - #{pageScheme}, - #{updateBy}, - #{updateTime}, - #{createBy}, - #{createTime}, - - - - - update flowable_model_page - - module = #{module}, - mkey = #{mkey}, - name = #{name}, - page_scheme = #{pageScheme}, - update_by = #{updateBy}, - update_time = #{updateTime}, - create_by = #{createBy}, - create_time = #{createTime}, - - where id = #{id} - - - - delete from flowable_model_page where id = #{id} - - - - delete from flowable_model_page where id in - - #{id} - - - \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysDeployFormMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysDeployFormMapper.xml new file mode 100644 index 00000000..ee6d17f7 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysDeployFormMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + select id, form_id, deploy_id from sys_deploy_form + + + + + + + + + + insert into sys_deploy_form + + form_id, + deploy_id, + + + #{formId}, + #{deployId}, + + + + + update sys_deploy_form + + form_id = #{formId}, + deploy_id = #{deployId}, + + where id = #{id} + + + + delete from sys_deploy_form where id = #{id} + + + + delete from sys_deploy_form where id in + + #{id} + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableCategoryMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysExpressionMapper.xml similarity index 53% rename from yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableCategoryMapper.xml rename to yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysExpressionMapper.xml index d6a64504..3c8f986b 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/FlowableCategoryMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysExpressionMapper.xml @@ -2,84 +2,89 @@ - - - + + + - - - + + - - + + + + - - select id, name, code, remark, create_by, create_time, update_by, update_time, del_flag from flowable_category + + select id, name, expression,data_type, create_time, update_time, create_by, update_by, status, remark from sys_expression - + + and name like concat('%', #{name}, '%') - and code = #{code} + and expression = #{expression} + and status = #{status} - - + where id = #{id} - - - insert into flowable_category + + + insert into sys_expression name, - code, - remark, - create_by, + expression, + data_type, create_time, - update_by, update_time, - del_flag, + create_by, + update_by, + status, + remark, #{name}, - #{code}, - #{remark}, - #{createBy}, + #{expression}, + #{dataType}, #{createTime}, - #{updateBy}, #{updateTime}, - #{delFlag}, + #{createBy}, + #{updateBy}, + #{status}, + #{remark}, - - update flowable_category + + update sys_expression name = #{name}, - code = #{code}, - remark = #{remark}, - create_by = #{createBy}, + expression = #{expression}, + data_type = #{dataType}, create_time = #{createTime}, - update_by = #{updateBy}, update_time = #{updateTime}, - del_flag = #{delFlag}, + create_by = #{createBy}, + update_by = #{updateBy}, + status = #{status}, + remark = #{remark}, where id = #{id} - - delete from flowable_category where id = #{id} + + delete from sys_expression where id = #{id} - - delete from flowable_category where id in + + delete from sys_expression where id in #{id} - \ No newline at end of file + diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysFormMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysFormMapper.xml new file mode 100644 index 00000000..6e686742 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysFormMapper.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + select form_id, form_name, form_content, create_time, update_time, create_by, update_by, remark from sys_form + + + + + + + + insert into sys_form + + form_name, + form_content, + create_time, + update_time, + create_by, + update_by, + remark, + + + #{formName}, + #{formContent}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + #{remark}, + + + + + update sys_form + + form_name = #{formName}, + form_content = #{formContent}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + remark = #{remark}, + + where form_id = #{formId} + + + + delete from sys_form where form_id = #{formId} + + + + delete from sys_form where form_id in + + #{formId} + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysListenerMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysListenerMapper.xml new file mode 100644 index 00000000..a8403a06 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysListenerMapper.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + select id, + name, + type, + event_type, + value_type, + value, + create_time, + update_time, + create_by, + update_by, + status, + remark + from sys_listener + + + + + + + + insert into sys_listener + + name, + type, + event_type, + value_type, + value, + create_time, + update_time, + create_by, + update_by, + status, + remark, + + + #{name}, + #{type}, + #{eventType}, + #{valueType}, + #{value}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + #{status}, + #{remark}, + + + + + update sys_listener + + name = #{name}, + type = #{type}, + event_type = #{eventType}, + value_type = #{valueType}, + value = #{value}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + status = #{status}, + remark = #{remark}, + + where id = #{id} + + + + delete + from sys_listener + where id = #{id} + + + + delete from sys_listener where id in + + #{id} + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysTaskFormMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysTaskFormMapper.xml new file mode 100644 index 00000000..b7ec90fe --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/flowable/SysTaskFormMapper.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + select id, form_id, task_id from sys_task_form + + + + + + + + insert into sys_task_form + + form_id, + task_id, + + + #{formId}, + #{taskId}, + + + + + update sys_task_form + + form_id = #{formId}, + task_id = #{taskId}, + + where id = #{id} + + + + delete from sys_task_form where id = #{id} + + + + delete from sys_task_form where id in + + #{id} + + + \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-flowable/pom.xml b/yanzhu-modules/yanzhu-flowable/pom.xml index 24f8ca0c..2bb652eb 100644 --- a/yanzhu-modules/yanzhu-flowable/pom.xml +++ b/yanzhu-modules/yanzhu-flowable/pom.xml @@ -13,6 +13,7 @@ yanzhu-modules-flowable + 6.7.2 17 17 @@ -105,14 +106,16 @@ 5.3.3 - - jakarta.mail - jakarta.mail-api - - org.flowable flowable-spring-boot-starter + ${flowable.version} + + + org.flowable + flowable-spring-security + + diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/constant/ProcessConstants.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/constant/ProcessConstants.java index f8439143..570ad94a 100644 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/constant/ProcessConstants.java +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/constant/ProcessConstants.java @@ -8,8 +8,6 @@ package com.yanzhu.flowable.common.constant; */ public class ProcessConstants { - public static final String SUFFIX = ".bpmn"; - /** * 动态数据 */ @@ -25,13 +23,11 @@ public class ProcessConstants { */ public static final String ASSIGNEE = "assignee"; - /** * 候选人 */ public static final String CANDIDATE_USERS = "candidateUsers"; - /** * 审批组 */ @@ -72,11 +68,9 @@ public class ProcessConstants { */ public static final String PROCESS_INITIATOR = "INITIATOR"; - /** * 流程跳过 */ public static final String FLOWABLE_SKIP_EXPRESSION_ENABLED = "_FLOWABLE_SKIP_EXPRESSION_ENABLED"; - } diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/CacheType.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/CacheType.java deleted file mode 100644 index 3d989eeb..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/CacheType.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.yanzhu.flowable.common.enums; - -/** - * 缓存key - */ -public enum CacheType { - - FLOWCATEGORY("flowcategory","流程分类"); - public String getCode() { - return code; - } - - public String getRemark() { - return remark; - } - - /** - * 编码 - */ - private String code; - /** - * 说明 - */ - private String remark; - CacheType(String code,String remark){ - this.code = code; - this.remark = remark; - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FlowComment.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FlowComment.java index 06aa8bff..cd0dbcc9 100644 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FlowComment.java +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FlowComment.java @@ -16,8 +16,8 @@ public enum FlowComment { REJECT("3", "驳回意见"), DELEGATE("4", "委派意见"), ASSIGN("5", "转办意见"), - STOP("6", "终止流程"), - REVOKE("7", "撤回流程"); + STOP("6", "终止流程"); + /** * 类型 */ diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FormType.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FormType.java deleted file mode 100644 index 27a854d4..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/enums/FormType.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.yanzhu.flowable.common.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * @author ruoyi - * @createTime 2023/11/28 - */ -@Getter -@AllArgsConstructor -public enum FormType { - - /** - * 流程表单 - */ - PROCESS(0), - - /** - * 外置表单 - */ - EXTERNAL(1), - - /** - * 节点独立表单 - */ - INDEPENDENT(2); - - /** - * 表单类型 - */ - private final Integer type; -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/BaseEl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/BaseEl.java new file mode 100644 index 00000000..53a23128 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/BaseEl.java @@ -0,0 +1,12 @@ +package com.yanzhu.flowable.common.expand.el; + +/** + * 扩展表达式 + * + * @author Tony + * @date 2023-03-04 09:10 + */ +public interface BaseEl { + +} + diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/FlowEl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/FlowEl.java new file mode 100644 index 00000000..4af7ac2b --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/el/FlowEl.java @@ -0,0 +1,26 @@ +package com.yanzhu.flowable.common.expand.el; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 扩展表达式 + * + * @author Tony + * @date 2023-03-04 12:10 + */ +@Component +@Slf4j +public class FlowEl implements BaseEl { + + public String findDeptLeader(String name) { + log.info("开始查询表达式变量值,getName"); + return name; + } + + public String getName(String name) { + log.info("开始查询表达式变量值,getName"); + return name; + } +} + diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/function/ExpressionLanguageJavaFunction.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/function/ExpressionLanguageJavaFunction.java new file mode 100644 index 00000000..3a114d89 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/common/expand/function/ExpressionLanguageJavaFunction.java @@ -0,0 +1,26 @@ +package com.yanzhu.flowable.common.expand.function; + +import lombok.extern.slf4j.Slf4j; +import org.flowable.common.engine.api.variable.VariableContainer; +import org.flowable.common.engine.impl.el.function.AbstractFlowableVariableExpressionFunction; + +/** + * 表达式函数:实现逻辑用java + * + * @author Tony + * @date 2023-03-04 09:10 + */ +@Slf4j +public class ExpressionLanguageJavaFunction extends AbstractFlowableVariableExpressionFunction{ + + public ExpressionLanguageJavaFunction() { + super("test"); + } + + public static String test(VariableContainer variableContainer, String variableName) { + log.info("开始查询表达式变量值,test"); + Object variableValue = getVariableValue(variableContainer, variableName); + return variableValue.toString(); + } + +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableConfig.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableConfig.java index fbff538d..414d2d04 100644 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableConfig.java +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableConfig.java @@ -1,32 +1,32 @@ -//package com.yanzhu.flowable.config; -// -//import org.flowable.engine.impl.db.DbIdGenerator; -//import org.flowable.spring.SpringProcessEngineConfiguration; -//import org.flowable.spring.boot.EngineConfigurationConfigurer; -//import org.springframework.context.annotation.Bean; -//import org.springframework.context.annotation.Configuration; -//import org.springframework.core.task.AsyncListenableTaskExecutor; -//import org.springframework.core.task.SimpleAsyncTaskExecutor; -// -///** -// * 流程id生成处理 -// * @author Tony -// * @date 2022-12-26 10:24 -// */ -////@Configuration -//public class FlowableConfig implements EngineConfigurationConfigurer { -// -// @Bean -// public AsyncListenableTaskExecutor applicationTaskExecutor() { -// return new SimpleAsyncTaskExecutor(); -// } -// -// @Override -// public void configure(SpringProcessEngineConfiguration engineConfiguration) { -// engineConfiguration.setActivityFontName("宋体"); -// engineConfiguration.setLabelFontName("宋体"); -// engineConfiguration.setAnnotationFontName("宋体"); -// engineConfiguration.setIdGenerator(new DbIdGenerator()); -// } -// -//} +package com.yanzhu.flowable.config; + +import org.flowable.engine.impl.db.DbIdGenerator; +import org.flowable.spring.SpringProcessEngineConfiguration; +import org.flowable.spring.boot.EngineConfigurationConfigurer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.task.AsyncListenableTaskExecutor; +import org.springframework.core.task.SimpleAsyncTaskExecutor; + +/** + * 流程id生成处理 + * @author Tony + * @date 2022-12-26 10:24 + */ +@Configuration +public class FlowableConfig implements EngineConfigurationConfigurer { + + @Bean + public AsyncListenableTaskExecutor applicationTaskExecutor() { + return new SimpleAsyncTaskExecutor(); + } + + @Override + public void configure(SpringProcessEngineConfiguration engineConfiguration) { + engineConfiguration.setActivityFontName("宋体"); + engineConfiguration.setLabelFontName("宋体"); + engineConfiguration.setAnnotationFontName("宋体"); + engineConfiguration.setIdGenerator(new DbIdGenerator()); + } + +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableEngineConfig.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableEngineConfig.java deleted file mode 100644 index 2e0f9ae7..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableEngineConfig.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.yanzhu.flowable.config; - -import lombok.Data; -import org.flowable.spring.SpringProcessEngineConfiguration; -import org.flowable.spring.boot.EngineConfigurationConfigurer; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; - -/** - * @author ruoyi - * @date 2023/11/28 - */ -@Data -@Configuration -public class FlowableEngineConfig implements EngineConfigurationConfigurer { - /** - * jdbc 驱动类 - */ - @Value("${spring.datasource.driver-class-name}") - private String jdbcDriver; - /** - * jdbc url - */ - @Value("${spring.datasource.url}") - private String jdbcUrl; - /** - * jdbc 用户名 - */ - @Value("${spring.datasource.username}") - private String jdbcUsername; - /** - * jdbc 密码 - */ - @Value("${spring.datasource.password}") - private String jdbcPassword; - /** - * 设置在进程引擎启动和关闭时处理数据库模式的策略 - * false(默认值):在创建流程引擎时,根据库检查DB架构的版本,如果版本不匹配,则抛出异常。 - * true:在构建流程引擎时,将执行检查,并在必要时执行模式更新。如果该架构不存在,则创建该架构。 - * create-drop:在创建流程引擎时创建架构,在关闭流程引擎时删除架构。 - */ - @Value("${spring.datasource.databaseSchemaUpdate}") - private String databaseSchemaUpdate; - /** - * 指示Flowable引擎在启动时启动异步执行器。用于定时任务 - */ - @Value("${spring.datasource.asyncExecutorActivate}") - private boolean asyncExecutorActivate; - - @Override - public void configure(SpringProcessEngineConfiguration engineConfiguration) { - engineConfiguration.setActivityFontName("宋体"); - engineConfiguration.setLabelFontName("宋体"); - engineConfiguration.setAnnotationFontName("宋体"); - engineConfiguration.setJdbcDriver(this.jdbcDriver); - engineConfiguration.setJdbcUrl(this.jdbcUrl); - engineConfiguration.setJdbcUsername(this.jdbcUsername); - engineConfiguration.setJdbcPassword(this.jdbcPassword); - engineConfiguration.setDatabaseSchemaUpdate(this.databaseSchemaUpdate); - engineConfiguration.setAsyncExecutorActivate(this.asyncExecutorActivate); - } -} - diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableGlobalListenerConfig.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableGlobalListenerConfig.java index fb772b62..227de838 100644 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableGlobalListenerConfig.java +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/config/FlowableGlobalListenerConfig.java @@ -1,41 +1,41 @@ -//package com.yanzhu.flowable.config; -// -//import com.yanzhu.flowable.listener.GlobalEventListener; -//import lombok.RequiredArgsConstructor; -//import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType; -//import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher; -//import org.flowable.spring.SpringProcessEngineConfiguration; -//import org.springframework.context.ApplicationListener; -//import org.springframework.context.annotation.Configuration; -//import org.springframework.context.event.ContextRefreshedEvent; -// -///** -// * Flowable添加全局监听器 -// * -// * @author JiangYuQi -// */ -////@Configuration -//@RequiredArgsConstructor -//public class FlowableGlobalListenerConfig implements ApplicationListener { -// -// private final SpringProcessEngineConfiguration configuration; -// -// private final GlobalEventListener globalEventListener; -// -// @Override -// public void onApplicationEvent(ContextRefreshedEvent event) { -// FlowableEventDispatcher dispatcher = configuration.getEventDispatcher(); -// /** -// * 任务创建全局监听-待办消息发送 -// * PROCESS_CREATED 流程创建 -// * TASK_CREATED 任务创建 -// * TASK_COMPLETED 任务完成 -// * PROCESS_COMPLETED 流程完成 -// * 流程创建、任务创建、任务完成、流程完成 -// */ -// dispatcher.addEventListener(globalEventListener,FlowableEngineEventType.TASK_CREATED); -// dispatcher.addEventListener(globalEventListener,FlowableEngineEventType.PROCESS_COMPLETED); -// } -// -//} -// +package com.yanzhu.flowable.config; + +import com.yanzhu.flowable.listener.GlobalEventListener; +import lombok.RequiredArgsConstructor; +import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType; +import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher; +import org.flowable.spring.SpringProcessEngineConfiguration; +import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.event.ContextRefreshedEvent; + +/** + * Flowable添加全局监听器 + * + * @author JiangYuQi + */ +@Configuration +@RequiredArgsConstructor +public class FlowableGlobalListenerConfig implements ApplicationListener { + + private final SpringProcessEngineConfiguration configuration; + + private final GlobalEventListener globalEventListener; + + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + FlowableEventDispatcher dispatcher = configuration.getEventDispatcher(); + /** + * 任务创建全局监听-待办消息发送 + * PROCESS_CREATED 流程创建 + * TASK_CREATED 任务创建 + * TASK_COMPLETED 任务完成 + * PROCESS_COMPLETED 流程完成 + * 流程创建、任务创建、任务完成、流程完成 + */ + dispatcher.addEventListener(globalEventListener,FlowableEngineEventType.TASK_CREATED); + dispatcher.addEventListener(globalEventListener,FlowableEngineEventType.PROCESS_COMPLETED); + } + +} + diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowDefinitionController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowDefinitionController.java new file mode 100644 index 00000000..ac8b836e --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowDefinitionController.java @@ -0,0 +1,210 @@ +package com.yanzhu.flowable.controller; + +import com.yanzhu.common.core.utils.StringUtils; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.flowable.domain.SysExpression; +import com.yanzhu.flowable.domain.dto.FlowProcDefDto; +import com.yanzhu.flowable.domain.dto.FlowSaveXmlVo; +import com.yanzhu.flowable.rpc.RemoteSystemService; +import com.yanzhu.flowable.service.IFlowDefinitionService; +import com.yanzhu.flowable.service.ISysExpressionService; +import com.yanzhu.system.api.domain.SysRole; +import com.yanzhu.system.api.domain.SysUser; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.List; +import java.util.Map; + +/** + *

+ * 工作流程定义 + *

+ * + * @author Tony + * @date 2021-04-03 + */ +@Slf4j +@Api(tags = "流程定义") +@RestController +@RequestMapping("/definition") +public class FlowDefinitionController extends BaseController { + + @Autowired + private IFlowDefinitionService flowDefinitionService; + + @Autowired + private RemoteSystemService remoteSystemService; + + @Resource + private ISysExpressionService sysExpressionService; + + @GetMapping(value = "/list") + @ApiOperation(value = "流程定义列表", response = FlowProcDefDto.class) + public TableDataInfo list(@ApiParam(value = "流程名称", required = false) @RequestParam(required = false) String name) { + startPage(); + List list = flowDefinitionService.list(name); + return getDataTable(list); + } + + + @ApiOperation(value = "导入流程文件", notes = "上传bpmn20的xml文件") + @PostMapping("/import") + public AjaxResult importFile(@RequestParam(required = false) String name, + @RequestParam(required = false) String category, + MultipartFile file) { + InputStream in = null; + try { + in = file.getInputStream(); + flowDefinitionService.importFile(name, category, in); + } catch (Exception e) { + log.error("导入失败:", e); + return AjaxResult.success(e.getMessage()); + } finally { + try { + if (in != null) { + in.close(); + } + } catch (IOException e) { + log.error("关闭输入流出错", e); + } + } + + return AjaxResult.success("导入成功"); + } + + + @ApiOperation(value = "读取xml文件") + @GetMapping("/readXml/{deployId}") + public AjaxResult readXml(@ApiParam(value = "流程定义id") @PathVariable(value = "deployId") String deployId) { + try { + return flowDefinitionService.readXml(deployId); + } catch (Exception e) { + return AjaxResult.error("加载xml文件异常"); + } + + } + + @ApiOperation(value = "读取图片文件") + @GetMapping("/readImage/{deployId}") + public void readImage(@ApiParam(value = "流程定义id") @PathVariable(value = "deployId") String deployId, HttpServletResponse response) { + OutputStream os = null; + BufferedImage image = null; + try { + image = ImageIO.read(flowDefinitionService.readImage(deployId)); + response.setContentType("image/png"); + os = response.getOutputStream(); + if (image != null) { + ImageIO.write(image, "png", os); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (os != null) { + os.flush(); + os.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + } + + @ApiOperation(value = "保存流程设计器内的xml文件") + @Log(title = "流程定义", businessType = BusinessType.INSERT) + @PostMapping("/save") + public AjaxResult save(@RequestBody FlowSaveXmlVo vo) { + InputStream in = null; + try { + String xml = vo.getXml(); + //将xml数据进行base64解码 + xml = StringUtils.utf8Str(xml); + //in = new ByteArrayInputStream(vo.getXml().getBytes(StandardCharsets.UTF_8)); + in = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)); + flowDefinitionService.importFile(vo.getName(), vo.getCategory(), in); + } catch (Exception e) { + log.error("导入失败:", e); + return AjaxResult.error(e.getMessage()); + } finally { + try { + if (in != null) { + in.close(); + } + } catch (IOException e) { + log.error("关闭输入流出错", e); + } + } + + return AjaxResult.success("导入成功"); + } + + @ApiOperation(value = "发起流程") + @Log(title = "发起流程", businessType = BusinessType.INSERT) + @PostMapping("/start/{procDefId}") + public AjaxResult start(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, + @ApiParam(value = "变量集合,json对象") @RequestBody Map variables) { + return flowDefinitionService.startProcessInstanceById(procDefId, variables); + } + + @ApiOperation(value = "激活或挂起流程定义") + @Log(title = "激活/挂起流程", businessType = BusinessType.UPDATE) + @PutMapping(value = "/updateState") + public AjaxResult updateState(@ApiParam(value = "1:激活,2:挂起", required = true) @RequestParam Integer state, + @ApiParam(value = "流程部署ID", required = true) @RequestParam String deployId) { + flowDefinitionService.updateState(state, deployId); + return AjaxResult.success(); + } + + @ApiOperation(value = "删除流程") + @Log(title = "删除流程", businessType = BusinessType.DELETE) + @DeleteMapping(value = "/{deployIds}") + public AjaxResult delete(@PathVariable String[] deployIds) { + for (String deployId : deployIds) { + flowDefinitionService.delete(deployId); + } + return AjaxResult.success(); + } + + @ApiOperation(value = "指定流程办理人员列表") + @GetMapping("/userList") + public AjaxResult userList(SysUser user) { + List list = remoteSystemService.getUsers(user); + return AjaxResult.success(list); + } + + @ApiOperation(value = "指定流程办理组列表") + @GetMapping("/roleList") + public AjaxResult roleList(SysRole role) { + List list = remoteSystemService.getRoles(role); + return AjaxResult.success(list); + } + + @ApiOperation(value = "指定流程达式列表") + @GetMapping("/expList") + public AjaxResult expList(SysExpression sysExpression) { + List list = sysExpressionService.selectSysExpressionList(sysExpression); + return AjaxResult.success(list); + } + +} \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowInstanceController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowInstanceController.java new file mode 100644 index 00000000..89fde4cc --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowInstanceController.java @@ -0,0 +1,66 @@ +package com.yanzhu.flowable.controller; + +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.flowable.domain.vo.FlowTaskVo; +import com.yanzhu.flowable.service.IFlowInstanceService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + *

工作流流程实例管理

+ * + * @author Tony + * @date 2021-04-03 + */ +@Slf4j +@Api(tags = "工作流流程实例管理") +@RestController +@RequestMapping("/instance") +public class FlowInstanceController extends BaseController { + + @Autowired + private IFlowInstanceService flowInstanceService; + + @ApiOperation(value = "根据流程定义id启动流程实例") + @PostMapping("/startBy/{procDefId}") + public AjaxResult startById(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, + @ApiParam(value = "变量集合,json对象") @RequestBody Map variables) { + return flowInstanceService.startProcessInstanceById(procDefId, variables); + + } + + @ApiOperation(value = "激活或挂起流程实例") + @PostMapping(value = "/updateState") + public AjaxResult updateState(@ApiParam(value = "1:激活,2:挂起", required = true) @RequestParam Integer state, + @ApiParam(value = "流程实例ID", required = true) @RequestParam String instanceId) { + flowInstanceService.updateState(state,instanceId); + return AjaxResult.success(); + } + + @ApiOperation("结束流程实例") + @PostMapping(value = "/stopProcessInstance") + public AjaxResult stopProcessInstance(@RequestBody FlowTaskVo flowTaskVo) { + flowInstanceService.stopProcessInstance(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "删除流程实例") + @Log(title = "删除任务", businessType = BusinessType.DELETE) + @DeleteMapping(value = "/delete/{instanceIds}") + public AjaxResult delete(@ApiParam(value = "流程实例ID", required = true) @PathVariable String[] instanceIds, + @ApiParam(value = "删除原因") @RequestParam(required = false) String deleteReason) { + for (String instanceId : instanceIds) { + flowInstanceService.delete(instanceId,deleteReason); + } + return AjaxResult.success(); + } +} \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowTaskController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowTaskController.java new file mode 100644 index 00000000..ffd3d5d0 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowTaskController.java @@ -0,0 +1,281 @@ +package com.yanzhu.flowable.controller; + +import com.github.pagehelper.PageInfo; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.flowable.domain.dto.FlowTaskDto; +import com.yanzhu.flowable.domain.vo.FlowQueryVo; +import com.yanzhu.flowable.domain.vo.FlowTaskVo; +import com.yanzhu.flowable.service.IFlowTaskService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + *

工作流任务管理

+ * + * @author Tony + * @date 2021-04-03 + */ +@Slf4j +@Api(tags = "工作流流程任务管理") +@RestController +@RequestMapping("/task") +public class FlowTaskController extends BaseController { + + @Autowired + private IFlowTaskService flowTaskService; + + @ApiOperation(value = "我发起的流程", response = FlowTaskDto.class) + @GetMapping(value = "/myProcess") + public TableDataInfo myProcess(FlowQueryVo queryVo) { + PageInfo list = flowTaskService.myProcess(queryVo); + return getDataTable(list); + } + + @ApiOperation(value = "取消申请", response = FlowTaskDto.class) + @Log(title = "取消申请", businessType = BusinessType.UPDATE) + @PostMapping(value = "/stopProcess") + public AjaxResult stopProcess(@RequestBody FlowTaskVo flowTaskVo) { + return flowTaskService.stopProcess(flowTaskVo); + } + + @ApiOperation(value = "撤回流程", response = FlowTaskDto.class) + @Log(title = "撤回流程", businessType = BusinessType.UPDATE) + @PostMapping(value = "/revokeProcess") + public AjaxResult revokeProcess(@RequestBody FlowTaskVo flowTaskVo) { + return flowTaskService.revokeProcess(flowTaskVo); + } + + @ApiOperation(value = "获取待办列表", response = FlowTaskDto.class) + @GetMapping(value = "/todoList") + public TableDataInfo todoList(FlowQueryVo queryVo) { + PageInfo list = flowTaskService.todoList(queryVo); + return getDataTable(list); + } + + @ApiOperation(value = "获取已办任务", response = FlowTaskDto.class) + @GetMapping(value = "/finishedList") + public TableDataInfo finishedList(FlowQueryVo queryVo) { + PageInfo list = flowTaskService.finishedList(queryVo); + return getDataTable(list); + } + + + @ApiOperation(value = "流程历史流转记录", response = FlowTaskDto.class) + @GetMapping(value = "/flowRecord") + public AjaxResult flowRecord(String procInsId, String deployId) { + return flowTaskService.flowRecord(procInsId, deployId); + } + + @ApiOperation(value = "根据任务ID查询挂载的表单信息") + @GetMapping(value = "/getTaskForm") + public AjaxResult getTaskForm(String taskId) { + return flowTaskService.getTaskForm(taskId); + } + + + @ApiOperation(value = "流程初始化表单", response = FlowTaskDto.class) + @GetMapping(value = "/flowFormData") + public AjaxResult flowFormData(String deployId) { + return flowTaskService.flowFormData(deployId); + } + + @ApiOperation(value = "获取流程变量", response = FlowTaskDto.class) + @GetMapping(value = "/processVariables/{taskId}") + public AjaxResult processVariables(@ApiParam(value = "流程任务Id") @PathVariable(value = "taskId") String taskId) { + return flowTaskService.processVariables(taskId); + } + + @ApiOperation(value = "审批任务") + @Log(title = "审批任务", businessType = BusinessType.UPDATE) + @PostMapping(value = "/complete") + public AjaxResult complete(@RequestBody FlowTaskVo flowTaskVo) { + return flowTaskService.complete(flowTaskVo); + } + + @ApiOperation(value = "驳回任务") + @Log(title = "驳回任务", businessType = BusinessType.UPDATE) + @PostMapping(value = "/reject") + public AjaxResult taskReject(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.taskReject(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "退回任务") + @Log(title = "退回任务", businessType = BusinessType.UPDATE) + @PostMapping(value = "/return") + public AjaxResult taskReturn(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.taskReturn(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "获取所有可回退的节点") + @PostMapping(value = "/returnList") + public AjaxResult findReturnTaskList(@RequestBody FlowTaskVo flowTaskVo) { + return flowTaskService.findReturnTaskList(flowTaskVo); + } + + @ApiOperation(value = "删除任务") + @Log(title = "删除任务", businessType = BusinessType.DELETE) + @DeleteMapping(value = "/delete") + public AjaxResult delete(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.deleteTask(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "认领/签收任务") + @PostMapping(value = "/claim") + public AjaxResult claim(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.claim(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "取消认领/签收任务") + @PostMapping(value = "/unClaim") + public AjaxResult unClaim(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.unClaim(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "委派任务") + @PostMapping(value = "/delegateTask") + public AjaxResult delegate(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.delegateTask(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "任务归还") + @PostMapping(value = "/resolveTask") + public AjaxResult resolveTask(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.resolveTask(flowTaskVo); + return AjaxResult.success(); + } + + @ApiOperation(value = "转办任务") + @PostMapping(value = "/assignTask") + public AjaxResult assign(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.assignTask(flowTaskVo); + return AjaxResult.success(); + } + + @PostMapping(value = "/addMultiInstanceExecution") + @ApiOperation(value = "多实例加签") + public AjaxResult addMultiInstanceExecution(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.addMultiInstanceExecution(flowTaskVo); + return AjaxResult.success("加签成功"); + } + + @PostMapping(value = "/deleteMultiInstanceExecution") + @ApiOperation(value = "多实例减签") + public AjaxResult deleteMultiInstanceExecution(@RequestBody FlowTaskVo flowTaskVo) { + flowTaskService.deleteMultiInstanceExecution(flowTaskVo); + return AjaxResult.success("减签成功"); + } + + @ApiOperation(value = "获取下一节点") + @PostMapping(value = "/nextFlowNode") + public AjaxResult getNextFlowNode(@RequestBody FlowTaskVo flowTaskVo) { + return flowTaskService.getNextFlowNode(flowTaskVo); + } + + @ApiOperation(value = "流程发起时获取下一节点") + @PostMapping(value = "/nextFlowNodeByStart") + public AjaxResult getNextFlowNodeByStart(@RequestBody FlowTaskVo flowTaskVo) { + return flowTaskService.getNextFlowNodeByStart(flowTaskVo); + } + + /** + * 生成流程图 + * + * @param processId 任务ID + */ + @GetMapping("/diagram/{processId}") + public void genProcessDiagram(HttpServletResponse response, + @PathVariable("processId") String processId) { + InputStream inputStream = flowTaskService.diagram(processId); + OutputStream os = null; + BufferedImage image = null; + try { + image = ImageIO.read(inputStream); + response.setContentType("image/png"); + os = response.getOutputStream(); + if (image != null) { + ImageIO.write(image, "png", os); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (os != null) { + os.flush(); + os.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 获取流程执行节点 + * + * @param procInsId 流程实例编号 + * @param procInsId 任务执行编号 + */ + @GetMapping("/flowViewer/{procInsId}/{executionId}") + public AjaxResult getFlowViewer(@PathVariable("procInsId") String procInsId, + @PathVariable("executionId") String executionId) { + return flowTaskService.getFlowViewer(procInsId, executionId); + } + + /** + * 流程节点信息 + * + * @param procInsId 流程实例id + * @return + */ + @GetMapping("/flowXmlAndNode") + public AjaxResult flowXmlAndNode(@RequestParam(value = "procInsId", required = false) String procInsId, + @RequestParam(value = "deployId", required = false) String deployId) { + return flowTaskService.flowXmlAndNode(procInsId, deployId); + } + + /** + * 流程节点表单 + * + * @param taskId 流程任务编号 + * @return + */ + @GetMapping("/flowTaskForm") + public AjaxResult flowTaskForm(@RequestParam(value = "taskId", required = false) String taskId) throws Exception { + return flowTaskService.flowTaskForm(taskId); + } + + /** + * 流程节点信息 + * + * @param procInsId 流程实例编号 + * @param elementId 流程节点编号 + * @return + */ + @GetMapping("/flowTaskInfo") + public AjaxResult flowTaskInfo(@RequestParam(value = "procInsId") String procInsId, + @RequestParam(value = "elementId") String elementId) { + return flowTaskService.flowTaskInfo(procInsId, elementId); + } + +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableCategoryController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableCategoryController.java deleted file mode 100644 index 5dbd2ee9..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableCategoryController.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.yanzhu.flowable.controller; - -import com.yanzhu.common.core.utils.poi.ExcelUtil; -import com.yanzhu.common.core.web.controller.BaseController; -import com.yanzhu.common.core.web.domain.AjaxResult; -import com.yanzhu.common.core.web.page.TableDataInfo; -import com.yanzhu.common.log.annotation.Log; -import com.yanzhu.common.log.enums.BusinessType; -import com.yanzhu.common.security.annotation.RequiresPermissions; -import com.yanzhu.flowable.domain.FlowableCategory; -import com.yanzhu.flowable.service.IFlowableCategoryService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 流程分类Controller - * - * @author ruoyi - * @date 2023-11-27 - */ -@RestController -@RequestMapping("/category") -public class FlowableCategoryController extends BaseController -{ - @Autowired - private IFlowableCategoryService flowableCategoryService; - - /** - * 查询流程分类列表 - */ - @RequiresPermissions("flow:flow_classify:list") - @GetMapping("/list") - public TableDataInfo list(FlowableCategory flowableCategory) - { - startPage(); - List list = flowableCategoryService.selectFlowableCategoryList(flowableCategory); - return getDataTable(list); - } - - /** - * 导出流程分类列表 - */ - @RequiresPermissions("flow:flow_classify:export") - @Log(title = "流程分类", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, FlowableCategory flowableCategory) - { - List list = flowableCategoryService.selectFlowableCategoryList(flowableCategory); - ExcelUtil util = new ExcelUtil(FlowableCategory.class); - util.exportExcel(response, list, "流程分类数据"); - } - - /** - * 获取流程分类详细信息 - */ - @RequiresPermissions("flow:flow_classify:query") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(flowableCategoryService.selectFlowableCategoryById(id)); - } - - /** - * 新增流程分类 - */ - @RequiresPermissions("flow:flow_classify:add") - @Log(title = "流程分类", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody FlowableCategory flowableCategory) - { - return toAjax(flowableCategoryService.insertFlowableCategory(flowableCategory)); - } - - /** - * 修改流程分类 - */ - @RequiresPermissions("flow:flow_classify:update") - @Log(title = "流程分类", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody FlowableCategory flowableCategory) - { - return toAjax(flowableCategoryService.updateFlowableCategory(flowableCategory)); - } - - /** - * 删除流程分类 - */ - @RequiresPermissions("flow:flow_classify:delete") - @Log(title = "流程分类", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(flowableCategoryService.deleteFlowableCategoryByIds(ids)); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableDeployController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableDeployController.java deleted file mode 100644 index 9604ac18..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableDeployController.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.yanzhu.flowable.controller; - -import com.yanzhu.common.core.web.controller.BaseController; -import com.yanzhu.common.core.web.domain.AjaxResult; -import com.yanzhu.common.core.web.page.TableDataInfo; -import com.yanzhu.common.log.annotation.Log; -import com.yanzhu.common.log.enums.BusinessType; -import com.yanzhu.common.security.annotation.RequiresPermissions; -import com.yanzhu.flowable.domain.FlowableDeploy; -import com.yanzhu.flowable.service.IFlowableDeployService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 流程部署Controller - * - * @author ruoyi - * @date 2023-12-18 - */ -@RestController -@RequestMapping("/deploy") -public class FlowableDeployController extends BaseController -{ - @Autowired - private IFlowableDeployService flowableDeployService; - - /** - * 查询流程部署列表 - */ - @RequiresPermissions("flowable:deploy:list") - @GetMapping("/list") - public TableDataInfo list(FlowableDeploy flowableDeploy) - { - startPage(); - List list = flowableDeployService.selectFlowableDeployList(flowableDeploy); - return getDataTable(list); - } - - /** - * 获取流程部署详细信息 - */ - @RequiresPermissions("flowable:deploy:query") - @GetMapping(value = "/{definitionId}") - public AjaxResult getInfo(@PathVariable("definitionId") String definitionId) - { - return success(flowableDeployService.selectFlowableDeployByDefinitionId(definitionId)); - } - - - /** - * 删除流程部署 - */ - @RequiresPermissions("flowable:deploy:remove") - @Log(title = "流程部署", businessType = BusinessType.DELETE) - @DeleteMapping("/{definitionIds}") - public AjaxResult remove(@PathVariable String[] definitionIds) - { - return toAjax(flowableDeployService.deleteFlowableDeployByDefinitionIds(definitionIds)); - } - /** - * 查询流程部署版本列表 - */ - @RequiresPermissions("flowable:deploy:publishList") - @GetMapping("/publishList") - public TableDataInfo publishList(@RequestParam String processKey) { - startPage(); - - List list = flowableDeployService.queryPublishList(processKey); - return getDataTable(list); - } - - /** - * 激活或挂起流程 - * - * @param state 状态(active:激活 suspended:挂起) - * @param definitionId 流程定义ID - */ - @RequiresPermissions("flowable:deploy:state") - @PutMapping(value = "/changeState") - public AjaxResult changeState(@RequestParam String state, @RequestParam String definitionId) { - flowableDeployService.updateState(definitionId,state); - return success(); - } - - /** - * 读取xml文件 - * @param definitionId 流程定义ID - * @return - */ - @RequiresPermissions("flowable:deploy:bpmnXml") - @GetMapping("/bpmnXml/{definitionId}") - public AjaxResult getBpmnXml(@PathVariable(value = "definitionId") String definitionId) { - return AjaxResult.success("查询成功", flowableDeployService.queryBpmnXmlById(definitionId)); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldDefController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldDefController.java deleted file mode 100644 index 43a830fc..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldDefController.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.yanzhu.flowable.controller; - -import com.yanzhu.common.core.utils.poi.ExcelUtil; -import com.yanzhu.common.core.web.controller.BaseController; -import com.yanzhu.common.core.web.domain.AjaxResult; -import com.yanzhu.common.core.web.page.TableDataInfo; -import com.yanzhu.common.log.annotation.Log; -import com.yanzhu.common.log.enums.BusinessType; -import com.yanzhu.common.security.annotation.RequiresPermissions; -import com.yanzhu.flowable.domain.FlowableFieldDef; -import com.yanzhu.flowable.service.IFlowableFieldDefService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 流程字段定义Controller - * - * @author ruoyi - * @date 2023-12-26 - */ -@RestController -@RequestMapping("/def") -public class FlowableFieldDefController extends BaseController -{ - @Autowired - private IFlowableFieldDefService flowableFieldDefService; - - /** - * 查询流程字段定义列表 - */ - @RequiresPermissions("flowable:def:list") - @GetMapping("/list") - public TableDataInfo list(FlowableFieldDef flowableFieldDef) - { - startPage(); - List list = flowableFieldDefService.selectFlowableFieldDefList(flowableFieldDef); - return getDataTable(list); - } - - /** - * 导出流程字段定义列表 - */ - @RequiresPermissions("flowable:def:export") - @Log(title = "流程字段定义", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, FlowableFieldDef flowableFieldDef) - { - List list = flowableFieldDefService.selectFlowableFieldDefList(flowableFieldDef); - ExcelUtil util = new ExcelUtil(FlowableFieldDef.class); - util.exportExcel(response, list, "流程字段定义数据"); - } - - /** - * 获取流程字段定义详细信息 - */ - @RequiresPermissions("flowable:def:query") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") String id) - { - return success(flowableFieldDefService.selectFlowableFieldDefById(id)); - } - - /** - * 新增流程字段定义 - */ - @RequiresPermissions("flowable:def:add") - @Log(title = "流程字段定义", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody FlowableFieldDef flowableFieldDef) - { - return toAjax(flowableFieldDefService.insertFlowableFieldDef(flowableFieldDef)); - } - - /** - * 修改流程字段定义 - */ - @RequiresPermissions("flowable:def:edit") - @Log(title = "流程字段定义", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody FlowableFieldDef flowableFieldDef) - { - return toAjax(flowableFieldDefService.updateFlowableFieldDef(flowableFieldDef)); - } - - /** - * 删除流程字段定义 - */ - @RequiresPermissions("flowable:def:remove") - @Log(title = "流程字段定义", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) - { - return toAjax(flowableFieldDefService.deleteFlowableFieldDefByIds(ids)); - } - /** - * 查询流程字段定义列表(不翻页) - */ - @RequiresPermissions("flowable:def:listAll") - @GetMapping("/listAll") - public AjaxResult listAll(FlowableFieldDef flowableFieldDef) - { - List list = flowableFieldDefService.selectFlowableFieldDefList(flowableFieldDef); - return success(list); - } - -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldRefController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldRefController.java deleted file mode 100644 index 2d7faf9a..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableFieldRefController.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.yanzhu.flowable.controller; - -import com.yanzhu.common.core.utils.poi.ExcelUtil; -import com.yanzhu.common.core.web.controller.BaseController; -import com.yanzhu.common.core.web.domain.AjaxResult; -import com.yanzhu.common.core.web.page.TableDataInfo; -import com.yanzhu.common.log.annotation.Log; -import com.yanzhu.common.log.enums.BusinessType; -import com.yanzhu.common.security.annotation.RequiresPermissions; -import com.yanzhu.flowable.domain.FlowableFieldDef; -import com.yanzhu.flowable.domain.FlowableFieldRef; -import com.yanzhu.flowable.domain.FlowableFieldSearch; -import com.yanzhu.flowable.service.IFlowableFieldDefService; -import com.yanzhu.flowable.service.IFlowableFieldRefService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 流程字段引用关系Controller - * - * @author ruoyi - * @date 2023-12-26 - */ -@RestController -@RequestMapping("/ref") -public class FlowableFieldRefController extends BaseController -{ - @Autowired - private IFlowableFieldRefService flowableFieldRefService; - - @Autowired - private IFlowableFieldDefService flowableFieldDefService; - /** - * 查询流程字段引用关系列表 - */ - @RequiresPermissions("flowable:ref:list") - @GetMapping("/list") - public TableDataInfo list(FlowableFieldRef flowableFieldRef) - { - startPage(); - List list = flowableFieldRefService.selectFlowableFieldRefList(flowableFieldRef); - return getDataTable(list); - } - - /** - * 导出流程字段引用关系列表 - */ - @RequiresPermissions("flowable:ref:export") - @Log(title = "流程字段引用关系", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, FlowableFieldRef flowableFieldRef) - { - List list = flowableFieldRefService.selectFlowableFieldRefList(flowableFieldRef); - ExcelUtil util = new ExcelUtil(FlowableFieldRef.class); - util.exportExcel(response, list, "流程字段引用关系数据"); - } - - /** - * 获取流程字段引用关系详细信息 - */ - @RequiresPermissions("flowable:ref:query") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") String id) - { - return success(flowableFieldRefService.selectFlowableFieldRefById(id)); - } - - /** - * 新增流程字段引用关系 - */ - @RequiresPermissions("flowable:ref:add") - @Log(title = "流程字段引用关系", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody FlowableFieldRef flowableFieldRef) - { - return toAjax(flowableFieldRefService.insertFlowableFieldRef(flowableFieldRef)); - } - - /** - * 修改流程字段引用关系 - */ - @RequiresPermissions("flowable:ref:edit") - @Log(title = "流程字段引用关系", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody FlowableFieldRef flowableFieldRef) - { - return toAjax(flowableFieldRefService.updateFlowableFieldRef(flowableFieldRef)); - } - - /** - * 删除流程字段引用关系 - */ - @RequiresPermissions("flowable:ref:remove") - @Log(title = "流程字段引用关系", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) - { - return toAjax(flowableFieldRefService.deleteFlowableFieldRefByIds(ids)); - } - /** - * 查询流程字段引用关系列表(不翻页,关联字段定义表查询) - */ - @RequiresPermissions("flowable:ref:listCombination") - @GetMapping("/listCombination") - public AjaxResult listCombination(FlowableFieldSearch flowableFieldSearch) - { - List list = flowableFieldDefService.listCombination(flowableFieldSearch); - return success(list); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelController.java deleted file mode 100644 index 60312c88..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelController.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.yanzhu.flowable.controller; - -import com.yanzhu.common.core.utils.poi.ExcelUtil; -import com.yanzhu.common.core.web.controller.BaseController; -import com.yanzhu.common.core.web.domain.AjaxResult; -import com.yanzhu.common.core.web.page.TableDataInfo; -import com.yanzhu.common.log.annotation.Log; -import com.yanzhu.common.log.enums.BusinessType; -import com.yanzhu.common.security.annotation.RequiresPermissions; -import com.yanzhu.flowable.domain.FlowableModel; -import com.yanzhu.flowable.domain.bo.FlowableModelBo; -import com.yanzhu.flowable.service.IFlowableModelService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.NotNull; -import java.io.UnsupportedEncodingException; -import java.util.List; - -/** - * 流程模型Controller - * - * @author ruoyi - * @date 2023-11-28 - */ -@RestController -@RequestMapping("/model") -@Slf4j -public class FlowableModelController extends BaseController -{ - @Autowired - private IFlowableModelService flowableModelService; - - /** - * 查询流程模型列表 - */ - @RequiresPermissions("flow:flow_model:list") - @GetMapping("/list") - public TableDataInfo list(FlowableModelBo flowableModelBo) - { - startPage(); - List list = flowableModelService.selectFlowableModelList(flowableModelBo); - return getDataTable(list); - } - - /** - * 导出流程模型列表 - */ - @RequiresPermissions("flow:flow_model:export") - @Log(title = "流程模型", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, FlowableModelBo flowableModel) - { - List list = flowableModelService.selectFlowableModelList(flowableModel); - ExcelUtil util = new ExcelUtil(FlowableModel.class); - util.exportExcel(response, list, "流程模型数据"); - } - - /** - * 获取流程模型详细信息 - */ - @RequiresPermissions("flow:flow_model:query") - @GetMapping(value = "/{modelId}") - public AjaxResult getInfo(@PathVariable("modelId") String modelId) - { - return success(flowableModelService.selectFlowableModelByModelId(modelId)); - } - - /** - * 新增流程模型 - */ - @RequiresPermissions("flow:flow_model:add") - @Log(title = "流程模型", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody FlowableModel flowableModel) - { - return toAjax(flowableModelService.insertFlowableModel(flowableModel)); - } - - /** - * 修改流程模型 - */ - @RequiresPermissions("flow:flow_model:update") - @Log(title = "流程模型", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody FlowableModel flowableModel) - { - return toAjax(flowableModelService.updateFlowableModel(flowableModel)); - } - - /** - * 删除流程模型 - */ - @RequiresPermissions("flow:flow_model:delete") - @Log(title = "流程模型", businessType = BusinessType.DELETE) - @DeleteMapping("/{modelIds}") - public AjaxResult remove(@PathVariable String[] modelIds) - { - return toAjax(flowableModelService.deleteFlowableModelByModelIds(modelIds)); - } - /** - * 部署流程模型 - * - * @param modelId 流程模型主键 - */ - @RequiresPermissions("flow:flow_model:deploy") - @Log(title = "部署流程模型", businessType = BusinessType.OTHER) - @PostMapping("/deploy") - public AjaxResult deployModel(@RequestParam String modelId) { - try { - flowableModelService.deployModel(modelId); - } catch (UnsupportedEncodingException e) { - log.error("部署失败!",e); - } - return success(); - } - /** - * 获取流程表单详细信息 - * - * @param modelId 模型id - */ - @RequiresPermissions("flow:flow_model:queryXml") - @GetMapping(value = "/getBpmnXml/{modelId}") - public AjaxResult getBpmnXml(@NotNull(message = "主键不能为空") @PathVariable("modelId") String modelId) { - try { - return AjaxResult.success("查询成功",flowableModelService.queryBpmnXmlById(modelId)); - } catch (UnsupportedEncodingException e) { - log.error("获取模型xml失败!模型id:"+modelId,e); - return AjaxResult.error("获取模型xml失败!"); - } - } - /** - * 查询流程模型版本历史列表 - * - * @param modelBo 流程模型对象 - */ - @RequiresPermissions("flow:flow_model:historyList") - @GetMapping("/historyList") - public TableDataInfo historyList(FlowableModelBo modelBo) { - startPage(); - List list = flowableModelService.historyList(modelBo); - return getDataTable(list); - } - /** - * 保存(更新或插入新版本)流程模型 - */ - @RequiresPermissions("flow:flow_model::save") - @PostMapping("/save") - public AjaxResult save(@RequestBody FlowableModelBo modelBo) { - flowableModelService.saveModel(modelBo); - return success(); - } - /** - * 设为最新流程模型 - * @param modelId - * @return - */ - @RequiresPermissions("flow:flow_model:lastest") - @PostMapping("/latest/") - public AjaxResult latest(@RequestParam String modelId) { - try { - flowableModelService.latestModel(modelId); - return success(); - } catch (UnsupportedEncodingException e) { - log.error("设置最新版本失败!",e); - return error("设置最新版本失败!"); - } - - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelPageController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelPageController.java deleted file mode 100644 index 74056f87..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/FlowableModelPageController.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.yanzhu.flowable.controller; - -import com.yanzhu.common.core.utils.poi.ExcelUtil; -import com.yanzhu.common.core.web.controller.BaseController; -import com.yanzhu.common.core.web.domain.AjaxResult; -import com.yanzhu.common.core.web.page.TableDataInfo; -import com.yanzhu.common.log.annotation.Log; -import com.yanzhu.common.log.enums.BusinessType; -import com.yanzhu.common.security.annotation.RequiresPermissions; -import com.yanzhu.flowable.domain.FlowableModelPage; -import com.yanzhu.flowable.service.IFlowableModelPageService; -import io.jsonwebtoken.lang.Collections; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 建模页面绑定Controller - * - * @author ruoyi - * @date 2023-12-25 - */ -@RestController -@RequestMapping("/page") -public class FlowableModelPageController extends BaseController -{ - @Autowired - private IFlowableModelPageService flowableModelPageService; - - /** - * 查询建模页面绑定列表 - */ - @RequiresPermissions("flowable:page:list") - @GetMapping("/list") - public TableDataInfo list(FlowableModelPage flowableModelPage) - { - startPage(); - List list = flowableModelPageService.selectFlowableModelPageList(flowableModelPage); - return getDataTable(list); - } - - /** - * 导出建模页面绑定列表 - */ - @RequiresPermissions("flowable:page:export") - @Log(title = "建模页面绑定", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, FlowableModelPage flowableModelPage) - { - List list = flowableModelPageService.selectFlowableModelPageList(flowableModelPage); - ExcelUtil util = new ExcelUtil(FlowableModelPage.class); - util.exportExcel(response, list, "建模页面绑定数据"); - } - - /** - * 获取建模页面绑定详细信息 - */ - @RequiresPermissions("flowable:page:query") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") String id) - { - return success(flowableModelPageService.selectFlowableModelPageById(id)); - } - - /** - * 新增建模页面绑定 - */ - @RequiresPermissions("flowable:page:add") - @Log(title = "建模页面绑定", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody FlowableModelPage flowableModelPage) - { - return toAjax(flowableModelPageService.insertFlowableModelPage(flowableModelPage)); - } - - /** - * 修改建模页面绑定 - */ - @RequiresPermissions("flowable:page:edit") - @Log(title = "建模页面绑定", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody FlowableModelPage flowableModelPage) - { - return toAjax(flowableModelPageService.updateFlowableModelPage(flowableModelPage)); - } - - /** - * 删除建模页面绑定 - */ - @RequiresPermissions("flowable:page:remove") - @Log(title = "建模页面绑定", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) - { - return toAjax(flowableModelPageService.deleteFlowableModelPageByIds(ids)); - } - /** - * 建模页面绑定 - */ - @RequiresPermissions("flowable:page:bind") - @Log(title = "建模页面绑定", businessType = BusinessType.UPDATE) - @PutMapping(value="/bind") - public AjaxResult bind(@RequestBody FlowableModelPage flowableModelPage) - { - List list = flowableModelPageService.selectFlowableModelPageListByBind(flowableModelPage); - if(Collections.isEmpty(list)){ - return toAjax(flowableModelPageService.insertFlowableModelPage(flowableModelPage)); - }else { - flowableModelPage.setId(list.get(0).getId()); - return toAjax(flowableModelPageService.updateFlowableModelPage(flowableModelPage)); - } - } - /** - * 建模页面单页面查询(根据模块,流程标识,页面名称查询) - */ - @RequiresPermissions("flowable:page:findPage") - @Log(title = "建模页面单页面查询", businessType = BusinessType.UPDATE) - @PostMapping(value="/findPage") - public AjaxResult findPage(@RequestBody FlowableModelPage flowableModelPage) - { - FlowableModelPage page = flowableModelPageService.selectFlowableModelPageSingle(flowableModelPage); - return success(page); - } - /** - * 建模页面模块页面查询(按模块,流程标识查询) - */ - @RequiresPermissions("flowable:page:findModulePage") - @Log(title = "建模页面模块页面查询", businessType = BusinessType.UPDATE) - @PostMapping(value="/findModulePage") - public AjaxResult findModulePage(@RequestBody FlowableModelPage flowableModelPage) - { - List list = flowableModelPageService.selectFlowableModelPage(flowableModelPage); - return success(list); - } - /** - * 建模页面解绑 - */ - @RequiresPermissions("flowable:page:unbind") - @Log(title = "建模页面解绑", businessType = BusinessType.UPDATE) - @PutMapping(value="/unbind") - public AjaxResult unbind(@RequestBody FlowableModelPage flowableModelPage) - { - List list = flowableModelPageService.selectFlowableModelPageListByBind(flowableModelPage); - if(Collections.isEmpty(list)){ - return error("页面没找到!"); - }else { - return toAjax(flowableModelPageService.deleteFlowableModelPageById(list.get(0).getId())); - } - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysExpressionController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysExpressionController.java new file mode 100644 index 00000000..fa362f54 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysExpressionController.java @@ -0,0 +1,92 @@ +package com.yanzhu.flowable.controller; + +import com.yanzhu.common.core.utils.poi.ExcelUtil; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.common.security.annotation.RequiresPermissions; +import com.yanzhu.flowable.domain.SysExpression; +import com.yanzhu.flowable.service.ISysExpressionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 流程达式Controller + * + * @author yanzhu + * @date 2022-12-12 + */ +@RestController +@RequestMapping("/expression") +public class SysExpressionController extends BaseController { + @Autowired + private ISysExpressionService sysExpressionService; + private Long id; + + /** + * 查询流程达式列表 + */ + @RequiresPermissions("system:expression:list") + @GetMapping("/list") + public TableDataInfo list(SysExpression sysExpression) { + startPage(); + List list = sysExpressionService.selectSysExpressionList(sysExpression); + return getDataTable(list); + } + + /** + * 导出流程达式列表 + */ + @RequiresPermissions("system:expression:export") + @Log(title = "流程达式", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, SysExpression sysExpression) { + List list = sysExpressionService.selectSysExpressionList(sysExpression); + ExcelUtil util = new ExcelUtil(SysExpression.class); + util.exportExcel(response, list, "流程达式数据"); + } + + /** + * 获取流程达式详细信息 + */ + @RequiresPermissions("system:expression:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return success(sysExpressionService.selectSysExpressionById(id)); + } + + /** + * 新增流程达式 + */ + @RequiresPermissions("system:expression:add") + @Log(title = "流程达式", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysExpression sysExpression) { + return toAjax(sysExpressionService.insertSysExpression(sysExpression)); + } + + /** + * 修改流程达式 + */ + @RequiresPermissions("system:expression:edit") + @Log(title = "流程达式", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysExpression sysExpression) { + return toAjax(sysExpressionService.updateSysExpression(sysExpression)); + } + + /** + * 删除流程达式 + */ + @RequiresPermissions("system:expression:remove") + @Log(title = "流程达式", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(sysExpressionService.deleteSysExpressionByIds(ids)); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysFormController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysFormController.java new file mode 100644 index 00000000..09611cba --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysFormController.java @@ -0,0 +1,112 @@ +package com.yanzhu.flowable.controller; + +import com.yanzhu.common.core.utils.poi.ExcelUtil; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.common.security.annotation.RequiresPermissions; +import com.yanzhu.flowable.domain.SysDeployForm; +import com.yanzhu.flowable.domain.SysForm; +import com.yanzhu.flowable.service.ISysDeployFormService; +import com.yanzhu.flowable.service.ISysFormService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 流程表单Controller + * + * @author Tony + * @date 2021-04-03 + */ +@RestController +@RequestMapping("/form") +public class SysFormController extends BaseController { + @Autowired + private ISysFormService SysFormService; + + @Autowired + private ISysDeployFormService sysDeployFormService; + + /** + * 查询流程表单列表 + */ + @RequiresPermissions("flowable:form:list") + @GetMapping("/list") + public TableDataInfo list(SysForm sysForm) { + startPage(); + List list = SysFormService.selectSysFormList(sysForm); + return getDataTable(list); + } + + @GetMapping("/formList") + public AjaxResult formList(SysForm sysForm) { + List list = SysFormService.selectSysFormList(sysForm); + return AjaxResult.success(list); + } + + /** + * 导出流程表单列表 + */ + @RequiresPermissions("flowable:form:export") + @Log(title = "流程表单", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public void export(HttpServletResponse response, SysForm sysForm) { + List list = SysFormService.selectSysFormList(sysForm); + ExcelUtil util = new ExcelUtil<>(SysForm.class); + util.exportExcel(response, list, "form"); + } + + /** + * 获取流程表单详细信息 + */ + @RequiresPermissions("flowable:form:query") + @GetMapping(value = "/{formId}") + public AjaxResult getInfo(@PathVariable("formId") Long formId) { + return AjaxResult.success(SysFormService.selectSysFormById(formId)); + } + + /** + * 新增流程表单 + */ + @RequiresPermissions("flowable:form:add") + @Log(title = "流程表单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysForm sysForm) { + return toAjax(SysFormService.insertSysForm(sysForm)); + } + + /** + * 修改流程表单 + */ + @RequiresPermissions("flowable:form:edit") + @Log(title = "流程表单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysForm sysForm) { + return toAjax(SysFormService.updateSysForm(sysForm)); + } + + /** + * 删除流程表单 + */ + @RequiresPermissions("flowable:form:remove") + @Log(title = "流程表单", businessType = BusinessType.DELETE) + @DeleteMapping("/{formIds}") + public AjaxResult remove(@PathVariable Long[] formIds) { + return toAjax(SysFormService.deleteSysFormByIds(formIds)); + } + + + /** + * 挂载流程表单 + */ + @Log(title = "流程表单", businessType = BusinessType.INSERT) + @PostMapping("/addDeployForm") + public AjaxResult addDeployForm(@RequestBody SysDeployForm sysDeployForm) { + return toAjax(sysDeployFormService.insertSysDeployForm(sysDeployForm)); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysListenerController.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysListenerController.java new file mode 100644 index 00000000..5dec062b --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/controller/SysListenerController.java @@ -0,0 +1,98 @@ +package com.yanzhu.flowable.controller; + +import com.yanzhu.common.core.utils.poi.ExcelUtil; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.common.security.annotation.RequiresPermissions; +import com.yanzhu.flowable.domain.SysListener; +import com.yanzhu.flowable.service.ISysListenerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 流程监听Controller + * + * @author Tony + * @date 2022-12-25 + */ +@RestController +@RequestMapping("/listener") +public class SysListenerController extends BaseController +{ + @Autowired + private ISysListenerService sysListenerService; + + /** + * 查询流程监听列表 + */ + @RequiresPermissions("system:listener:list") + @GetMapping("/list") + public TableDataInfo list(SysListener sysListener) + { + startPage(); + List list = sysListenerService.selectSysListenerList(sysListener); + return getDataTable(list); + } + + /** + * 导出流程监听列表 + */ + @RequiresPermissions("system:listener:export") + @Log(title = "流程监听", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, SysListener sysListener) + { + List list = sysListenerService.selectSysListenerList(sysListener); + ExcelUtil util = new ExcelUtil(SysListener.class); + util.exportExcel(response, list, "流程监听数据"); + } + + /** + * 获取流程监听详细信息 + */ + @RequiresPermissions("system:listener:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(sysListenerService.selectSysListenerById(id)); + } + + /** + * 新增流程监听 + */ + @RequiresPermissions("system:listener:add") + @Log(title = "流程监听", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysListener sysListener) + { + return toAjax(sysListenerService.insertSysListener(sysListener)); + } + + /** + * 修改流程监听 + */ + @RequiresPermissions("system:listener:edit") + @Log(title = "流程监听", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysListener sysListener) + { + return toAjax(sysListenerService.updateSysListener(sysListener)); + } + + /** + * 删除流程监听 + */ + @RequiresPermissions("system:listener:remove") + @Log(title = "流程监听", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(sysListenerService.deleteSysListenerByIds(ids)); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/CustomProcessDiagramCanvas.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/CustomProcessDiagramCanvas.java index c84766ca..7a0baca5 100644 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/CustomProcessDiagramCanvas.java +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/CustomProcessDiagramCanvas.java @@ -135,6 +135,7 @@ public class CustomProcessDiagramCanvas extends DefaultProcessDiagramCanvas { SHELL_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/shellTask.png", this.customClassLoader)); DMN_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/dmnTask.png", this.customClassLoader)); CAMEL_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/camelTask.png", this.customClassLoader)); + MULE_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/muleTask.png", this.customClassLoader)); HTTP_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/httpTask.png", this.customClassLoader)); TIMER_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/timer.png", this.customClassLoader)); COMPENSATE_THROW_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/compensate-throw.png", this.customClassLoader)); diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/FindNextNodeUtil.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/FindNextNodeUtil.java index a4bd2442..ac886e3f 100644 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/FindNextNodeUtil.java +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/FindNextNodeUtil.java @@ -159,13 +159,13 @@ public class FindNextNodeUtil { /** * 判断是否是多实例子流程并且需要设置集合类型变量 */ - public static boolean checkSubProcess(String Id, Collection flowElements, List nextUser) { + public static boolean checkSubProcess(String id, Collection flowElements, List nextUser) { for (FlowElement flowElement1 : flowElements) { - if (flowElement1 instanceof SubProcess && flowElement1.getId().equals(Id)) { + if (flowElement1 instanceof SubProcess && flowElement1.getId().equals(id)) { SubProcess sp = (SubProcess) flowElement1; if (sp.getLoopCharacteristics() != null) { - String inputDataItem = sp.getLoopCharacteristics().getInputDataItem(); +// String inputDataItem = sp.getLoopCharacteristics().getInputDataItem(); UserTask userTask = new UserTask(); userTask.setId(sp.getId()); userTask.setLoopCharacteristics(sp.getLoopCharacteristics()); @@ -251,7 +251,7 @@ public class FindNextNodeUtil { */ public static boolean expressionResult(Map map, String expression) { Expression exp = AviatorEvaluator.compile(expression); - final Object execute = exp.execute(map); - return Boolean.parseBoolean(String.valueOf(execute)); + return (Boolean)exp.execute(map); +// return true; } } diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelHelper.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelHelper.java deleted file mode 100644 index 5636c39b..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelHelper.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.yanzhu.flowable.flow; - -import org.flowable.bpmn.converter.BpmnXMLConverter; -import org.flowable.bpmn.model.Process; -import org.flowable.bpmn.model.*; -import org.flowable.common.engine.impl.util.io.StringStreamSource; - -import java.util.ArrayList; -import java.util.Collection; - -/** - * @author ruoyi - * @createTime 2023/11/29 19:04 - */ -public class ModelHelper { - - private static final BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter(); - - /** - * xml转bpmnModel对象 - * - * @param xml xml - * @return bpmnModel对象 - */ - public static BpmnModel getBpmnModel(String xml) { - return bpmnXMLConverter.convertToBpmnModel(new StringStreamSource(xml), false, false); - } - - /** - * bpmnModel转xml对象 - * - * @param bpmnModel bpmnModel对象 - * @return xml - */ - public static byte[] getBpmnXml(BpmnModel bpmnModel) { - return bpmnXMLConverter.convertToXML(bpmnModel); - } - - /** - * 获取开始节点 - * - * @param model bpmnModel对象 - * @return 开始节点(未找到开始节点,返回null) - */ - public static StartEvent getStartEvent(BpmnModel model) { - Process process = model.getMainProcess(); - FlowElement startElement = process.getInitialFlowElement(); - if (startElement instanceof StartEvent) { - return (StartEvent) startElement; - } - return getStartEvent(process.getFlowElements()); - } - - /** - * 获取开始节点 - * - * @param flowElements 流程元素集合 - * @return 开始节点(未找到开始节点,返回null) - */ - public static StartEvent getStartEvent(Collection flowElements) { - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof StartEvent) { - return (StartEvent) flowElement; - } - } - return null; - } - - /** - * 获取结束节点 - * - * @param model bpmnModel对象 - * @return 结束节点(未找到开始节点,返回null) - */ - public static EndEvent getEndEvent(BpmnModel model) { - Process process = model.getMainProcess(); - return getEndEvent(process.getFlowElements()); - } - - /** - * 获取结束节点 - * - * @param flowElements 流程元素集合 - * @return 结束节点(未找到开始节点,返回null) - */ - public static EndEvent getEndEvent(Collection flowElements) { - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof EndEvent) { - return (EndEvent) flowElement; - } - } - return null; - } - - public static UserTask getUserTaskByKey(BpmnModel model, String taskKey) { - Process process = model.getMainProcess(); - FlowElement flowElement = process.getFlowElement(taskKey); - if (flowElement instanceof UserTask) { - return (UserTask) flowElement; - } - return null; - } - - public static boolean isMultiInstance(BpmnModel model, String taskKey) { - UserTask userTask = getUserTaskByKey(model, taskKey); - if (userTask==null) { - return userTask.hasMultiInstanceLoopCharacteristics(); - } - return false; - } - - /** - * 获取所有用户任务节点 - * - * @param model bpmnModel对象 - * @return 用户任务节点列表 - */ - public static Collection getAllUserTaskEvent(BpmnModel model) { - Process process = model.getMainProcess(); - Collection flowElements = process.getFlowElements(); - return getAllUserTaskEvent(flowElements, null); - } - - /** - * 获取所有用户任务节点 - * @param flowElements 流程元素集合 - * @param allElements 所有流程元素集合 - * @return 用户任务节点列表 - */ - public static Collection getAllUserTaskEvent(Collection flowElements, Collection allElements) { - allElements = allElements == null ? new ArrayList<>() : allElements; - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof UserTask) { - allElements.add((UserTask) flowElement); - } - if (flowElement instanceof SubProcess) { - // 继续深入子流程,进一步获取子流程 - allElements = getAllUserTaskEvent(((SubProcess) flowElement).getFlowElements(), allElements); - } - } - return allElements; - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelUtils.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelUtils.java deleted file mode 100644 index 1a81e6ad..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/flow/ModelUtils.java +++ /dev/null @@ -1,372 +0,0 @@ -package com.yanzhu.flowable.flow; - -import com.yanzhu.common.core.utils.StringUtils; -import org.flowable.bpmn.converter.BpmnXMLConverter; -import org.flowable.bpmn.model.*; -import org.flowable.bpmn.model.Process; -import org.flowable.common.engine.impl.util.io.StringStreamSource; - -import java.util.*; - -/** - * @author KonBAI - * @createTime 2022/3/26 19:04 - */ -public class ModelUtils { - - private static final BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter(); - - /** - * xml转bpmnModel对象 - * - * @param xml xml - * @return bpmnModel对象 - */ - public static BpmnModel getBpmnModel(String xml) { - return bpmnXMLConverter.convertToBpmnModel(new StringStreamSource(xml), false, false); - } - - /** - * bpmnModel转xml字符串 - * - * @deprecated 存在会丢失 bpmn 连线问题 - * @param bpmnModel bpmnModel对象 - * @return xml字符串 - */ - @Deprecated - public static String getBpmnXmlStr(BpmnModel bpmnModel) { - return StringUtils.utf8Str(getBpmnXml(bpmnModel)); - } - - /** - * bpmnModel转xml对象 - * - * @deprecated 存在丢失 bpmn 连线问题 - * @param bpmnModel bpmnModel对象 - * @return xml - */ - @Deprecated - public static byte[] getBpmnXml(BpmnModel bpmnModel) { - return bpmnXMLConverter.convertToXML(bpmnModel); - } - - /** - * 根据节点,获取入口连线 - * - * @param source 起始节点 - * @return 入口连线列表 - */ - public static List getElementIncomingFlows(FlowElement source) { - List sequenceFlows = new ArrayList<>(); - if (source instanceof FlowNode) { - sequenceFlows = ((FlowNode) source).getIncomingFlows(); - } - return sequenceFlows; - } - - - /** - * 根据节点,获取出口连线 - * - * @param source 起始节点 - * @return 出口连线列表 - */ - public static List getElementOutgoingFlows(FlowElement source) { - List sequenceFlows = new ArrayList<>(); - if (source instanceof FlowNode) { - sequenceFlows = ((FlowNode) source).getOutgoingFlows(); - } - return sequenceFlows; - } - - /** - * 获取开始节点 - * - * @param model bpmnModel对象 - * @return 开始节点(未找到开始节点,返回null) - */ - public static StartEvent getStartEvent(BpmnModel model) { - Process process = model.getMainProcess(); - FlowElement startElement = process.getInitialFlowElement(); - if (startElement instanceof StartEvent) { - return (StartEvent) startElement; - } - return getStartEvent(process.getFlowElements()); - } - - /** - * 获取开始节点 - * - * @param flowElements 流程元素集合 - * @return 开始节点(未找到开始节点,返回null) - */ - public static StartEvent getStartEvent(Collection flowElements) { - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof StartEvent) { - return (StartEvent) flowElement; - } - } - return null; - } - - /** - * 获取结束节点 - * - * @param model bpmnModel对象 - * @return 结束节点(未找到开始节点,返回null) - */ - public static EndEvent getEndEvent(BpmnModel model) { - Process process = model.getMainProcess(); - return getEndEvent(process.getFlowElements()); - } - - /** - * 获取结束节点 - * - * @param flowElements 流程元素集合 - * @return 结束节点(未找到开始节点,返回null) - */ - public static EndEvent getEndEvent(Collection flowElements) { - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof EndEvent) { - return (EndEvent) flowElement; - } - } - return null; - } - - public static UserTask getUserTaskByKey(BpmnModel model, String taskKey) { - Process process = model.getMainProcess(); - FlowElement flowElement = process.getFlowElement(taskKey); - if (flowElement instanceof UserTask) { - return (UserTask) flowElement; - } - return null; - } - - /** - * 获取流程元素信息 - * - * @param model bpmnModel对象 - * @param flowElementId 元素ID - * @return 元素信息 - */ - public static FlowElement getFlowElementById(BpmnModel model, String flowElementId) { - Process process = model.getMainProcess(); - return process.getFlowElement(flowElementId); - } - - /** - * 获取元素表单Key(限开始节点和用户节点可用) - * - * @param flowElement 元素 - * @return 表单Key - */ - public static String getFormKey(FlowElement flowElement) { - if (flowElement != null) { - if (flowElement instanceof StartEvent) { - return ((StartEvent) flowElement).getFormKey(); - } else if (flowElement instanceof UserTask) { - return ((UserTask) flowElement).getFormKey(); - } - } - return null; - } - - /** - * 获取开始节点属性值 - * @param model bpmnModel对象 - * @param name 属性名 - * @return 属性值 - */ - public static String getStartEventAttributeValue(BpmnModel model, String name) { - StartEvent startEvent = getStartEvent(model); - return getElementAttributeValue(startEvent, name); - } - - /** - * 获取结束节点属性值 - * @param model bpmnModel对象 - * @param name 属性名 - * @return 属性值 - */ - public static String getEndEventAttributeValue(BpmnModel model, String name) { - EndEvent endEvent = getEndEvent(model); - return getElementAttributeValue(endEvent, name); - } - - /** - * 获取用户任务节点属性值 - * @param model bpmnModel对象 - * @param taskKey 任务Key - * @param name 属性名 - * @return 属性值 - */ - public static String getUserTaskAttributeValue(BpmnModel model, String taskKey, String name) { - UserTask userTask = getUserTaskByKey(model, taskKey); - return getElementAttributeValue(userTask, name); - } - - /** - * 获取元素属性值 - * @param baseElement 流程元素 - * @param name 属性名 - * @return 属性值 - */ - public static String getElementAttributeValue(BaseElement baseElement, String name) { - if (baseElement != null) { - List attributes = baseElement.getAttributes().get(name); - if (attributes != null && !attributes.isEmpty()) { - attributes.iterator().next().getValue(); - Iterator attrIterator = attributes.iterator(); - if(attrIterator.hasNext()) { - ExtensionAttribute attribute = attrIterator.next(); - return attribute.getValue(); - } - } - } - return null; - } - - public static boolean isMultiInstance(BpmnModel model, String taskKey) { - UserTask userTask = getUserTaskByKey(model, taskKey); - if (!Objects.isNull(userTask)) { - return userTask.hasMultiInstanceLoopCharacteristics(); - } - return false; - } - - /** - * 获取所有用户任务节点 - * - * @param model bpmnModel对象 - * @return 用户任务节点列表 - */ - public static Collection getAllUserTaskEvent(BpmnModel model) { - Process process = model.getMainProcess(); - Collection flowElements = process.getFlowElements(); - return getAllUserTaskEvent(flowElements, null); - } - - /** - * 获取所有用户任务节点 - * @param flowElements 流程元素集合 - * @param allElements 所有流程元素集合 - * @return 用户任务节点列表 - */ - public static Collection getAllUserTaskEvent(Collection flowElements, Collection allElements) { - allElements = allElements == null ? new ArrayList<>() : allElements; - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof UserTask) { - allElements.add((UserTask) flowElement); - } - if (flowElement instanceof SubProcess) { - // 继续深入子流程,进一步获取子流程 - allElements = getAllUserTaskEvent(((SubProcess) flowElement).getFlowElements(), allElements); - } - } - return allElements; - } - - /** - * 查找起始节点下一个用户任务列表列表 - * @param source 起始节点 - * @return 结果 - */ - public static List findNextUserTasks(FlowElement source) { - return findNextUserTasks(source, null, null); - } - - /** - * 查找起始节点下一个用户任务列表列表 - * @param source 起始节点 - * @param hasSequenceFlow 已经经过的连线的 ID,用于判断线路是否重复 - * @param userTaskList 用户任务列表 - * @return 结果 - */ - public static List findNextUserTasks(FlowElement source, Set hasSequenceFlow, List userTaskList) { - hasSequenceFlow = Optional.ofNullable(hasSequenceFlow).orElse(new HashSet<>()); - userTaskList = Optional.ofNullable(userTaskList).orElse(new ArrayList<>()); - // 获取出口连线 - List sequenceFlows = getElementOutgoingFlows(source); - if (!sequenceFlows.isEmpty()) { - for (SequenceFlow sequenceFlow : sequenceFlows) { - // 如果发现连线重复,说明循环了,跳过这个循环 - if (hasSequenceFlow.contains(sequenceFlow.getId())) { - continue; - } - // 添加已经走过的连线 - hasSequenceFlow.add(sequenceFlow.getId()); - FlowElement targetFlowElement = sequenceFlow.getTargetFlowElement(); - if (targetFlowElement instanceof UserTask) { - // 若节点为用户任务,加入到结果列表中 - userTaskList.add((UserTask) targetFlowElement); - } else { - // 若节点非用户任务,继续递归查找下一个节点 - findNextUserTasks(targetFlowElement, hasSequenceFlow, userTaskList); - } - } - } - return userTaskList; - } - - /** - * 迭代从后向前扫描,判断目标节点相对于当前节点是否是串行 - * 不存在直接回退到子流程中的情况,但存在从子流程出去到父流程情况 - * @param source 起始节点 - * @param target 目标节点 - * @param visitedElements 已经经过的连线的 ID,用于判断线路是否重复 - * @return 结果 - */ - public static boolean isSequentialReachable(FlowElement source, FlowElement target, Set visitedElements) { - visitedElements = visitedElements == null ? new HashSet<>() : visitedElements; - if (source instanceof StartEvent && isInEventSubprocess(source)) { - return false; - } - - // 根据类型,获取入口连线 - List sequenceFlows = getElementIncomingFlows(source); - if (sequenceFlows != null && sequenceFlows.size() > 0) { - // 循环找到目标元素 - for (SequenceFlow sequenceFlow: sequenceFlows) { - // 如果发现连线重复,说明循环了,跳过这个循环 - if (visitedElements.contains(sequenceFlow.getId())) { - continue; - } - // 添加已经走过的连线 - visitedElements.add(sequenceFlow.getId()); - FlowElement sourceFlowElement = sequenceFlow.getSourceFlowElement(); - // 这条线路存在目标节点,这条线路完成,进入下个线路 - if (target.getId().equals(sourceFlowElement.getId())) { - continue; - } - // 如果目标节点为并行网关,则不继续 - if (sourceFlowElement instanceof ParallelGateway) { - return false; - } - // 否则就继续迭代 - boolean isSequential = isSequentialReachable(sourceFlowElement, target, visitedElements); - if (!isSequential) { - return false; - } - } - } - return true; - } - - protected static boolean isInEventSubprocess(FlowElement flowElement) { - FlowElementsContainer flowElementsContainer = flowElement.getParentContainer(); - while (flowElementsContainer != null) { - if (flowElementsContainer instanceof EventSubProcess) { - return true; - } - - if (flowElementsContainer instanceof FlowElement) { - flowElementsContainer = ((FlowElement) flowElementsContainer).getParentContainer(); - } else { - flowElementsContainer = null; - } - } - return false; - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/IRemoteSystemService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/IRemoteSystemService.java new file mode 100644 index 00000000..5b72cb52 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/IRemoteSystemService.java @@ -0,0 +1,35 @@ +package com.yanzhu.flowable.rpc; + +import com.yanzhu.common.core.constant.SecurityConstants; +import com.yanzhu.common.core.constant.ServiceNameConstants; +import com.yanzhu.common.core.domain.R; +import com.yanzhu.system.api.domain.SysRole; +import com.yanzhu.system.api.domain.SysUser; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; +import java.util.Map; + +/** + * system rpc接口调用 + */ +@FeignClient(value = ServiceNameConstants.SYSTEM_SERVICE) +public interface IRemoteSystemService { + + @GetMapping("/rpc/user/list") + R> getUsers(@RequestParam Map paraMap, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/rpc/user/{userId}") + R getUserById(@PathVariable(value = "userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/rpc/role/list") + R> getRoles(@RequestParam Map paraMap, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/rpc/role/{roleId}") + R getRoleById(@PathVariable(value = "roleId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/RemoteSystemService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/RemoteSystemService.java new file mode 100644 index 00000000..8cb190cc --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/rpc/RemoteSystemService.java @@ -0,0 +1,72 @@ +package com.yanzhu.flowable.rpc; + +import com.yanzhu.common.core.constant.SecurityConstants; +import com.yanzhu.common.core.domain.R; +import com.yanzhu.common.core.exception.ServiceException; +import com.yanzhu.common.core.utils.bean.BeanUtils; +import com.yanzhu.common.core.web.domain.BaseEntity; +import com.yanzhu.system.api.domain.SysRole; +import com.yanzhu.system.api.domain.SysUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Service +public class RemoteSystemService { + + @Autowired + private IRemoteSystemService remoteSystemService; + + private List resultToList(R> dataResult) { + if (R.FAIL == dataResult.getCode()) { + throw new ServiceException(dataResult.getMsg()); + } + return dataResult.getData(); + } + + private T resultToBean(R dataResult) { + if (R.FAIL == dataResult.getCode()) { + throw new ServiceException(dataResult.getMsg()); + } + return dataResult.getData(); + } + + public List getUsers(SysUser sysUser) { + //远程调用system接口获取所有电站信息 + R> dataResult = remoteSystemService.getUsers(beanToMap(sysUser), SecurityConstants.INNER); + return resultToList(dataResult); + } + + public List getRoles(SysRole sysRole) { + //远程调用system接口获取所有电站信息 + R> dataResult = remoteSystemService.getRoles(beanToMap(sysRole), SecurityConstants.INNER); + return resultToList(dataResult); + } + + private Map beanToMap(Object obj) { + try { + Map paraMap = BeanUtils.beanToMap(obj); + if (obj instanceof BaseEntity) { + paraMap.remove("params"); + } + return paraMap; + }catch (Exception e){ + throw new ServiceException(e.getMessage()); + } + } + + public SysUser getUserById(Long userId) { + //远程调用system接口获取所有电站信息 + R dataResult = remoteSystemService.getUserById(userId, SecurityConstants.INNER); + return resultToBean(dataResult); + } + + public SysRole getRoleById(Long roleId) { + //远程调用system接口获取所有电站信息 + R dataResult = remoteSystemService.getRoleById(roleId, SecurityConstants.INNER); + return resultToBean(dataResult); + } + +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowDefinitionService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowDefinitionService.java new file mode 100644 index 00000000..d93585c6 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowDefinitionService.java @@ -0,0 +1,78 @@ +package com.yanzhu.flowable.service; + +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.flowable.domain.dto.FlowProcDefDto; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.Map; + +/** + * @author Tony + * @date 2021-04-03 14:41 + */ +public interface IFlowDefinitionService { + + boolean exist(String processDefinitionKey); + + + /** + * 流程定义列表 + * + * @return 流程定义分页列表数据 + */ + List list(String name); + + /** + * 导入流程文件 + * 当每个key的流程第一次部署时,指定版本为1。对其后所有使用相同key的流程定义, + * 部署时版本会在该key当前已部署的最高版本号基础上加1。key参数用于区分流程定义 + * @param name + * @param category + * @param in + */ + void importFile(String name, String category, InputStream in); + + /** + * 读取xml + * @param deployId + * @return + */ + AjaxResult readXml(String deployId) throws IOException; + + /** + * 根据流程定义ID启动流程实例 + * + * @param procDefId + * @param variables + * @return + */ + + AjaxResult startProcessInstanceById(String procDefId, Map variables); + + + /** + * 激活或挂起流程定义 + * + * @param state 状态 + * @param deployId 流程部署ID + */ + void updateState(Integer state, String deployId); + + + /** + * 删除流程定义 + * + * @param deployId 流程部署ID act_ge_bytearray 表中 deployment_id值 + */ + void delete(String deployId); + + + /** + * 读取图片文件 + * @param deployId + * @return + */ + InputStream readImage(String deployId); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowInstanceService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowInstanceService.java new file mode 100644 index 00000000..acc69698 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowInstanceService.java @@ -0,0 +1,54 @@ +package com.yanzhu.flowable.service; + +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.flowable.domain.vo.FlowTaskVo; +import org.flowable.engine.history.HistoricProcessInstance; + +import java.util.Map; + +/** + * @author Tony + * @date 2021-04-03 14:40 + */ +public interface IFlowInstanceService { + + /** + * 结束流程实例 + * + * @param vo + */ + void stopProcessInstance(FlowTaskVo vo); + + /** + * 激活或挂起流程实例 + * + * @param state 状态 + * @param instanceId 流程实例ID + */ + void updateState(Integer state, String instanceId); + + /** + * 删除流程实例ID + * + * @param instanceId 流程实例ID + * @param deleteReason 删除原因 + */ + void delete(String instanceId, String deleteReason); + + /** + * 根据实例ID查询历史实例数据 + * + * @param processInstanceId + * @return + */ + HistoricProcessInstance getHistoricProcessInstanceById(String processInstanceId); + + /** + * 根据流程定义ID启动流程实例 + * + * @param procDefId 流程定义Id + * @param variables 流程变量 + * @return + */ + AjaxResult startProcessInstanceById(String procDefId, Map variables); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowTaskService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowTaskService.java new file mode 100644 index 00000000..05022155 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowTaskService.java @@ -0,0 +1,217 @@ +package com.yanzhu.flowable.service; + +import com.github.pagehelper.PageInfo; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.flowable.domain.dto.FlowTaskDto; +import com.yanzhu.flowable.domain.vo.FlowQueryVo; +import com.yanzhu.flowable.domain.vo.FlowTaskVo; + +import java.io.InputStream; + +/** + * @author Tony + * @date 2021-04-03 14:42 + */ +public interface IFlowTaskService { + + /** + * 审批任务 + * + * @param task 请求实体参数 + */ + AjaxResult complete(FlowTaskVo task); + + /** + * 驳回任务 + * + * @param flowTaskVo + */ + void taskReject(FlowTaskVo flowTaskVo); + + + /** + * 退回任务 + * + * @param flowTaskVo 请求实体参数 + */ + void taskReturn(FlowTaskVo flowTaskVo); + + /** + * 获取所有可回退的节点 + * + * @param flowTaskVo + * @return + */ + AjaxResult findReturnTaskList(FlowTaskVo flowTaskVo); + + /** + * 删除任务 + * + * @param flowTaskVo 请求实体参数 + */ + void deleteTask(FlowTaskVo flowTaskVo); + + /** + * 认领/签收任务 + * + * @param flowTaskVo 请求实体参数 + */ + void claim(FlowTaskVo flowTaskVo); + + /** + * 取消认领/签收任务 + * + * @param flowTaskVo 请求实体参数 + */ + void unClaim(FlowTaskVo flowTaskVo); + + /** + * 委派任务 + * + * @param flowTaskVo 请求实体参数 + */ + void delegateTask(FlowTaskVo flowTaskVo); + + /** + * 任务归还 + * + * @param flowTaskVo 请求实体参数 + */ + void resolveTask(FlowTaskVo flowTaskVo); + + + /** + * 转办任务 + * + * @param flowTaskVo 请求实体参数 + */ + void assignTask(FlowTaskVo flowTaskVo); + + + /** + * 多实例加签 + * @param flowTaskVo + */ + void addMultiInstanceExecution(FlowTaskVo flowTaskVo); + + /** + * 多实例减签 + * @param flowTaskVo + */ + void deleteMultiInstanceExecution(FlowTaskVo flowTaskVo); + + /** + * 我发起的流程 + * @param queryVo 请求参数 + * @return + */ + PageInfo myProcess(FlowQueryVo queryVo); + + /** + * 取消申请 + * 目前实现方式: 直接将当前流程变更为已完成 + * @param flowTaskVo + * @return + */ + AjaxResult stopProcess(FlowTaskVo flowTaskVo); + + /** + * 撤回流程 + * @param flowTaskVo + * @return + */ + AjaxResult revokeProcess(FlowTaskVo flowTaskVo); + + + /** + * 代办任务列表 + * + * @param queryVo 请求参数 + * @return + */ + PageInfo todoList(FlowQueryVo queryVo); + + + /** + * 已办任务列表 + * + * @param queryVo 请求参数 + * @return + */ + PageInfo finishedList(FlowQueryVo queryVo); + + /** + * 流程历史流转记录 + * + * @param procInsId 流程实例Id + * @return + */ + AjaxResult flowRecord(String procInsId,String deployId); + + /** + * 根据任务ID查询挂载的表单信息 + * + * @param taskId 任务Id + * @return + */ + AjaxResult getTaskForm(String taskId); + + /** + * 获取流程过程图 + * @param processId + * @return + */ + InputStream diagram(String processId); + + /** + * 获取流程执行节点 + * @param procInsId + * @return + */ + AjaxResult getFlowViewer(String procInsId,String executionId); + + /** + * 获取流程变量 + * @param taskId + * @return + */ + AjaxResult processVariables(String taskId); + + /** + * 获取下一节点 + * @param flowTaskVo 任务 + * @return + */ + AjaxResult getNextFlowNode(FlowTaskVo flowTaskVo); + + AjaxResult getNextFlowNodeByStart(FlowTaskVo flowTaskVo); + + /** + * 流程初始化表单 + * @param deployId + * @return + */ + AjaxResult flowFormData(String deployId); + + /** + * 流程节点信息 + * @param procInsId + * @return + */ + AjaxResult flowXmlAndNode(String procInsId,String deployId); + + /** + * 流程节点表单 + * @param taskId 流程任务编号 + * @return + */ + AjaxResult flowTaskForm(String taskId) throws Exception; + + /** + * 流程节点信息 + * @param procInsId + * @param elementId + * @return + */ + AjaxResult flowTaskInfo(String procInsId, String elementId); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableCategoryService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableCategoryService.java deleted file mode 100644 index 6cd98a46..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableCategoryService.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.yanzhu.flowable.service; - -import com.yanzhu.flowable.domain.FlowableCategory; - -import java.util.List; -import java.util.Map; - -/** - * 流程分类Service接口 - * - * @author ruoyi - * @date 2023-11-27 - */ -public interface IFlowableCategoryService -{ - /** - * 查询流程分类 - * - * @param id 流程分类主键 - * @return 流程分类 - */ - public FlowableCategory selectFlowableCategoryById(Long id); - - /** - * 查询流程分类列表 - * - * @param flowableCategory 流程分类 - * @return 流程分类集合 - */ - public List selectFlowableCategoryList(FlowableCategory flowableCategory); - - /** - * 新增流程分类 - * - * @param flowableCategory 流程分类 - * @return 结果 - */ - public int insertFlowableCategory(FlowableCategory flowableCategory); - - /** - * 修改流程分类 - * - * @param flowableCategory 流程分类 - * @return 结果 - */ - public int updateFlowableCategory(FlowableCategory flowableCategory); - - /** - * 批量删除流程分类 - * - * @param ids 需要删除的流程分类主键集合 - * @return 结果 - */ - public int deleteFlowableCategoryByIds(Long[] ids); - - /** - * 删除流程分类信息 - * - * @param id 流程分类主键 - * @return 结果 - */ - public int deleteFlowableCategoryById(Long id); - - /** - * 更新缓存 - * @param flowableCategories - */ - public Map updateRedis(List flowableCategories); -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableDeployService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableDeployService.java deleted file mode 100644 index 735452d1..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableDeployService.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.yanzhu.flowable.service; - -import com.yanzhu.flowable.domain.FlowableDeploy; - -import java.util.List; - -/** - * 流程部署Service接口 - * - * @author ruoyi - * @date 2023-12-18 - */ -public interface IFlowableDeployService -{ - /** - * 查询流程部署 - * - * @param definitionId 流程部署主键 - * @return 流程部署 - */ - public FlowableDeploy selectFlowableDeployByDefinitionId(String definitionId); - - /** - * 查询流程部署列表 - * - * @param flowableDeploy 流程部署 - * @return 流程部署集合 - */ - public List selectFlowableDeployList(FlowableDeploy flowableDeploy); - - - /** - * 批量删除流程部署 - * - * @param definitionIds 需要删除的流程部署主键集合 - * @return 结果 - */ - public int deleteFlowableDeployByDefinitionIds(String[] definitionIds); - - /** - * 删除流程部署信息 - * - * @param definitionId 流程部署主键 - * @return 结果 - */ - public int deleteFlowableDeployByDefinitionId(String definitionId); - - /** - * 查询所有部署的历史版本 - * @param processKey 流程key - * @return - */ - public List queryPublishList(String processKey); - - /** - * 改变部署状态 - * @param definitionId - * @param stateCode - */ - public void updateState(String definitionId, String stateCode); - - /** - * 查询流程图 - * @param definitionId - * @return - */ - public String queryBpmnXmlById(String definitionId); -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldDefService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldDefService.java deleted file mode 100644 index 91044591..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldDefService.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.yanzhu.flowable.service; - -import com.yanzhu.flowable.domain.FlowableFieldDef; -import com.yanzhu.flowable.domain.FlowableFieldSearch; - -import java.util.List; - -/** - * 流程字段定义Service接口 - * - * @author ruoyi - * @date 2023-12-26 - */ -public interface IFlowableFieldDefService -{ - /** - * 查询流程字段定义 - * - * @param id 流程字段定义主键 - * @return 流程字段定义 - */ - public FlowableFieldDef selectFlowableFieldDefById(String id); - - /** - * 查询流程字段定义列表 - * - * @param flowableFieldDef 流程字段定义 - * @return 流程字段定义集合 - */ - public List selectFlowableFieldDefList(FlowableFieldDef flowableFieldDef); - - /** - * 新增流程字段定义 - * - * @param flowableFieldDef 流程字段定义 - * @return 结果 - */ - public int insertFlowableFieldDef(FlowableFieldDef flowableFieldDef); - - /** - * 修改流程字段定义 - * - * @param flowableFieldDef 流程字段定义 - * @return 结果 - */ - public int updateFlowableFieldDef(FlowableFieldDef flowableFieldDef); - - /** - * 批量删除流程字段定义 - * - * @param ids 需要删除的流程字段定义主键集合 - * @return 结果 - */ - public int deleteFlowableFieldDefByIds(String[] ids); - - /** - * 删除流程字段定义信息 - * - * @param id 流程字段定义主键 - * @return 结果 - */ - public int deleteFlowableFieldDefById(String id); - - /** - * 查询流程字段引用关系列表(不翻页,关联字段定义表查询) - * @param flowableFieldSearch - * @return - */ - List listCombination(FlowableFieldSearch flowableFieldSearch); -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldRefService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldRefService.java deleted file mode 100644 index 1edcb29b..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableFieldRefService.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.yanzhu.flowable.service; - -import com.yanzhu.flowable.domain.FlowableFieldRef; - -import java.util.List; - -/** - * 流程字段引用关系Service接口 - * - * @author ruoyi - * @date 2023-12-26 - */ -public interface IFlowableFieldRefService -{ - /** - * 查询流程字段引用关系 - * - * @param id 流程字段引用关系主键 - * @return 流程字段引用关系 - */ - public FlowableFieldRef selectFlowableFieldRefById(String id); - - /** - * 查询流程字段引用关系列表 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 流程字段引用关系集合 - */ - public List selectFlowableFieldRefList(FlowableFieldRef flowableFieldRef); - - /** - * 新增流程字段引用关系 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 结果 - */ - public int insertFlowableFieldRef(FlowableFieldRef flowableFieldRef); - - /** - * 修改流程字段引用关系 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 结果 - */ - public int updateFlowableFieldRef(FlowableFieldRef flowableFieldRef); - - /** - * 批量删除流程字段引用关系 - * - * @param ids 需要删除的流程字段引用关系主键集合 - * @return 结果 - */ - public int deleteFlowableFieldRefByIds(String[] ids); - - /** - * 删除流程字段引用关系信息 - * - * @param id 流程字段引用关系主键 - * @return 结果 - */ - public int deleteFlowableFieldRefById(String id); -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelPageService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelPageService.java deleted file mode 100644 index 5dfa47e1..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelPageService.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.yanzhu.flowable.service; - -import com.yanzhu.flowable.domain.FlowableModelPage; - -import java.util.List; - -/** - * 建模页面绑定Service接口 - * - * @author ruoyi - * @date 2023-12-25 - */ -public interface IFlowableModelPageService -{ - /** - * 查询建模页面绑定 - * - * @param id 建模页面绑定主键 - * @return 建模页面绑定 - */ - public FlowableModelPage selectFlowableModelPageById(String id); - - /** - * 查询建模页面绑定列表 - * - * @param flowableModelPage 建模页面绑定 - * @return 建模页面绑定集合 - */ - public List selectFlowableModelPageList(FlowableModelPage flowableModelPage); - - /** - * 新增建模页面绑定 - * - * @param flowableModelPage 建模页面绑定 - * @return 结果 - */ - public int insertFlowableModelPage(FlowableModelPage flowableModelPage); - - /** - * 修改建模页面绑定 - * - * @param flowableModelPage 建模页面绑定 - * @return 结果 - */ - public int updateFlowableModelPage(FlowableModelPage flowableModelPage); - - /** - * 批量删除建模页面绑定 - * - * @param ids 需要删除的建模页面绑定主键集合 - * @return 结果 - */ - public int deleteFlowableModelPageByIds(String[] ids); - - /** - * 删除建模页面绑定信息 - * - * @param id 建模页面绑定主键 - * @return 结果 - */ - public int deleteFlowableModelPageById(String id); - - /** - * 查询需要绑定的建模页面 - * @param flowableModelPage - * @return - */ - List selectFlowableModelPageListByBind(FlowableModelPage flowableModelPage); - - /*** - * 建模页面单页面查询(根据模块,流程标识,页面名称查询) - * @param flowableModelPage - * @return - */ - FlowableModelPage selectFlowableModelPageSingle(FlowableModelPage flowableModelPage); - - /** - * 建模页面模块页面查询(按模块,流程标识查询) - * @param flowableModelPage - * @return - */ - List selectFlowableModelPage(FlowableModelPage flowableModelPage); -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelService.java deleted file mode 100644 index 99deea99..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/IFlowableModelService.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.yanzhu.flowable.service; - -import com.yanzhu.flowable.domain.FlowableModel; -import com.yanzhu.flowable.domain.bo.FlowableModelBo; - -import java.io.UnsupportedEncodingException; -import java.util.List; - -/** - * 流程模型Service接口 - * - * @author ruoyi - * @date 2023-11-28 - */ -public interface IFlowableModelService -{ - /** - * 查询流程模型 - * - * @param modelId 流程模型主键 - * @return 流程模型 - */ - public FlowableModel selectFlowableModelByModelId(String modelId); - - /** - * 查询流程模型列表 - * - * @param flowableModel 流程模型 - * @return 流程模型集合 - */ - public List selectFlowableModelList(FlowableModelBo flowableModel); - - /** - * 新增流程模型 - * - * @param flowableModel 流程模型 - * @return - */ - public int insertFlowableModel(FlowableModel flowableModel); - - /** - * 修改流程模型 - * - * @param flowableModel 流程模型 - * @return - */ - public int updateFlowableModel(FlowableModel flowableModel); - - /** - * 批量删除流程模型 - * - * @param modelIds 需要删除的流程模型主键集合 - * @return - */ - public int deleteFlowableModelByModelIds(String[] modelIds); - - /** - * 删除流程模型信息 - * - * @param modelId 流程模型主键 - */ - public void deleteFlowableModelByModelId(String modelId); - - /** - * 部署流程 - * @param modelId 模型id - */ - public void deployModel(String modelId) throws UnsupportedEncodingException; - - /** - * 获取模型xml - * @param modelId - * @return - * @throws UnsupportedEncodingException - */ - public String queryBpmnXmlById(String modelId) throws UnsupportedEncodingException; - - /** - * 查询模型历史版本 - * @param modelBo - * @return - */ - List historyList(FlowableModelBo modelBo); - - /** - * 新增或更新模型xml - * @param modelBo - */ - void saveModel(FlowableModelBo modelBo); - - /** - * 设置为最新版本 - * @param modelId - */ - void latestModel(String modelId) throws UnsupportedEncodingException; -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysDeployFormService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysDeployFormService.java new file mode 100644 index 00000000..01ff72bc --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysDeployFormService.java @@ -0,0 +1,70 @@ +package com.yanzhu.flowable.service; + +import com.yanzhu.flowable.domain.SysDeployForm; +import com.yanzhu.flowable.domain.SysForm; + +import java.util.List; + +/** + * 流程实例关联表单Service接口 + * + * @author Tony + * @date 2021-04-03 + */ +public interface ISysDeployFormService +{ + /** + * 查询流程实例关联表单 + * + * @param id 流程实例关联表单ID + * @return 流程实例关联表单 + */ + public SysDeployForm selectSysDeployFormById(Long id); + + /** + * 查询流程实例关联表单列表 + * + * @param sysDeployForm 流程实例关联表单 + * @return 流程实例关联表单集合 + */ + public List selectSysDeployFormList(SysDeployForm sysDeployForm); + + /** + * 新增流程实例关联表单 + * + * @param sysDeployForm 流程实例关联表单 + * @return 结果 + */ + public int insertSysDeployForm(SysDeployForm sysDeployForm); + + /** + * 修改流程实例关联表单 + * + * @param sysDeployForm 流程实例关联表单 + * @return 结果 + */ + public int updateSysDeployForm(SysDeployForm sysDeployForm); + + /** + * 批量删除流程实例关联表单 + * + * @param ids 需要删除的流程实例关联表单ID + * @return 结果 + */ + public int deleteSysDeployFormByIds(Long[] ids); + + /** + * 删除流程实例关联表单信息 + * + * @param id 流程实例关联表单ID + * @return 结果 + */ + public int deleteSysDeployFormById(Long id); + + /** + * 查询流程挂着的表单 + * @param deployId + * @return + */ + SysForm selectSysDeployFormByDeployId(String deployId); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysExpressionService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysExpressionService.java new file mode 100644 index 00000000..be744bbb --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysExpressionService.java @@ -0,0 +1,62 @@ +package com.yanzhu.flowable.service; + +import com.yanzhu.flowable.domain.SysExpression; + +import java.util.List; + +/** + * 流程达式Service接口 + * + * @author ruoyi + * @date 2022-12-12 + */ +public interface ISysExpressionService +{ + /** + * 查询流程达式 + * + * @param id 流程达式主键 + * @return 流程达式 + */ + public SysExpression selectSysExpressionById(Long id); + + /** + * 查询流程达式列表 + * + * @param sysExpression 流程达式 + * @return 流程达式集合 + */ + public List selectSysExpressionList(SysExpression sysExpression); + + /** + * 新增流程达式 + * + * @param sysExpression 流程达式 + * @return 结果 + */ + public int insertSysExpression(SysExpression sysExpression); + + /** + * 修改流程达式 + * + * @param sysExpression 流程达式 + * @return 结果 + */ + public int updateSysExpression(SysExpression sysExpression); + + /** + * 批量删除流程达式 + * + * @param ids 需要删除的流程达式主键集合 + * @return 结果 + */ + public int deleteSysExpressionByIds(Long[] ids); + + /** + * 删除流程达式信息 + * + * @param id 流程达式主键 + * @return 结果 + */ + public int deleteSysExpressionById(Long id); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysFormService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysFormService.java new file mode 100644 index 00000000..98a844ad --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysFormService.java @@ -0,0 +1,61 @@ +package com.yanzhu.flowable.service; + +import com.yanzhu.flowable.domain.SysForm; + +import java.util.List; + +/** + * 表单 + * @author Tony + * @date 2021-04-03 + */ +public interface ISysFormService +{ + /** + * 查询流程表单 + * + * @param formId 流程表单ID + * @return 流程表单 + */ + public SysForm selectSysFormById(Long formId); + + /** + * 查询流程表单列表 + * + * @param sysForm 流程表单 + * @return 流程表单集合 + */ + public List selectSysFormList(SysForm sysForm); + + /** + * 新增流程表单 + * + * @param sysForm 流程表单 + * @return 结果 + */ + public int insertSysForm(SysForm sysForm); + + /** + * 修改流程表单 + * + * @param sysForm 流程表单 + * @return 结果 + */ + public int updateSysForm(SysForm sysForm); + + /** + * 批量删除流程表单 + * + * @param formIds 需要删除的流程表单ID + * @return 结果 + */ + public int deleteSysFormByIds(Long[] formIds); + + /** + * 删除流程表单信息 + * + * @param formId 流程表单ID + * @return 结果 + */ + public int deleteSysFormById(Long formId); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysListenerService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysListenerService.java new file mode 100644 index 00000000..4b11a78f --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysListenerService.java @@ -0,0 +1,62 @@ +package com.yanzhu.flowable.service; + +import com.yanzhu.flowable.domain.SysListener; + +import java.util.List; + +/** + * 流程监听Service接口 + * + * @author Tony + * @date 2022-12-25 + */ +public interface ISysListenerService +{ + /** + * 查询流程监听 + * + * @param id 流程监听主键 + * @return 流程监听 + */ + public SysListener selectSysListenerById(Long id); + + /** + * 查询流程监听列表 + * + * @param sysListener 流程监听 + * @return 流程监听集合 + */ + public List selectSysListenerList(SysListener sysListener); + + /** + * 新增流程监听 + * + * @param sysListener 流程监听 + * @return 结果 + */ + public int insertSysListener(SysListener sysListener); + + /** + * 修改流程监听 + * + * @param sysListener 流程监听 + * @return 结果 + */ + public int updateSysListener(SysListener sysListener); + + /** + * 批量删除流程监听 + * + * @param ids 需要删除的流程监听主键集合 + * @return 结果 + */ + public int deleteSysListenerByIds(Long[] ids); + + /** + * 删除流程监听信息 + * + * @param id 流程监听主键 + * @return 结果 + */ + public int deleteSysListenerById(Long id); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysTaskFormService.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysTaskFormService.java new file mode 100644 index 00000000..c269e24b --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/ISysTaskFormService.java @@ -0,0 +1,62 @@ +package com.yanzhu.flowable.service; + +import com.yanzhu.flowable.domain.SysTaskForm; + +import java.util.List; + +/** + * 流程任务关联单Service接口 + * + * @author Tony + * @date 2021-04-03 + */ +@Deprecated +public interface ISysTaskFormService { + /** + * 查询流程任务关联单 + * + * @param id 流程任务关联单ID + * @return 流程任务关联单 + */ + public SysTaskForm selectSysTaskFormById(Long id); + + /** + * 查询流程任务关联单列表 + * + * @param sysTaskForm 流程任务关联单 + * @return 流程任务关联单集合 + */ + public List selectSysTaskFormList(SysTaskForm sysTaskForm); + + /** + * 新增流程任务关联单 + * + * @param sysTaskForm 流程任务关联单 + * @return 结果 + */ + public int insertSysTaskForm(SysTaskForm sysTaskForm); + + /** + * 修改流程任务关联单 + * + * @param sysTaskForm 流程任务关联单 + * @return 结果 + */ + public int updateSysTaskForm(SysTaskForm sysTaskForm); + + /** + * 批量删除流程任务关联单 + * + * @param ids 需要删除的流程任务关联单ID + * @return 结果 + */ + public int deleteSysTaskFormByIds(Long[] ids); + + /** + * 删除流程任务关联单信息 + * + * @param id 流程任务关联单ID + * @return 结果 + */ + public int deleteSysTaskFormById(Long id); +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowDefinitionServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowDefinitionServiceImpl.java new file mode 100644 index 00000000..505a5740 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowDefinitionServiceImpl.java @@ -0,0 +1,232 @@ +package com.yanzhu.flowable.service.impl; + +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.flowable.common.constant.ProcessConstants; +import com.yanzhu.flowable.domain.SysForm; +import com.yanzhu.flowable.domain.dto.FlowProcDefDto; +import com.yanzhu.flowable.factory.FlowServiceFactory; +import com.yanzhu.flowable.mapper.FlowDeployMapper; +import com.yanzhu.flowable.service.IFlowDefinitionService; +import com.yanzhu.flowable.service.ISysDeployFormService; +import com.yanzhu.system.api.domain.SysUser; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.flowable.bpmn.model.BpmnModel; +import org.flowable.engine.repository.Deployment; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.repository.ProcessDefinitionQuery; +import org.flowable.image.impl.DefaultProcessDiagramGenerator; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * 流程定义 + * + * @author Tony + * @date 2021-04-03 + */ +@Service +@Slf4j +public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFlowDefinitionService { + + @Resource + private ISysDeployFormService sysDeployFormService; + + @Resource + private FlowDeployMapper flowDeployMapper; + + private static final String BPMN_FILE_SUFFIX = ".bpmn"; + + @Override + public boolean exist(String processDefinitionKey) { + ProcessDefinitionQuery processDefinitionQuery + = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processDefinitionKey); + long count = processDefinitionQuery.count(); + return count > 0 ? true : false; + } + + + /** + * 流程定义列表 + * + * @return 流程定义分页列表数据 + */ + @Override + public List list(String name) { + + final List dataList = flowDeployMapper.selectDeployList(name); + // 加载挂表单 + for (FlowProcDefDto procDef : dataList) { + SysForm sysForm = sysDeployFormService.selectSysDeployFormByDeployId(procDef.getDeploymentId()); + if (Objects.nonNull(sysForm)) { + procDef.setFormName(sysForm.getFormName()); + procDef.setFormId(sysForm.getFormId()); + } + } + return dataList; + } + + /** + * 列表转换 + * @param name + * @return + public Page list(String name) { + Page page = new Page<>(); + + PageHelper.startPage(pageNum, pageSize); + final List dataList = flowDeployMapper.selectDeployList(name); + // 加载挂表单 + for (FlowProcDefDto procDef : dataList) { + SysForm sysForm = sysDeployFormService.selectSysDeployFormByDeployId(procDef.getDeploymentId()); + if (Objects.nonNull(sysForm)) { + procDef.setFormName(sysForm.getFormName()); + procDef.setFormId(sysForm.getFormId()); + } + } + page.setTotal(new PageInfo(dataList).getTotal()); + // todo page.setRecords(dataList); + return page; + } + */ + + /** + * 导入流程文件 + * + * 当每个key的流程第一次部署时,指定版本为1。对其后所有使用相同key的流程定义, + * 部署时版本会在该key当前已部署的最高版本号基础上加1。key参数用于区分流程定义 + * @param name + * @param category + * @param in + */ + @Override + public void importFile(String name, String category, InputStream in) { + Deployment deploy = repositoryService.createDeployment().addInputStream(name + BPMN_FILE_SUFFIX, in).name(name).category(category).deploy(); + ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult(); + repositoryService.setProcessDefinitionCategory(definition.getId(), category); + + } + + /** + * 读取xml + * + * @param deployId + * @return + */ + @Override + public AjaxResult readXml(String deployId) throws IOException { + ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deployId).singleResult(); + InputStream inputStream = repositoryService.getResourceAsStream(definition.getDeploymentId(), definition.getResourceName()); + String result = IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()); + return AjaxResult.success("", result); + } + + /** + * 读取xml + * + * @param deployId + * @return + */ + @Override + public InputStream readImage(String deployId) { + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployId).singleResult(); + //获得图片流 + DefaultProcessDiagramGenerator diagramGenerator = new DefaultProcessDiagramGenerator(); + BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); + //输出为图片 + return diagramGenerator.generateDiagram( + bpmnModel, + "png", + Collections.emptyList(), + Collections.emptyList(), + "宋体", + "宋体", + "宋体", + null, + 1.0, + false); + + } + + /** + * 根据流程定义ID启动流程实例 + * + * @param procDefId 流程模板ID + * @param variables 流程变量 + * @return + */ + @Override + public AjaxResult startProcessInstanceById(String procDefId, Map variables) { + try { + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId) + .latestVersion().singleResult(); + if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) { + return AjaxResult.error("流程已被挂起,请先激活流程"); + } + // 设置流程发起人Id到流程中 + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + identityService.setAuthenticatedUserId(sysUser.getUserId().toString()); + variables.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId()); + runtimeService.startProcessInstanceById(procDefId, variables); + + // 流程发起时 跳过发起人节点 +// SysUser sysUser = SecurityUtils.getLoginUser().getUser(); +// identityService.setAuthenticatedUserId(sysUser.getUserId().toString()); +// variables.put(ProcessConstants.PROCESS_INITIATOR, ""); +// ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables); +// // 给第一步申请人节点设置任务执行人和意见 +// Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult(); +// if (Objects.nonNull(task)) { +// taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), sysUser.getNickName() + "发起流程申请"); +//// taskService.setAssignee(task.getId(), sysUser.getUserId().toString()); +// taskService.complete(task.getId(), variables); +// } + return AjaxResult.success("流程启动成功"); + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.error("流程启动错误"); + } + } + + + /** + * 激活或挂起流程定义 + * + * @param state 状态 + * @param deployId 流程部署ID + */ + @Override + public void updateState(Integer state, String deployId) { + ProcessDefinition procDef = repositoryService.createProcessDefinitionQuery().deploymentId(deployId).singleResult(); + // 激活 + if (state == 1) { + repositoryService.activateProcessDefinitionById(procDef.getId(), true, null); + } + // 挂起 + if (state == 2) { + repositoryService.suspendProcessDefinitionById(procDef.getId(), true, null); + } + } + + + /** + * 删除流程定义 + * + * @param deployId 流程部署ID act_ge_bytearray 表中 deployment_id值 + */ + @Override + public void delete(String deployId) { + // true 允许级联删除 ,不设置会导致数据库外键关联异常 + repositoryService.deleteDeployment(deployId, true); + } + + +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowInstanceServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowInstanceServiceImpl.java new file mode 100644 index 00000000..6727b5f8 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowInstanceServiceImpl.java @@ -0,0 +1,118 @@ +package com.yanzhu.flowable.service.impl; + +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.flowable.domain.vo.FlowTaskVo; +import com.yanzhu.flowable.factory.FlowServiceFactory; +import com.yanzhu.flowable.service.IFlowInstanceService; +import lombok.extern.slf4j.Slf4j; +import org.flowable.common.engine.api.FlowableObjectNotFoundException; +import org.flowable.engine.history.HistoricProcessInstance; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Map; +import java.util.Objects; + +/** + *

工作流流程实例管理

+ * + * @author Tony + * @date 2021-04-03 + */ +@Service +@Slf4j +public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlowInstanceService { + + /** + * 结束流程实例 + * + * @param vo + */ + @Override + public void stopProcessInstance(FlowTaskVo vo) { + String taskId = vo.getTaskId(); + + } + + /** + * 激活或挂起流程实例 + * + * @param state 状态 + * @param instanceId 流程实例ID + */ + @Override + public void updateState(Integer state, String instanceId) { + + // 激活 + if (state == 1) { + runtimeService.activateProcessInstanceById(instanceId); + } + // 挂起 + if (state == 2) { + runtimeService.suspendProcessInstanceById(instanceId); + } + } + + /** + * 删除流程实例ID + * + * @param instanceId 流程实例ID + * @param deleteReason 删除原因 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String instanceId, String deleteReason) { + + // 查询历史数据 + HistoricProcessInstance historicProcessInstance = getHistoricProcessInstanceById(instanceId); + if (historicProcessInstance.getEndTime() != null) { + historyService.deleteHistoricProcessInstance(historicProcessInstance.getId()); + return; + } + // 删除流程实例 + runtimeService.deleteProcessInstance(instanceId, deleteReason); + // 删除历史流程实例 + historyService.deleteHistoricProcessInstance(instanceId); + } + + /** + * 根据实例ID查询历史实例数据 + * + * @param processInstanceId + * @return + */ + @Override + public HistoricProcessInstance getHistoricProcessInstanceById(String processInstanceId) { + HistoricProcessInstance historicProcessInstance = + historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + if (Objects.isNull(historicProcessInstance)) { + throw new FlowableObjectNotFoundException("流程实例不存在: " + processInstanceId); + } + return historicProcessInstance; + } + + /** + * 根据流程定义ID启动流程实例 + * + * @param procDefId 流程定义Id + * @param variables 流程变量 + * @return + */ + @Override + public AjaxResult startProcessInstanceById(String procDefId, Map variables) { + + try { + // 设置流程发起人Id到流程中 + Long userId = SecurityUtils.getLoginUser().getSysUser().getUserId(); +// identityService.setAuthenticatedUserId(userId.toString()); + variables.put("initiator",userId); + variables.put("_FLOWABLE_SKIP_EXPRESSION_ENABLED", true); + runtimeService.startProcessInstanceById(procDefId, variables); + return AjaxResult.success("流程启动成功"); + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.error("流程启动错误"); + } + } +} \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowTaskServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowTaskServiceImpl.java new file mode 100644 index 00000000..519709bb --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowTaskServiceImpl.java @@ -0,0 +1,1308 @@ +package com.yanzhu.flowable.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.TypeReference; +import com.github.pagehelper.PageInfo; +import com.yanzhu.common.core.exception.base.BaseException; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.flowable.common.constant.ProcessConstants; +import com.yanzhu.flowable.common.enums.FlowComment; +import com.yanzhu.flowable.domain.SysForm; +import com.yanzhu.flowable.domain.dto.FlowCommentDto; +import com.yanzhu.flowable.domain.dto.FlowNextDto; +import com.yanzhu.flowable.domain.dto.FlowTaskDto; +import com.yanzhu.flowable.domain.dto.FlowViewerDto; +import com.yanzhu.flowable.domain.vo.FlowQueryVo; +import com.yanzhu.flowable.domain.vo.FlowTaskVo; +import com.yanzhu.flowable.factory.FlowServiceFactory; +import com.yanzhu.flowable.flow.CustomProcessDiagramGenerator; +import com.yanzhu.flowable.flow.FindNextNodeUtil; +import com.yanzhu.flowable.flow.FlowableUtils; +import com.yanzhu.flowable.rpc.RemoteSystemService; +import com.yanzhu.flowable.service.IFlowTaskService; +import com.yanzhu.flowable.service.ISysDeployFormService; +import com.yanzhu.flowable.service.ISysFormService; +import com.yanzhu.flowable.util.WorkflowUtil; +import com.yanzhu.system.api.domain.SysRole; +import com.yanzhu.system.api.domain.SysUser; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.flowable.bpmn.model.Process; +import org.flowable.bpmn.model.*; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.common.engine.api.FlowableObjectNotFoundException; +import org.flowable.engine.ProcessEngineConfiguration; +import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.history.HistoricProcessInstanceQuery; +import org.flowable.engine.impl.cmd.AddMultiInstanceExecutionCmd; +import org.flowable.engine.impl.cmd.DeleteMultiInstanceExecutionCmd; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.runtime.Execution; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.task.Comment; +import org.flowable.identitylink.api.history.HistoricIdentityLink; +import org.flowable.image.ProcessDiagramGenerator; +import org.flowable.task.api.DelegationState; +import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.task.api.history.HistoricTaskInstanceQuery; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +/** + * @author Tony + * @date 2021-04-03 + **/ +@Service +@Slf4j +public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTaskService { + + @Resource + private RemoteSystemService remoteSystemService; + @Resource + private ISysDeployFormService sysInstanceFormService; + @Resource + private ISysFormService sysFormService; + + /** + * 完成任务 + * + * @param taskVo 请求实体参数 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult complete(FlowTaskVo taskVo) { + Task task = taskService.createTaskQuery().taskId(taskVo.getTaskId()).singleResult(); + if (Objects.isNull(task)) { + return AjaxResult.error("任务不存在"); + } + if (DelegationState.PENDING.equals(task.getDelegationState())) { + taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.DELEGATE.getType(), taskVo.getComment()); + taskService.resolveTask(taskVo.getTaskId(), taskVo.getVariables()); + } else { + taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.NORMAL.getType(), taskVo.getComment()); + Long userId = SecurityUtils.getLoginUser().getUserid(); + taskService.setAssignee(taskVo.getTaskId(), userId.toString()); + taskService.complete(taskVo.getTaskId(), taskVo.getVariables()); + } + return AjaxResult.success(); + } + + /** + * 驳回任务 + * + * @param flowTaskVo + */ + @Override + public void taskReject(FlowTaskVo flowTaskVo) { + if (taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult().isSuspended()) { + throw new RuntimeException("任务处于挂起状态!"); + } + // 当前任务 task + Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult(); + // 获取流程定义信息 + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult(); + // 获取所有节点信息 + Process process = repositoryService.getBpmnModel(processDefinition.getId()).getProcesses().get(0); + // 获取全部节点列表,包含子节点 + Collection allElements = FlowableUtils.getAllElements(process.getFlowElements(), null); + // 获取当前任务节点元素 + FlowElement source = null; + if (allElements != null) { + for (FlowElement flowElement : allElements) { + // 类型为用户节点 + if (flowElement.getId().equals(task.getTaskDefinitionKey())) { + // 获取节点信息 + source = flowElement; + } + } + } + + // 目的获取所有跳转到的节点 targetIds + // 获取当前节点的所有父级用户任务节点 + // 深度优先算法思想:延边迭代深入 + List parentUserTaskList = FlowableUtils.iteratorFindParentUserTasks(source, null, null); + if (parentUserTaskList == null || parentUserTaskList.size() == 0) { + throw new RuntimeException("当前节点为初始任务节点,不能驳回"); + } + // 获取活动 ID 即节点 Key + List parentUserTaskKeyList = new ArrayList<>(); + parentUserTaskList.forEach(item -> parentUserTaskKeyList.add(item.getId())); + // 获取全部历史节点活动实例,即已经走过的节点历史,数据采用开始时间升序 + List historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery().processInstanceId(task.getProcessInstanceId()).orderByHistoricTaskInstanceStartTime().asc().list(); + // 数据清洗,将回滚导致的脏数据清洗掉 + List lastHistoricTaskInstanceList = FlowableUtils.historicTaskInstanceClean(allElements, historicTaskInstanceList); + // 此时历史任务实例为倒序,获取最后走的节点 + List targetIds = new ArrayList<>(); + // 循环结束标识,遇到当前目标节点的次数 + int number = 0; + StringBuilder parentHistoricTaskKey = new StringBuilder(); + for (String historicTaskInstanceKey : lastHistoricTaskInstanceList) { + // 当会签时候会出现特殊的,连续都是同一个节点历史数据的情况,这种时候跳过 + if (parentHistoricTaskKey.toString().equals(historicTaskInstanceKey)) { + continue; + } + parentHistoricTaskKey = new StringBuilder(historicTaskInstanceKey); + if (historicTaskInstanceKey.equals(task.getTaskDefinitionKey())) { + number++; + } + // 在数据清洗后,历史节点就是唯一一条从起始到当前节点的历史记录,理论上每个点只会出现一次 + // 在流程中如果出现循环,那么每次循环中间的点也只会出现一次,再出现就是下次循环 + // number == 1,第一次遇到当前节点 + // number == 2,第二次遇到,代表最后一次的循环范围 + if (number == 2) { + break; + } + // 如果当前历史节点,属于父级的节点,说明最后一次经过了这个点,需要退回这个点 + if (parentUserTaskKeyList.contains(historicTaskInstanceKey)) { + targetIds.add(historicTaskInstanceKey); + } + } + + + // 目的获取所有需要被跳转的节点 currentIds + // 取其中一个父级任务,因为后续要么存在公共网关,要么就是串行公共线路 + UserTask oneUserTask = parentUserTaskList.get(0); + // 获取所有正常进行的任务节点 Key,这些任务不能直接使用,需要找出其中需要撤回的任务 + List runTaskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list(); + List runTaskKeyList = new ArrayList<>(); + runTaskList.forEach(item -> runTaskKeyList.add(item.getTaskDefinitionKey())); + // 需驳回任务列表 + List currentIds = new ArrayList<>(); + // 通过父级网关的出口连线,结合 runTaskList 比对,获取需要撤回的任务 + List currentUserTaskList = FlowableUtils.iteratorFindChildUserTasks(oneUserTask, runTaskKeyList, null, null); + currentUserTaskList.forEach(item -> currentIds.add(item.getId())); + + + // 规定:并行网关之前节点必须需存在唯一用户任务节点,如果出现多个任务节点,则并行网关节点默认为结束节点,原因为不考虑多对多情况 + if (targetIds.size() > 1 && currentIds.size() > 1) { + throw new RuntimeException("任务出现多对多情况,无法撤回"); + } + + // 循环获取那些需要被撤回的节点的ID,用来设置驳回原因 + List currentTaskIds = new ArrayList<>(); + currentIds.forEach(currentId -> runTaskList.forEach(runTask -> { + if (currentId.equals(runTask.getTaskDefinitionKey())) { + currentTaskIds.add(runTask.getId()); + } + })); + // 设置驳回意见 + currentTaskIds.forEach(item -> taskService.addComment(item, task.getProcessInstanceId(), FlowComment.REJECT.getType(), flowTaskVo.getComment())); + + try { + // 如果父级任务多于 1 个,说明当前节点不是并行节点,原因为不考虑多对多情况 + if (targetIds.size() > 1) { + // 1 对 多任务跳转,currentIds 当前节点(1),targetIds 跳转到的节点(多) + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()). + moveSingleActivityIdToActivityIds(currentIds.get(0), targetIds).changeState(); + } + // 如果父级任务只有一个,因此当前任务可能为网关中的任务 + if (targetIds.size() == 1) { + // 1 对 1 或 多 对 1 情况,currentIds 当前要跳转的节点列表(1或多),targetIds.get(0) 跳转到的节点(1) + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdsToSingleActivityId(currentIds, targetIds.get(0)).changeState(); + } + } catch (FlowableObjectNotFoundException e) { + throw new BaseException("未找到流程实例,流程可能已发生变化"); + } catch (FlowableException e) { + throw new BaseException("无法取消或开始活动"); + } + + } + + /** + * 退回任务 + * + * @param flowTaskVo 请求实体参数 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void taskReturn(FlowTaskVo flowTaskVo) { + if (taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult().isSuspended()) { + throw new BaseException("任务处于挂起状态"); + } + // 当前任务 task + Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult(); + // 获取流程定义信息 + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult(); + // 获取所有节点信息 + Process process = repositoryService.getBpmnModel(processDefinition.getId()).getProcesses().get(0); + // 获取全部节点列表,包含子节点 + Collection allElements = FlowableUtils.getAllElements(process.getFlowElements(), null); + // 获取当前任务节点元素 + FlowElement source = null; + // 获取跳转的节点元素 + FlowElement target = null; + if (allElements != null) { + for (FlowElement flowElement : allElements) { + // 当前任务节点元素 + if (flowElement.getId().equals(task.getTaskDefinitionKey())) { + source = flowElement; + } + // 跳转的节点元素 + if (flowElement.getId().equals(flowTaskVo.getTargetKey())) { + target = flowElement; + } + } + } + + // 从当前节点向前扫描 + // 如果存在路线上不存在目标节点,说明目标节点是在网关上或非同一路线上,不可跳转 + // 否则目标节点相对于当前节点,属于串行 + Boolean isSequential = FlowableUtils.iteratorCheckSequentialReferTarget(source, flowTaskVo.getTargetKey(), null, null); + if (!isSequential) { + throw new BaseException("当前节点相对于目标节点,不属于串行关系,无法回退"); + } + + + // 获取所有正常进行的任务节点 Key,这些任务不能直接使用,需要找出其中需要撤回的任务 + List runTaskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list(); + List runTaskKeyList = new ArrayList<>(); + runTaskList.forEach(item -> runTaskKeyList.add(item.getTaskDefinitionKey())); + // 需退回任务列表 + List currentIds = new ArrayList<>(); + // 通过父级网关的出口连线,结合 runTaskList 比对,获取需要撤回的任务 + List currentUserTaskList = FlowableUtils.iteratorFindChildUserTasks(target, runTaskKeyList, null, null); + currentUserTaskList.forEach(item -> currentIds.add(item.getId())); + + // 循环获取那些需要被撤回的节点的ID,用来设置驳回原因 + List currentTaskIds = new ArrayList<>(); + currentIds.forEach(currentId -> runTaskList.forEach(runTask -> { + if (currentId.equals(runTask.getTaskDefinitionKey())) { + currentTaskIds.add(runTask.getId()); + } + })); + // 设置回退意见 + currentTaskIds.forEach(currentTaskId -> taskService.addComment(currentTaskId, task.getProcessInstanceId(), FlowComment.REBACK.getType(), flowTaskVo.getComment())); + + try { + // 1 对 1 或 多 对 1 情况,currentIds 当前要跳转的节点列表(1或多),targetKey 跳转到的节点(1) + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdsToSingleActivityId(currentIds, flowTaskVo.getTargetKey()).changeState(); + } catch (FlowableObjectNotFoundException e) { + throw new BaseException("未找到流程实例,流程可能已发生变化"); + } catch (FlowableException e) { + throw new BaseException("无法取消或开始活动"); + } + } + + + /** + * 获取所有可回退的节点 + * + * @param flowTaskVo + * @return + */ + @Override + public AjaxResult findReturnTaskList(FlowTaskVo flowTaskVo) { +// // 当前任务 task +// Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult(); +// // 从流程历史任务中获取可退回节点 +//// List hisActIns = historyService.createHistoricActivityInstanceQuery() +//// .executionId(task.getExecutionId()) +//// .activityType("userTask") +//// .orderByHistoricActivityInstanceStartTime() +//// .finished() +//// .desc() +//// .list(); +//// +//// // 可回退的节点列表 +//// List returnTaskNodeList = new ArrayList<>(); +//// ReturnTaskNodeVo returnTaskNodeVo; +//// for (HistoricActivityInstance activityInstance : hisActIns) { +//// returnTaskNodeVo = new ReturnTaskNodeVo(); +//// returnTaskNodeVo.setId(activityInstance.getActivityId()); +//// // 根据流程节点处理时间校验改节点是否已完成 +//// returnTaskNodeVo.setName(activityInstance.getActivityName()); +//// returnTaskNodeList.add(returnTaskNodeVo); +//// } +// List userTaskList = new ArrayList<>(); +// // 获取流程定义信息 +// ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult(); +// // 获取所有节点信息,暂不考虑子流程情况 +// Process process = repositoryService.getBpmnModel(processDefinition.getId()).getProcesses().get(0); +// Collection flowElements = process.getFlowElements(); +// // 获取当前任务节点元素 +// UserTask source = null; +// if (flowElements != null) { +// for (FlowElement flowElement : flowElements) { +// // 类型为用户节点 +// if (flowElement.getId().equals(task.getTaskDefinitionKey())) { +// source = (UserTask) flowElement; +// } +// } +// } +// // 获取节点的所有路线 +// List> roads = FlowableUtils.findRoad(source, null, null, null); +// +// for (List road : roads) { +// if (userTaskList.size() == 0) { +// // 还没有可回退节点直接添加 +// userTaskList = road; +// } else { +// // 如果已有回退节点,则比对取交集部分 +// userTaskList.retainAll(road); +// } +// } +// return AjaxResult.success(userTaskList); + // 当前任务 task + Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult(); + // 获取流程定义信息 + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult(); + // 获取所有节点信息,暂不考虑子流程情况 + Process process = repositoryService.getBpmnModel(processDefinition.getId()).getProcesses().get(0); + Collection flowElements = process.getFlowElements(); + // 获取当前任务节点元素 + UserTask source = null; + if (flowElements != null) { + for (FlowElement flowElement : flowElements) { + // 类型为用户节点 + if (flowElement.getId().equals(task.getTaskDefinitionKey())) { + source = (UserTask) flowElement; + } + } + } + // 获取节点的所有路线 + List> roads = FlowableUtils.findRoad(source, null, null, null); + // 可回退的节点列表 + List userTaskList = new ArrayList<>(); + for (List road : roads) { + if (userTaskList.size() == 0) { + // 还没有可回退节点直接添加 + userTaskList = road; + } else { + // 如果已有回退节点,则比对取交集部分 + userTaskList.retainAll(road); + } + } + return AjaxResult.success(userTaskList); + } + + /** + * 删除任务 + * + * @param flowTaskVo 请求实体参数 + */ + @Override + public void deleteTask(FlowTaskVo flowTaskVo) { + // todo 待确认删除任务是物理删除任务 还是逻辑删除,让这个任务直接通过? + taskService.deleteTask(flowTaskVo.getTaskId(), flowTaskVo.getComment()); + } + + /** + * 认领/签收任务 + * 认领以后,这个用户就会成为任务的执行人,任务会从其他成员的任务列表中消失 + * + * @param flowTaskVo 请求实体参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void claim(FlowTaskVo flowTaskVo) { + taskService.claim(flowTaskVo.getTaskId(), flowTaskVo.getUserId()); + } + + /** + * 取消认领/签收任务 + * + * @param flowTaskVo 请求实体参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void unClaim(FlowTaskVo flowTaskVo) { + taskService.unclaim(flowTaskVo.getTaskId()); + } + + /** + * 委派任务 + * 任务委派只是委派人将当前的任务交给被委派人进行审批,处理任务后又重新回到委派人身上。 + * + * @param flowTaskVo 请求实体参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void delegateTask(FlowTaskVo flowTaskVo) { + taskService.delegateTask(flowTaskVo.getTaskId(), flowTaskVo.getAssignee()); + } + + /** + * 任务归还 + * 被委派人完成任务之后,将任务归还委派人 + * + * @param flowTaskVo 请求实体参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void resolveTask(FlowTaskVo flowTaskVo) { + taskService.resolveTask(flowTaskVo.getTaskId()); + } + + + /** + * 转办任务 + * 直接将办理人换成别人,这时任务的拥有者不再是转办人 + * + * @param flowTaskVo 请求实体参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void assignTask(FlowTaskVo flowTaskVo) { + // 直接转派就可以覆盖掉之前的 + taskService.setAssignee(flowTaskVo.getTaskId(), flowTaskVo.getAssignee()); +// // 删除指派人重新指派 +// taskService.deleteCandidateUser(flowTaskVo.getTaskId(),flowTaskVo.getAssignee()); +// taskService.addCandidateUser(flowTaskVo.getTaskId(),flowTaskVo.getAssignee()); +// // 如果要查询转给他人处理的任务,可以同时将OWNER进行设置: +// taskService.setOwner(flowTaskVo.getTaskId(), flowTaskVo.getAssignee()); + + } + + /** + * 多实例加签 + * act_ru_task、act_ru_identitylink各生成一条记录 + * + * @param flowTaskVo + */ + @Override + public void addMultiInstanceExecution(FlowTaskVo flowTaskVo) { + managementService.executeCommand(new AddMultiInstanceExecutionCmd(flowTaskVo.getDefId(), flowTaskVo.getInstanceId(), flowTaskVo.getVariables())); + } + + /** + * 多实例减签 + * act_ru_task减1、act_ru_identitylink不变 + * + * @param flowTaskVo + */ + @Override + public void deleteMultiInstanceExecution(FlowTaskVo flowTaskVo) { + managementService.executeCommand(new DeleteMultiInstanceExecutionCmd(flowTaskVo.getCurrentChildExecutionId(), flowTaskVo.getFlag())); + } + + /** + * 我发起的流程 + * + * @param queryVo 请求参数 + * @return + */ + @Override + public PageInfo myProcess(FlowQueryVo queryVo) { + Long userId = SecurityUtils.getLoginUser().getUserid(); + HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() + .startedBy(userId.toString()) + .orderByProcessInstanceStartTime() + .desc(); + List historicProcessInstances = historicProcessInstanceQuery.listPage(queryVo.getPageSize() * (queryVo.getPageNum() - 1), queryVo.getPageSize()); + List flowList = new ArrayList<>(); + for (HistoricProcessInstance hisIns : historicProcessInstances) { + FlowTaskDto flowTask = new FlowTaskDto(); + flowTask.setCreateTime(hisIns.getStartTime()); + flowTask.setFinishTime(hisIns.getEndTime()); + flowTask.setProcInsId(hisIns.getId()); + + // 计算耗时 + if (Objects.nonNull(hisIns.getEndTime())) { + long time = hisIns.getEndTime().getTime() - hisIns.getStartTime().getTime(); + flowTask.setDuration(getDate(time)); + } else { + long time = System.currentTimeMillis() - hisIns.getStartTime().getTime(); + flowTask.setDuration(getDate(time)); + } + // 流程定义信息 + ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(hisIns.getProcessDefinitionId()) + .singleResult(); + flowTask.setDeployId(pd.getDeploymentId()); + flowTask.setProcDefName(pd.getName()); + flowTask.setProcDefVersion(pd.getVersion()); + flowTask.setCategory(pd.getCategory()); + flowTask.setProcDefVersion(pd.getVersion()); + // 当前所处流程 + List taskList = taskService.createTaskQuery().processInstanceId(hisIns.getId()).list(); + if (CollectionUtils.isNotEmpty(taskList)) { + flowTask.setTaskId(taskList.get(0).getId()); + flowTask.setTaskName(taskList.get(0).getName()); + if (StringUtils.isNotBlank(taskList.get(0).getAssignee())) { + // 当前任务节点办理人信息 + SysUser sysUser = remoteSystemService.getUserById(Long.parseLong(taskList.get(0).getAssignee())); + if (Objects.nonNull(sysUser)) { + flowTask.setAssigneeId(sysUser.getUserId()); + flowTask.setAssigneeName(sysUser.getNickName()); + flowTask.setAssigneeDeptName(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptName() : ""); + } + } + } else { + List historicTaskInstance = historyService.createHistoricTaskInstanceQuery().processInstanceId(hisIns.getId()).orderByHistoricTaskInstanceEndTime().desc().list(); + flowTask.setTaskId(historicTaskInstance.get(0).getId()); + flowTask.setTaskName(historicTaskInstance.get(0).getName()); + if (StringUtils.isNotBlank(historicTaskInstance.get(0).getAssignee())) { + // 当前任务节点办理人信息 + SysUser sysUser = remoteSystemService.getUserById(Long.parseLong(historicTaskInstance.get(0).getAssignee())); + if (Objects.nonNull(sysUser)) { + flowTask.setAssigneeId(sysUser.getUserId()); + flowTask.setAssigneeName(sysUser.getNickName()); + flowTask.setAssigneeDeptName(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptName() : ""); + } + } + } + flowList.add(flowTask); + } + return WorkflowUtil.toPageInfo(historicProcessInstanceQuery.count(), flowList); + } + + /** + * 取消申请 + * 目前实现方式: 直接将当前流程变更为已完成 + * + * @param flowTaskVo + * @return + */ + @Override + public AjaxResult stopProcess(FlowTaskVo flowTaskVo) { + List task = taskService.createTaskQuery().processInstanceId(flowTaskVo.getInstanceId()).list(); + if (CollectionUtils.isEmpty(task)) { + throw new BaseException("流程未启动或已执行完成,取消申请失败"); + } + // 获取当前流程实例 + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() + .processInstanceId(flowTaskVo.getInstanceId()) + .singleResult(); + BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId()); + if (Objects.nonNull(bpmnModel)) { + Process process = bpmnModel.getMainProcess(); + List endNodes = process.findFlowElementsOfType(EndEvent.class, false); + if (CollectionUtils.isNotEmpty(endNodes)) { + // TODO 取消流程为什么要设置流程发起人? +// SysUser loginUser = SecurityUtils.getLoginUser().getUser(); +// Authentication.setAuthenticatedUserId(loginUser.getUserId().toString()); + +// taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.STOP.getType(), +// StringUtils.isBlank(flowTaskVo.getComment()) ? "取消申请" : flowTaskVo.getComment()); + // 获取当前流程最后一个节点 + String endId = endNodes.get(0).getId(); + List executions = runtimeService.createExecutionQuery() + .parentId(processInstance.getProcessInstanceId()).list(); + List executionIds = new ArrayList<>(); + executions.forEach(execution -> executionIds.add(execution.getId())); + // 变更流程为已结束状态 + runtimeService.createChangeActivityStateBuilder() + .moveExecutionsToSingleActivityId(executionIds, endId).changeState(); + } + } + + return AjaxResult.success(); + } + + /** + * 撤回流程 目前存在错误 + * + * @param flowTaskVo + * @return + */ + @Override + public AjaxResult revokeProcess(FlowTaskVo flowTaskVo) { + Task task = taskService.createTaskQuery() + .processInstanceId(flowTaskVo.getInstanceId()) + .singleResult(); + if (task == null) { + throw new BaseException("流程未启动或已执行完成,无法撤回"); + } + + SysUser loginUser = SecurityUtils.getLoginUser().getSysUser(); + List htiList = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByTaskCreateTime() + .asc() + .list(); + String myTaskId = null; + for (HistoricTaskInstance hti : htiList) { + if (loginUser.getUserId().toString().equals(hti.getAssignee())) { + myTaskId = hti.getId(); + break; + } + } + if (null == myTaskId) { + throw new BaseException("该任务非当前用户提交,无法撤回"); + } + List historicTaskInstanceList = historyService + .createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc() + .list(); + Iterator it = historicTaskInstanceList.iterator(); + //循环节点,获取当前节点的上一节点的key + String tarKey = ""; + while (it.hasNext()) { + HistoricTaskInstance his = it.next(); + if (!task.getTaskDefinitionKey().equals(his.getTaskDefinitionKey())) { + tarKey = his.getTaskDefinitionKey(); + } + } + // 跳转节点 + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(flowTaskVo.getInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), tarKey) + .changeState(); + + return AjaxResult.success(); + } + + /** + * 代办任务列表 + * + * @param queryVo 请求参数 + * @return + */ + @Override + public PageInfo todoList(FlowQueryVo queryVo) { + // 只查看自己的数据 + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + TaskQuery taskQuery = taskService.createTaskQuery() + .active() + .includeProcessVariables() + .taskCandidateGroupIn(sysUser.getRoles().stream().map(role -> role.getRoleId().toString()).collect(Collectors.toList())) + .taskCandidateOrAssigned(sysUser.getUserId().toString()) + .orderByTaskCreateTime().desc(); + +// TODO 传入名称查询不到数据? +// if (StringUtils.isNotBlank(queryVo.getName())){ +// taskQuery.processDefinitionNameLike(queryVo.getName()); +// } + List taskList = taskQuery.listPage(queryVo.getPageSize() * (queryVo.getPageNum() - 1), queryVo.getPageSize()); + List flowList = new ArrayList<>(); + for (Task task : taskList) { + FlowTaskDto flowTask = new FlowTaskDto(); + // 当前流程信息 + flowTask.setTaskId(task.getId()); + flowTask.setTaskDefKey(task.getTaskDefinitionKey()); + flowTask.setCreateTime(task.getCreateTime()); + flowTask.setProcDefId(task.getProcessDefinitionId()); + flowTask.setExecutionId(task.getExecutionId()); + flowTask.setTaskName(task.getName()); + // 流程定义信息 + ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(task.getProcessDefinitionId()) + .singleResult(); + flowTask.setDeployId(pd.getDeploymentId()); + flowTask.setProcDefName(pd.getName()); + flowTask.setProcDefVersion(pd.getVersion()); + flowTask.setProcInsId(task.getProcessInstanceId()); + + // 流程发起人信息 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .singleResult(); + SysUser startUser = remoteSystemService.getUserById(Long.parseLong(historicProcessInstance.getStartUserId())); + if (null != startUser) { + flowTask.setStartUserId(startUser.getUserId().toString()); + flowTask.setStartUserName(startUser.getNickName()); + flowTask.setStartDeptName(Objects.nonNull(startUser.getDept()) ? startUser.getDept().getDeptName() : ""); + } + flowList.add(flowTask); + } + + return WorkflowUtil.toPageInfo(taskQuery.count(), flowList); + } + + + /** + * 已办任务列表 + * + * @param queryVo 请求参数 + * @return + */ + @Override + public PageInfo finishedList(FlowQueryVo queryVo) { + Long userId = SecurityUtils.getLoginUser().getUserid(); + HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery() + .includeProcessVariables() + .finished() + .taskAssignee(userId.toString()) + .orderByHistoricTaskInstanceEndTime() + .desc(); + List historicTaskInstanceList = taskInstanceQuery.listPage(queryVo.getPageSize() * (queryVo.getPageNum() - 1), queryVo.getPageSize()); + List hisTaskList = new ArrayList<>(); + for (HistoricTaskInstance histTask : historicTaskInstanceList) { + FlowTaskDto flowTask = new FlowTaskDto(); + // 当前流程信息 + flowTask.setTaskId(histTask.getId()); + // 审批人员信息 + flowTask.setCreateTime(histTask.getCreateTime()); + flowTask.setFinishTime(histTask.getEndTime()); + flowTask.setDuration(getDate(histTask.getDurationInMillis())); + flowTask.setProcDefId(histTask.getProcessDefinitionId()); + flowTask.setTaskDefKey(histTask.getTaskDefinitionKey()); + flowTask.setTaskName(histTask.getName()); + + // 流程定义信息 + ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(histTask.getProcessDefinitionId()) + .singleResult(); + flowTask.setDeployId(pd.getDeploymentId()); + flowTask.setProcDefName(pd.getName()); + flowTask.setProcDefVersion(pd.getVersion()); + flowTask.setProcInsId(histTask.getProcessInstanceId()); + flowTask.setHisProcInsId(histTask.getProcessInstanceId()); + + // 流程发起人信息 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(histTask.getProcessInstanceId()) + .singleResult(); + SysUser startUser = remoteSystemService.getUserById(Long.parseLong(historicProcessInstance.getStartUserId())); + if (null != startUser) { + flowTask.setStartUserId(startUser.getNickName()); + flowTask.setStartUserName(startUser.getNickName()); + flowTask.setStartDeptName(Objects.nonNull(startUser.getDept()) ? startUser.getDept().getDeptName() : ""); + } + hisTaskList.add(flowTask); + } + return WorkflowUtil.toPageInfo(taskInstanceQuery.count(), hisTaskList); + } + + private static Predicate distinctByKey(Function keyExtractor) { + Set seen = ConcurrentHashMap.newKeySet(); + return t -> seen.add(keyExtractor.apply(t)); + } + + /** + * 流程历史流转记录 + * + * @param procInsId 流程实例Id + * @return + */ + @Override + public AjaxResult flowRecord(String procInsId, String deployId) { + Map map = new HashMap(); + if (StringUtils.isNotBlank(procInsId)) { + List list = historyService + .createHistoricActivityInstanceQuery() + .processInstanceId(procInsId) + .orderByHistoricActivityInstanceStartTime() + .desc().list(); + List hisFlowList = new ArrayList<>(); + for (HistoricActivityInstance histIns : list) { + // 展示开始节点 +// if ("startEvent".equals(histIns.getActivityType())) { +// FlowTaskDto flowTask = new FlowTaskDto(); +// // 流程发起人信息 +// HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() +// .processInstanceId(histIns.getProcessInstanceId()) +// .singleResult(); +// SysUser startUser = sysUserService.selectUserById(Long.parseLong(historicProcessInstance.getStartUserId())); +// flowTask.setTaskName(startUser.getNickName() + "(" + startUser.getDept().getDeptName() + ")发起申请"); +// flowTask.setFinishTime(histIns.getEndTime()); +// hisFlowList.add(flowTask); +// } else if ("endEvent".equals(histIns.getActivityType())) { +// FlowTaskDto flowTask = new FlowTaskDto(); +// flowTask.setTaskName(StringUtils.isNotBlank(histIns.getActivityName()) ? histIns.getActivityName() : "结束"); +// flowTask.setFinishTime(histIns.getEndTime()); +// hisFlowList.add(flowTask); +// } else + if (StringUtils.isNotBlank(histIns.getTaskId())) { + FlowTaskDto flowTask = new FlowTaskDto(); + flowTask.setTaskId(histIns.getTaskId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + if (StringUtils.isNotBlank(histIns.getAssignee())) { + SysUser sysUser = remoteSystemService.getUserById(Long.parseLong(histIns.getAssignee())); + flowTask.setAssigneeId(sysUser.getUserId()); + flowTask.setAssigneeName(sysUser.getNickName()); + flowTask.setDeptName(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptName() : ""); + } + // 展示审批人员 + List linksForTask = historyService.getHistoricIdentityLinksForTask(histIns.getTaskId()); + StringBuilder stringBuilder = new StringBuilder(); + for (HistoricIdentityLink identityLink : linksForTask) { + // 获选人,候选组/角色(多个) + if ("candidate".equals(identityLink.getType())) { + if (StringUtils.isNotBlank(identityLink.getUserId())) { + SysUser sysUser = remoteSystemService.getUserById(Long.parseLong(identityLink.getUserId())); + stringBuilder.append(sysUser.getNickName()).append(","); + } + if (StringUtils.isNotBlank(identityLink.getGroupId())) { + SysRole sysRole = remoteSystemService.getRoleById(Long.parseLong(identityLink.getGroupId())); + stringBuilder.append(sysRole.getRoleName()).append(","); + } + } + } + if (StringUtils.isNotBlank(stringBuilder)) { + flowTask.setCandidate(stringBuilder.substring(0, stringBuilder.length() - 1)); + } + + flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis())); + // 获取意见评论内容 + List commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId()); + commentList.forEach(comment -> { + if (histIns.getTaskId().equals(comment.getTaskId())) { + flowTask.setComment(FlowCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build()); + } + }); + hisFlowList.add(flowTask); + } + } + map.put("flowList", hisFlowList); + } + // 第一次申请获取初始化表单 + if (StringUtils.isNotBlank(deployId)) { + SysForm sysForm = sysInstanceFormService.selectSysDeployFormByDeployId(deployId); + if (Objects.isNull(sysForm)) { + return AjaxResult.error("请先配置流程表单"); + } + map.put("formData", JSONObject.parseObject(sysForm.getFormContent())); + } + return AjaxResult.success(map); + } + + /** + * 根据任务ID查询挂载的表单信息 + * + * @param taskId 任务Id + * @return + */ + @Override + public AjaxResult getTaskForm(String taskId) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + SysForm sysForm = sysFormService.selectSysFormById(Long.parseLong(task.getFormKey())); + return AjaxResult.success(sysForm.getFormContent()); + } + + /** + * 获取流程过程图 + * + * @param processId + * @return + */ + @Override + public InputStream diagram(String processId) { + String processDefinitionId; + // 获取当前的流程实例 + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult(); + // 如果流程已经结束,则得到结束节点 + if (Objects.isNull(processInstance)) { + HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processId).singleResult(); + + processDefinitionId = pi.getProcessDefinitionId(); + } else {// 如果流程没有结束,则取当前活动节点 + // 根据流程实例ID获得当前处于活动状态的ActivityId合集 + ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult(); + processDefinitionId = pi.getProcessDefinitionId(); + } + + // 获得活动的节点 + List highLightedFlowList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processId).orderByHistoricActivityInstanceStartTime().asc().list(); + + List highLightedFlows = new ArrayList<>(); + List highLightedNodes = new ArrayList<>(); + //高亮线 + for (HistoricActivityInstance tempActivity : highLightedFlowList) { + if ("sequenceFlow".equals(tempActivity.getActivityType())) { + //高亮线 + highLightedFlows.add(tempActivity.getActivityId()); + } else { + //高亮节点 + highLightedNodes.add(tempActivity.getActivityId()); + } + } + + //获取流程图 + BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); + ProcessEngineConfiguration configuration = processEngine.getProcessEngineConfiguration(); + //获取自定义图片生成器 + ProcessDiagramGenerator diagramGenerator = new CustomProcessDiagramGenerator(); + InputStream in = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedNodes, highLightedFlows, configuration.getActivityFontName(), + configuration.getLabelFontName(), configuration.getAnnotationFontName(), configuration.getClassLoader(), 1.0, true); + return in; + + } + + /** + * 获取流程执行节点 + * + * @param procInsId 流程实例id + * @return + */ + @Override + public AjaxResult getFlowViewer(String procInsId, String executionId) { + List flowViewerList = new ArrayList<>(); + FlowViewerDto flowViewerDto; + // 获取任务开始节点(临时处理方式) + List startNodeList = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(procInsId) + .orderByHistoricActivityInstanceStartTime() + .asc().listPage(0, 3); + for (HistoricActivityInstance startInstance : startNodeList) { + if (!"sequenceFlow".equals(startInstance.getActivityType())) { + flowViewerDto = new FlowViewerDto(); + if (!"sequenceFlow".equals(startInstance.getActivityType())) { + flowViewerDto.setKey(startInstance.getActivityId()); + // 根据流程节点处理时间校验改节点是否已完成 + flowViewerDto.setCompleted(!Objects.isNull(startInstance.getEndTime())); + flowViewerList.add(flowViewerDto); + } + } + } + // 历史节点 + List hisActIns = historyService.createHistoricActivityInstanceQuery() + .executionId(executionId) + .orderByHistoricActivityInstanceStartTime() + .asc().list(); + for (HistoricActivityInstance activityInstance : hisActIns) { + if (!"sequenceFlow".equals(activityInstance.getActivityType())) { + flowViewerDto = new FlowViewerDto(); + flowViewerDto.setKey(activityInstance.getActivityId()); + // 根据流程节点处理时间校验改节点是否已完成 + flowViewerDto.setCompleted(!Objects.isNull(activityInstance.getEndTime())); + flowViewerList.add(flowViewerDto); + } + } + return AjaxResult.success(flowViewerList); + } + + /** + * 获取流程变量 + * + * @param taskId + * @return + */ + @Override + public AjaxResult processVariables(String taskId) { + // 流程变量 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().includeProcessVariables().finished().taskId(taskId).singleResult(); + if (Objects.nonNull(historicTaskInstance)) { + return AjaxResult.success(historicTaskInstance.getProcessVariables()); + } else { + Map variables = taskService.getVariables(taskId); + return AjaxResult.success(variables); + } + } + + /** + * 审批任务获取下一节点 + * + * @param flowTaskVo 任务 + * @return + */ + @Override + public AjaxResult getNextFlowNode(FlowTaskVo flowTaskVo) { + // Step 1. 获取当前节点并找到下一步节点 + Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult(); + if (Objects.isNull(task)) { + return AjaxResult.error("任务不存在或已被审批!"); + } + // Step 2. 获取当前流程所有流程变量(网关节点时需要校验表达式) + Map variables = taskService.getVariables(task.getId()); + List nextUserTask = FindNextNodeUtil.getNextUserTasks(repositoryService, task, variables); + if (CollectionUtils.isEmpty(nextUserTask)) { + return AjaxResult.success("流程已完结!", null); + } + return getFlowAttribute(nextUserTask); + } + + /** + * 发起流程获取下一节点 + * + * @param flowTaskVo 任务 + * @return + */ + @Override + public AjaxResult getNextFlowNodeByStart(FlowTaskVo flowTaskVo) { + // Step 1. 查找流程定义信息 + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(flowTaskVo.getDeploymentId()).singleResult(); + if (Objects.isNull(processDefinition)) { + return AjaxResult.error("流程信息不存在!"); + } + // Step 2. 获取下一任务节点(网关节点时需要校验表达式) + List nextUserTask = FindNextNodeUtil.getNextUserTasksByStart(repositoryService, processDefinition, flowTaskVo.getVariables()); + if (CollectionUtils.isEmpty(nextUserTask)) { + return AjaxResult.error("暂未查找到下一任务,请检查流程设计是否正确!"); + } + return getFlowAttribute(nextUserTask); + } + + + /** + * 获取任务节点属性,包含自定义属性等 + * + * @param nextUserTask + */ + private AjaxResult getFlowAttribute(List nextUserTask) { + FlowNextDto flowNextDto = new FlowNextDto(); + // TODO 当下一任务可选多个任务节点时? 就需要返回一个list, 前端需要分批次选择节点任务候选人? + for (UserTask userTask : nextUserTask) { + MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics(); + // 会签节点 + if (Objects.nonNull(multiInstance)) { + flowNextDto.setVars(multiInstance.getInputDataItem()); + flowNextDto.setType(ProcessConstants.PROCESS_MULTI_INSTANCE); + flowNextDto.setDataType(ProcessConstants.DYNAMIC); + } else { + // TODO 可以获取自定义表达式属性,然后解析表达式内容? + // 读取自定义节点属性 判断是否是否需要动态指定任务接收人员、组 + String dataType = userTask.getAttributeValue(ProcessConstants.NAMASPASE, ProcessConstants.PROCESS_CUSTOM_DATA_TYPE); + String userType = userTask.getAttributeValue(ProcessConstants.NAMASPASE, ProcessConstants.PROCESS_CUSTOM_USER_TYPE); + flowNextDto.setVars(ProcessConstants.PROCESS_APPROVAL); + flowNextDto.setType(userType); + flowNextDto.setDataType(dataType); + } + } + return AjaxResult.success(flowNextDto); + } + + /** + * 流程初始化表单 + * + * @param deployId + * @return + */ + @Override + public AjaxResult flowFormData(String deployId) { + // 第一次申请获取初始化表单 + if (StringUtils.isNotBlank(deployId)) { + SysForm sysForm = sysInstanceFormService.selectSysDeployFormByDeployId(deployId); + if (Objects.isNull(sysForm)) { + return AjaxResult.error("请先配置流程表单!"); + } + return AjaxResult.success(JSONObject.parseObject(sysForm.getFormContent())); + } else { + return AjaxResult.error("参数错误!"); + } + } + + /** + * 流程节点信息 + * + * @param procInsId + * @return + */ + @Override + public AjaxResult flowXmlAndNode(String procInsId, String deployId) { + try { + List flowViewerList = new ArrayList<>(); + // 获取已经完成的节点 + List listFinished = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(procInsId) + .finished() + .list(); + + // 保存已经完成的流程节点编号 + listFinished.forEach(s -> { + FlowViewerDto flowViewerDto = new FlowViewerDto(); + flowViewerDto.setKey(s.getActivityId()); + flowViewerDto.setCompleted(true); + // 退回节点不进行展示 + if (StringUtils.isBlank(s.getDeleteReason())) { + flowViewerList.add(flowViewerDto); + } + }); + + // 获取代办节点 + List listUnFinished = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(procInsId) + .unfinished() + .list(); + + // 保存需要代办的节点编号 + listUnFinished.forEach(s -> { + // 删除已退回节点 + flowViewerList.removeIf(task -> task.getKey().equals(s.getActivityId())); + FlowViewerDto flowViewerDto = new FlowViewerDto(); + flowViewerDto.setKey(s.getActivityId()); + flowViewerDto.setCompleted(false); + flowViewerList.add(flowViewerDto); + }); + Map result = new HashMap(); + // xmlData 数据 + ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deployId).singleResult(); + InputStream inputStream = repositoryService.getResourceAsStream(definition.getDeploymentId(), definition.getResourceName()); + String xmlData = IOUtils.toString(inputStream, StandardCharsets.UTF_8); + result.put("nodeData", flowViewerList); + result.put("xmlData", xmlData); + return AjaxResult.success(result); + } catch (Exception e) { + return AjaxResult.error("高亮历史任务失败"); + } + } + + /** + * 流程节点表单 + * + * @param taskId 流程任务编号 + * @return + */ + @Override + public AjaxResult flowTaskForm(String taskId) throws Exception { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + // 流程变量 + Map parameters = new HashMap<>(); + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().includeProcessVariables().finished().taskId(taskId).singleResult(); + if (Objects.nonNull(historicTaskInstance)) { + parameters = historicTaskInstance.getProcessVariables(); + } else { + parameters = taskService.getVariables(taskId); + } + JSONObject oldVariables = JSONObject.parseObject(JSON.toJSONString(parameters.get("formJson"))); + List oldFields = JSON.parseObject(JSON.toJSONString(oldVariables.get("widgetList")), new TypeReference>() { + }); + // 设置已填写的表单为禁用状态 + for (JSONObject oldField : oldFields) { + JSONObject options = oldField.getJSONObject("options"); + options.put("disabled", true); + } + // TODO 暂时只处理用户任务上的表单 + if (StringUtils.isNotBlank(task.getFormKey())) { + SysForm sysForm = sysFormService.selectSysFormById(Long.parseLong(task.getFormKey())); + JSONObject data = JSONObject.parseObject(sysForm.getFormContent()); + List newFields = JSON.parseObject(JSON.toJSONString(data.get("widgetList")), new TypeReference>() { + }); + // 表单回显时 加入子表单信息到流程变量中 + for (JSONObject newField : newFields) { + String key = newField.getString("id"); + if ("picture-upload".equals(newField.getString("type"))) { + parameters.put(key, new ArrayList<>()); + } else { + parameters.put(key, null); + } + } + oldFields.addAll(newFields); + } + oldVariables.put("widgetList", oldFields); + parameters.put("formJson", oldVariables); + return AjaxResult.success(parameters); + } + + /** + * 流程节点信息 + * + * @param procInsId + * @param elementId + * @return + */ + @Override + public AjaxResult flowTaskInfo(String procInsId, String elementId) { + List list = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(procInsId) + .activityId(elementId) + .list(); + // 退回任务后有多条数据 只取待办任务进行展示 + list.removeIf(task -> StringUtils.isNotBlank(task.getDeleteReason())); + if (CollectionUtils.isEmpty(list)) { + return AjaxResult.success(); + } + if (list.size() > 1) { + list.removeIf(task -> Objects.nonNull(task.getEndTime())); + } + HistoricActivityInstance histIns = list.get(0); + FlowTaskDto flowTask = new FlowTaskDto(); + flowTask.setTaskId(histIns.getTaskId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + if (StringUtils.isNotBlank(histIns.getAssignee())) { + SysUser sysUser = remoteSystemService.getUserById(Long.parseLong(histIns.getAssignee())); + flowTask.setAssigneeId(sysUser.getUserId()); + flowTask.setAssigneeName(sysUser.getNickName()); + flowTask.setDeptName(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptName() : ""); + + } + // 流程变量信息 +// HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() +// .includeProcessVariables().finished().taskId(histIns.getTaskId()).singleResult(); +// flowTask.setVariables(historicTaskInstance.getProcessVariables()); + + // 展示审批人员 + List linksForTask = historyService.getHistoricIdentityLinksForTask(histIns.getTaskId()); + StringBuilder stringBuilder = new StringBuilder(); + for (HistoricIdentityLink identityLink : linksForTask) { + // 获选人,候选组/角色(多个) + if ("candidate".equals(identityLink.getType())) { + if (StringUtils.isNotBlank(identityLink.getUserId())) { + SysUser sysUser = remoteSystemService.getUserById(Long.parseLong(identityLink.getUserId())); + stringBuilder.append(sysUser.getNickName()).append(","); + } + if (StringUtils.isNotBlank(identityLink.getGroupId())) { + SysRole sysRole = remoteSystemService.getRoleById(Long.parseLong(identityLink.getGroupId())); + stringBuilder.append(sysRole.getRoleName()).append(","); + } + } + } + if (StringUtils.isNotBlank(stringBuilder)) { + flowTask.setCandidate(stringBuilder.substring(0, stringBuilder.length() - 1)); + } + + flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis())); + // 获取意见评论内容 + List commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId()); + commentList.forEach(comment -> { + if (histIns.getTaskId().equals(comment.getTaskId())) { + flowTask.setComment(FlowCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build()); + } + }); + return AjaxResult.success(flowTask); + } + + /** + * 将Object类型的数据转化成Map + * + * @param obj + * @return + * @throws Exception + */ + public Map obj2Map(Object obj) throws Exception { + Map map = new HashMap(); + Field[] fields = obj.getClass().getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); + map.put(field.getName(), field.get(obj)); + } + return map; + } + + /** + * 流程完成时间处理 + * + * @param ms + * @return + */ + private String getDate(long ms) { + + long day = ms / (24 * 60 * 60 * 1000); + long hour = (ms / (60 * 60 * 1000) - day * 24); + long minute = ((ms / (60 * 1000)) - day * 24 * 60 - hour * 60); + long second = (ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); + + if (day > 0) { + return day + "天" + hour + "小时" + minute + "分钟"; + } + if (hour > 0) { + return hour + "小时" + minute + "分钟"; + } + if (minute > 0) { + return minute + "分钟"; + } + if (second > 0) { + return second + "秒"; + } else { + return 0 + "秒"; + } + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableCategoryServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableCategoryServiceImpl.java deleted file mode 100644 index 79144324..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableCategoryServiceImpl.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.yanzhu.flowable.service.impl; - -import com.yanzhu.common.core.utils.DateUtils; -import com.yanzhu.common.redis.service.RedisService; -import com.yanzhu.flowable.common.enums.CacheType; -import com.yanzhu.flowable.domain.FlowableCategory; -import com.yanzhu.flowable.mapper.FlowableCategoryMapper; -import com.yanzhu.flowable.service.IFlowableCategoryService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 流程分类Service业务层处理 - * - * @author ruoyi - * @date 2023-11-27 - */ -@Service -public class FlowableCategoryServiceImpl implements IFlowableCategoryService { - - private static final Logger log = LoggerFactory.getLogger(FlowableCategoryServiceImpl.class); - - @Autowired - private RedisService redisService; - - @Autowired - private FlowableCategoryMapper flowableCategoryMapper; - - /** - * 查询流程分类 - * - * @param id 流程分类主键 - * @return 流程分类 - */ - @Override - public FlowableCategory selectFlowableCategoryById(Long id) - { - return flowableCategoryMapper.selectFlowableCategoryById(id); - } - - /** - * 查询流程分类列表 - * - * @param flowableCategory 流程分类 - * @return 流程分类 - */ - @Override - public List selectFlowableCategoryList(FlowableCategory flowableCategory) - { - log.debug("enter selectFlowableCategoryList!"); - List flowableCategories = flowableCategoryMapper.selectFlowableCategoryList(flowableCategory); - updateRedis(flowableCategories); - return flowableCategories; - } - - /** - * 更新缓存 - * @param flowableCategories - */ - @Override - public Map updateRedis(List flowableCategories) { - if(flowableCategories==null ){ - flowableCategories = selectFlowableCategoryList(new FlowableCategory()); - } - //更新缓存 - Map categoryMap = flowableCategories.stream().collect(Collectors.toMap(FlowableCategory::getCode, FlowableCategory::getName)); - redisService.setCacheObject(CacheType.FLOWCATEGORY.getCode(), categoryMap); - return categoryMap; - } - - /** - * 新增流程分类 - * - * @param flowableCategory 流程分类 - * @return 结果 - */ - @Override - public int insertFlowableCategory(FlowableCategory flowableCategory) - { - flowableCategory.setCreateTime(DateUtils.getNowDate()); - return flowableCategoryMapper.insertFlowableCategory(flowableCategory); - } - - /** - * 修改流程分类 - * - * @param flowableCategory 流程分类 - * @return 结果 - */ - @Override - public int updateFlowableCategory(FlowableCategory flowableCategory) - { - flowableCategory.setUpdateTime(DateUtils.getNowDate()); - return flowableCategoryMapper.updateFlowableCategory(flowableCategory); - } - - /** - * 批量删除流程分类 - * - * @param ids 需要删除的流程分类主键 - * @return 结果 - */ - @Override - public int deleteFlowableCategoryByIds(Long[] ids) - { - return flowableCategoryMapper.deleteFlowableCategoryByIds(ids); - } - - /** - * 删除流程分类信息 - * - * @param id 流程分类主键 - * @return 结果 - */ - @Override - public int deleteFlowableCategoryById(Long id) - { - return flowableCategoryMapper.deleteFlowableCategoryById(id); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableDeployServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableDeployServiceImpl.java deleted file mode 100644 index a256a2fe..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableDeployServiceImpl.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.yanzhu.flowable.service.impl; - -import com.yanzhu.common.core.utils.StringUtils; -import com.yanzhu.common.core.web.page.PageDomain; -import com.yanzhu.common.core.web.page.TableSupport; -import com.yanzhu.flowable.domain.FlowableDeploy; -import com.yanzhu.flowable.factory.FlowServiceFactory; -import com.yanzhu.flowable.service.IFlowableDeployService; -import org.flowable.common.engine.impl.db.SuspensionState; -import org.flowable.engine.repository.Deployment; -import org.flowable.engine.repository.ProcessDefinition; -import org.flowable.engine.repository.ProcessDefinitionQuery; -import org.springframework.stereotype.Service; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 流程部署Service业务层处理 - * - * @author ruoyi - * @date 2023-12-18 - */ -@Service -public class FlowableDeployServiceImpl extends FlowServiceFactory implements IFlowableDeployService -{ - /** - * 查询流程部署 - * - * @param definitionId 流程部署主键 - * @return 流程部署 - */ - @Override - public FlowableDeploy selectFlowableDeployByDefinitionId(String definitionId) - { - ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery() - .latestVersion() - .orderByProcessDefinitionKey() - .asc(); - processDefinitionQuery.deploymentId(definitionId); - if(processDefinitionQuery.count()==0){ - return new FlowableDeploy(); - } - FlowableDeploy flowableDeploy = new FlowableDeploy(); - ProcessDefinition result = processDefinitionQuery.singleResult(); - - flowableDeploy.setDefinitionId(result.getId()); - flowableDeploy.setDeploymentId(result.getDeploymentId()); - flowableDeploy.setVersion(result.getVersion()); - Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(definitionId).singleResult(); - flowableDeploy.setDeploymentTime(deployment.getDeploymentTime()); - flowableDeploy.setSuspended(result.isSuspended()); - flowableDeploy.setProcessKey(result.getKey()); - flowableDeploy.setProcessName(result.getName()); - flowableDeploy.setCategory(deployment.getCategory()); - return flowableDeploy; - } - - /** - * 查询流程部署列表 - * - * @param flowableDeploy 流程部署 - * @return 流程部署 - */ - @Override - public List selectFlowableDeployList(FlowableDeploy flowableDeploy) - { - List retList = null; - // 流程定义列表数据查询 - ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery() - .latestVersion() - .orderByProcessDefinitionKey() - .asc(); - if (StringUtils.isNotBlank(flowableDeploy.getProcessKey())) { - processDefinitionQuery.processDefinitionKeyLike("%" + flowableDeploy.getProcessKey() + "%"); - } - if (StringUtils.isNotBlank(flowableDeploy.getProcessName())) { - processDefinitionQuery.processDefinitionNameLike("%" + flowableDeploy.getProcessName() + "%"); - } - if (StringUtils.isNotBlank(flowableDeploy.getCategory())) { - processDefinitionQuery.processDefinitionCategory(flowableDeploy.getCategory()); - } - if (flowableDeploy.getSuspended()!=null) { - if(!flowableDeploy.getSuspended()){ - processDefinitionQuery.active(); - } else { - processDefinitionQuery.suspended(); - } - } - long pageTotal = processDefinitionQuery.count(); - if (pageTotal <= 0) { - return new ArrayList<>(); - } - PageDomain pageDomain = TableSupport.getPageDomain(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - int offset = pageSize * (pageNum - 1); - List definitionList = processDefinitionQuery.listPage(offset, pageSize); - - retList = new ArrayList<>(definitionList.size()); - for (ProcessDefinition processDefinition : definitionList) { - String deploymentId = processDefinition.getDeploymentId(); - - Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult(); - FlowableDeploy vo = new FlowableDeploy(); - vo.setDefinitionId(processDefinition.getId()); - vo.setProcessKey(processDefinition.getKey()); - vo.setProcessName(processDefinition.getName()); - vo.setVersion(processDefinition.getVersion()); - vo.setCategory(processDefinition.getCategory()); - vo.setDeploymentId(processDefinition.getDeploymentId()); - vo.setSuspended(processDefinition.isSuspended()); - // 流程部署信息 - vo.setCategory(deployment.getCategory()); - vo.setDeploymentTime(deployment.getDeploymentTime()); - retList.add(vo); - } - return retList; - } - - /** - * 批量删除流程部署 - * - * @param definitionIds 需要删除的流程部署主键 - * @return 结果 - */ - @Override - public int deleteFlowableDeployByDefinitionIds(String[] definitionIds) - { - for (String deployId : definitionIds) { - repositoryService.deleteDeployment(deployId, true); - //deployFormMapper.delete(new LambdaQueryWrapper().eq(WfDeployForm::getDeployId, deployId)); - } - return definitionIds.length; - } - - /** - * 删除流程部署信息 - * - * @param definitionId 流程部署主键 - * @return 结果 - */ - @Override - public int deleteFlowableDeployByDefinitionId(String definitionId) - { - repositoryService.deleteDeployment(definitionId, true); - return 1; - } - - /** - * 查询部署的所有历史版本 - * @param processKey - * @return - */ - @Override - public List queryPublishList(String processKey) { - // 创建查询条件 - ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery() - .processDefinitionKey(processKey) - .orderByProcessDefinitionVersion() - .desc(); - long pageTotal = processDefinitionQuery.count(); - if (pageTotal <= 0) { - return new ArrayList<>(); - } - // 根据查询条件,查询所有版本 - PageDomain pageDomain = TableSupport.getPageDomain(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - int offset = pageSize * (pageNum - 1); - List processDefinitionList = processDefinitionQuery - .listPage(offset, pageSize); - List retList = processDefinitionList.stream().map(item -> { - FlowableDeploy vo = new FlowableDeploy(); - vo.setDefinitionId(item.getId()); - vo.setProcessKey(item.getKey()); - vo.setProcessName(item.getName()); - vo.setVersion(item.getVersion()); - vo.setCategory(item.getCategory()); - vo.setDeploymentId(item.getDeploymentId()); - vo.setSuspended(item.isSuspended()); - return vo; - }).collect(Collectors.toList()); - return retList; - } - - /** - * 改变部署状态 - * - * @param definitionId - * @param stateCode - */ - @Override - public void updateState(String definitionId, String stateCode) { - if (SuspensionState.ACTIVE.toString().equals(stateCode)) { - // 激活 - repositoryService.activateProcessDefinitionById(definitionId, true, null); - } else if (SuspensionState.SUSPENDED.toString().equals(stateCode)) { - // 挂起 - repositoryService.suspendProcessDefinitionById(definitionId, true, null); - } - } - - /** - * 查询流程图 - * - * @param definitionId - * @return - */ - @Override - public String queryBpmnXmlById(String definitionId) { - InputStream inputStream = repositoryService.getProcessModel(definitionId); - try { - return StringUtils.utf8Str(inputStream); - } catch (Exception exception) { - throw new RuntimeException("加载xml文件异常"); - } - } - -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldDefServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldDefServiceImpl.java deleted file mode 100644 index 0ceecfb3..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldDefServiceImpl.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.yanzhu.flowable.service.impl; - -import com.yanzhu.common.core.utils.DateUtils; -import com.yanzhu.flowable.domain.FlowableFieldDef; -import com.yanzhu.flowable.domain.FlowableFieldSearch; -import com.yanzhu.flowable.mapper.FlowableFieldDefMapper; -import com.yanzhu.flowable.service.IFlowableFieldDefService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 流程字段定义Service业务层处理 - * - * @author ruoyi - * @date 2023-12-26 - */ -@Service -public class FlowableFieldDefServiceImpl implements IFlowableFieldDefService -{ - @Autowired - private FlowableFieldDefMapper flowableFieldDefMapper; - - /** - * 查询流程字段定义 - * - * @param id 流程字段定义主键 - * @return 流程字段定义 - */ - @Override - public FlowableFieldDef selectFlowableFieldDefById(String id) - { - return flowableFieldDefMapper.selectFlowableFieldDefById(id); - } - - /** - * 查询流程字段定义列表 - * - * @param flowableFieldDef 流程字段定义 - * @return 流程字段定义 - */ - @Override - public List selectFlowableFieldDefList(FlowableFieldDef flowableFieldDef) - { - return flowableFieldDefMapper.selectFlowableFieldDefList(flowableFieldDef); - } - - /** - * 新增流程字段定义 - * - * @param flowableFieldDef 流程字段定义 - * @return 结果 - */ - @Override - public int insertFlowableFieldDef(FlowableFieldDef flowableFieldDef) - { - flowableFieldDef.setCreateTime(DateUtils.getNowDate()); - return flowableFieldDefMapper.insertFlowableFieldDef(flowableFieldDef); - } - - /** - * 修改流程字段定义 - * - * @param flowableFieldDef 流程字段定义 - * @return 结果 - */ - @Override - public int updateFlowableFieldDef(FlowableFieldDef flowableFieldDef) - { - flowableFieldDef.setUpdateTime(DateUtils.getNowDate()); - return flowableFieldDefMapper.updateFlowableFieldDef(flowableFieldDef); - } - - /** - * 批量删除流程字段定义 - * - * @param ids 需要删除的流程字段定义主键 - * @return 结果 - */ - @Override - public int deleteFlowableFieldDefByIds(String[] ids) - { - return flowableFieldDefMapper.deleteFlowableFieldDefByIds(ids); - } - - /** - * 删除流程字段定义信息 - * - * @param id 流程字段定义主键 - * @return 结果 - */ - @Override - public int deleteFlowableFieldDefById(String id) - { - return flowableFieldDefMapper.deleteFlowableFieldDefById(id); - } - - /** - * 查询流程字段引用关系列表(不翻页,关联字段定义表查询) - * - * @param flowableFieldSearch - * @return - */ - @Override - public List listCombination(FlowableFieldSearch flowableFieldSearch) { - return flowableFieldDefMapper.listCombination(flowableFieldSearch); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldRefServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldRefServiceImpl.java deleted file mode 100644 index a1a2a2ec..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableFieldRefServiceImpl.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.yanzhu.flowable.service.impl; - -import com.yanzhu.common.core.utils.DateUtils; -import com.yanzhu.flowable.domain.FlowableFieldRef; -import com.yanzhu.flowable.mapper.FlowableFieldRefMapper; -import com.yanzhu.flowable.service.IFlowableFieldRefService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 流程字段引用关系Service业务层处理 - * - * @author ruoyi - * @date 2023-12-26 - */ -@Service -public class FlowableFieldRefServiceImpl implements IFlowableFieldRefService -{ - @Autowired - private FlowableFieldRefMapper flowableFieldRefMapper; - - /** - * 查询流程字段引用关系 - * - * @param id 流程字段引用关系主键 - * @return 流程字段引用关系 - */ - @Override - public FlowableFieldRef selectFlowableFieldRefById(String id) - { - return flowableFieldRefMapper.selectFlowableFieldRefById(id); - } - - /** - * 查询流程字段引用关系列表 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 流程字段引用关系 - */ - @Override - public List selectFlowableFieldRefList(FlowableFieldRef flowableFieldRef) - { - return flowableFieldRefMapper.selectFlowableFieldRefList(flowableFieldRef); - } - - /** - * 新增流程字段引用关系 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 结果 - */ - @Override - public int insertFlowableFieldRef(FlowableFieldRef flowableFieldRef) - { - flowableFieldRef.setCreateTime(DateUtils.getNowDate()); - return flowableFieldRefMapper.insertFlowableFieldRef(flowableFieldRef); - } - - /** - * 修改流程字段引用关系 - * - * @param flowableFieldRef 流程字段引用关系 - * @return 结果 - */ - @Override - public int updateFlowableFieldRef(FlowableFieldRef flowableFieldRef) - { - flowableFieldRef.setUpdateTime(DateUtils.getNowDate()); - return flowableFieldRefMapper.updateFlowableFieldRef(flowableFieldRef); - } - - /** - * 批量删除流程字段引用关系 - * - * @param ids 需要删除的流程字段引用关系主键 - * @return 结果 - */ - @Override - public int deleteFlowableFieldRefByIds(String[] ids) - { - return flowableFieldRefMapper.deleteFlowableFieldRefByIds(ids); - } - - /** - * 删除流程字段引用关系信息 - * - * @param id 流程字段引用关系主键 - * @return 结果 - */ - @Override - public int deleteFlowableFieldRefById(String id) - { - return flowableFieldRefMapper.deleteFlowableFieldRefById(id); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelPageServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelPageServiceImpl.java deleted file mode 100644 index 60f017b3..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelPageServiceImpl.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.yanzhu.flowable.service.impl; - -import com.yanzhu.common.core.exception.ServiceException; -import com.yanzhu.common.core.utils.DateUtils; -import com.yanzhu.common.core.utils.StringUtils; -import com.yanzhu.common.security.utils.SecurityUtils; -import com.yanzhu.flowable.domain.FlowableModelPage; -import com.yanzhu.flowable.mapper.FlowableModelPageMapper; -import com.yanzhu.flowable.service.IFlowableModelPageService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -import java.util.List; - -/** - * 建模页面绑定Service业务层处理 - * - * @author ruoyi - * @date 2023-12-25 - */ -@Service -public class FlowableModelPageServiceImpl implements IFlowableModelPageService -{ - @Autowired - private FlowableModelPageMapper flowableModelPageMapper; - - /** - * 查询建模页面绑定 - * - * @param id 建模页面绑定主键 - * @return 建模页面绑定 - */ - @Override - public FlowableModelPage selectFlowableModelPageById(String id) - { - return flowableModelPageMapper.selectFlowableModelPageById(id); - } - - /** - * 查询建模页面绑定列表 - * - * @param flowableModelPage 建模页面绑定 - * @return 建模页面绑定 - */ - @Override - public List selectFlowableModelPageList(FlowableModelPage flowableModelPage) - { - return flowableModelPageMapper.selectFlowableModelPageList(flowableModelPage); - } - - /** - * 新增建模页面绑定 - * - * @param flowableModelPage 建模页面绑定 - * @return 结果 - */ - @Override - public int insertFlowableModelPage(FlowableModelPage flowableModelPage) - { - flowableModelPage.setCreateTime(DateUtils.getNowDate()); - //设置创建用户id及用户名 - flowableModelPage.setCreateBy(SecurityUtils.getUsername()); - return flowableModelPageMapper.insertFlowableModelPage(flowableModelPage); - } - - /** - * 修改建模页面绑定 - * - * @param flowableModelPage 建模页面绑定 - * @return 结果 - */ - @Override - public int updateFlowableModelPage(FlowableModelPage flowableModelPage) - { - flowableModelPage.setUpdateTime(DateUtils.getNowDate()); - //设置更新用户用户名 - flowableModelPage.setUpdateBy(SecurityUtils.getUsername()); - return flowableModelPageMapper.updateFlowableModelPage(flowableModelPage); - } - - /** - * 批量删除建模页面绑定 - * - * @param ids 需要删除的建模页面绑定主键 - * @return 结果 - */ - @Override - public int deleteFlowableModelPageByIds(String[] ids) - { - return flowableModelPageMapper.deleteFlowableModelPageByIds(ids); - } - - /** - * 删除建模页面绑定信息 - * - * @param id 建模页面绑定主键 - * @return 结果 - */ - @Override - public int deleteFlowableModelPageById(String id) - { - return flowableModelPageMapper.deleteFlowableModelPageById(id); - } - - /** - * 查询需要绑定的建模页面 - * - * @param flowableModelPage - * @return - */ - @Override - public List selectFlowableModelPageListByBind(FlowableModelPage flowableModelPage) { - FlowableModelPage searchModelPage = new FlowableModelPage(); - //参数检查 - //模块不能为空 - if(StringUtils.isEmpty(flowableModelPage.getModule())) - throw new ServiceException("模块名称不能为空!"); - //流程标识不能为空 - if(StringUtils.isEmpty(flowableModelPage.getMkey())) - throw new ServiceException("流程标识不能空!"); - //页面名称不能为空 - if(StringUtils.isEmpty(flowableModelPage.getName())) - throw new ServiceException("页面名称不能为空!"); - searchModelPage.setModule(flowableModelPage.getModule()); - searchModelPage.setMkey(flowableModelPage.getMkey()); - searchModelPage.setName(flowableModelPage.getName()); - return flowableModelPageMapper.selectFlowableModelPageList(searchModelPage); - } - - /*** - * 建模页面单页面查询(根据模块,流程标识,页面名称查询) - * @param flowableModelPage - * @return - */ - @Override - public FlowableModelPage selectFlowableModelPageSingle(FlowableModelPage flowableModelPage) { - FlowableModelPage searchModelPage = new FlowableModelPage(); - //参数检查 - //模块不能为空 - if(StringUtils.isEmpty(flowableModelPage.getModule())) { - return null; - } - //流程标识不能为空 - if(StringUtils.isEmpty(flowableModelPage.getMkey())){ - return null; - } - //页面名称不能为空 - if(StringUtils.isEmpty(flowableModelPage.getName())){ - return null; - } - searchModelPage.setModule(flowableModelPage.getModule()); - searchModelPage.setMkey(flowableModelPage.getMkey()); - searchModelPage.setName(flowableModelPage.getName()); - List list = flowableModelPageMapper.selectFlowableModelPageList(searchModelPage); - if(CollectionUtils.isEmpty(list)){ - return null; - }else{ - return list.get(0); - } - } - - /** - * 建模页面模块页面查询(按模块,流程标识查询) - * - * @param flowableModelPage - * @return - */ - @Override - public List selectFlowableModelPage(FlowableModelPage flowableModelPage) { - FlowableModelPage searchModelPage = new FlowableModelPage(); - //参数检查 - //模块不能为空 - if(StringUtils.isEmpty(flowableModelPage.getModule())) - throw new ServiceException("模块名称不能为空!"); - //流程标识不能为空 - if(StringUtils.isEmpty(flowableModelPage.getMkey())) - throw new ServiceException("流程标识不能空!"); - searchModelPage.setModule(flowableModelPage.getModule()); - searchModelPage.setMkey(flowableModelPage.getMkey()); - return flowableModelPageMapper.selectFlowableModelPageList(searchModelPage); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelServiceImpl.java deleted file mode 100644 index 5adc8df5..00000000 --- a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/FlowableModelServiceImpl.java +++ /dev/null @@ -1,423 +0,0 @@ -package com.yanzhu.flowable.service.impl; - -import com.alibaba.fastjson2.JSON; -import com.yanzhu.common.core.utils.DateUtils; -import com.yanzhu.common.core.utils.StringUtils; -import com.yanzhu.common.core.web.page.PageDomain; -import com.yanzhu.common.core.web.page.TableSupport; -import com.yanzhu.common.redis.service.RedisService; -import com.yanzhu.common.security.utils.SecurityUtils; -import com.yanzhu.flowable.common.constant.ProcessConstants; -import com.yanzhu.flowable.common.enums.CacheType; -import com.yanzhu.flowable.common.enums.FormType; -import com.yanzhu.flowable.domain.FlowableModel; -import com.yanzhu.flowable.domain.bo.FlowableMetaInfoBo; -import com.yanzhu.flowable.domain.bo.FlowableModelBo; -import com.yanzhu.flowable.factory.FlowServiceFactory; -import com.yanzhu.flowable.flow.ModelHelper; -import com.yanzhu.flowable.service.IFlowableCategoryService; -import com.yanzhu.flowable.service.IFlowableModelService; -import lombok.extern.slf4j.Slf4j; -import org.flowable.bpmn.model.BpmnModel; -import org.flowable.bpmn.model.StartEvent; -import org.flowable.engine.repository.Deployment; -import org.flowable.engine.repository.Model; -import org.flowable.engine.repository.ModelQuery; -import org.flowable.engine.repository.ProcessDefinition; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 流程模型Service业务层处理 - * - * @author ruoyi - * @createtime 2023-11-28 - */ -@Service -@Slf4j -public class FlowableModelServiceImpl extends FlowServiceFactory implements IFlowableModelService -{ - - @Autowired - private RedisService redisService; - - @Autowired - private IFlowableCategoryService flowableCategoryService; - /** - * 查询流程模型 - * - * @param modelId 流程模型主键 - * @return 流程模型 - */ - @Override - public FlowableModel selectFlowableModelByModelId(String modelId) - { - // 获取流程模型 - Model model = repositoryService.getModel(modelId); - if (model==null) { - throw new RuntimeException("流程模型不存在!"); - } - // 获取流程图 - String bpmnXml ; - try { - bpmnXml = queryBpmnXmlById(modelId); - } catch (UnsupportedEncodingException e) { - //e.printStackTrace(); - log.error("模型转换为字符串失败!模型id:"+modelId,e); - throw new RuntimeException("模型转换为字符串失败!"); - } - FlowableModel modelVo = new FlowableModel(); - modelVo.setModelId(model.getId()); - modelVo.setModelName(model.getName()); - modelVo.setModelKey(model.getKey()); - modelVo.setCategory(model.getCategory()); - modelVo.setCreateTime(model.getCreateTime()); - modelVo.setVersion(model.getVersion()); - modelVo.setBpmnXml(bpmnXml); - FlowableMetaInfoBo metaInfo = JSON.parseObject(model.getMetaInfo(), FlowableMetaInfoBo.class); - if (metaInfo != null) { - modelVo.setDescription(metaInfo.getDescription()); - modelVo.setFormType(metaInfo.getFormType()); - modelVo.setFormId(metaInfo.getFormId()); - if (FormType.PROCESS.getType().equals(metaInfo.getFormType())) { - //TODO - //WfFormVo wfFormVo = formService.queryById(metaInfo.getFormId()); - //modelVo.setContent(wfFormVo.getContent()); - } - } - return modelVo; - } - - /** - * 查询流程模型列表 - * - * @param flowableModel 流程模型 - * @return 流程模型 - */ - @Override - public List selectFlowableModelList(FlowableModelBo flowableModel) - { - PageDomain pageDomain = TableSupport.getPageDomain(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - - ModelQuery modelQuery = repositoryService.createModelQuery().latestVersion().orderByCreateTime().desc(); - - // 构建查询条件 - if (StringUtils.isNotBlank(flowableModel.getModelKey())) { - modelQuery.modelKey(flowableModel.getModelKey()); - } - if (StringUtils.isNotBlank(flowableModel.getModelName())) { - modelQuery.modelNameLike("%" + flowableModel.getModelName() + "%"); - } - if (StringUtils.isNotBlank(flowableModel.getCategory())) { - modelQuery.modelCategory(flowableModel.getCategory()); - } - - // 执行查询 - long pageTotal = modelQuery.count(); - if (pageTotal <= 0) { - return new ArrayList<>(); - } - //有bug 先注掉 - //modelQuery = modelQuery.latestVersion(); - int offset = pageSize * (pageNum - 1); - List modelList = modelQuery.listPage(offset, pageSize); - List flowableModelList = new ArrayList<>(modelList.size()); - //获取流程分类缓存 - Map flowCategoryMap = redisService.getCacheObject(CacheType.FLOWCATEGORY.getCode()); - if(flowCategoryMap==null){ - flowCategoryMap = flowableCategoryService.updateRedis(null); - } - Map finalFlowCategoryMap = flowCategoryMap; - modelList.forEach(model -> { - FlowableModel modelVo = new FlowableModel(); - modelVo.setModelId(model.getId()); - modelVo.setModelName(model.getName()); - modelVo.setModelKey(model.getKey()); - //翻译分类 - modelVo.setCategory(finalFlowCategoryMap.get(model.getCategory())); - modelVo.setCreateTime(model.getCreateTime()); - modelVo.setVersion(model.getVersion()); - FlowableMetaInfoBo metaInfo = JSON.parseObject(model.getMetaInfo(), FlowableMetaInfoBo.class); - if (metaInfo != null) { - modelVo.setDescription(metaInfo.getDescription()); - modelVo.setFormType(metaInfo.getFormType()); - modelVo.setFormId(metaInfo.getFormId()); - } - flowableModelList.add(modelVo); - }); - return flowableModelList; - } - - /** - * 新增流程模型 - * - * @param flowableModel 流程模型 - * @return - */ - @Override - public int insertFlowableModel(FlowableModel flowableModel) - { - flowableModel.setCreateTime(DateUtils.getNowDate()); - Model model = repositoryService.newModel(); - model.setName(flowableModel.getModelName()); - model.setKey(flowableModel.getModelKey()); - model.setCategory(flowableModel.getCategory()); - String metaInfo = buildMetaInfo(new FlowableMetaInfoBo(), flowableModel.getDescription()); - model.setMetaInfo(metaInfo); - // 保存流程模型 - repositoryService.saveModel(model); - return 1; - } - - /** - * 修改流程模型 - * - * @param flowableModel 流程模型 - * @return - */ - @Override - public int updateFlowableModel(FlowableModel flowableModel) - { - // 根据模型Key查询模型信息 - Model model = repositoryService.getModel(flowableModel.getModelId()); - if (model==null) { - throw new RuntimeException("流程模型不存在!"); - } - model.setCategory(flowableModel.getCategory()); - FlowableMetaInfoBo metaInfoDto = JSON.parseObject(model.getMetaInfo(), FlowableMetaInfoBo.class); - String metaInfo = buildMetaInfo(metaInfoDto, flowableModel.getDescription()); - model.setMetaInfo(metaInfo); - // 保存流程模型 - repositoryService.saveModel(model); - return 1; - } - - /** - * 批量删除流程模型 - * - * @param modelIds 需要删除的流程模型主键 - * @return - */ - @Override - public int deleteFlowableModelByModelIds(String[] modelIds) - { - for(String id:modelIds){ - Model model = repositoryService.getModel(id); - if (model==null) { - throw new RuntimeException("流程模型不存在!"); - } - repositoryService.deleteModel(id); - } - return modelIds.length; - } - - /** - * 删除流程模型信息 - * - * @param modelId 流程模型主键 - */ - @Override - public void deleteFlowableModelByModelId(String modelId) - { - Model model = repositoryService.getModel(modelId); - if (model==null) { - throw new RuntimeException("流程模型不存在!"); - } - repositoryService.deleteModel(modelId); - } - - /** - * 部署流程 - * - * @param modelId 模型id - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void deployModel(String modelId) throws UnsupportedEncodingException { - // 获取流程模型 - Model model = repositoryService.getModel(modelId); - if (model== null) { - throw new RuntimeException("流程模型不存在!"); - } - // 获取流程图 - String bpmnXml = queryBpmnXmlById(modelId); - //BpmnModel bpmnModel = ModelHelper.getBpmnModel(bpmnXml); - String processName = model.getName() + ProcessConstants.SUFFIX; - Deployment deployment = repositoryService.createDeployment() - .key(model.getKey()) - .name(model.getName()) - .category(model.getCategory()) - .addString(model.getKey() + ".bpmn20.xml", bpmnXml) - .deploy(); - // 调整分类 - ProcessDefinition precessDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); - repositoryService.setProcessDefinitionCategory(precessDefinition.getId(),model.getCategory()); - // TODO:保存部署表单 - - } - - /** - * 构建模型扩展信息 - * @return 返回模型扩展信息 - */ - private String buildMetaInfo(FlowableMetaInfoBo metaInfo, String description) { - // 只有非空,才进行设置,避免更新时的覆盖 - if (StringUtils.isNotEmpty(description)) { - metaInfo.setDescription(description); - } - if (StringUtils.isNotEmpty(metaInfo.getCreateUser())) { - metaInfo.setCreateUser(SecurityUtils.getUsername()); - } - return JSON.toJSONString(metaInfo); - } - - /** - * 将模型数据转字符串返回 - * @param modelId 模型id - * @return 返回模型字符串格式 - */ - public String queryBpmnXmlById(String modelId) throws UnsupportedEncodingException { - byte[] bpmnBytes = repositoryService.getModelEditorSource(modelId); - if(bpmnBytes!=null) { - return new String(bpmnBytes, StandardCharsets.UTF_8); - }else{ - return new String(""); - } - } - - /** - * 查询模型历史版本 - * - * @param modelBo - * @return - */ - @Override - public List historyList(FlowableModelBo modelBo) { - ModelQuery modelQuery = repositoryService.createModelQuery() - .modelKey(modelBo.getModelKey()) - .orderByModelVersion() - .desc(); - // 执行查询(不显示最新版,-1) - long pageTotal = modelQuery.count() - 1; - if (pageTotal <= 0) { - return new ArrayList<>(); - } - PageDomain pageDomain = TableSupport.getPageDomain(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - // offset+1,去掉最新版 - int offset = 1 + pageSize * (pageNum - 1); - List modelList = modelQuery.listPage(offset, pageSize); - List modelVoList = new ArrayList<>(modelList.size()); - modelList.forEach(model -> { - FlowableModel modelVo = new FlowableModel(); - modelVo.setModelId(model.getId()); - modelVo.setModelName(model.getName()); - modelVo.setModelKey(model.getKey()); - modelVo.setCategory(model.getCategory()); - modelVo.setCreateTime(model.getCreateTime()); - modelVo.setVersion(model.getVersion()); - FlowableMetaInfoBo metaInfo = JSON.parseObject(model.getMetaInfo(), FlowableMetaInfoBo.class); - if (metaInfo != null) { - modelVo.setDescription(metaInfo.getDescription()); - modelVo.setFormType(metaInfo.getFormType()); - modelVo.setFormId(metaInfo.getFormId()); - } - modelVoList.add(modelVo); - }); - return modelVoList; - } - @Override - @Transactional(rollbackFor = Exception.class) - public void saveModel(FlowableModelBo modelBo) { - // 查询模型信息 - Model model = repositoryService.getModel(modelBo.getModelId()); - if (model==null) { - throw new RuntimeException("流程模型不存在!"); - } - log.info("==========bpmnxml========="); - log.info(modelBo.getBpmnXml()); - BpmnModel bpmnModel = ModelHelper.getBpmnModel(modelBo.getBpmnXml()); - if (bpmnModel==null) { - throw new RuntimeException("获取模型设计失败!"); - } - //String processName = bpmnModel.getMainProcess().getName(); - // 获取开始节点 - StartEvent startEvent = ModelHelper.getStartEvent(bpmnModel); - if (startEvent==null) { - throw new RuntimeException("开始节点不存在,请检查流程设计是否有误!"); - } - // 获取开始节点配置的表单Key -// if (StringUtils.isBlank(startEvent.getFormKey())) { -// throw new RuntimeException("请配置流程表单"); -// } - Model newModel; - if (Boolean.TRUE.equals(modelBo.getNewVersion())) { - newModel = repositoryService.newModel(); - newModel.setName(model.getName()); - newModel.setKey(model.getKey()); - newModel.setCategory(model.getCategory()); - newModel.setMetaInfo(model.getMetaInfo()); - //获取最大版本号 - ModelQuery modelQuery = repositoryService.createModelQuery() - .modelName(model.getName()) - .modelCategory(model.getCategory()) - .orderByModelVersion() - .desc(); - int offset = 1 * (1 - 1); - List modelList = modelQuery.listPage(offset, 1); - newModel.setVersion(modelList.get(0).getVersion() + 1); - } else { - newModel = model; - // 设置流程名称 - newModel.setName(model.getName()); - } - // 保存流程模型 - repositoryService.saveModel(newModel); - // 保存 BPMN XML - repositoryService.addModelEditorSource(newModel.getId(), ModelHelper.getBpmnXml(bpmnModel)); - } - - /** - * 设置为最新版本 - * - * @param modelId - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void latestModel(String modelId) throws UnsupportedEncodingException { - // 获取流程模型 - Model model = repositoryService.getModel(modelId); - if (model==null) { - throw new RuntimeException("流程模型不存在!"); - } - String bpmnXml = queryBpmnXmlById(modelId); - Integer latestVersion = repositoryService.createModelQuery() - .modelKey(model.getKey()) - .latestVersion() - .singleResult() - .getVersion(); - if (model.getVersion().equals(latestVersion)) { - throw new RuntimeException("当前版本已是最新版!"); - } - Model newModel = repositoryService.newModel(); - newModel.setName(model.getName()); - newModel.setKey(model.getKey()); - newModel.setCategory(model.getCategory()); - newModel.setMetaInfo(model.getMetaInfo()); - newModel.setVersion(latestVersion + 1); - // 保存流程模型 - repositoryService.saveModel(newModel); - // 保存 BPMN XML - repositoryService.addModelEditorSource(newModel.getId(), bpmnXml.getBytes(StandardCharsets.UTF_8)); - } -} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysDeployFormServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysDeployFormServiceImpl.java new file mode 100644 index 00000000..f9604cba --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysDeployFormServiceImpl.java @@ -0,0 +1,105 @@ +package com.yanzhu.flowable.service.impl; + +import com.yanzhu.flowable.domain.SysDeployForm; +import com.yanzhu.flowable.domain.SysForm; +import com.yanzhu.flowable.mapper.SysDeployFormMapper; +import com.yanzhu.flowable.service.ISysDeployFormService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * 流程实例关联表单Service业务层处理 + * + * @author Tony + * @date 2021-04-03 + */ +@Service +public class SysDeployFormServiceImpl implements ISysDeployFormService { + @Autowired + private SysDeployFormMapper sysDeployFormMapper; + + /** + * 查询流程实例关联表单 + * + * @param id 流程实例关联表单ID + * @return 流程实例关联表单 + */ + @Override + public SysDeployForm selectSysDeployFormById(Long id) { + return sysDeployFormMapper.selectSysDeployFormById(id); + } + + /** + * 查询流程实例关联表单列表 + * + * @param sysDeployForm 流程实例关联表单 + * @return 流程实例关联表单 + */ + @Override + public List selectSysDeployFormList(SysDeployForm sysDeployForm) { + return sysDeployFormMapper.selectSysDeployFormList(sysDeployForm); + } + + /** + * 新增流程实例关联表单 + * + * @param sysDeployForm 流程实例关联表单 + * @return 结果 + */ + @Override + public int insertSysDeployForm(SysDeployForm sysDeployForm) { + SysForm sysForm = sysDeployFormMapper.selectSysDeployFormByDeployId(sysDeployForm.getDeployId()); + if (Objects.isNull(sysForm)) { + return sysDeployFormMapper.insertSysDeployForm(sysDeployForm); + } else { + return 1; + } + } + + /** + * 修改流程实例关联表单 + * + * @param sysDeployForm 流程实例关联表单 + * @return 结果 + */ + @Override + public int updateSysDeployForm(SysDeployForm sysDeployForm) { + return sysDeployFormMapper.updateSysDeployForm(sysDeployForm); + } + + /** + * 批量删除流程实例关联表单 + * + * @param ids 需要删除的流程实例关联表单ID + * @return 结果 + */ + @Override + public int deleteSysDeployFormByIds(Long[] ids) { + return sysDeployFormMapper.deleteSysDeployFormByIds(ids); + } + + /** + * 删除流程实例关联表单信息 + * + * @param id 流程实例关联表单ID + * @return 结果 + */ + @Override + public int deleteSysDeployFormById(Long id) { + return sysDeployFormMapper.deleteSysDeployFormById(id); + } + + /** + * 查询流程挂着的表单 + * + * @param deployId + * @return + */ + @Override + public SysForm selectSysDeployFormByDeployId(String deployId) { + return sysDeployFormMapper.selectSysDeployFormByDeployId(deployId); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysExpressionServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysExpressionServiceImpl.java new file mode 100644 index 00000000..d865e787 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysExpressionServiceImpl.java @@ -0,0 +1,97 @@ +package com.yanzhu.flowable.service.impl; + +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.flowable.domain.SysExpression; +import com.yanzhu.flowable.mapper.SysExpressionMapper; +import com.yanzhu.flowable.service.ISysExpressionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 流程达式Service业务层处理 + * + * @author ruoyi + * @date 2022-12-12 + */ +@Service +public class SysExpressionServiceImpl implements ISysExpressionService +{ + @Autowired + private SysExpressionMapper sysExpressionMapper; + + /** + * 查询流程达式 + * + * @param id 流程达式主键 + * @return 流程达式 + */ + @Override + public SysExpression selectSysExpressionById(Long id) + { + return sysExpressionMapper.selectSysExpressionById(id); + } + + /** + * 查询流程达式列表 + * + * @param sysExpression 流程达式 + * @return 流程达式 + */ + @Override + public List selectSysExpressionList(SysExpression sysExpression) + { + return sysExpressionMapper.selectSysExpressionList(sysExpression); + } + + /** + * 新增流程达式 + * + * @param sysExpression 流程达式 + * @return 结果 + */ + @Override + public int insertSysExpression(SysExpression sysExpression) + { + sysExpression.setCreateTime(DateUtils.getNowDate()); + return sysExpressionMapper.insertSysExpression(sysExpression); + } + + /** + * 修改流程达式 + * + * @param sysExpression 流程达式 + * @return 结果 + */ + @Override + public int updateSysExpression(SysExpression sysExpression) + { + sysExpression.setUpdateTime(DateUtils.getNowDate()); + return sysExpressionMapper.updateSysExpression(sysExpression); + } + + /** + * 批量删除流程达式 + * + * @param ids 需要删除的流程达式主键 + * @return 结果 + */ + @Override + public int deleteSysExpressionByIds(Long[] ids) + { + return sysExpressionMapper.deleteSysExpressionByIds(ids); + } + + /** + * 删除流程达式信息 + * + * @param id 流程达式主键 + * @return 结果 + */ + @Override + public int deleteSysExpressionById(Long id) + { + return sysExpressionMapper.deleteSysExpressionById(id); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysFormServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysFormServiceImpl.java new file mode 100644 index 00000000..a1bddb71 --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysFormServiceImpl.java @@ -0,0 +1,90 @@ +package com.yanzhu.flowable.service.impl; + +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.flowable.domain.SysForm; +import com.yanzhu.flowable.mapper.SysFormMapper; +import com.yanzhu.flowable.service.ISysFormService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 流程表单Service业务层处理 + * + * @author Tony + * @date 2021-04-03 + */ +@Service +public class SysFormServiceImpl implements ISysFormService { + @Autowired + private SysFormMapper sysFormMapper; + + /** + * 查询流程表单 + * + * @param formId 流程表单ID + * @return 流程表单 + */ + @Override + public SysForm selectSysFormById(Long formId) { + return sysFormMapper.selectSysFormById(formId); + } + + /** + * 查询流程表单列表 + * + * @param sysForm 流程表单 + * @return 流程表单 + */ + @Override + public List selectSysFormList(SysForm sysForm) { + return sysFormMapper.selectSysFormList(sysForm); + } + + /** + * 新增流程表单 + * + * @param sysForm 流程表单 + * @return 结果 + */ + @Override + public int insertSysForm(SysForm sysForm) { + sysForm.setCreateTime(DateUtils.getNowDate()); + return sysFormMapper.insertSysForm(sysForm); + } + + /** + * 修改流程表单 + * + * @param sysForm 流程表单 + * @return 结果 + */ + @Override + public int updateSysForm(SysForm sysForm) { + sysForm.setUpdateTime(DateUtils.getNowDate()); + return sysFormMapper.updateSysForm(sysForm); + } + + /** + * 批量删除流程表单 + * + * @param formIds 需要删除的流程表单ID + * @return 结果 + */ + @Override + public int deleteSysFormByIds(Long[] formIds) { + return sysFormMapper.deleteSysFormByIds(formIds); + } + + /** + * 删除流程表单信息 + * + * @param formId 流程表单ID + * @return 结果 + */ + @Override + public int deleteSysFormById(Long formId) { + return sysFormMapper.deleteSysFormById(formId); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysListenerServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysListenerServiceImpl.java new file mode 100644 index 00000000..3795de6d --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysListenerServiceImpl.java @@ -0,0 +1,97 @@ +package com.yanzhu.flowable.service.impl; + +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.flowable.domain.SysListener; +import com.yanzhu.flowable.mapper.SysListenerMapper; +import com.yanzhu.flowable.service.ISysListenerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 流程监听Service业务层处理 + * + * @author Tony + * @date 2022-12-25 + */ +@Service +public class SysListenerServiceImpl implements ISysListenerService +{ + @Autowired + private SysListenerMapper sysListenerMapper; + + /** + * 查询流程监听 + * + * @param id 流程监听主键 + * @return 流程监听 + */ + @Override + public SysListener selectSysListenerById(Long id) + { + return sysListenerMapper.selectSysListenerById(id); + } + + /** + * 查询流程监听列表 + * + * @param sysListener 流程监听 + * @return 流程监听 + */ + @Override + public List selectSysListenerList(SysListener sysListener) + { + return sysListenerMapper.selectSysListenerList(sysListener); + } + + /** + * 新增流程监听 + * + * @param sysListener 流程监听 + * @return 结果 + */ + @Override + public int insertSysListener(SysListener sysListener) + { + sysListener.setCreateTime(DateUtils.getNowDate()); + return sysListenerMapper.insertSysListener(sysListener); + } + + /** + * 修改流程监听 + * + * @param sysListener 流程监听 + * @return 结果 + */ + @Override + public int updateSysListener(SysListener sysListener) + { + sysListener.setUpdateTime(DateUtils.getNowDate()); + return sysListenerMapper.updateSysListener(sysListener); + } + + /** + * 批量删除流程监听 + * + * @param ids 需要删除的流程监听主键 + * @return 结果 + */ + @Override + public int deleteSysListenerByIds(Long[] ids) + { + return sysListenerMapper.deleteSysListenerByIds(ids); + } + + /** + * 删除流程监听信息 + * + * @param id 流程监听主键 + * @return 结果 + */ + @Override + public int deleteSysListenerById(Long id) + { + return sysListenerMapper.deleteSysListenerById(id); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysTaskFormServiceImpl.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysTaskFormServiceImpl.java new file mode 100644 index 00000000..5b80770a --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/service/impl/SysTaskFormServiceImpl.java @@ -0,0 +1,87 @@ +package com.yanzhu.flowable.service.impl; + +import com.yanzhu.flowable.domain.SysTaskForm; +import com.yanzhu.flowable.mapper.SysTaskFormMapper; +import com.yanzhu.flowable.service.ISysTaskFormService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 流程任务关联单Service业务层处理 + * + * @author Tony + * @date 2021-04-03 + */ +@Service +public class SysTaskFormServiceImpl implements ISysTaskFormService { + @Autowired + private SysTaskFormMapper sysTaskFormMapper; + + /** + * 查询流程任务关联单 + * + * @param id 流程任务关联单ID + * @return 流程任务关联单 + */ + @Override + public SysTaskForm selectSysTaskFormById(Long id) { + return sysTaskFormMapper.selectSysTaskFormById(id); + } + + /** + * 查询流程任务关联单列表 + * + * @param sysTaskForm 流程任务关联单 + * @return 流程任务关联单 + */ + @Override + public List selectSysTaskFormList(SysTaskForm sysTaskForm) { + return sysTaskFormMapper.selectSysTaskFormList(sysTaskForm); + } + + /** + * 新增流程任务关联单 + * + * @param sysTaskForm 流程任务关联单 + * @return 结果 + */ + @Override + public int insertSysTaskForm(SysTaskForm sysTaskForm) { + return sysTaskFormMapper.insertSysTaskForm(sysTaskForm); + } + + /** + * 修改流程任务关联单 + * + * @param sysTaskForm 流程任务关联单 + * @return 结果 + */ + @Override + public int updateSysTaskForm(SysTaskForm sysTaskForm) { + return sysTaskFormMapper.updateSysTaskForm(sysTaskForm); + } + + /** + * 批量删除流程任务关联单 + * + * @param ids 需要删除的流程任务关联单ID + * @return 结果 + */ + @Override + public int deleteSysTaskFormByIds(Long[] ids) { + return sysTaskFormMapper.deleteSysTaskFormByIds(ids); + } + + /** + * 删除流程任务关联单信息 + * + * @param id 流程任务关联单ID + * @return 结果 + */ + @Override + public int deleteSysTaskFormById(Long id) { + return sysTaskFormMapper.deleteSysTaskFormById(id); + } +} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/util/WorkflowUtil.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/util/WorkflowUtil.java new file mode 100644 index 00000000..637ad9fb --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/util/WorkflowUtil.java @@ -0,0 +1,14 @@ +package com.yanzhu.flowable.util; + +import com.github.pagehelper.PageInfo; + +import java.util.List; + +public class WorkflowUtil { + public static PageInfo toPageInfo(long count, List list) { + PageInfo pageInfo = new PageInfo<>(); + pageInfo.setTotal(count); + pageInfo.setList(list); + return pageInfo; + } +} diff --git a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysRoleRpc.java b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysRoleRpc.java new file mode 100644 index 00000000..30944fd8 --- /dev/null +++ b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysRoleRpc.java @@ -0,0 +1,32 @@ +package com.yanzhu.system.rpc; + +import com.yanzhu.common.core.domain.R; +import com.yanzhu.system.api.domain.SysRole; +import com.yanzhu.system.service.ISysRoleService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/rpc/role") +public class SysRoleRpc { + + @Resource + private ISysRoleService roleService; + + @GetMapping("/list") + public R> list(SysRole role) { + List list = roleService.selectRoleList(role); + return R.ok(list); + } + + @GetMapping(value = {"/{roleId}"}) + public R list(@PathVariable(value = "roleId") Long roleId) { + SysRole role = roleService.selectRoleById(roleId); + return R.ok(role); + } +} diff --git a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysUserRpc.java b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysUserRpc.java new file mode 100644 index 00000000..9a281a45 --- /dev/null +++ b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/rpc/SysUserRpc.java @@ -0,0 +1,34 @@ +package com.yanzhu.system.rpc; + +import com.yanzhu.common.core.domain.R; +import com.yanzhu.system.api.domain.SysUser; +import com.yanzhu.system.service.ISysUserService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/rpc/user") +public class SysUserRpc { + + @Resource + private ISysUserService userService; + + @GetMapping("/list") + public R> list(SysUser user) { + List list = userService.selectUserList(user); + return R.ok(list); + } + + + @GetMapping(value = {"/{userId}"}) + public R list(@PathVariable(value = "userId") Long userId) { + SysUser user = userService.selectUserById(userId); + return R.ok(user); + } + +} diff --git a/yanzhu-ui-vue3/README.md b/yanzhu-ui-vue3/README.md index a67606a8..ac2a3a1a 100644 --- a/yanzhu-ui-vue3/README.md +++ b/yanzhu-ui-vue3/README.md @@ -1,11 +1,11 @@

logo

-

RuoYi v3.6.2

+

RuoYi v3.6.3

基于 Vue3/Element Plus 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构

- +

@@ -40,33 +40,28 @@ yarn dev ## 系统模块 ~~~ -com.yanzhu -├── yanzhu-api // 接口模块 -│ └── yanzhu-api-system // 系统接口 -├── yanzhu-auth // 认证中心 [9200] -├── yanzhu-common // 通用模块 -│ └── yanzhu-common-core // 核心模块 -│ └── yanzhu-common-datascope // 权限范围 -│ └── yanzhu-common-datasource // 多数据源 -│ └── yanzhu-common-log // 日志记录 -│ └── yanzhu-common-mapper // 数据映射 -│ └── yanzhu-common-redis // 缓存服务 -│ └── yanzhu-common-seata // 分布式事务 -│ └── yanzhu-common-security // 安全模块 -│ └── yanzhu-common-swagger // 系统接口 -├── yanzhu-gateway // 网关模块 [8080] -├── yanzhu-modules // 业务模块 -│ └── yanzhu-system // 系统模块 [9201] -│ └── yanzhu-manage // 业务模块 [9208] -│ └── yanzhu-wechat // 微信模块 [9206] -│ └── yanzhu-gen // 代码生成 [9202] -│ └── yanzhu-job // 定时任务 [9203] -│ └── yanzhu-file // 文件服务 [9300] -├── yanzhu-monitor // 监控中心 [9100] -├── yanzhu-rocketMQ // 消息队列 [9207] -├── yanzhu-ui-vue3 // 前端框架 [80] -├── yanzhu-ui-app // 移动端 -├──pom.xml // 公共依赖 +com.ruoyi +├── ruoyi-ui // 前端框架 [80] +├── ruoyi-gateway // 网关模块 [8080] +├── ruoyi-auth // 认证中心 [9200] +├── ruoyi-api // 接口模块 +│ └── ruoyi-api-system // 系统接口 +├── ruoyi-common // 通用模块 +│ └── ruoyi-common-core // 核心模块 +│ └── ruoyi-common-datascope // 权限范围 +│ └── ruoyi-common-datasource // 多数据源 +│ └── ruoyi-common-log // 日志记录 +│ └── ruoyi-common-redis // 缓存服务 +│ └── ruoyi-common-security // 安全模块 +│ └── ruoyi-common-swagger // 系统接口 +├── ruoyi-modules // 业务模块 +│ └── ruoyi-system // 系统模块 [9201] +│ └── ruoyi-gen // 代码生成 [9202] +│ └── ruoyi-job // 定时任务 [9203] +│ └── ruoyi-file // 文件服务 [9300] +├── ruoyi-visual // 图形化管理模块 +│ └── ruoyi-visual-monitor // 监控中心 [9100] +├──pom.xml // 公共依赖 ~~~ ## 架构图 @@ -145,4 +140,4 @@ com.yanzhu ## 若依微服务交流群 -QQ群: [![加入QQ群](https://img.shields.io/badge/已满-42799195-blue.svg)](https://jq.qq.com/?_wv=1027&k=yqInfq0S) [![加入QQ群](https://img.shields.io/badge/已满-170157040-blue.svg)](https://jq.qq.com/?_wv=1027&k=Oy1mb3p8) [![加入QQ群](https://img.shields.io/badge/已满-130643120-blue.svg)](https://jq.qq.com/?_wv=1027&k=rvxkJtXK) [![加入QQ群](https://img.shields.io/badge/已满-225920371-blue.svg)](https://jq.qq.com/?_wv=1027&k=0Ck3PvTe) [![加入QQ群](https://img.shields.io/badge/已满-201705537-blue.svg)](https://jq.qq.com/?_wv=1027&k=FnHHP4TT) [![加入QQ群](https://img.shields.io/badge/已满-236543183-blue.svg)](https://jq.qq.com/?_wv=1027&k=qdT1Ojpz) [![加入QQ群](https://img.shields.io/badge/已满-213618602-blue.svg)](https://jq.qq.com/?_wv=1027&k=nw3OiyXs) [![加入QQ群](https://img.shields.io/badge/已满-148794840-blue.svg)](https://jq.qq.com/?_wv=1027&k=kiU5WDls) [![加入QQ群](https://img.shields.io/badge/118752664-blue.svg)](https://jq.qq.com/?_wv=1027&k=MtBy6YfT) 点击按钮入群。 \ No newline at end of file +QQ群: [![加入QQ群](https://img.shields.io/badge/已满-42799195-blue.svg)](https://jq.qq.com/?_wv=1027&k=yqInfq0S) [![加入QQ群](https://img.shields.io/badge/已满-170157040-blue.svg)](https://jq.qq.com/?_wv=1027&k=Oy1mb3p8) [![加入QQ群](https://img.shields.io/badge/已满-130643120-blue.svg)](https://jq.qq.com/?_wv=1027&k=rvxkJtXK) [![加入QQ群](https://img.shields.io/badge/已满-225920371-blue.svg)](https://jq.qq.com/?_wv=1027&k=0Ck3PvTe) [![加入QQ群](https://img.shields.io/badge/已满-201705537-blue.svg)](https://jq.qq.com/?_wv=1027&k=FnHHP4TT) [![加入QQ群](https://img.shields.io/badge/已满-236543183-blue.svg)](https://jq.qq.com/?_wv=1027&k=qdT1Ojpz) [![加入QQ群](https://img.shields.io/badge/已满-213618602-blue.svg)](https://jq.qq.com/?_wv=1027&k=nw3OiyXs) [![加入QQ群](https://img.shields.io/badge/已满-148794840-blue.svg)](https://jq.qq.com/?_wv=1027&k=kiU5WDls) [![加入QQ群](https://img.shields.io/badge/已满-118752664-blue.svg)](https://jq.qq.com/?_wv=1027&k=MtBy6YfT) [![加入QQ群](https://img.shields.io/badge/101038945-blue.svg)](https://jq.qq.com/?_wv=1027&k=FqImHgH2) 点击按钮入群。 \ No newline at end of file diff --git a/yanzhu-ui-vue3/package.json b/yanzhu-ui-vue3/package.json index c3bcdde5..2d7c9c81 100644 --- a/yanzhu-ui-vue3/package.json +++ b/yanzhu-ui-vue3/package.json @@ -1,8 +1,8 @@ { - "name": "yanzhu", - "version": "3.6.2", - "description": "总包单位管理系统", - "author": "研筑", + "name": "ruoyi", + "version": "3.6.3", + "description": "若依管理系统", + "author": "若依", "license": "MIT", "scripts": { "dev": "vite", @@ -18,32 +18,23 @@ "@element-plus/icons-vue": "2.0.10", "@vueup/vue-quill": "1.1.0", "@vueuse/core": "9.5.0", - "animate.css": "4.1.1", - "await-to-js": "^3.0.0", - "axios": "^1.0.0", - "bpmn-js": "^8.10.0", - "bpmn-js-task-resize": "^1.2.0", - "bpmn-js-token-simulation": "^0.10.0", - "codemirror-editor-vue3": "^2.0.6", - "core-js": "^3.6.5", - "diagram-js": "^12.2.0", - "diagram-js-minimap": "^2.1.1", + "axios": "0.27.2", + "bpmn-js": "^11.4.1", + "diagram-js": "^11.9.1", + "js-base64": "^3.7.5", + "vkbeautify": "^0.99.3", + "highlight.js": "11.7.0", "echarts": "5.4.0", "element-plus": "2.2.27", "file-saver": "2.0.5", "fuse.js": "6.6.2", "js-cookie": "3.0.1", "jsencrypt": "3.3.1", - "lodash": "^4.17.21", - "mitt": "^3.0.1", "nprogress": "0.2.0", - "path-browserify": "1.0.1", - "path-to-regexp": "6.2.0", "pinia": "2.0.22", "vue": "3.2.45", "vue-cropper": "1.0.3", - "vue-router": "4.1.4", - "x2js": "^3.4.4" + "vue-router": "4.1.4" }, "devDependencies": { "@vitejs/plugin-vue": "3.1.0", @@ -53,8 +44,6 @@ "vite": "3.2.3", "vite-plugin-compression": "0.5.1", "vite-plugin-svg-icons": "2.0.1", - "vite-plugin-vue-setup-extend": "0.4.0", - "vue-eslint-parser": "9.1.0", - "vue-tsc": "0.35.0" + "vite-plugin-vue-setup-extend": "0.4.0" } } diff --git a/yanzhu-ui-vue3/src/App.vue b/yanzhu-ui-vue3/src/App.vue index f911e96f..a600b54a 100644 --- a/yanzhu-ui-vue3/src/App.vue +++ b/yanzhu-ui-vue3/src/App.vue @@ -3,24 +3,12 @@ - diff --git a/yanzhu-ui-vue3/src/animate.ts b/yanzhu-ui-vue3/src/animate.ts deleted file mode 100644 index 7a23df83..00000000 --- a/yanzhu-ui-vue3/src/animate.ts +++ /dev/null @@ -1,48 +0,0 @@ -// 前缀 -const animatePrefix = 'animate__animated '; -// 开启随机动画 随机动画值 -const animateList: string[] = [ - animatePrefix + 'animate__pulse', - animatePrefix + 'animate__rubberBand', - animatePrefix + 'animate__bounceIn', - animatePrefix + 'animate__bounceInLeft', - animatePrefix + 'animate__fadeIn', - animatePrefix + 'animate__fadeInLeft', - animatePrefix + 'animate__fadeInDown', - animatePrefix + 'animate__fadeInUp', - animatePrefix + 'animate__flipInX', - animatePrefix + 'animate__lightSpeedInLeft', - animatePrefix + 'animate__rotateInDownLeft', - animatePrefix + 'animate__rollIn', - animatePrefix + 'animate__rotateInDownLeft', - animatePrefix + 'animate__zoomIn', - animatePrefix + 'animate__zoomInDown', - animatePrefix + 'animate__slideInLeft', - animatePrefix + 'animate__lightSpeedIn' -]; -// 关闭随机动画后的默认效果 -const defaultAnimate = animatePrefix + 'animate__fadeIn'; -// 搜索隐藏显示动画 -const searchAnimate = { - enter: '', - leave: '' -}; - -// 菜单搜索动画 -const menuSearchAnimate = { - enter: animatePrefix + 'animate__fadeIn', - leave: animatePrefix + 'animate__fadeOut' -}; -// logo动画 -const logoAnimate = { - enter: animatePrefix + 'animate__fadeIn', - leave: animatePrefix + 'animate__fadeOut' -}; - -export default { - animateList, - defaultAnimate, - searchAnimate, - menuSearchAnimate, - logoAnimate -}; diff --git a/yanzhu-ui-vue3/src/api/flowable/category.js b/yanzhu-ui-vue3/src/api/flowable/category.js deleted file mode 100644 index 9cf0f506..00000000 --- a/yanzhu-ui-vue3/src/api/flowable/category.js +++ /dev/null @@ -1,44 +0,0 @@ -import request from '@/utils/request' - -// 查询流程分类列表 -export function listCategory(query) { - return request({ - url: '/flowable/category/list', - method: 'get', - params: query - }) -} - -// 查询流程分类详细 -export function getCategory(id) { - return request({ - url: '/flowable/category/' + id, - method: 'get' - }) -} - -// 新增流程分类 -export function addCategory(data) { - return request({ - url: '/flowable/category', - method: 'post', - data: data - }) -} - -// 修改流程分类 -export function updateCategory(data) { - return request({ - url: '/flowable/category', - method: 'put', - data: data - }) -} - -// 删除流程分类 -export function delCategory(id) { - return request({ - url: '/flowable/category/' + id, - method: 'delete' - }) -} diff --git a/yanzhu-ui-vue3/src/api/flowable/def.js b/yanzhu-ui-vue3/src/api/flowable/def.js deleted file mode 100644 index f7896b0d..00000000 --- a/yanzhu-ui-vue3/src/api/flowable/def.js +++ /dev/null @@ -1,52 +0,0 @@ -import request from '@/utils/request' - -// 查询流程字段定义列表 -export function listDef(query) { - return request({ - url: '/flowable/def/list', - method: 'get', - params: query - }) -} - -// 查询流程字段定义详细 -export function getDef(id) { - return request({ - url: '/flowable/def/' + id, - method: 'get' - }) -} - -// 新增流程字段定义 -export function addDef(data) { - return request({ - url: '/flowable/def', - method: 'post', - data: data - }) -} - -// 修改流程字段定义 -export function updateDef(data) { - return request({ - url: '/flowable/def', - method: 'put', - data: data - }) -} - -// 删除流程字段定义 -export function delDef(id) { - return request({ - url: '/flowable/def/' + id, - method: 'delete' - }) -} -// 查询流程字段定义列表(不翻页) -export function listAll(query) { - return request({ - url: '/flowable/def/listAll', - method: 'get', - params: query - }) -} diff --git a/yanzhu-ui-vue3/src/api/flowable/definition.js b/yanzhu-ui-vue3/src/api/flowable/definition.js new file mode 100644 index 00000000..b2803464 --- /dev/null +++ b/yanzhu-ui-vue3/src/api/flowable/definition.js @@ -0,0 +1,140 @@ +import request from '@/utils/request' + +// 查询流程定义列表 +export function listDefinition(query) { + return request({ + url: '/flowable/definition/list', + method: 'get', + params: query + }) +} + +// 部署流程实例 +export function definitionStart(procDefId, data) { + return request({ + url: '/flowable/definition/start/' + procDefId, + method: 'post', + data: data + }) +} + +// 获取流程变量 +export function getProcessVariables(taskId) { + return request({ + url: '/flowable/task/processVariables/' + taskId, + method: 'get' + }) +} + +// 激活/挂起流程 +export function updateState(params) { + return request({ + url: '/flowable/definition/updateState', + method: 'put', + params: params + }) +} + +// 指定流程办理人员列表 +export function userList(query) { + return request({ + url: '/flowable/definition/userList', + method: 'get', + params: query + }) +} + +// 指定流程办理组列表 +export function roleList(query) { + return request({ + url: '/flowable/definition/roleList', + method: 'get', + params: query + }) +} + +// 指定流程表达式 +export function expList(query) { + return request({ + url: '/flowable/definition/expList', + method: 'get', + params: query + }) +} + +// 读取xml文件 +export function readXml(deployId) { + return request({ + url: '/flowable/definition/readXml/' + deployId, + method: 'get' + }) +} + +// 读取image文件 +export function readImage(deployId) { + return request({ + url: '/flowable/definition/readImage/' + deployId, + method: 'get' + }) +} + +// 获取流程执行节点 +export function getFlowViewer(procInsId, executionId) { + return request({ + url: '/flowable/task/flowViewer/' + procInsId + '/' + executionId, + method: 'get' + }) +} + +// 流程节点数据 +export function flowXmlAndNode(query) { + return request({ + url: '/flowable/task/flowXmlAndNode', + method: 'get', + params: query + }) +} + +// 读取xml文件 +export function saveXml(data) { + return request({ + url: '/flowable/definition/save', + method: 'post', + data: data + }) +} + +// 新增流程定义 +export function addDeployment(data) { + return request({ + url: '/system/deployment', + method: 'post', + data: data + }) +} + +// 修改流程定义 +export function updateDeployment(data) { + return request({ + url: '/system/deployment', + method: 'put', + data: data + }) +} + +// 删除流程定义 +export function delDeployment(deployId) { + return request({ + url: '/flowable/definition/' + deployId, + method: 'delete', + }) +} + +// 导出流程定义 +export function exportDeployment(query) { + return request({ + url: '/system/deployment/export', + method: 'get', + params: query + }) +} diff --git a/yanzhu-ui-vue3/src/api/flowable/expression.js b/yanzhu-ui-vue3/src/api/flowable/expression.js new file mode 100644 index 00000000..325d439b --- /dev/null +++ b/yanzhu-ui-vue3/src/api/flowable/expression.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流程达式列表 +export function listExpression(query) { + return request({ + url: '/flowable/expression/list', + method: 'get', + params: query + }) +} + +// 查询流程达式详细 +export function getExpression(id) { + return request({ + url: '/flowable/expression/' + id, + method: 'get' + }) +} + +// 新增流程达式 +export function addExpression(data) { + return request({ + url: '/flowable/expression', + method: 'post', + data: data + }) +} + +// 修改流程达式 +export function updateExpression(data) { + return request({ + url: '/flowable/expression', + method: 'put', + data: data + }) +} + +// 删除流程达式 +export function delExpression(id) { + return request({ + url: '/flowable/expression/' + id, + method: 'delete' + }) +} diff --git a/yanzhu-ui-vue3/src/api/flowable/finished.js b/yanzhu-ui-vue3/src/api/flowable/finished.js new file mode 100644 index 00000000..e185e17c --- /dev/null +++ b/yanzhu-ui-vue3/src/api/flowable/finished.js @@ -0,0 +1,79 @@ +import request from '@/utils/request' + +// 查询已办任务列表 +export function finishedList(query) { + return request({ + url: '/flowable/task/finishedList', + method: 'get', + params: query + }) +} + +// 任务流转记录 +export function flowRecord(query) { + return request({ + url: '/flowable/task/flowRecord', + method: 'get', + params: query + }) +} + +// 撤回任务 +export function revokeProcess(data) { + return request({ + url: '/flowable/task/revokeProcess', + method: 'post', + data: data + }) +} + +// 部署流程实例 +export function deployStart(deployId) { + return request({ + url: '/flowable/process/startFlow/' + deployId, + method: 'get', + }) +} + +// 查询流程定义详细 +export function getDeployment(id) { + return request({ + url: '/system/deployment/' + id, + method: 'get' + }) +} + +// 新增流程定义 +export function addDeployment(data) { + return request({ + url: '/system/deployment', + method: 'post', + data: data + }) +} + +// 修改流程定义 +export function updateDeployment(data) { + return request({ + url: '/system/deployment', + method: 'put', + data: data + }) +} + +// 删除流程定义 +export function delDeployment(id) { + return request({ + url: '/flowable/instance/delete/' + id, + method: 'delete' + }) +} + +// 导出流程定义 +export function exportDeployment(query) { + return request({ + url: '/system/deployment/export', + method: 'get', + params: query + }) +} diff --git a/yanzhu-ui-vue3/src/api/flowable/form.js b/yanzhu-ui-vue3/src/api/flowable/form.js new file mode 100644 index 00000000..30966bde --- /dev/null +++ b/yanzhu-ui-vue3/src/api/flowable/form.js @@ -0,0 +1,68 @@ +import request from '@/utils/request' + +// 查询流程表单列表 +export function listForm(query) { + return request({ + url: '/flowable/form/list', + method: 'get', + params: query + }) +} +export function listAllForm(query) { + return request({ + url: '/flowable/form/formList', + method: 'get', + params: query + }) +} + +// 查询流程表单详细 +export function getForm(formId) { + return request({ + url: '/flowable/form/' + formId, + method: 'get' + }) +} + +// 新增流程表单 +export function addForm(data) { + return request({ + url: '/flowable/form', + method: 'post', + data: data + }) +} + +// 修改流程表单 +export function updateForm(data) { + return request({ + url: '/flowable/form', + method: 'put', + data: data + }) +} +// 挂载表单 +export function addDeployForm(data) { + return request({ + url: '/flowable/form/addDeployForm', + method: 'post', + data: data + }) +} + +// 删除流程表单 +export function delForm(formId) { + return request({ + url: '/flowable/form/' + formId, + method: 'delete' + }) +} + +// 导出流程表单 +export function exportForm(query) { + return request({ + url: '/flowable/form/export', + method: 'get', + params: query + }) +} diff --git a/yanzhu-ui-vue3/src/api/flowable/listener.js b/yanzhu-ui-vue3/src/api/flowable/listener.js new file mode 100644 index 00000000..4bc4ac5b --- /dev/null +++ b/yanzhu-ui-vue3/src/api/flowable/listener.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流程监听列表 +export function listListener(query) { + return request({ + url: '/flowable/listener/list', + method: 'get', + params: query + }) +} + +// 查询流程监听详细 +export function getListener(id) { + return request({ + url: '/flowable/listener/' + id, + method: 'get' + }) +} + +// 新增流程监听 +export function addListener(data) { + return request({ + url: '/flowable/listener', + method: 'post', + data: data + }) +} + +// 修改流程监听 +export function updateListener(data) { + return request({ + url: '/flowable/listener', + method: 'put', + data: data + }) +} + +// 删除流程监听 +export function delListener(id) { + return request({ + url: '/flowable/listener/' + id, + method: 'delete' + }) +} diff --git a/yanzhu-ui-vue3/src/api/flowable/model.js b/yanzhu-ui-vue3/src/api/flowable/model.js deleted file mode 100644 index 1c06cc15..00000000 --- a/yanzhu-ui-vue3/src/api/flowable/model.js +++ /dev/null @@ -1,83 +0,0 @@ -import request from '@/utils/request' - -// 查询流程模型列表 -export function listModel(query) { - return request({ - url: '/flowable/model/list', - method: 'get', - params: query - }) -} - -// 查询流程模型详细 -export function getModel(modelId) { - return request({ - url: '/flowable/model/' + modelId, - method: 'get' - }) -} - -// 新增流程模型 -export function addModel(data) { - return request({ - url: '/flowable/model', - method: 'post', - data: data - }) -} - -// 修改流程模型 -export function updateModel(data) { - return request({ - url: '/flowable/model', - method: 'put', - data: data - }) -} - -// 删除流程模型 -export function delModel(modelId) { - return request({ - url: '/flowable/model/' + modelId, - method: 'delete' - }) -} -// 部署流程模型 -export function depolyModel(params) { - return request({ - url: '/flowable/model/deploy' , - method: 'post', - params: params - }) -} -// 获取流程模型xml -export function getModelXml(modelId) { - return request({ - url: '/flowable/model/getBpmnXml/' + modelId, - method: 'get' - }) -} -// 保存(更新或插入新版本)流程模型 -export function saveModel(data) { - return request({ - url: '/flowable/model/save', - method: 'post', - data: data - }) -} -// 查询流程模型历史列表 -export function historyList(query) { - return request({ - url: '/flowable/model/historyList', - method: 'get', - params: query - }) -} -// 设置最新版 -export function latestModel(params) { - return request({ - url: '/flowable/model/latest', - method: 'post', - params: params - }) -} diff --git a/yanzhu-ui-vue3/src/api/flowable/page.js b/yanzhu-ui-vue3/src/api/flowable/page.js deleted file mode 100644 index 7338c6fa..00000000 --- a/yanzhu-ui-vue3/src/api/flowable/page.js +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -// 查询建模页面绑定列表 -export function listPage(query) { - return request({ - url: '/flowable/page/list', - method: 'get', - params: query - }) -} - -// 查询建模页面绑定详细 -export function getPage(id) { - return request({ - url: '/flowable/page/' + id, - method: 'get' - }) -} - -//建模页面绑定 -export function bindPage(data) { - return request({ - url: '/flowable/page/bind', - method: 'put', - data: data - }) -} - - -// 删除建模页面绑定 -export function delPage(id) { - return request({ - url: '/flowable/page/' + id, - method: 'delete' - }) -} -// 查询绑定表单(单页面) -export function findPage(params) { - return request({ - url: `/flowable/page/findPage`, - method: 'post', - data:params - }) -} - -// 查询绑定表单(模块,流程标识下一组页面) -export function findModulePages(params) { - return request({ - url: `/flowable/page/findModulePage`, - method: 'post', - data:params - }) -} diff --git a/yanzhu-ui-vue3/src/api/flowable/process.js b/yanzhu-ui-vue3/src/api/flowable/process.js new file mode 100644 index 00000000..53da8856 --- /dev/null +++ b/yanzhu-ui-vue3/src/api/flowable/process.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' + +// 我的发起的流程 +export function myProcessList(query) { + return request({ + url: '/flowable/task/myProcess', + method: 'get', + params: query + }) +} + +export function flowFormData(query) { + return request({ + url: '/flowable/task/flowFormData', + method: 'get', + params: query + }) +} + +export function flowTaskInfo(query) { + return request({ + url: '/flowable/task/flowTaskInfo', + method: 'get', + params: query + }) +} + +// 完成任务 +export function complete(data) { + return request({ + url: '/flowable/task/complete', + method: 'post', + data: data + }) +} + +// 取消申请 +export function stopProcess(data) { + return request({ + url: '/flowable/task/stopProcess', + method: 'post', + data: data + }) +} + +// 驳回任务 +export function rejectTask(data) { + return request({ + url: '/flowable/task/reject', + method: 'post', + data: data + }) +} + +// 可退回任务列表 +export function returnList(data) { + return request({ + url: '/flowable/task/returnList', + method: 'post', + data: data + }) +} + +// 部署流程实例 +export function deployStart(deployId) { + return request({ + url: '/flowable/process/startFlow/' + deployId, + method: 'get', + }) +} + +// 查询流程定义详细 +export function getDeployment(id) { + return request({ + url: '/system/deployment/' + id, + method: 'get' + }) +} + +// 新增流程定义 +export function addDeployment(data) { + return request({ + url: '/system/deployment', + method: 'post', + data: data + }) +} + +// 修改流程定义 +export function updateDeployment(data) { + return request({ + url: '/system/deployment', + method: 'put', + data: data + }) +} + +// 删除流程定义 +export function delDeployment(id) { + return request({ + url: '/system/deployment/' + id, + method: 'delete' + }) +} + +// 导出流程定义 +export function exportDeployment(query) { + return request({ + url: '/system/deployment/export', + method: 'get', + params: query + }) +} diff --git a/yanzhu-ui-vue3/src/api/flowable/ref.js b/yanzhu-ui-vue3/src/api/flowable/ref.js deleted file mode 100644 index 5a05a396..00000000 --- a/yanzhu-ui-vue3/src/api/flowable/ref.js +++ /dev/null @@ -1,52 +0,0 @@ -import request from '@/utils/request' - -// 查询流程字段引用关系列表 -export function listRef(query) { - return request({ - url: '/flowable/ref/list', - method: 'get', - params: query - }) -} - -// 查询流程字段引用关系详细 -export function getRef(id) { - return request({ - url: '/flowable/ref/' + id, - method: 'get' - }) -} - -// 新增流程字段引用关系 -export function addRef(data) { - return request({ - url: '/flowable/ref', - method: 'post', - data: data - }) -} - -// 修改流程字段引用关系 -export function updateRef(data) { - return request({ - url: '/flowable/ref', - method: 'put', - data: data - }) -} - -// 删除流程字段引用关系 -export function delRef(id) { - return request({ - url: '/flowable/ref/' + id, - method: 'delete' - }) -} -//组合查询流程字段引用关系列表 -export function listCombination(query) { - return request({ - url: '/flowable/ref/listCombination', - method: 'get', - params: query - }) -} diff --git a/yanzhu-ui-vue3/src/api/flowable/todo.js b/yanzhu-ui-vue3/src/api/flowable/todo.js new file mode 100644 index 00000000..13d24fa9 --- /dev/null +++ b/yanzhu-ui-vue3/src/api/flowable/todo.js @@ -0,0 +1,132 @@ +import request from '@/utils/request' + +// 查询待办任务列表 +export function todoList(query) { + return request({ + url: '/flowable/task/todoList', + method: 'get', + params: query + }) +} + +// 完成任务 +export function complete(data) { + return request({ + url: '/flowable/task/complete', + method: 'post', + data: data + }) +} + +// 委派任务 +export function delegate(data) { + return request({ + url: '/flowable/task/delegate', + method: 'post', + data: data + }) +} + +// 退回任务 +export function returnTask(data) { + return request({ + url: '/flowable/task/return', + method: 'post', + data: data + }) +} + +// 驳回任务 +export function rejectTask(data) { + return request({ + url: '/flowable/task/reject', + method: 'post', + data: data + }) +} + +// 可退回任务列表 +export function returnList(data) { + return request({ + url: '/flowable/task/returnList', + method: 'post', + data: data + }) +} + +// 下一节点 +export function getNextFlowNode(data) { + return request({ + url: '/flowable/task/nextFlowNode', + method: 'post', + data: data + }) +} + +// 下一节点 +export function getNextFlowNodeByStart(data) { + return request({ + url: '/flowable/task/nextFlowNodeByStart', + method: 'post', + data: data + }) +} + +// 部署流程实例 +export function deployStart(deployId) { + return request({ + url: '/flowable/process/startFlow/' + deployId, + method: 'get', + }) +} + +// 查询流程定义详细 +export function getDeployment(id) { + return request({ + url: '/system/deployment/' + id, + method: 'get' + }) +} + +// 新增流程定义 +export function addDeployment(data) { + return request({ + url: '/system/deployment', + method: 'post', + data: data + }) +} + +// 修改流程定义 +export function updateDeployment(data) { + return request({ + url: '/system/deployment', + method: 'put', + data: data + }) +} + +// 删除流程定义 +export function delDeployment(id) { + return request({ + url: '/system/deployment/' + id, + method: 'delete' + }) +} + +// 导出流程定义 +export function exportDeployment(query) { + return request({ + url: '/system/deployment/export', + method: 'get', + params: query + }) +} +// 流程节点表单 +export function flowTaskForm(query) { + return request({ + url: '/flowable/task/flowTaskForm', + method: 'get', + params: query + }) +} diff --git a/yanzhu-ui-vue3/src/api/system/area.js b/yanzhu-ui-vue3/src/api/system/area.js deleted file mode 100644 index 74fd3a65..00000000 --- a/yanzhu-ui-vue3/src/api/system/area.js +++ /dev/null @@ -1,68 +0,0 @@ -import request from '@/utils/request' - -// 查询地址管理列表 -export function listSysArea(query) { - return request({ - url: '/system/sysArea/list', - method: 'get', - params: query - }) -} - -// 查询地址管理详细 -export function getSysArea(id) { - return request({ - url: '/system/sysArea/' + id, - method: 'get' - }) -} - -// 新增地址管理 -export function addSysArea(data) { - return request({ - url: '/system/sysArea', - method: 'post', - data: data - }) -} - -// 修改地址管理 -export function updateSysArea(data) { - return request({ - url: '/system/sysArea', - method: 'put', - data: data - }) -} - -// 删除地址管理 -export function delSysArea(id) { - return request({ - url: '/system/sysArea/' + id, - method: 'delete' - }) -} - -// 刷新地址缓存 -export function refreshCache() { - return request({ - url: '/system/sysArea/refreshCache', - method: 'get' - }) -} - -// 查询地址缓存 -export function findAllSysArea() { - return request({ - url: '/system/sysArea/findAll', - method: 'get' - }) -} - -// 查询城市缓存 -export function findAllCity() { - return request({ - url: '/system/sysArea/findAllCity', - method: 'get' - }) -} diff --git a/yanzhu-ui-vue3/src/assets/images/bg_file_v1.jpg b/yanzhu-ui-vue3/src/assets/images/bg_file_v1.jpg deleted file mode 100644 index b72c71fef6517e4a8ac6d16f50614398bbf6d53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391778 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

x3OCOuY1#+|Aq-v*B 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

iBUESJ)Qb1o5WzFigKe2B<=YnogoQY(o1tzHq5 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%0DctpntU~Dlg!yWD%S>(xB24wH|oJE!RNWX%B%P~ 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 Bg!lje diff --git a/yanzhu-ui-vue3/src/assets/images/bg_file_v2.png b/yanzhu-ui-vue3/src/assets/images/bg_file_v2.png deleted file mode 100644 index 6acbc8610f49db940fbe1feb9964ff3a122556ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48231 zcmV(@K-RyBP)M%q$JX!C{a-)r;#CBMhpYaM~p;(oH&URz=nVF5d<(0 zz=#m#H%LD69|S=@^5Y;ufCNEg36Lx+mOzP;Sfa=hi>&_jw>{0?Ypof~X6>_Y^NLl) zDvA=cf&1RQr`hdl#u{_XG3l3o`Iqr=w_pC-|JBF-?w`l)@BVcEiJ$eqpa=#)APg@6 zXFmt5e*{3sc;N}g%g+J(GsfxxQ0_6hA){?G<{f}Gq0ejNGN6kY?Jqq?R}KK+?7w@H zXC0yG7#jvwr2!$L4H5H5ASyUd89fua*$f>I=e?y>;q^8$WfpBM>np$zE5L&@ZbEuyeR<#&yi?>o@UrkgTxJr zJS#Ld=XiQ{j-e194l~SR#NI3+go2(60%x=_;$Zg%_U5;6!V8>a;Q2kqb2}NQ zJ>lV+Fyw$uCLHy^`4DiH0?H6j5-=1-;S7|Ff`}$Ihz-yo>$$xA59s@LU;c9Y^SOQN zf5=?&41@IF2uO>G(y63bZGb)lDFPgU1p$dy*yJVp(qe&K1dd18K=-vT#x5?;Q^c#s3zN|?34&m`d4 z0&JcJ?mrEbfl=-N=f{LzK*Sulu?KVlyyZtg)69UE97Di)mw?@w?YrMF@(S7x<}E?i zhJwE~y8v}U5)k45gcgW1T{i+fP@?=WT6sSM)B-#Mas;vfn`8hd3&2T0q=Ke}{GtoZ zSb!+t?0kjIdV|HH!E?7}cxjLD>LKArpAC5a1}R8;>k;EO-^lp&?KV?`iGhPU++J#Op_#PiEggXxruMnEw4~PEMEi{pa<5e%$l^LB8IPdTyUKi1|4C z|D@aThu+6e{*wdReq{s93x~ifJ32|}?E9T>fbQG{&tJvSlP>}P z9_dUpf1R=SO#Vy6YQ(n@k&-(G}bCd;cu~ z|2cua1~mT*us&j7MtEY)c(xGo9C+(#V3UFV8$f@9KraDLCg9)*2-#SsWye@I1~??* zA&*-at8T_<_6aco?J>|2AyiPT+(v6vCF!^~Axo+s6SgAGCcp z0QX4%sE@MQ{()8y!50Yc{?~-?^8kJyz&{3rq#F)__Bq0<9dKhoC>?Nm3JgcaD&`*n zo)~~z?*pyKN9I77O2YKWcLZoiXjtyTA_Dt! z#%@EHOXzu*v6xwGO#s@X0eHlW2b%`{ss$IQ^kuhUECMiJG-#Vff4|W(K6eZF>@CJ& zM>yLsj{1mI0*-sedz*}3`%1xU?-xAk3vSLL=1s(Wzrkm2MU;k6iiH+89_Ev;a%BDuaaiawx($^Y=*FSpuhIG-nf z%Xf|dyzl?#OLywy40PAM_F>)+m-^pj!2o$54gUM~a}3&7T?9h1?=uIK8#Z3iSpiO2 z+mO6l65Dq?)Gm9-evEM8xLff6UsyH2zA zjzNBm*f7GP0JEa(u|98!b4#C``<{{=A@$N<7&JidSjnX9GG|uFmbQUJ;70FA!5W1l z2T%z1x}SBTD{V%uul`M~EVjw_$(KI2?RR|T_vvrbJL6kB`KzI^ZD07z{1SMJeDyQ+ z^>B40*YnTYXEfc9ezs%d9)b;!`WYD@OMQm6GMhfd@v6i2yCl*b_IHC{OCkG=3}m?; z*S@EpBnAaM+i=v(w2k@+rJQLO>TxtSzd4TudFaHnc zs|Snz;|^^6xV(M3jh-A}Tz!wmMU6p=@fuqn#)j?tv;e{`BV+<;gC%2uWkP*az^68N zWuMBgo?q=MSEt^(xYBppfIJrwqD;sPIu)XS+s(KFAsLJXa0rdsUfgFHNGF{lKxlmt z@Uug*`WGp@ssJsFgEeCd%xIqx<#WmIlJ0kpRi_`uZ;TzcT5~E)HqeZlO-tl9R9nKo=(UdLA^n<39Q7aXP~g_34lUsS!juAR?Z8W;{>U z&sWeuT?EN9nFkJY0yV+FXiG%n;3}PuQBD%dY0_K>{cZ+x1nGo70xknDsv$MSA=m5F zKS~95SwN#96#?I+C|Ic1D&s591866(oMVu1z{|VTytGHnDudrVFT;CFURZD$;aD)5qh zmU?a3ftb%9+N51@YapwjFm1tY@v$NKJS+R?4H#>m8{ojG=)yz~CvAHjzzcbwz;e$3 z2VL6**!DFWeaeN_8%9{Qy+gG%MZcfhk$$^uNt5r0#K}(lgMij|d;Pla{KW%Sr+)Wi zMJV3+!Wg^Kdn{qKVgMRDjV|nTE)hr}ZD3h}SlB+FTMWKAlLd_y|R59}-xBQEUq&=rK8XnQ@$Is_?@K+rwr3(84)%+Up`F=&^Jy>);<(!o~#K&7Dy zOEwS29A+L@*LH(hL+JKB(<&;P)E6D}Lo&9hL|X~#mFyCNtY*#tz6WJo^(@&tRa7S`73NOX?c+3fiD81Y^aXoMgW`yrtfpfwccqfBWf40J?}&L0KI z{NsjanW;%VHD#bS$-QXGirONReXDb|-Ma~R)P;~}J}&_yj&)^r@s3a1@5m2^$z&7# zd0h^5R0gBo^TzihV`Af6;e?^Ma7=$~1XA*>g0my?JNvtG9y9^|?BJ^cHhC|5-zG+A z33L!Z&(6_2vp|&p_afq6gCMvB1}cauJGBMudS5n-a@-@oeuDm6XFR;ub4pzAssSmo zbRXGO<#**g9E6y#whfF~1a=~V99#aE@iyvlNY<_T%tDYhMIqWb(BTYpW2W2*ZZE=o zlfWsVJlY^1CzN-WobGHm9}kp;71IRSVhG9EH717+!T^QBx(u2HCXsLKcL94Xi8KVl zk{u5y=b7_)R$RonP>J@SOT)n!FwF?1qTwzFmGxQ!Gl$~$pB#jZZ)@u;1;JP?a%5(} zD%-O+(56ERp~$4C#{_up&sjiIM?TI-|0fjbuQP8$ow0@GhA|Zi?^IzG{3vw{v&B*6 zwkn8HkawYdRxnm$Ftzn%2TwrA$es*<=o^gHmx| zPyrSB{gq6<0Q}Spw7ak@Jn0*^jpWe>{cHmq7x1tP+)D<=1&0WeEJ;}J311U z0k?*NG}}~wnuE4x0`hpA}f9A%+e5rR$WO`o#}j0`-{w#66zB%mvm~@QL@u! zqcp5E^rApr*@?s*Sh;E)X~0cmT`2cpPImq+O>~79w@(vTRc0xCOkh=q12G@?f+g%; zIN$3))pcRO>$YM<1CA}h)YX=s-bRm21=+F+@GxI}y|PpzkZj4AnFa`Z25K}7;;ew) zE1(|4F}R5*?^dbf5uH3b?>Y2fwT|G!D$bOi(ny|RJJQp8PuO9bre8|GJkCE zlpI?od||!hI88?I)qPIe1~P)YV4s&`hsGy!37Nhx*(j_mL^lW8g|`4l*cJi`#AP;< zeMwlc2s0=@Wg8wuUFrL#cWL2(g&f#0F7T3if06;t5%`2lOk(gsAx~JRY1`JfEey#M z#sdIuy^=B5gz)inVSswu@`vKu*%gyt1YMxr4d47TR zMuXS|(0M|+yFt3Y=JeWz)+d96*O*trmavXpML>>Vw-;vAe*S=FuNR)g_F1c7 zjuw$yi^goduSn>VJS@k8t^~7Ya0zUo#2}0{k$hREn^@R^r%oO6c?+XUHz^7>ODQZY z7Rz7}4Nwcn3i7))5ns>*M)dHaFa%tJE+UlGRDf$Bhu5-r^3iPA1_A+0gM36fKxkJu+|>8WoAgji``#vfVEP9Sr;P)rs4!lp~l@Vif3-N zz?bKswgJu(@Z0C$d4gF;!zr0Y5aS|7CHjZ8d(_oc|AP%WS+rB z28FZ+RvAH;(d`({(~giW=AE;#60$-N2CJ0LE~nW0GLXuEFV`b|lvGGBooqlUz3L?p zTa>0n8-xLCF+)}+{Bh9c(*jlt!+r{0J}w(X4yOKf-&ZpMP9GLP)ouD9{gErPx$@@r zX>_&g-tC2Ti^aXr#lczlMblFSSzv268cZt9ycL z%*KwbK-z#J3E&YhJ`4JsG(0y8B!7pNSi_#tGh!kswWJF|fuF)g8E`<{ZxDA|W1<#~ z(j>f2C~vROzjn;a*U!VC>WPcjCMD=?H}N*F+r%r=>d0I1V7^LtstiFq|J>kkueSV5H1HL@^a zVOffT5WThv9*c+RUYaX|)!bV>NHbXCDk=zBN3ER_=S$cj~#^Wi#NjTg&njn@A3SZUCcgvPW@|-uzr1627l~j z$izbt%*!%CSftZ17RQE!1)zCkc`hVO^-iGBvH~7nW~7HH=lcmMWoaoKC47j;3XXz4 z>L8CJYxX#^FtKc*LlUM-7wp9owz4If6$N+>f>IgBFYcYOlCfY;D7`axWY4g8$lRWO z7(e&S@d0u7hWTlf;Jk>%}q2$EDTCX2gg#jpuHZ3d>R_7;FfT` zGeX0aPkgvdz|_A5;3phl%`Sne>-1HRyV5dwZ>7x>xDVjr1jk=@Bd&Yx@$XM1%5~Db z9#Bp1)%1V(L~kJy9|UHTYhIYBSLf%t5)=TiDF#X+BisbyZDD!{csrqgi!dyLGFVmQ zty^Pkj!g2(p2#F90IHbyS0}x3f;MJL*n*%FKbwY!C)Y=n$#T7uzb5@E1{-vBAnuE4 zI3#>|BiglZvdB+lg5b~)(VD5Oi-DO=wJ?a1i7T{$XmE>OtdWEbH@1rBVqJ=r(%ync z)pG^YmT{P9UM@WF$$GsqO=ZH!xd54`V)GbS*}}-~OhE3ZkEYQOZ^4$&kw>O+5 zRCelsv^CMU%wxpkvVt)UD^^C%wLVJBs171B3G1{7ron@k~zpIv8~u# zu$A?RmH`&QG_C=aMIyusT}_ z7+Ql=H2&S@m{ol;7mi@pv2*Q_ab=0_z)`aCz8pcHn<2cl2LD?2yT6?|FD3|hA897X z-e>Tm^9h4h-z(P~v$iUlT>Bo%{2@pf7u@WwU`>CYHs0XpbvbB9F_Q413}EW9#-?@B`!lm_DqXz~7HZ>~0VVpG&e~DUiV{$unx*2b zM!h!wz6sBZ4PhbNPcB!NpUhJ}9$vD%#*BQu? zd#%rDfZM22Fh6U$=!tItC35~t9 zi}q%RMi`mO)Mw|C{t10t!C*7izT7<)lhW*_j*c_2=MHT zyH|IqeQ__$_F4_u=l9OJ|LPGhzjn&Y2Z_@>XnfBD$9ip|$znT_+>4MV!(0{+raCTB zkCC!gcAK-cZ+mtcZ`9-v{o8_;qoBTq2Zh}l%9xZgHlX^r2XC8sY$3Kr8EkyfP5R*K z;y$+H@)jUWm$r53JIU)ENA0U3jp?k>_}?mTn`Oj|}QA6|297q<_5|4Y9o&5=~7F3CoXE~;7$$7q;t?$?%lWhgU< zvJ#!XZkkKhMe^7@pey3ANz-bdYP^RFSm2X3!$dg(jY-H7X6d;I%!1@q&|`B_Jh zrX8PWw6_D=J!7C~W$D=pKx7h^abLm-QUWCyI}x63(C$TqdmGMo5>kj1B(&q;hQl_z z%rXFpkUAOVCu!zELP5y~wZ7PVF|+WXF%`58S5?477B;MamQ<6=Ri~k2skGr{PH2i* z8k98?_k~Sc7&H-HM{8%}%8EHlAp%=XlCw2+VQ15?g^dj9h+ITz4OWCihIb^aMIxG( zMWH5v^a5%q6xZ>Vq#rGHf)?$qz$-b zfL*^_M`g6y>1to4n$y1(98E#9Pr{y6cc~BXWCEjYpax!9V$_n60y0(r>tgv(Me|YL zwmB0lU?=8}858$r*_seNHVv!{2^N|;yrh}@5}0qKD-YpXKI|1yiI z7OSJUXQEt1b8_r9vgx-NbZ>+7aD#L9aXp|219&`eI!RolZAp97 zL?qUbWA=VzK7G~22-7?|nIfoY)+0&tIR`C z04NW7%P38^;%PwHM`viZ;Y9>VFgbmA+dE)YM2Th^A4nEa=+B>Uh z8q?&{WpWPNupR#>fh0Rm77T9{@V$N-T$s#?o}#MT&LxYBE$AG##pJJDyZ^e)9tik)A5-(cWX6*FQ;M6KQD7+Anw5ta`IiR^SMt3z%KJ;^lU_qJ zIL(}d{aI#`^$qU?X7OlwexVG8NR!IRU>S{VWD@3SrzK$uC4?u;HAlaHsz(v+N#e39 zls9%w5(3Sq2}Sfea*dw6qe5w2C>e#po6LNgF-WTWan|q2=ZjesY_Uxx<%5fk`5JGo zsa-%##Ygq9nuZvz=D}QHZR1sY2lm%P-G9}X(Y9~UmMJSnUrhw~0gd zO8DYFExvq%_HND*?`+V&d4~Ssh6kZ6=aIvWj+*@jVYg8tN*TVR9$7SDa{pw((s&!J zp+33Zy%voyN4GlAqP0YdM?KQ(Cs=*sls9j$d63140G-y8HL@dDIg-eE^nhD7pwz#M z-5rf8z?dgpyu`S@ms4#3k23BpIwiMgAk}*jg(AJvSiNHG+4ziwb$q%*`{IJyFCK)Q z&)>w(yrJ;c606sac=`2HUcR&8K5C3l9V?hj&6YJ*XrhuFY9*0v2vON0d)8DfC%6Kq zVAGzn+?G<2CLzIC0b0ceK0;;>ndghsaw(qaD&v)auQCbN6=zBUc{?|zk~cLRX^9%< z)fJ7*NVf1)a3&hCg&$~H7aW(pwZesbZri5T55<8{eRzX|E1HNzrZZNafUd{IT&{CA zyjlwfA`yA61D=Z3|L!F4ogO&Z9$UZFO|4qPR>TQg^y+>WeyX#wwT!7BThGmACSL5{ zvS0n=G#k2(8+T5&3$nvx8Qm3Jg>8b)c$|kfuQG4fZ9n~0MWu#`OSTDBKoUzvQ?W** zVSVM9WaXkPXLg_!puC|cu{>S7R8uHX-+uFh*iCC1?|e)_=bB>+#j(dM@& zH|5_3@V{O8^apR3as74McL4m~k70(U52n6$=4{nN2UwTcwCirfb+3K6_pjGiRm;mT zc2i%6h}okXKEl}{4YlnU$kIvykr9t&5-pY)C>o_(k(+}CQBuI)?vZW=gr{aI3ki~e zwHr9f%3T^rUl2Bh%Q|yeWeO6n+9-PuzTF@^F+(GykWA1Lierbc(Jw_-&F2G^vs^Um zXs2<2CG06N3E?9Xx~$e))kcXf z>(qTq$4<;kCY}Z6omQDNRa|!wd9DFUvwo16`c7a?qu12G2o_J4r*f8hK-4; z9!kOgcfeG&UE{BSpU%}uioz| zofR&fMr&-k57iq&m>$;+YCSP&k`|?cM^{y27e=!Q{kBXja?d$$87FQhVBN2~OpQ+6 zq-r$mB-d|^MyT3HYA!fWRW8c#RGpSvEXeA_w7|hv8%4Ecyp1Wl>#C&^DlDcF)B{Yt z6M`C72_w$WwrIa}NV6~BqTQGFXd(0Z+viyR;StWhaa`7KEzyTqxEUj>u&hJWaG#C` zGIc5LVY_x7KTPAZ&(&zm8%*)G?zc#Rp@wZmXdlehg~zNeWqXUVXak71G6c3PnF{WN zPxBTQ>>21jMSeiZSQK%0byk!;RK-;bHrUuR0tF!_DhSi;CiCjjF>UERLON&@M;n?6 zReQ;QYul5qXUV3F@f2{C3DZO1XBl*>0bXpO4ENoh^S3v|4+B`Tu|L;>Znq%OINnX* z`x)haF@O|3l-jRskJV%Ea(zRsOw)~;^YO$Qw?=5Z=q}$<6XyA z;hKr!5rB6;z_;qU8*$xhAMX8&*?`k?H4!mUM&5;BwlPD&bV z64F`bd~ZYPLC?d{z-ePlhTH}z8mi%%I^paF#;u6>%#7mxjG}nZy}#jfx5uW}*~YT7 zk`DfKfkpBaewm80C#(7`xldbGAZ(2ubpV{0LQX$3{(fEit}g16M21mI(OnH|*=O9Gxs8HfrFB{;jozJl7J8 zl3i@?3+GGMpuP?hXU+?3UA@JOi(T4K)^^_H`hgMAR5EGw`?4lI4n@AOtHz$&A`5isR^|KI zL)^h-5_#m(ys7}z>{AW@$^gW%RBX-09W%ulV}u+~MNh8ww-aiPj`)%)WUKs6SY z8!+D#oC&=+v4K$bNqx^$6U)b}p*-9#;4TBV#gKCW+-htfe0Ko9p6%L&kva4-fn!@U zyBsrsozTyc*;71R*_3T!P1@N1gU40cseM3mJ=nQs9I$&P_hmM@HoE9{c=FKM#ckyX zyERfBVPl__eSGcq#r^->*Lsc=N0^^E`Q%{jM>D+0>>xGXul5N%W>iu3G;(LAf@kOq zO41t8)No*_K;OElyq9f`&^h$E|9HwRZ?{jvZb5F-kNW@jFFBb1muT@GX2V+;{Td&? z^(E|{2=U>iNaA&mYN@;V9oKQu2ZEdJg1mZGoj(RtecBt3lEbV1=9&VY3WQ;j4j|cY z&9hL`&t^BE$r+*tiGOtu^EIQ~ACSJW#QG#L-EJtpG?!#54)3oy9~Z_7H5?ud(OmBU86!jZH}UQ(JV1H)5#jc=HhE{T@kDUi7~aLk6RzH z6xy&Y$fBcyXuNcwmnE^VQuCJa%p!(ocQt!ZRkPnZVgBkJE?+wnqJsJqp!0+LpN)hO zmv(iBWC|r|LRiq$xK8t!lrN&wf$5|WeMdtbGI<5&M(i7-P%J{VAjBYgE4H?!%!IC# z2PO&oX|~f-E#eDv>TY!uPZIj~*VugXnDc2-p*v4Xn{cd?k0+;8;n7%5h0TfE?Hb03 z17^NDf~T}~l`l1uQ#71z&Xp6VbiknPNmE=tLu!&sqZD{-znFo32Hgm??I#@xhFucH27 z!7UvswDX5oS0Kf@+Lqmmwoh_kDVcfM^*+Q~xqc#7`rCPH7+$SJN!=4S$IV~zXz#3$gZ2##n}3nLF;gq5~( z6y)ZoLe7M##w*w_*>V|tG_uczpk$shWy0KVECZQ4-%C>FzA~ux{G~59$(o3KZWT?_ zCE!C$Qr9yBU2x;f>Qt`)rHn(E?oYEKXMyJo>URA__0G z3Bod(Ua)ez%{YFIV@hrH^FfQrXnWt0$i;jMu5R9fGt2h(@uTgr+6g-Ov4>+KFJ3rG zg?24#!hC6rwL%RAIz4JkRL#Xuhc;!SbWn~is~fCTMD{@`mMFx6lEmz+78|>%b~Fbw z!i#$W&+Gv&?@K7|TAcZb0IOHMe&0i9gvNUT;2&To|4&zC8P{xux?E^SMuKWsnJ>Yn z&01UBT>yVHdFKjHnJf;1N4k$cfT{YVH@^0qF8il!&t0H%e7>N2vB6A$)WZR3V1)f> zF8p^h`csePi?~+wHnRrtRv^`5trDwlXVFp9scc*3QKBqyDj>XbX72~4xZg5TFOKJo z=Q>t1MbU~pSgVO49rsK#V(c`5<`H~rhcIh2y}PoXXly~OV8=}sAyxCvthcu;COq7aBJ4kPN!kM zQ9&fX&!UO4B}Df}M@WBq%)>k9MZArQtomeSv9eH*I6Vxo%r^`{!xzO&)syb!BeeAJB9S#&fSw`Wv{lLCucbI$;H zt=fahHPmkk_)%C!&X{=ks)qhNd|H{M>QHYr4T=17RILY${iu=*s>1S-NgRiUnov-~ zXkmPQ7i`v363FHzo4d!U`sd;MQoyO94fnP;EuFYv3XJjalH+ioRJl{28HJBB@@W>mq(z$>faaHKtwTT! z8r6wAhHblmM+=0U+3|iMz`S+cl`+DMR!skBEKQ~7oiy}OxC~oHu|}(fCM*t|G(p*T!EHuckQhyC-mZ@tV^KaSqPT4 z&5EG4IaKb_HCH;;M+dkiLF+C^d_OVTTs4qemt`|>FDmF$4PGXE=78`M&jkFd&j&oe z2kf@M>6-EO$u$F;Z{KSuP@do4bW4)obq!O!um2Z1oM9)u4&oU!)OUR-Ffq?pB|ejw z7MXS2j{C&nawu?fU+li{e>gKX)l^*vTIzP>8Hz`bwMn(@x*KubYaix2bWJGm;0GSSyym{4gy7ST9#ErE17ta zsb>(6P$IYtzF>$dTqSHy%;;OJCZP5T3ZvbM99; z=OGs{y$XqwDv2#)E>H}C=OLKsqSUr)+R!#F=244$lx07t31qJmc_n=jIQ+Fey7}`@;T8qt-#^01*UqqfYr}&i2+SsI*+fI5VI8gdG|`p8Lo-!GJ$19+ zvQ}fS99P)W@aQ%DdKxC>spUl3hL6Vkjv6Yh8nZM{DjMuFK}(hO#UMjx*<#0I;5hm6@`Zh5Fv9ZG_Zd zW6>!t6X#PlU>4k{GzWy?ruhNA*UwJ#YnP>V!lVS2ne zUumcGbWO!uW6QMLFJaoLz&-Yo#^gwzFh;pGn<#p)xb9oSqt#B+y6Ie3GQiM|*!sfe zcoLhAc#n+lJA0p;=l4yBMhs z7&6Y|)-LeV&jkG3i@*=x3OMN*e|W#(>kkNDzsq?4yht<$yMOO`=<&TWRzKtWcyj`( zWcv@5)>x$1K1>KOaoq1%%duT}z0!=Dxv`WS1-#}SR8xK3l-HW>z^fl=7;y7lK-DL? zU9VQzZWUw&9~k*QBh3UL1<-9@#dTh~#&swnjy3~pbGdEjftyrxb))-QkpLZ=_$2JN zXsp4=0%j3dAJTD8!&^%p&UCyD*lDFCNKr5)eIlDUTJ%9?{XxcT3E3r?aL2@{?6i+!%PI-lwyUM5xYMgVP1jB=!DSO%(^?(yOp+DMq_89OoR6 zsiYWr(M0UDGsyqZbTvivVUlt9pb(#JfV7h8Q5)_k>8Q0vgFZ+V!gT?W7PCm`EE8g zbsAz-@1zLvJl^xmKx;ZSC7;wHkD43Jc*-t-cCRP>e0G!ExYf3i zh^M26OIvFzRuam?NU3T~7}@}XEIAWg_IYF~|UA7njOVX2x~Al{ViANqg=*PC}{#^SXO%)-Y-cX4fGuF4}P{K@D3qw=PtY_kh70 zfU)h0AZx9-u`-QyI!QdR;t!PpHPGMy&AN*|Y|?TPCSeVVm#k_9JiRnBn_KN9Jm>X} zTo-36B+`p2VNg+?Gs||qT~o$%3T-Oz#lEw7K%)Kf~SAZ4Vw14~POexO;6Jpa7_tIxR4l#nccJbC>o0RIJA{6AN|adFf3 zur6V?EZFT>(@f|RII@cud&`w(_5JRpL5?Qi3YP%Z;9gb7)#Ug4vR%E|G=eQ26Oa@` zh`qwhvi`)cC{~s#n8iRyMM)W1eM)zT9Z_t-;VeN*cZh+ZWD6cNXm(mL=oZRE09GiH z8a|k3PR(dgCC0o}%7C@zAX#ek8DkJJy7(*YYr$MK6l4KKo5Fde`Qwxm(IDPy5-L0- zwfE3&G!*KE-8zznn{^loW%Mhuph@H0g#faphJnFhL6;2v!nqNpvjKyL9`g|%!DS10N! z9GQq}d=GqLYT z5Qd_8GP3$dNjaFcC4FmYlLG-+tYwCHZMdPV4W!92L-uf^0NB~2V05TVjKh#%1xYAw zHHA9<_GW~tlh%PSvVr20Gj5-l(M;Hq`x_j;)zk9ah{jAcB^x8tS29L#E`6;E_yw>Q z8gG{+0Qk}6zHKI^w<)TAM(^pmJ{M;d8?VVKAV_!i@@GTe1+KIi-_E z%Lc2{NKq$N;adV(0m(qY^Gu8R>Wb?;8Vw?;G!Lg4WtB?*_C`ETb!66_CH+Z&&kn4j zbr(p+2K7rFl7+&=;^m13@w2-$|NLRtd2){VUwO~lWw)d)v`)16`inDJs8@hRlXQ4OTdWY2)&

Sj(m)hmCD%3vsb5kC5($iYt<6O zlMu#03R{6k(%Z;I9dh(ubh_@zB4QVloiTM=)6@-7a_MEa#ga8dx5c(xvg8ET5=M1= zVxt{J5=C8C#xw4F_wkVXy|K|U%{(!}b!cH_J@`=W>z8D_3F!aO0_b&J<*P5}&#aSZ z=)-P8RqpA^Ec3S9j>ubXECQa`4R~&s@#-P)<);bHA4Js=|I7Cnzy6(que`@N9vBCm z82(x(3*SZD^l?LhvMBonAHaSKz#EhI{(Cfd8jJiIf&h4t!d(dkN(gbMC60;1Giw2X zOkFnCGMXosl9^HL22Rg9#s>e)Z5#*}0oY|AR>QI<8l|;t!2Vjub8)-w{p((P{QJfA z6jk}a7ea#M&s<5_#tIs1C{H}9kT9EPE&3{})iz4GmdMRbaWX4JCkg36rsPGGH61XU z%S;T7FfXdhDxA>W05?x`tiDNR5=v#sT*Q@pEqKk@g{YoNwn7z-TueSY(_3qC<+TB( z)CZ(C>JY30v@}pLaT<6`Cnv3|M_gja7Ii72rxy-qrA=GljPf}-=}2#K#-#8M2L}hn+7v6{h_FWQ?YRg|jkn@A~hx1d)f6Xw1;_zjw$@ zgN^l8li8LKcLK-TEq6B>nO8t3iF0omOvOztQwTu-lOUSmQNeIjkdoD3%s~tEBKN`c zW9_yCl89vmq){!t?IA~Hs-((LFfp=ZM2dia_Jw`yeRcW+1;jgRY~DD>>1(Gr zerJRABN1DhlM?q^#;E?}nm9HERO>Cvr{MOC{WJbrbmQ90ZY1f|1z_1W)BSH#-Wium zsqh7-?E1vQWE{B2Z(U@%=)z~VqeR`uHpPA%(}=hJLai~8+6X0K#4Q387ex>22Cvl_ zDw8G8q?jJQW?fR%G+K>j>9_7Jsb#ULV0wHq6_RWG9U4$oNtxJQ=4Fw`7Y*}UQD_<` zypeA6OyfCm*b6~Ijm=?;@Z2u9FYeI%xkZ>CG}Od^xZ9a8qui+nYfkT-WBK|iFaP9> zSKm4>YpJ2=rM}!c)*e)e4vNSej3umZo?L<~O0MDIWDG}<7_4fufxPl+nQ5ZEL-W3*h{)=n*z>dKDDW3l>=)=x<7DFk8Ks%{LoOGSS9 zu)4*P-!HYnDC&jCDOP=!Qs1Vv>jRglxKLl8OJt;_(Rg@BD*Z#%CszHad}h~qc{$5n z8HEnayG_pd{HrFjB-fM5^O;5Fd0^2PVb&5BU7)=ML~zdgEn%lEVh${F72Mt>+}w%S z>+HA^mAJnIzH`KQ^Q_?Yqk=n2#%e=Wj8;2r@;e$)%en3SeO$YJTwwJ#U9>KM>Q^TN z$iInze}bLzs|u#B2UhbXu-_1O1LH==baP;I0%mPJruG2>tPG&9I>u5xtA2F?ns5nR zVe(on9w1`+J8sGFVJ`Bz&s_J~2fxqbnN^523F;Wo@(DBSi~F|tHZj_c5!VULNk)8@ z(7ifmNiAk%R@bOp=<Z9#^9Q@i;`vQjDLXU^}C+xoINy+Lq=` z6b(>0ONDbvp-4C{#3EUcyW*n-4(pWAOU2nF-cuon;Js}liv#w`YOcwcA@{&4w2OV5 z%n4{YQp-Ct!d^?_TP4?79t;@nXOrU8iF??Vsj2DO3MMCl?{Rv~#!9H(WZGuZrIsU; zr`K^L&oUyPG;6k9@Nk;|rzi!jZv_Z|ZY4Y;fc#_tzqjQ6{(vH^h7?zxtHV3Tc|aq@ zriY^8()i4RT5%wkzmEnQ#LfFWVOSLm$C)Ipiy(_{5JM|kwcn%DO&S%c?fnR&s>=(ypG=={pI9MJ_$ zl>*YLsq#>21!JWGCwX^ernt2yRv8N>a0#eBU!y+7-vzd{<1Y7kn#30B-nRg18g<~w zQjlx%$CXkl9=RDuk17B`4STq7-ID^?9I(l2^XbCP1;kWqyfwkx?Yl`>wt}k~p0#pD zHZD=6SJ)E|4V3BcZr`S%Tm#TzE21fUq1sH4qcMj8Pzxa*lQY5?vkn}3^P1uvA`t~g zHPMyKGxe6D@IyO1`-xk$`|4hpH<3hdobIg4`u!Dc9xm0|L@Gzv<0FwAK%@uh#EWsC zClct!exR+WHn?~W0o|*mUwBEBU&n$i;axP4jL2lNn!behJzH` zzPm2N(FS=vs7{qTs&QqyP{3CW9kxjsMj1y9ed?dZtZ#U1#WXerD@dVcUu7(W=@D34 z;c9)YqEEqtaf+fvGs}sj?3QNGXj*byBK9WSB7)Q^-0!$_(TbL4D~qHREp{~xLgXBznapDSBO0ss zdt$*;Z>*W`oEMxdz)vKi-J9UQwj{p2knHmyM%bQG#b)+9T_+LML_nNw2ydP-UcX;( z=d9q(W2vCPB9k$^DP?QI*4J$7i&REOcXrcIN!!@}53W}jeVkCB7=eD#LxBHsGSCQ% z^^ehN#@=JMfgvD^5>wML?F}x%-hO`jYZlnBRABVm6UcI1=noU1mE2b03>OlpzK`1$ zTurUv#&fNPjHgEbXQ?oK-_m}|5D*sOKA0gU zxk#Fhn1(&cBq7iNIEYibwBvJQnKOH#U}+c|jgYwr8HApqi2@7dHI;M%>SGa48zmg1 z;JXN)^E#l+ZQ-o-00f%}q2BYHnli&63InYcmMHcTSug6|F6*h-r;yN#aht4hIpq=* zWGT{X3O7v_u-TS^j*AqTr6y(x^@a6D>#S*lim>uANE|LTGLxQKItVwR$Uw%W4WWc4 z+@q$H63Y-{&TS}72uhO=mP0i)N_l6sqIgsY)E0g*;0IUhE9w*S6b$V zq`ZhcLMclVJKpvqHA^g`ErMq86&hKgvEb~a(dv*`h2X;ch_0>^Hj~iYjA)w%QLbzj zMVDsMhmD3skj@I_*O#2*|e|L?X&k>%Q zQ~Ttc+Vccjr6NP9SXeY7(UZ{gx(c+7y=k;Wl7orH&B}w-n5-$3Ho&oq*G*)p;jD8I zOI^H%&~)O`Q8er!S*Sr-v7+;~h8D~qQUR6TwcCuo&ccrt2Ciu?lI>E7Pm(DK)h z_-H?*a3IWU)JQ%$89pK~YfMvmClJrB3l?LS4tJ+$Sqo>h|Z*P4Zm^vc7v z3$icrPUC39SV__=zUm+emw?peFVumtdRCqOnE)%A47GJlx+VQ ztJ@CLT9Z&Fxw-fVSr(6Q*<7+zz-M89WnX0-C@;mKz*a>?QfQ;=Iih+}>A6IU1GW^5 z+tnz1@Q^{V^^h!yg3RH$$Q~RRLmH)1q%l7_)q@xDAOk)<~n`AE;tbFAAo) z{fS~3sNuv-TXJlZ8f6tU3iWbm^HLIWEd7@U&4rF4@(71W%@7cdN)UrpmCm$8v>K2O zl4z2sc}`4OJC50DVD)a0qPnbQeYl4I8a<;Rp(m;HIGh%(or{IA>$bX6H+gZy7b}EL zME8wlQSLQp#PjRUIr?v|uza+kwJ>@^kRYmsne}Ldw zrcGgL-eM%l=IRRC-AK(%&_d|KWkUa6#`3s`giHo*@vYW~uTJ;D#Nf0`=0dOap~|*D zdSPSoP?PZ-fSkM*3%=2C^YR?Cm-o374avGkev~*p%;+UsZN~0tOk?I9`%^VWio8}H z#@|I?uPmXolW3|`Sy3t1H5lV_F$-|YB-OE`T+m2u6NR>5ipK;Zz7V>*SiJV~cA4FB z@$guPt4#J+&nu4Sv^}FZe!D8D*mr!PeDB~tZgr$#WJyvHv&of@Jdzzc=h53tpO*kB znb2Bn0h`b>(e=L0SlRQ{2#`Sza<(ief^x2l>Y(CA?QBc9V6}EgYOy)BVr*<7YF!83 zn~@`xk?$kTY?SqugtyL1$t#J9C+@3Z74ujQM;u7BUgECXE}rkVw~(X}+rO%&=zulLtd--;zZop%V^s->ylt zEP@#7KFoDz^jKORzz4xIIyvC`kN0J|NKqH-SdKn8+#5n=d`VPz$Sqn(w(;=ahtXAidfRr@i*d!gU3+GKulV4o z#+5#7N^V(PMZ^>lr3{VO5Nx8dMhSJ2aYk%Jj+R9zDeSRfYMuqh8IhE;k-=0=;Ji6i7#`_(8PeHjWh)kZZjys*Q-it6*dM4Cc|~ zsk7v%`pS8$0JqE(crD$@UD&QUQkYQ*GA2uLSJC8(2wzub!AX!}k`L5uEM^QSn8|ul z^P^fSyn{7o8njYirdwgBI@ah+q#O;*VJ+H@~U&^A39sLha(0~ zdT_Jkd?O&dJmdNE3+hClcHC3GvkLv4fd_$cy$OZO4=u{smkZI>qr+v{!0v zV1?ik0{>9Q%@6O>OcD{kafb7I1FZ#?wh>7Z6f|$L7>ILQh}w>IP*Xb#XV73VOTtwB zL0Zo*d~t!Df8`MSUpSxx2^YSzq~&is;Jbf(MyK}^`t17BY~eZW7m^sJtY0D3Q@KH@ zrNB!LgMo;0;;VK6lV?Dc&I>D^F94fK2yoIfc?`5o*(gj#lW9)-@`%aWOuFBu9+P{9p<5hr#19B6I&jQOETYGqW?z2t6MY74{wF|%pMj$nh7gScPm;X zU4A6XPjsq5bK-PuIEv2$``XZDWuyffLPf6P`D7-pJWA44bjD^_z>hXe4_8_CokK8z znlBLbvcv)ZuqCy**l(3_Yv)mq$#*w7zrQYnm{EjXmSoHlhagUS|37A*Rg8$T_pdWRb-gMT(#r0x3dNcS{YlnxZyBZ`6PQL0a@y5GetIw9rOcX`ziE zXcih$FIs92-E6T)7K>FRYo4nzGqN%xB4hZ|o7~;ZggcnKxxe=#vs6X0s+g9D{Qtk_ z&!4-wyV?si`APwlV#*pcF^QVve_Uk9HeyxrTIYEdE1%qm~!B1kW{GbPAZ&*=@ zN@B*TQqk$ezGzJ(5$DLp#Zd+}sXmozKvGgpVdyA>$T32kyWY#1(y5d(Jleo4Dubuj zCd3brST$=WvY<6ZtL{=Xq9(eE6>Yz6g%pJZYL&t6t^O^b$pleUPoiZpCiOyDLC}Sv z+b3uQS_&I*Y5Puq)lC3DuW7d5%fvS6M*5FX;7=fSTzjKc#9PxyO^INSQe~XfO~zd~ zc0mg+PBn%-U~N3C*i2#lT!Gd8j>(dCP8}wp7`0H6DLVG@tdK75SBkXyj@0f1* zZ!=?1lfgCqY%6P878AH1jIBM2g;HT4JCMpic~Fegl^9jR#bBC^;Yz~LlstKn_6m{Z z!%5JpH=5LF($#@~lV6E!&3~?w9}TioiBvM*!>IRGD@csX{sY7sW@$=uN??t6Vu4B7 z1k}29J#hk9NmCbPRbYNBue)oe@;JWv*OJ`el9&lC4!u?Xa;^@f@^&uhCO*JT%)t>?>A;%euryRv7jCby{lqCAl3DVGd20y1B;k3-A$mIY zKduoz{t#FgW5oDVWE^T%31dLVDZ-2X9DSiO2#^qYPk4_Cq=Mct<5X47Hca=6fcGH97zb_kHUG~{TOpp3{dS?1) zR35$RkH9Arz|ptZY>C##>ce29wEgcix~{VEaNR?49y^k#V=aActw6$+KH zD^OsrWf2mcK*j`{N^~Uh#fjaDthCah1Tv zPmnrU8PSU5bYvhQOiMnbcPZ6$20Us)`<07${>qVEym(|6|K?G={&%9eK?c-GuHlXI zxcTjG$J38Lh^O0N!dwcdXwnTxMIs?ppomzKM2F-duvzfZXGMA@xy!SQ0b77YuAWip zD=vidY%>xlR7LVQA38vBbIuvV=E2%xYeNx=cw8>cU2+2pI%7~!WlpXcl__q{jD6w2 z6gL-^c>1Ij7({NB%7+jLY|$!X*^reP+S6@l-dM)=+iTPhHqoEA?2*c1G|H)?3UFF` zQdCa_R9sAgyP|SnI$8sV=a~&6MV7rTh|Xz#YhozHA|MvRq%}%C5w4Qu-Cv&>yf`)H zi5W%0fM+Taoi^qi(tn~L7|o-rh?}p)_^D;Y=~_HDJNI#|1e9l5tZ7(kz-YBcA^IoI z35klLh*D}LV9)Ax^W1@i2H zF{W*;Z9w7(R!P_)`$p3Z&>@3-T&+exY)xTf!}oPMPA)bfzb&d@O90FzsTR@g0ljxs zQj27M94UuC(Fj`-q;#s)Q%H3jml7|;z9O`-uxl=lvCPq&i9k*{^*-9dnnP>s(?u*_ zH~?`U&B_zOKL#S7p0#MmZ2E*XyTA?(loD&CI*#2uorCwz5U}DX|3*L(39hOT@IZqu zk0p&K>-2Z%woTEfu+|Rh(x%~pCnP$k_sU1)tMSPQ;G4hHMF`7%fOhFQpc=U zBk~1YS!9xcxL2-v^7nPp-)Xv!a|^OmntbF42hT0cj0!HAfadiTR{z@@xc!waE-pMP zR*15#-ov$~G6I+K%lWg8whr7uqH7`f9B!3QMUkp))PjIMik8Q764*?Dr6>Om`*8Sv z%pz9fKJG`FxC3&~L8Hevn|;r4&pi*z4DJhLf{w#arPy}RMOlh~*$#~L3%QUjP1C=0 zEKcsUMn|Z|4ECS;%9KHL(dd;%eCOo3bDV;R>jb#c=d4IhCaWb{QMW4npcTo%iL-tgo`>xx?#1(Y z8Mv5ZQ5g5ZgE;@OYxdx!V@$8l%;ed*nLN4l<-H9W3MbW^5Hw`nNT7tdgv9l{UZS{K z!X8#!+`^FKu~qX3a}Srg+~G?6nCOr%(hcUNpv2 z^sNzj8MdM#qkRHS_cyV6u+_Z{_BrId{jrcqZm^KHAm+@p)5?3Ty8_hT2-Jek94c$u@fsOuSFO7mtc61 zdMmam6}3~U24fvT4VBVGr2)uCUAGt#W3vo*VuvulJ7D!M0l1|K=6{gAPLZd72L=9g z=M#C0=0LT-=AtkVGls%wOln+%HH(dYc27Jc|3DfByhf{53aZxler)+_+H?cgu!Sx? z*tfodC}sm5vI%)OG#dq2I!Kvp6$<63)M7v4=+P+&a5(moiDd7vHl$$`+lNi?r(2HH zQO510{?(j;C6V6$s)Y`zVF*tL&P-%T`bY0F<#G!a3+T#F61nvc?$y<&l6(lOE z&nOeerb%_5reBQrel$|2@oJc}oPaE3STHrO^yV2*+KV>DzJvCBL~ zt>7p8?)6j{oNhDV(yFWi17^>9P$5-VQvWx$15`cWiCG`?jK+O{C}i92K8HE@Ko-do zFtTsab{VkRH*P(Cn_8cS0?ATfz+W1iW05Vd(lRZbt5~CjPQb=@94#pD9@j1RQ8hb+ zc#Qz6^j+pc<7m@Bi3LtUGvA19r2gG^uR5@_{fvBQ2Xtr_oT#n zt%CcRr_7BL*acSZ;?^~D@WHFbJ#%0Sa;2d8e%qqCvqHGL^7S__u)VjA{;Z8HEmYQl z>|G^|9|b%G)r2N>87kFh@@p)3!NXD{R4Gj=6P8dEvE4bZNh>Z6FUD4=z9@>oJ7Qv5 zZA9x_G(lolm$)@VU5QfC9GQ?Vqlb|Q6Aj7dqE|&?oAZe!-YL#&;H_mF9<0PdHl)HE z`u%fh6ta?sHezH+%n$Ii*Y3M?@Vcz+ z+h*Tu@AUq@*WUU4%(~(ow+|!3oF1U${l)(Xq%2a&zL;jR_$QegZvoeO*s@;53DLT3 zj3v#kjkn~4_n?~9sAerH+rTMs2)wSh2cdOUXdSV#FN}-9Rt>Ym3XYZJoRU8Nl8!2+ zspO|q2@0|=qDY#XPz76Hkx{P0c+O$+;taEeV|_DzhEBKeCk<66!#p=Na&!{>L*$=n*RIkLwA&^p9{Jdt{C<< zbyL6{Sd>?6Bx#TN^$OK_Yy5+nG;?PhNA<{<*GC$t?Ul+D&(7oY=8PzO zRKkplFLqj}#Q*>x07*naR4?P%Yc(!5kllS^)I^X8x^$dfByDezkRQbU;pm5 zX|i~A0z+;TSKD2NYWzA|lz9bQ{UR;DyP$w8|9n3RBfHOH7CG~sv#&(5Xn`brF0dp) zbPOxABUk4yd;P`kn|1BM8g3?t-ZxQ@9P2Pe*+f`AMn6Eh9V{Kg zx}{>Y%OQG78B(hM*3?d(s$z9>V#--*%(M_aHkRjTgXi(XoA|IsdsZVntV6r?5;0W` zFQ#BK;a^BcYA&xX)MBo~i9Z^*j*I9Pg|Y8Hwv$(m&FsmArSZ*NG%>ur3EQ*A@RMIU zxXr}hc+R=ATQgfPD#Hp2Z=A>a&+f<77asZb{W>-m-grr0k&TuMMrA}`8K3gLNH&W3 zq+H|1!Dk9dM=sNJq72HZe=h}#ntWxbOT4PKmE0Z6*HhZq#y}{HEIHCur2Q4qN528T z4w2%JgK;9f!3N;;eM=EXCw}Vl2f&XUS@T3`%vU!te07buShr!-29#H$N^6lID4!Ff zaHp4=xKW-C)(bz1;WvMgI>i|QOw0%7?OD}L0F;-iBbJ+u7NmgKCXSWXqYhS2p3*q2 z-27Zb8klQE)g3SWgWSomZ|^2z^=o>Ae|`k2UIFm4DDm4pKHO;q0uDKL=FPDtCHDa( z845NGs$Nx#oIWtUyL~?t3Q7H3D+lYHBltmSmruHJCxy7LH}C=LzEC(BqqGsWcAgk?(1y-jRL9Pq6z zwi{!^M0HhY2LJ2^0Vjm&qak(YTUB&aYJII^I8M%kjhInY5D<|w(wY_iR zmh_rv@?NXkgo36ph<@ae3v`ok94uH&_B`%OB@M6YEy`fR-7=FRaF8 z`p8SW)FAbIA^_VuM%PL?88TT%j;O4)VdZLKjIolKvuV)4SvOy55@^IKEQ zH^GEIKgGjuuHyNFCN>*l!x%A^PgUiuimkF#wkqo+D;lqUej#>*d>=Hb+DQ73^qVQw zgtiNKA!ZS%1e`+FA9*Ay4xoVPKGnB8G8G1Z>ieseJI58f2v?s9+>M00LDVk&ohMHF z2$#tg;C+5&pD*;O(R3u;TNm2P8yzv&7}!eWE3|@rXi-E)?<}{1*R0&z7H?E_N7qvHU zz3rQi-^ck;VeR$GI9f0=SD$1Yi1t(Zqhf6ynu)o%R>hJM_Mg2UmVfZTukWwXtXu1e zu5`c$LI-GB?TQ8IBU6&RUT<~;CEYGA)G31Sujso9@mzGRW4}hyrZQf9qbc#)lBy@` zSZTD$@K7HhfQ%zSyvlaW@n=s!M$mHFXe*6F>U~xhh*e|a3yWx;J2ZGIGTK$JP8>axFg1(F`Yk*fl=J{d3u1|=O694JgcI7<7QVHv+1SH&V|{GZyn;rB(wvvm@Ti=& zp{hKq4B2j4M@rRo04vGO7!%LT%uGUSk3w6buB$4r2C!$+GaHl@yauH_zAAK6zKtVa z6g_#d!1RNMm_I$?XeX8-hWlHyeSL%Vr!R0uK82(+!;$`pxHQqgePm&uEDTE)&|pHV z#Wmo+987yrvzK`&Cell^sG$LM$v%IU#V8*D?LD=4)0AEUQz7f;fv{&56^VoE@%Xks zDzRJVHT*r1m%|8Jk7FsjLIQnsu%AeIPhI*_q&D0d3}`8(N|S;(?5ZJ+W3NgP+$L_# zfinj`dW0FdyMN*YZ+?A^<(ZG3QmU2AMLan~DH>&_0u9AJDblk+toE^GP7U*`TGK_U zXky{$)K<7VT*=6wDo=He7a=*I>f#<5^C~25j;s%D_ny33>_Dy`j8+Zq28nDLH;WS~7uFt*Y`$kzsexts!RIsRYupQ*jh&dy%N(q*Q(XzSpv9>?MrXT`}+-Y}D+3h`TKas9PrT)(+=+ZM5%76Pa^YwCElLZC{r zXO1{fbn>i~5%fL}OoF2C5Q9&GUwk%=74KrE=T#C|rs11&usj4=DR*p`Xc-e_4^}({ z$+u3jTmA35U;i&+T$cW z?-0IN#G*{PQ6zES$|KDd;$)*>;fSk1%7*M68c^5dTjV*4X?ULD!U43t#5Pn=hcxn9 zLfme!VNmR(%u?uBoU?8qT1cgxz!eiTDTEqp6zv5ZX^Oc0X+XRKup--;zo+sAzm;i8 zftA-S&QLJmx`eQ952=BpDZ>7MV-E)-(vlWE(9 z_hua^J#XUFiZ!$|9T8P9dk_zG@2I?uV_7Op#9?vEJd75_bqja12-7DfsNT0Q^P4kM zy}gO`7tZ4HGpFX^MKtZ2gy@V|#!v+!t*%-DQ-LZDKV;#at;kLg&1)^{H>d(eL?Qc{ zuRgjKG6=)ZYm%(c)i=5{Uk{@ClpeY}@9~rFPx5Q((N0a@_r&>Sc z2VsBjv?-djY?XVYPGoTVPWi|N(M0l20c*ddp2}e(q(;t zEP@kvmMcFzEx+zI8$nYW-y>!;7DtUt*$ja7>29NwXX@!;M7`JI(r60EnGLjfAD9&tjNc7eW& zwV{}-#dBwnAej?*XGF({jr8}KZaQq{Plc97ZVn^s^H@aGma!&?@;t6Y6OWI`XgM0(y?B4Rfl# zmc5=*fMGNgq(?u2s^#}t72scd%c-Sy076qlP)(q8IJDL;ZDp5*i?*DYsg2jw`mESzdO zvN);9@?phcmXq4rZ2na z+jH((pB}?t3w@86`GrvvXTwDdTunmhw?c>*CRI!~3f(D+bkC!nt+DyQ0^!94W-ry4 z+&@Qg+K_FCVJfE@6?f*-t?;Ipw9E$dSw&=_@3WG;cq)p#jpyPWKEt+8C->lX=*u^* z@EfLMb3kGCM5)k4s(v_H-Q}-L2dMV7m~p9wi-$f+>P8jG*dZjOk=b}L_SLqZ4d_=<7LsoIG(~j>PX>PUS2*E+SCOiMQ=sl$`FT} zmZ}RYoGprsU!B@y{BZ6-D{%LaIBi*Q;8a(jrU2pdywlgX`aCot(3Fxx_p9q{&x=xgttU4_OuAuPD9IJ_>ZVMD;2}%Xm zM8+he;hKsiJkD7JhcYA;Pblk#9t{gytYPW~fi!KX#M?+!6q)K$H0-n`Kt%-IDMvTU zQh=fp%X7r#1=&NOBnur%Pln6k(`E0xqLqMDo%fGM!_(h{#n-v~{xWV=Fi&fcdajRN z_LvVb(2T-OOZ%pBxWedB?*se8zk{a!mOs=fz;|lBMo&*=?)xcb6lNLzO6NoA+&XvNs^2bL4uDg50uww;*L@I!>XJc_C-v-eLwa$DQ_Epcnvf|%6%)Va z92#Y^gG#!nX@)S8CD={bA$#p{QKe zngCP>s#U{qsJ|5{)5x+w1e`5C;GlIRlT3)-?C{O*_J@>;88=$gMGPLtv%y@cv zv)TRO2dU$J3ET^SK%<5IT_K;L^fB9KB_UF>W|%2|ias<; z{#3JKr$Ei>U1OZC6`5pg8JL??W=|K@aO_CbIR%PI9+5*}To*>Lh^tKrLTyDGkDsOq zf|*8RCL%*ZjtESsFN9>x`D~)@OvQVXBTe+LBD*b;H;@z{rPfi|0_59CywF0FP)R=u z_f~Q9k6-g=uW!+uiH9L+nKJk*oH4{Fs~7Fl#nRo0Thz`;0IiZJUXT<6uNs1w;af?~ zNurX|=d7<)2%nL|$YA{v)`BOS3uc*l1kTN?sLf{xxQM2Zn~dh5W>a9*lq`WjLW86g7>O@Mo?CIo1I{^l=#o}X zT?+@Rtq`!_3C16E1Q0ZJz`~Z8wiA#UWnGGtIp2q5t>)KYDO(B=6(s`I;n59S?2lIA z5@1!bJ&j}xeoM8aQu_#*NTXoo^-EHK<_N(&DHVcZfG=`tJ6m#FZ%X1-y{V?jCR=Cj zn>u0#7$gSQjM9XE9a|j4D6+IqCe)BvQM?wt7EvxDr~C>sfTmcrb%vj{N?t4Aqaz#T zRx9;bh>WTR9dJ}eLoW2kWh~|;JxGS`+i+H+eX#ZZ3-|rzEST-e*-h*0wsE#?OOY>V zNHY#vbr-vIU8=m}iFO@3@_1j-l^*(WxqDAk&f^gKq0!^+lgmEwSJ^`L4A?you?Jaw zw6X^x{j0laAhI9ow27dAiU5=g**Dk@9I;Lct+M}QgR?Jf%6FM+H?!>ih&F9*mst=L{XhlT`+~Jq0@iYCb4*FZmW-8!Q!POGdnEdE*jgOZ_$wU z6GhY;@yv;2N_bFOQb#B5a?!A66+EToR;_6-+7Pze7?+Ll%Le|`2jVccq%B1p!Nwa| z6mp#mjMM6TiiS)&850rvs^|VHT60QFW6mkEEfd>eC>4>1Z;1wn=!wPZB@NHfUI8se zZEhkLynzFNVm{eX z^=WL7l%Ix@3KPkWhPdoBNd#4>+!p`v*t>et)0S`N9-5I zpnU=y5T}bKp-Mp1q_$vNjChJTsZrt(j@8##-5$+k%F($ZT2%D?p%KPSQC-SF+6SzN zS9J}*R{{Ks>~)d``j=sGd*>5>o(XhsQOy=n1{jkyTeJ7 z+150Voh*O2T23v^qf@Dk`z@z5)4Sz!0rR7P`7A^d-kwsGu8IfaibpxOB!Cy~)rql( z6-afQZYX|KYc4@Ht5 zg>gNuo)q3sk-3+D$iPDmriR!1-Cq6u9H<}Md*_mc%B4+#jcOgSaqmn@<72D-a$dxU zJDE(Y5|qq)Vi9A~Mj@X-<3F>-*_Ypr%V(Uao-Q$av zMSNLaq3U6rK>|}zQ_h420!Kqpu(*2Nx zv<}CXJ|v16k6MG5Ccp=7pm_Pf(1JRC<2?9}KSFzFMZT?(O-)&ElgRdEj9U@_Z8Zud zMMC@t*66`hx+UqF-#J5UYF209zh8XyBAh!`Mu68&tdh;Tsaw8vycjCBc46UOy@U_%VuD=@38sHO%Lc|0}p zuVwz9W8mbx#e__aHJwd)gruzx(V_@|>fWNJJQ2)!w#Q5i7 z@ir+4eDoj4QI;hCYCo!luuQdknKomqa(HPv)aVBH}GFQM}6*5*DOezO67f1 zhqi6WM#{O?Q;lJ0QMZj}cR%a=YC3OD%c53!myjY+{4;jPf{rgUEd0)o{qg5HZoBcE z?_C=b$NQdrr)%-uv^-jsPn3^q`=V3*?{U<#!~-SqST1eP-eVq0^18002qqUXtvFep z*)&q+=f4!=`U~DHPl$t6a;njjFybi-u4<`#U(JVB)qz7YN>(WalhT4AyC1^nUfzw; z^&n~-=k7<0VXw6+p8EaR{D>Gn1X8;o>azPHuOjXHYp7TiM*SuGH?!n`08*#y_e}Hr zaXKco&hSq7dEMtljF|btg+@WGK08V-S7&hfyuOY?WhMnoGOwB<=xHG!W%5zDSEOT0 zchI#Wx*wTg_S4tQ!OMqO*l67CC04gLSZ|vc*i*A*fzq%c$&MK7WfRHwl;|~N;ldFv zktLG){-}iS3Kt!uvpQn-C$pvNFG@Y zOMu8tM7Jz??yOW6q|s|l?fguN7b>ax<%2!Dg7CgqXVI++){j~ia$itX&xI2pu29xT zFb_+d`7@ll3z*pzlC4=1(7d^ll4W`tX%Q->5yr17Y*#j}msDWl zTht+hEkamEDv_89sBjj?lt%P0wRL`3Rt+bk!I53xUCo@^l>Z(^NBp=pOiKLawqbOz zPqT%tJRpA0L6*%#9rNf62GI1fr)${qq@Wq@Z!MNWT463c5hccU-(W?olj9zNRb?dF zu{H=#TT{MohS~cMP~B^B@vRH2zq!Tso@ZMVt`uz1U2EPelTmf4-$;N1tfrp)0P{se ze||ALi{Z#{nSweJyDWP@D!9V;LG&seN1x_Pr6;{RDD?GwyWJ(~cq!8NPX3uuF?NwH z(}>VRQaw|BkDhR~AL7VVX}jIqGyx=VR7e#m|E2a)P`xKvKgDEREJwuHh@pltOhjii zBff!+rna1t&leW<$QpBljD;%{x8`PYbBf8r8B4(F_6p6XPvTpz)uDb=BQzow8pXqs z75*i(W3+@S>o#5}P-&Qmjb|ZJc5@-3IDDl-3`!ItfKx=%O+H4K`(kktqbV3Vp-tOc z+TO;VXXHC$TsqX|ussZ9qqr&`i3WCX>o;9gT)5eE|0K|M>t;q(<5MWI7d5~VZu?k2>%TO^DP4q@_$YS5}X+h zgIf|yq{Sd1hQ$PN@g!ooLE|q_#DEEP?F?9vNu((-u`Q<7i^i%aZIF@$*yscb(#ftH zF3XI?45HxG>^#;O0jqxlzy}mi{p0L)y1zdL%e<<~8r^9>q4Y@__%_V3y1WIfIi>im zOD4*E5>3~q&4ATkuPVUrwu%0>KM$zS9nQ;$bwf|d%y=S-ACV|0$WISN8)AGIeSOcl z4GPmpd_GY~2QY~T^iwuOC~a52hOCY)uej^mzUz(eXuI#1mZrtOsL0hAI1Me0`fZQ_ z>D1B{$$dMqKRDcYIX?OEelv?^qgdo+#md;t+?#L;3v&c=U-4 zPATm>)o%(JAnFRKbTzv%yU%f9I-b?=Uh9r-=e3=EeBZWqa6N`mwnP}u1!2tyOohRf zAM&hnVtE)r@KGO<4iqV(GYHaeo3QMl?3K*Xt^97)K?IXTC|A%#pr8-|Y*CfeGzD8| z$z{=r-*7aFYY9w7d9%VOrz4yd(OfT$duf8nOEWvWHbGH2j*^i30yZt;qb=IIb*x`K zi`!2<#OmC`U--y8&6tfFPJz4kqF)tLd@ZI&K!B2{U&h$jkou(ChlhrU^agH?L_z4D zrF3}H8xeQFp9_1W95$uI_@_^j>@jWEr;cn9oS(Nx?xgy5LxDmoro>{`P7HLZc6Kr8 zPv{qu@KfUnG_f|^aRKwkv;RMTCXh-+nNPknNzi~h?SSLo9qO*PbS%foS>uaq11um8oxH}8Jk8WHA)&+2T0X#a?`+DT)u?Q8+HzScnhJ;8fMd5r5vX_pN~i~-ZPgT<&axdzXz<|Ws6-R zmXby83`HsaAG5EHf)|0f9&e;VKQgGeB*R!Mcw|)C~ z-1gsZt*<)#i;bE-?ukHG-k!FN+5h{`V-(fMfR+Zc2NB|}MokKdHVsd75Rx$*nnG>$-a56q;-joJqx&oQ0f-8CgoJ^vuUeIdkX<%vK6w(2E#aN9T zMWcjw5}ma$KeaFiKY7K>shaLv=h%F8iPeK9whvphL=@iybg8!@%0tJ1P0!jPe=SOh zAn75oPEv|AaU>}wBTi9S*9X}M&xi_eg7&Ksn>hYn8#LVqK_X7?PM<)m{=wXIEv~7h zZ@NHNIz|S5Ru(LqYt0SU*b{8sT2Dl@w^YEK6v8W{=rNl_b;=S{K0CD$S8X&uauCax z4^Un-2)}&?7vI>#cIEjR#L^iYwTNZQ3IrmHnx^x8L0h#cdh{@W+ymbflD&XGnQ+POOfvaBt zP7UzQ=Yi$`SSVtzB5>URFGl#c46gi9#Pm<}F@7py^$~;3(;1>=rv4Jxz9x>w&%S_* z;sA@ghpb*(+>EeCBqmy58$_?C@BtILXnYL{t~Lzi1XaOYW4<`SH=x`N@vhMB4j-u{ zVD%3bG!f4G2P(5bnM(pwFEUmP9EEC>GZQl4MD>S1r_sI>)etK83?tH7caEAZYu?&< zZ+CL-hZwmpoA*G~chOQRsOMdE@r2W=Xi!|0+PYFjG>0&12$puiQ5^l1I345b^@9VT z{wmwhvrSqa7u@$un+`tY5sNfA=ZV1X(`^>%nu^Yz^}QMzlW0Bb{s{1Cg(5+d5smE> z`EZXK_`40-Q__vYCaqfW@1+b^N{y9j(UTA$GcykT3}u{zJJUM^=zOX26Owk1Wy8@WiuSPP zS95Foa+tM$R}1@E#b@EdM*l~_)V~GPZGqQ|x99)dDVxi&cut4}o~U|{{!zq=WhbuI z2Us-E(Bs+4BTk(9CPdR#p5(1a|I4hyz1cF|lV>HT3^{H1)~Z_|ajTP5W|C&Vy7#$> zKl?i|HtXxS`vCZ=UxAnPG$`DmCEWoq`-r#`{}fm?&YBIT4?WkBk}**^F$|>0NVjMT_84;3 zqK*wV6s2<{=|I<+E^3K(-5_pjOflIxNxgsY%be;H!g{UIs`T#(7(C*LmE7N{3a{6j z3it(zCh98wL}eKA#qO|!8&+$7W1tB=oV3S7YT{NU>ydpI?7enb8>fiksIN^YrkT{n zayHX<4vL0k^!M8LvYG73irEunvWd5E!^t-eCiuaVSL(#FQRqPva1~_tm3|*bpo~PZ z4lLXg1>B-wGOAw_sA|wY3TP{dWOP?P1q`Y$ok;SES|rL*;&B${ua%7Z325X8=A$9`MtMs`qrEA{(}(7;)Fpvr9CLk z#a@z84v;(}xGGM;U%_590{l6Wn)RXtBbWK3=q|&Ha1kTU(-m$|Onk1dt>wBM&u6^)-58)e! z5Ad)!0q!3F?JZ#OK8k7qF9YrbSbQ9q{Z>Du#V$oXR0QcCr^rBR{!fAUMT6}NfV&F# zD^WVNFj#MZm6f%nzc__IU!y7x5vK6WqAe8TNo#A0^i)}&gxKSC%c8L{ff18R zdbgyUZVcuI=IH{(tqF?j6?@*|Q4Rlp-o?W=TeRz7qEs%?@x~E0mQ|-W5ln8q=jzBnp}qdZN}Zv~<~q0al}_JgRQ%qD)G%4r1lRXYFI3 z+9U3em(*rV(L9enh3u6eUTX#4R-;`x5Ucu1N)g*lg&E>-5DAUa7_euHn~;q0Fv#M=nrHY)rIj_SWJAy+?U2pEL9!NtqK z_Gf^}`vG?fcp@4d8`!JB&12x|M8MgmvA7nlVBxNa6@aZ7#5=kdsow}Zxdv6ag)a(t zVv0H`bB&~|wQb-xEo?(~bjhM@mnG2l=~$)LUmE!XjvHl@|0b)eTii=verMg-4J3v% zs|Zxx8?7nFt-G}PvsF;_UKQYX+b)|p#*@QeWd+`Qt+%p4H>sMPh{iibQN~~*PbCd) zVY*g`g0e}Zb@YU0{u~KBo(X@}JU_wg)&%8e&v1Ub#%4u4QNyXGlwOHCLGUDKWzu3z zplr~Ig{GU=dL;Ys>uIw^--oekGK;tvODq&m+ccH;FG^Uj=%5QgBiRs zHrXC*qiH!Zf|b;rzF!DeiGN>&&Wb4QF{zfDJPKu1n+F;Y+=@#ub9xRf@JxZ~smjno zI$n7Avj9)7A1}{PJ~wBoiFtjA_H!3;^YNuwH!8T;2hRkkiQ520uA*l#@AnTUIpN#;% zBVXAv-XwrVFe;cnqQ?<75%BU49!}O57a3bR-P6?HN9lWaZ|+N4!0#ebsQd5}7L$Lr zg26+0Y_P?baBupDhY|fdn}MTsT7sEA#nM5R9u(#) z=Ja>LJyGZk%JwzK>nCb&9=03PSer=oFhO<2tb)c(KsYeQ zOs+QndTHZ~Y^F{kHl%A6Viz%E0E*iFVcl3l4D7K;Uq?pi%&`k%j!XpnQ;T?bb@RLx z(O=&gve=|*#svI$zO2qK&eh1=s0m}l5X!y#7H@t`ijO0cxc?aUtN$DbpMki*UU1oG z*Cu}(SN(qnH-8fLqK_<&87*D-eIZ;lbI~B4K7g4th|P8JifDn=^bm*kkW;X9_(Vjr z?KMWm<+U{?B%IZ#uM(y9ii+=QiuM&LeMnx{>{(=GQ2@EQx9#PyWFKf+F!juE#om5d z(TFDz@vrjH8#ZW;I|F;Zb!*;6%`y(BJMZS(4O_@07T%lq-)nz8+87Af3_J|eR=Xep zgD8p_J&`H)HHdj-dR1I~k_ufW5?v5OUE$Qw2jcT3rte>1x{7GOzGCZ|n)p*BxY(+| zG=npZG*}&vc@h=S)kVfOdQ7EJ68*U4&Y?N591Ee^EJKjq-@nA$2XKaM9IL%-Kf7d) z;c@moo_}{AUyFmq_l_a*Oalqj?KG*+6i{$VFT&KyFM7tnzO+E~%7P+IsAzt8P^10) z8MdEYV{<1WEOa4%V1Snkl+VxLUYZM#+6KfoSJ;015iZ_nQ9o1w!y=zntV+_kZ7o~* zae-FgsymKD34e#Ly~u!S8ks%hl1QwktteeL$Yikho$kM@^3!|rOzf?Mzm(Y#t@ZQl zD`~l?qT>KT{0d_;?Dt*qj=aA;OoytRI22IYkojc}vGl@EE45mZg)k}5q1s;5w;QT( zq~d_kFD9(fe>#iK7tOqNaS|WQ?l|>UES1}nB3AT$q|fx@62 z(a5OWvfJA`i`VE>)~$(j?!*DBG+MTF0(yy8w|HuErLd70O>J^O=pxGyj+OUz`|z!D z+dX>+X8c_4KBtdqPkc;ZC^i|J)kT> zSvvw^x!sN#q$jz$Z`xN6vdAV)(JqZC~n#XNK*4xLxSG1gHooZL}T?97&C&Adt!@Oj*Pe=A#uzI-z)kX#Ss~`DKbw)rR$S`P+h4{3!_ao6Y3o z6x~YENdjss*K^FAdi6yzzMi%(1WBi=L5oydrrXaugf}iGr#QHzpT6_f-RUV>>2L$a zJhA%)?kc9me~ZKLYn*;dx)+zh3bO)Al7p!DxZz@nB9;iN8veD<;iNjpw0#M)<`#Pb z(oNbVZ+3Q%5DAbXh!`l{h=we2$Y{AGCVnmAkJgI8u95%IYUW~F;HgE0f9=N%{$Te^ z((N;7SM`r}&wJ7WR}j9UYw0g#*nfYrqG2J>^Av?n{XE)h9Q_{O16A*}zcy`bo{MZm z+0`f-PwYLY>QiRB8cNU@cKS_IcT?Sh(-u-l!%Ev;D*%rj%*_(TkI%69zyfm`^Zx7% zXJ6b+|oT1nq-S&aPfff}3TuQ$+x}u)x zR%x>KI=Y6~O9IRdxX|m(EjABp_|ILSeluWwe1`Kw3wxm7wu}g;p0yaIxIm}71k|j} z$j8Izk!Ugv6R!m9x(Sm_)04D=zE6L*9wA-t3-y33HI3HwOK!BS-O`%wpL|EIqZdb{ zki&=UKG& zPgieEPUsmsBQbERivg!e+toH8}B_|nVl-IdRzo-cNh{-^f{LeTmpd_p|FnQWl3^jHe3)QZy?b>-*mHTsPJI>iaXL138ZiQ%_=fT(;MW)A?(! zR46`jh~mZs_CbyCr4^b_oua){Bdo+v818y~1x5H9JI9%cpxS6oA3a!nilS=tT@$@d z=MG87i-_*r4@XDMq_FWhWRWUpG|OvBnP^1!@6R7sto9u>N&)uW+g~K-4`H0%mF{Is z-G7Ez_@(Zk-VsoxeFgzjEZ*vbXVrQci{MJqFGE?9uxAuLROkyE9G0+ViE=wZ5ubo# zrS+Ec&bF~|PDpQdD@4Ocb*|pS*%J0(hSF_t=GQpk8~Sn`tJJP%BK`EU9z~g`{kss= zi8lfKzJ5Lhv-kCgQIXMvg7<-_{CAT{jO`!l-fQo*ABN^fyqf%(*-iEBJ}tZKpgbkE z`}vGO$}*3bW`zVPkZ-r}U-fABOsK8tJ}@T&?YdViJbI@7Kqva1 zz=cGlyY&3BE+4A;>i44UWpyVW+j09J1Li-0^T*v84jw2SsiJ~>lMXVZsLKfgRTXZj zTJRY}cfggdp11`!4I`9x!qt$NIRn?6k=iJ>6dg0y5e^n`cEMtx@GDrV`l~01Wrg*W z?)?VEwuX&#BTV7kgdaSoSHO9TrY=$M8G`#;?2q4dUs4M2e^%L!|5_{jE^FV(1$wvJ zjwzlPfZ?&?3kF;5{)WK-xo>F9zcYV559G&7UeEWj?|AmTX9k1MW%#osXORos_f-?GIWBhf$17tGBQ~bk7&2xLMfZ zG)Dhc8{5+m{W?-9Hvy_>=Ek@}h`(VQ5jN4pmDD>W&dts=82U(8T2%2i8-+a-nYjXE zXO_;JS9|fCxjvCa4I2Rgxl2!N>ky)O(HYBbH&%*V8q^==!H?o<5Jp z4)2dq0(R&1G7S2@+t!=iZ9|sAEQj&R)W2PoW!`T#i=Ig}qyk*E=AnCj%0&i-o^x7U zSOqSO1unc<$A{Ce-QL3Ap@j-bKiSTUQ=*DiqI@Z;Li{sYcvR}tdZJM%R@N7-IBt(z zCi&cEVUaPkneM!@uU&Q@=k2m>y1u^gF}nO_^k!tTb!)$g249D_cj57E1biDYz6FGP zi1DEszAR-K!BN5rraVL}uL8vlpn3wRo(77ifTLf4IsADP>jfqcf%S`k{|WJFinpnc zBc8ZvFu5TE2~}|{r@~pBt^u+joU>ZO7OQ5>oT@42C}#yfXcH2KQ(5w@o(Jomg@Afn zLIluP~pz1HK4OPSYD~6p{FT3cEYx}m@ z_u4zXzwfno`~JT7_Pv(I{Y&24`?*WDee8bTx6=^wT$wK^N%m;~~h8{X>0`ZJ#AZ;wTa`j$7HX z-xaqq!WOE`ojg8Nn3I84t$IL>fxm8HKU`w+$^oWN6)4slgzW~~vPOLrK_y0U8xV*< z`&M8cPssakt~F8 zo^AlZuCmsR^fH*&gVmL0BueqrXYe^HGcVc8lHwI@d zaNr|u6$aHBnA{by_>fVR6(LtdHK0S`=Z7U)tHwi{6z$=I+$Bjl0QZDWChY0G$a)H z<`(szo#WzufKT!*q=Ze8sU-ZFKtmh5!M{7wLgW~RlkGTVH&mvQpPA$W0g1a_0ht29 z=N-&*#K$UmF-a2}Rk`stRH>N$QQE`lGI|*hRsnt)1mqDRd8>-x1PY1sbp@>RWVrgS zfIW6_rSOWvx#!QvBMbXP2}^w2HygCCHSn*7UKrq}fw@_rm`Xa7$<9|C998|%XEa{Q z(M+?O-V(|6G>C7{{M7VcVS+VRjtG z9T!QEwUVJZ_qv67xnv;au9dJs^t{4r4Z`Qo(4GXulhKhUpiIx!%1DK)Q!q6?uT3Kh zta$`0(oP>req+>-U#n1@&vz`@ShX7|F*E2H+C zzxo^RQ+b8{Pi?GPwEJ*9?qS<~uNP<>4yc#6ec#vX zCiScLG+00Wc=vtRI4UrdBgm77VRXI5!|wj?%+Gtb?f-0c9#iq#OTQ1cZFE{V)MGg_ zT;1EXW3}a=6h$yyl*$~SOW&pRgm{Q$kr0Zz2Tdu^Wb8ybr_<(1N;E-)0Y&64+gD{^ zsUYT7iOJ0h6(N+98sY0L8_&1v0JAYD+yv97081drj6jj@k5$`bpo2 z->zg%i+WG;XM=(v;h2l0|Df-8V*(MFH}1|E2GtYqJ$zAptK-H?6OD@j>awXh%Mp95r@b zKg%@{i#m>k(S3S86971AB~tcCBU6;_FZc9mF?ubf61ym}aKv^#H*SZcZPIZ+F+upy z4Vd2OAT?so*bQk75W_gmhuoxiK-B_#Oic(B% z9DozPE;MKdDa$UNsxTp9I{i(h`)@}ywH3k1g-9T9)Q9+CMuCx)35Dhf*6~RI$%*1N zb5D(?9dpi-(e12y(^snhU(&?%8k(?pQ1{NF*;+ zd?q1mqkR(!i4KmzN_PxawoUiCu^nJa=aG&}FEoQLV|!rL^^MUg)SOwFOqprFbPW$$ z0f9!xmnio*3z+)8=&@@?t``GEn)t6d*c%1h%prWML41?$(-OrZi0&GVBbAW8V-5;c zJ)R@83Yfcll%7#%CF1O?9#>@AkL|Xn`zVu*pkpC$ZIb>QMM)fR-Ejmq-blcb&bwqF znSeIN#|4Sr4#qyM=-C0#RG4PaPZnYroTp(>|TkeM!WN%O`X@4OVHVNTjKwp!+x|QBL3p3XXzan*^SM zQc_}!k*wJQ472T{>P7KnO%-;njH5ivD-k~`Smn>LfVO}o+Gm_f#EHFzJF{GQpZ}Q@ z5t9iysOhfkE9mjjxk}>GD}YJ_mXMOj3Fx$<=oF+HzpwT(0=9OD-$B1`CLk-O$eu=C zxZkYYOfmEvkqJ@H7ANu~v`JgclBDk0r2t|qHVZAqE$WbmW zIP&^_iddzM>#+Md+Gbo1l=ic2HR8F)OY_MCt_4vbJ17QuT+6>{X9oH8|3j~}0<^B; zBZb;~;AZmIQ;Yi4r^D%io(`fToTo9f?v>Oz{r8rG?|tomK$vJ+qB^a*2wXHK*2i_c z6j=S{ul@$9wf`4d-TOafT2woo@K@R{12|cq?Y#EAXh~0b_xti@_q@LQnf^F;-@E+i z)AlA!I-~ao`zrVE#}tyf=>#5&VdN_+7)pRAe;B(7-}S(Tn>x-9zEQzX3gHjlOCTuw zj7g~g1wJPBfTsKYEQD{f2gN7|VgQvs=k@iVsWSBP0^N7YPP+&Y6lBTku?IQ{j0M@w zq|8W=h*Q2l?q8c8e&Rk3HPZPk({UQn&|?6m5gnIi6U%|9|F6BP>9OS~&(B-k=giCv z7tc7@#@N`%NW}br$bvwmWXCqEgazRzWC080#WhGEc7R0ISwz?AT zkb+_<@q)xgw&#wo@A%F+-Swh+KdP#$yU$z@h6r4eJ@-^s*LPPv^}HV?i*RmJ^0{Xy zBj_H$fdX-_Ktv44yM&-px?l%RCJuqSGotOEZbkPKclI1#PRK$hfLb~kn`F$0iV(F< zRyQTBh{)$hYDd!TGAS68X$`X)ciN220?nz$zuCa#lnf1Vz=sZrp(mTq5)B+FsX0Neq}HX17T86WnKpT z*pzXC9neyqJ4U!7baxr!(1}mfxFushqv{dXEZk^iZk&nZ!n{QkFq_)nbqboK-%LF0 zBDi2cxNAro9!<2nnZ_TpiVqzC9XkW)eb|cq92hr%sIThhp<4h=-j`vc-`6G-U<$RW zi+{3RyhLgS+}f;j4VS|LH?|mNb^cw1Cq85KzL?8B63|)&Rsg;Naej=SgYcsqyVecA zukhOgPWPA3{L&FWi*Yl^w2*#1T%V4bUm1vXn2L;+(yy>e!I&d<8n|nKmB;x#qAu#H z0Fq21r=0r&c(~pGL-CQ6@(i&7N+y2rYqiLyD^J@MtR0~e9gu+?WpGgLXy~|NoI)16 zgszB|95^^wQI@ClUdRBhD%VA9#=_)R%;!*M*bHc71`5h>p(=-L!4F2sC;dvfw^l5M z3b09@0_3jItQ!@LtqBS|dRy}SfM?}&ibPWW(&7+9qGpobD0i15^3*YJUv6gUTiv z3+obDFAHWP#boak{}k!3Ffyc@sg^&6j$|`VJv-`@WMPy#5_ZXUUfryvXu%Q*Fe%%? zR>dGdBUT^?E&&o?*U5lH(sl?C^Fv8`K4`b3nld>!AdV(FX4d=vQa32baUj%dzJaZO zs`V}PTW|G@(mcfMv&BS=fm96Y;#DfX31yOXWZB4sXOsB3k zB+t&&;jf&wc z3NVB9iS#LT0-)n)I)$AtMSAbz&~qLevU!@miYV)tGj$uKhfNpK*GWAfDp1PaXhK&+ zr6_2GGPpG6+QC+4q!xVT)qu>?jmB*G{^BCVB$7_P)Xt8yq$)dS-Gd%%W(=@ zCTmx8MP!9d8)7sEbk0Hywu1Pq6z43bwrs zwaAENbCzXtFs4XEQ>vhn^=yf!U@k2Xqv<~dTPz0yNL|sP$|J<)FUpK`WZmslJs_Xz zMC|AKV+Q_`ZVfELpexG(t5T#@SwnXZ(oAL$)-;=gM& zwYL~e1gIh`PFJrAgC*$&Feww3L`$PFNX{fh&Cf+pqltn@MQ>?PN3VlzhB8(5&PbV# z3@emTRV%f+Wb=)Yf!?Tf&&*IXb*iiw4{_=#&qHNAVhj{haXP6$l5<>CoQq+wG+ni> zF){;_I%4$t5Kl#Xgd*N*m@Nlc(G=LEweF9MxB_^{OkK2>3u9uScho-2doVk&Dprx+ zuW@S!7ZbsWa{lFj-N+e?!Nj1k@{bm+0ntROnF-~hGbR8z3@Rq9@5}VH(SRDWE7nEz z4;DI%WU}^vVlaWqzgN|H-sXI$hOvE~j%XtO^>{|L`D77!IiS`$eY12qA1eL-&<%6e zJ00KZ=F8ch^G6eA!0NeA-Aa1+-^}Y8<4g9a-P#XzTAX{MnEjiY_?9|c0xJI0>_I?ehmY>c4u9cgu)tdbHt$EqBkZ;@WrSjT(&+4%F zPE#K&g#{;#bv~_5SS9w%@AM0C{_o?;ztGkc*pIl}pEjCam_M(bm(Gb`E6*-UZ9cGE z_Fzn3Z>QecK`N%=RPLHN)RplqR&V+!6vH^_TzNN`Zdnqo-Ry+r!Y?B5vzSC)q8*T& z8(QxAw=Wwc*-iYcV36`Dy)(TuIbAy=Y3&To>}fl)ev0Z$Y1Kmz6&ZccbXeR9(3Ifa zdo6_$FKxE>*r`h@8${U?s3<=x>dK%ekB7T6;w%!A-P9eWGDQPTM42rzT`B=aTy%BW z;(gCFa79LMO>~*0+<}YesuGp?ICy@pBrBq9(>ZbrONx2WGGi2D(J$;`ry{#l9>ogK z_&|-a(Z>psikK_70BJgJx%m&O#-mEx&Mui^x6j$kl#LZ@W!8-3Y?a>)*i|f5^<9rq zMPSH%s32LyhLy9@Tqhs$QC%9~W{^7%w(d38bmQJ{9Xz zZ7d!eC{l>YC>*(bmSd6SgR{YRtcU z197}TVwR0p)l2h-p8_6#lCZl3&i@bC-PW(6KLu`_5gs`KK70mz=&?OM`2GPOIO_0^ zXGPUN=~UHqT@wX<&U{w2o7vjN=Ai~ghu&?0)og;Sq`NMkLuD<+UH5!Bju+w%rN16H ztmVVA|Nl1r@+6;m9hU3czPI+bJS$G@roWfUJe=Qhnkv6$0rcP0q+KdQ(!EvE)vcYz zVIgik9hLweOw4h7&79t;g;H+A@j^an<1!1ed^L=Nyi~?knZ#@)kaSh{UN6c_B8O(> ztCei?CRpjenId+!dUWovt1P%+VjU_X;oM_A=TkBp^FArhi~+pud2@B9g31Q!pi>xu z?6!dC{po*$_CbD!%jO@O_1Qz@CSP||5R1gwHWF(bhSd z(lcsnHUkrrI@aS>0R}0@b;vAD9Lkt#+hZ1SmbOeS_VOGLMYNg^3{ioGjQ6gx+RcU- zl-)V78v~%)&|B-kwl2Nv!X18>>vwCgkmhSL>Uy;SE~&rjI_|6u?sYwyg=VPgHx!Tb zxj!nax;$=Hw+Yb6nWX$0&&GYp7qRN&iFIGaKn(@>Pul9~2es6bkglWZL$S)V&dSQw zo8|&**Vz(F)($*em2%&ERMJwI?Yr0MRJ~JSPIVj#vbZw(K*^1XnD4%R7Z~nJdlAln z#~%b9IsqPjnDOvqgs0yJJjjfH|L+Z+eQ|@AF4SMxV*z;P^K%EGi^}WIz4*m11NgH4 z{?C87HG8oRt=7H=Ze*NGnrOA$v^CGff?PDmS7~Q7*USn4lk(RP@%@CW(>*q~r)uE$ zoA285>*`Nbj>L6&`9#plrps@_!Z@s@ubzjdo^^$@xW{DMe4xFwQclrhT4;aM546zk z$?t{wqyE^|>em)GiqrA2qxw_MSE8x+LC4#rF@&n@_rO7|kpvF(( zo+>6qD$d>qL}$O=L@9F`CS3?RFF3O6a!}2fbj>E05t}Lf=Xv1Dc`@UpTnHA%wH{yVx$e8lj;g0?4A&>%Lu(c_{qOQM7r}c!Rr++AuC(9#&cREV=4W*vRlu@# z`dlO~<{Aq0eEw$NmD|>hHDl-OHay4Az*1`kke4pqzF* zX3v(|(}uPl)w)`*yWX5xCM&u_v+7pe!BxKbahR?jyr5IWn2*!UI?hAY&%Bae!peB$ z^pD;=++GjgJ@vks)qAOW3%{|TrhH$)K8$&Os6MRpeD@5{{Y6rMBn%sMDn@sK^AR|Y zz$3@NLpRhx=zEWW(-V>_Z+g39Dt)@A$&C60_|TEKsaXv(VD)Y|9QLRCUmuYj2>-h1 zO$qhHyJo`9()(||=K139zq^>mK7X1q06u-2CjjDw2f*`u4%h2%Z_mErKZMW%tKW2v ztmZ@QIz9J8okQG+jafkTfK7x}%;Jd*pxJYpJnxK+d z{!$a)&YBspnsrT+&o#f-@@va&%UOHBN$(2y$Qz-*&RN%P8Cdb`{iUjAh9NeIyqesM z|60GU1+HhoyCDy+ukYK7ZD`|`!hikq7H{qt_uc?5-XQU0pD4o30PH?N;Ew~{zX4~@ zGB&R0K)0t6~t4THj6nNY@)7|S91N$x5N2e=I`)i zq=_2GI~uM9R!@KZ`nv@GSi(!h#{e^iwmcv@Q z<@l=|@a$KCZ{5=C&V~hLHf~}l|EK%skZw_bznT!G3qJ2X&A9hbm9=ed1L;zAoUaPc4h*j`a7R5Y%Ej@&1de|W^#4;dh?hrg2_VfE{^?}_rjQluv1=*F z%6v49YdSzZu1*I9UOsBhw$2%N1qfFqpUbC!w>}1Jo>IRw{0gvr8R%XmggbIcU!>c5 z`?h<;&E*^c`-g%4HqhO1~r?B_qpfCeV+Rx`7&!}-nG`d-Zh!zv6-npJBu(20D#>9cHSHS z+KbTVHKqg5`zs+98R$XptZSkRKq-cm;>Z91i-F6zb7nr~`g(^AE}TlUY_-q1>Evin^iA&FyZ=CXOo6$cz2aPjDTj(Egk$#;-D4R+)%~ zu>yymfk_D-0xM0dIcS!@+{_1>1wo0$yPGT^0RVSYh@J#^%?_4+8fYrOPDetXzNv@?ZBwD7Pm8W+0RA!7v79;%0G*;I z+YSz&p#|r}csuA08`EVe^fXQu*n34(!Dv8JTVhADQO_y9s>H9t0c$Ih-;aF%;9jcd zC~%C+iFrmMEg37x3nS1Ocd`K>OzwWacSbvwFgG(b=R|NP{rvoL&uzt1LhH!t#9mz# zEj{2e?II1^&(03edEseF{2JW~Y{9T4xIIC(J2k?bb(Q675cw(U3`IvQUE0v%-{5%-OlA&E{Vfs`0}2}hW6 z96IOl!Xv&*5}%vBb7%|nT%Xy&B-iA;`P8DX>1@Z2G#^%aLU~fBub6Q6?IpTCT0foY zSK`7?zGV4y`zmwVp_5*^bqkk?X`(A$=64&-`}u;kqg-xZjJ7)wedbKKDv`NwSQmhRKTg z{sYAie@Mi?f|p4L@sK|S-cT=%wZ4dxSw13mBt!c89~`{)@h~Zlmbe*HmLt-!N(QV3 zZmXTo~6&tRMJbydVQ&*Afu1z^&|Dns|Ls{f3uSokp;ZUeyP$OSpIWuIda+kUsGM2 zUAAtYT=1=79=k7gA^B@^kJ~)s0%76)&j2>|hwS(9up38(+=POK@&zk}PNo>=G4v*< zG+$O2R1!&Xe$M&a^NRKH&Ep{lpSAKNswY||h9weSU%ujVMY|vMn)ULVE1YkxTZZOc zyzJ~q(pvo}i%Z}oPa4kzQYW-<$8IBF#>P9Hh5xE!AJ{vw&eTq*SP6}yb zNHR&vLTuqDe=Kr>?>isnSkJKy z3y)#NCCU=ZQtHwHqS~h8rt~IqvrDx75Rd49hOb75x36Ejzq?o6V$PKE$AV7<9~Z2g zMVw#wq_3+8^^FebbqdFS%1INKAoPA&Hu0-OE`Jm|GLffoq93&yEK`M0R?39$S2#$`nF&P zbuG{%Q>ZomRZ|8Bn)fub zH1&6d@4lmRqZ6l3q0ePhVTfj^J#dmu>!2PRGrNtrcf4nlz?ujdacb0AHnsa;D^vQx zt0LP9?J~w<1KcqWyO<`p!aVcH#tZEgOphk@-5*tny9lKSkVE;79anlS|Kn1bh3_5T zE!hFwjLnX7eatGRAgWqp#I?fP-x=rXZtjj)!d9WHURT`>jQn+BHJQhkSBjbVc;?g4 zC(XyxKC}e))Kh6Qsh5*{5k<43FRKOS7CPH90?yi~*u;jMiFnSF{8oGR{$V|{lY;Qs zd=C>*-n9qV2>6ADm(edTl~z_6o{gJJw@lnTGo}%GZu|B__(i`jr4OIo&tWHWa zUZ~}ld}<*OAg^d=UUM_hWu+&y?RMMSq+PS`*5+5%Tv4NIG3NJsa&ym}xM!uDSdh@t z=27(XYBl1ZW8%##B-iAATg&j{0*UrGFWjr5UnLi-=Du5*+V_WSppe7E=vfhaq~W;liy+sHn2xfJ)($!qM-`%Ndj)P}?S*Rg zW>9*#U7O`@;hV~aZ!*IJjbj19>m2t*4{D5)5|--9PXt=I)n5qR@aS2-H--_uAyU&g z7dBR<9{~THfeFqHX573$T6FdGbRR8lY<$a%G*^ulgQ93OON z-~Ta@7ZN;eHvgjYmH>O_xvqaRK#8=0l~qMkG#m7OknT~xoJ@^=_X zaT?)=SHW0iWThX~TqV!ki=WQFnV*qvs;$|VGK$(Vrlh#pU9zipKG&6@E#SLsTxq}6 zvOZ40*saug{gl|cF(O@QRH#{`sUPOGI|VDY^<2EQ)kd^BTjcxGWKpA=)EmC-+SKne z_-jz!E)!Kx`m!Wa=^-Uc@KcwHw-b2X1r*f|nPsv^});OoUx zj#6~?%+|ZN5%~PC@GUJu$R6e7)`RsOIsG$T&?WOQ0%mRkKoE4{L_Yvv8#1Bi0q|1* z;D-YM>dyfX@Jg$>bQYRm_JY~?0Km#iebIo_G(pIA$l$#0<-j!Jm_gh~GY!L6IRBfz zxE;$-ZjHKf&mLR-zy;o4uEdJqIM*xz%F$e|$*dQtPrd|mGoe2v0NsJ&cKT}a)DCGc zZN}3;73DcGb*$y1LY(s3ZSU%JQVn0IuD+9!yPFogY;A){ycITXnuyB0sWGw_G6J`Ax<;@@ z;cq2%w$(*pJ;D#cM;cnD)P=h2Vq`T$@wbm}DUWk5#`vpUi;usffl$Lwi(!01D9UHW zwkk!FGFz2B0!9ZeKg=Dxsby+v&${l1Cw5|7TpHKCN&T9>f>N*BPvtM4k>^_7jIsj}!%rAjkXyRj>gXvhRp{dn$!1 zB&pxeMVksZKav?I&t$;Gu>mb%Np*d!0WNCtHp_8J4L=!vsm+N$F%q+{<71pg1z86! zC*&$=WjsG!-RPhp?iNPG5PscJ^=vU0imB(sAl+Q{su3Eeekh&o0zeQ zYGg=jb%XDC0YQ7?xqSNR<>|h1|E1M}!Rc!@NioEQW{L$V5gwYEaeSRZhSz6wBDWBO zYL;_Gtw9UHv(jnXY*$&H82zS)Pa}GbrhU3h_Tpyxv6)g0ImHxG;WtKs$tGa6rhtU;A_f$H!TqK0QZgY{ruJs7%Ny&35pVy1Zb&9 z;cWf)Oh6}^8#KMcv#DI%7Nh}gn+Y?z3ba5lwI^@lC>^kVgD?AXdz;$|pv!ykOdv~4 zsZY?wkPZwiDYoohM&ul02iETh!jcnICu8U0BJGC1&9_F-fU3Lz1CPzTI z1Us12YUz-Vd{9>J?Fc}T0p#V?juiHoAhPJ1AV9m-zvUUse9m*O#Y@j7S?BdcL z=z&6?;28e2Jsnuwj6HO(8_@^Fxwxq-E?K!q2L=56=1Is3p z&5NKZRWo-Yq_BbsSl1F9a-eIzb#18kJmM!GkG4Eofg?UY>F} zU&OrdA|1v|cI#f!JQq!l0O2ZQcfFVTB zQEGw-BO5fp5Gs;R0p#{*dNDMj&i#FHD-k-oX8l6}x+mcPFuMmWW~Mq^R{=T;A?&~` zwdY@mf8X`LVE!^t9?1e7GPlit;O&P@P3hkb_6?p52f)#Z|LVot3gT!#?EOrrvfIy% z;07U6)wItB)!aiC{#)+*^Hj?}=aq9I?*0P#PZIu${vQDKtjRuzP3rp_%<#dgr%F3;xZN=6l>^wgd3U(e6bL0pen8NK4m4dw_6TR2{CP$lipuk% z2PKwRDXiTedl@su>8r|Y7}4eUI-@n!mSTf2gEgPH%s9%)mT(P9{(9I_UFJi-ybbY( z$h_Vi$BFFF@yLohK?|#;8>ZF1)yd;u2up;m;or&fZDG$d8jGfVdQ~x+jb-DM8XKjF zxzgF|ACiYAs(tEzj@w)%jQSW6ZjTP+;#Y$+r;9&RM!Sl4Fq#<3s$8hQ-P(2gt9x$S zI|`L4(fB8+EC*-c#9w~-jV5dP9235Qr*Nm(dj)La)7WK_NnE%` z*sr}>msuZ1b@5E$q@)y2Hr2F85t3o?9cOm zYkz-~{vO*JDGw?Cj{dgBH2qsSzRvaE-gEiyp0VGK_VG)WEZ6V<_VE7yp32w%1`=Br z@(U9sy4F9Y`|z}3N-x*XZQ%D5q({Hg3vF`xa!`lLk9qpG`aY|&QD39{89rYf3)O#> zUyYIO&+GS7)u+BkX;J;6Y+CvvE6pX}-75b% zr`&({dfv+CBb(jR{(G(OT0S4C)xXk*S$Z?eYyOLE`4ZN9E_^8d9;LogZlh1-+7j^X zhFvE{F9#qczWC<=5Khns!TO zXYZe=!}BL-Bd7iMU;W&EX8)o6*OPu6fzKq|`VVrSWfd-&NWEwW(<=GZNpgsC_1t zZ%v-|Kd&km;JWwFnGBjfmlOwruc`l3H3bD(vwL$CrM z-%>97_2l0_mo}J31iLvkU_^j)(0c^^a{#^)Z_mKg08DQM?A}U#2fQWi0Ju=w1c>?6 zU*5oZEpxK=X8_E2jqAm>XXm?sF+<5}{Z%ZnhF>)Q(%@=nI2Ch*Y&d^TB9 z{kNBG7zBcwI<&{>(KQ9Mue60_CXi6+fsx?CKtEo!BB_r&M3T4Sd8~UR1xsS?fzSK)XU035H$feX2=j~pxD=>N9Gkn&GND`fc=?ZF(+=Bywccn+}rB(!B z1Um;gyuQ+VvNVHu@+cBCl1sQw2#Ra_t8{t`Bw;J*o^~M+o=bTg9|lt#pY{3&@>0J0 zm~KEPKy}%ltK^^CI})VYs~Fq$`lU#(EWzTvL13-@g7jR#cZTvVv95r7gK{UASj+5Y zAh-Ycf3g2$;Pl5(?j{9-$@u+yi6>Stq5d|yAe(t6>Ha-Z`a9+!sy`=7sma+Xm{WhJ zJp8uRuH9J7(gceUgLfzX{yQD#A6NIwbH}Bq>|jN*!ruk?c=?j}|2Ook)8D~sHv9G$ zX8#kWooXd;d;W)C+MmT}0>2Y|kC<_}G*$VmT|ro7saT~OrKvox@iXRCWz-G8wvQzF zv0OULr~1r%MSQAsm3DM3$`_YAmQR%$LS2v2Uma(4&!!#abGg1Q;j$n+#zkkV=-jn51?)f%rdQ{eZdLM4q>ss-< z>XS;lT9a^VKA0nqssHWzPM6%4B9X3Xt2C)3Re%=34pYYtiS*#Jf@pE;cY{Kv?* zM?41;v;IBHpXl?5R37zmP<5-9iK;KUmT7#m$fw3hfp7{`7!m(b8ow}p8*(s(dxqeU z+6#Vdu41PznVjFLib}b`x0UavpE3N2E zeaY`j{iWz`Z{@m!DK77+olP%`^*G^%(+Zvwj#M{68B}?5@JeF#Zc%rhz zk_G4}|pI6h4UTBIpb^l)}r+88? zj3W|&-W360fDMIQE~V}fC;)ec;`rTY)2ISV8iAKV@|1hY6p1BDYy&}cPL{lmtJv8$ z0Lga(u`B3=y7g24yYSiQ;~|NmhN@mVDo8h({-u78RgfId<;=yU3d9c zU8>sIM@xYVfvJ<%$)9HZ<`k1Z7$~K#KnfdC!&5)i$=xouOu=B+Yp*@P`oi zsr@6sJ>oecRqlIuWeF=$j$SVB^BnQbzZHnt0Z2uZ=Zh0CDy4Q+iV5uGV8^WThLeL81CcVFV(HSQQ8$yqKL-lzsxK z*rm{}zXdQIG#%_cA4;jXyKmMu)cnQTmi+2dk&^Nh^$)ySEWSoZyzxXjYC%ovqx6Wd zO$Bsn?0SIBWx1(xj{Q>-FXxS<#E2AlX>LY-tm|hU@*MH`N*;b0sr$`knPpf}cvo2> z>}&~3ZN4ji27RNOBh|?T((bT3UMAvO0lOcl-xt_vx1t(w&|+y8LEBXbk6m}V=1tc! znOB~#Bt@gGs7sgUqWheQC-rjR-xv5h+o{q5*R>0DwRJT(#)64%OQkub0rbJ4V$3z~h=?XUbn#b!sAJGI- zyeU5Mx61#zq}`WM0H%OVNl)Wi;5Bez9#kL3R-UIB@vWBMM&pD~s-(|nd_?)w*l~W< zS7>Klckw%xCDRN~-@5F-`9@Ukb%ac=FGDbOa5<5F4mY7(m-!|4HmmPsUgcoROMd@- zG0Wv|tM4LI3)bha^bOiMmp)8M_w{O{Gl01+Hjia^GwKFv0R%9XPL;%1+DUkA{e54T z{-Ap`(4#t#qB#{h05}gP*o3OQL%Xg|bx>6xx>-y(Xy?{n8vqq26sD;MKayO=oLnkb zIZc6*A|T_-{0p$A;cx5rIhWu~7%m)1_1L;MyU9RP_%b#Eg zpL~hUFUTV=sgn&-Z{3M}kYwtcQfSz(^s8JyF8NziJgI$BDMp{AvBWdxIG!+3T~U5j zPF;(xAJu7r`P4HS!EhXr2uS(5;*Vb*N>Ytf21*(|B2}*yNac2u=&9oWh)*QG_v$qb z^&^-L7z$+*jk&uWqT%*uk~-bs10^)nGos#rp@8+MN33I+{+swQ?JnuAur= zct|0+l!^SI4)loJVZgz3awmYI);K?@gEyV#+zj%4XZ{-Kv{xWqXzjyG`$6{#dQS${ zyY<&_Cm+Gmy`@|-MUN^cR~4b1?H!&O@gDyXW-uymtAnSM%FP_K@~YG@OQ_u(l>6S_ zY~g)WkBP}1@qol&7)g*L6pxbNGkz>+L-D8T8{1D+LXGnKwWI41sWPfRoV4^==Q2)g zVpE@W8s0N3X(JP;YBf-nk0^Dz%jt=9qYrR@y$V~^2Y4>c1k&aAw!>eR;5pjBa^5bm z!Q|tBCRQw&D(@=S!>;NA-{E&F0alHm4%PFV#Gfz4*~H0d)tkbyJQrVnxl3=b)2}?B zke|wDkcWNy&tlo{D;nSBuYl`ggFg%};-6?-mQ&Z7-+Fl@N;-aW8%pw0K&5_X%6}x? zMCHwTcanubH4C0CNbBou@7*7(?%?)$jFdF0%4`0PsjuJlG$m)}F4xQCzn< z1$tPdiI(bT*r8UNY_5MrJ*-rLc>bm7P;a1X{h+)!{$7ugQbB)Om;5eWvU@4(Nm)W= zpq&N48UXEs(vjHfYmvVE3ZN9o7)@j`upza{HwFfYBsm2VLl1-NN4zPJ;xZF`S4;kA z3?cw)JN$8-)d7lAV^W7h>nV9UVo(KTB-lH_;Ka$G19d`6SYAdR{NpJ0&lAu*N z)fZJZ%FFesab!tX)u-$3a~(;3q$ywrG(0) zCalqfc||2)1v(lia&BBej&1RuA~i|HBpZG+sdDHcrJ_wS-%%TFxj(|KTDGfpR2e0y zsr;|;H-6_f`s*Y!Q6GWI=sG5Gf5=*9T)Q>twG*0ilYYNzK=stG< zczY2{eFKZlo6PzRslJEXhSa7%T_-n3nld4AI=Qabb)guF4?VuPE(h69xh>@lCDF<3 zjpm1|6Yyn(OLLd1*@xfyrF-|(pd-ND#wb+^bUU8PW|Wd*ozCQXI+FxTI@GN#h&DyL z{OUngOG~54C2ne0rmr8{I}VJZKuhI~t|>m$_2>m+!fXncnB4b>-(E&f-LhZ3kkk!V z_eO!)(Rkn(9D&qPI=&ndr7FHG=;tdu9NibLzqCSA zDZ1f%PhYcK!WM5-RTW`-T*FQ>6zO_TStRf$HTY|ED}k!6;FyK0CQC zmGjgW%3}6Gq8Ylkx*ip!LXK%l{MS2nFFMrneF$oD0-ID0io*OD=~;2ZDKg+kBY(5z zdRnj3no~)r4fZm@fYHQ#CZXaq%fie*0)Ys``MR2DD!(fGENvk$^*8V{iHp-mDJ*wm zJic(odS4~gkE55-Gm7%M=UbLWQ@UMlTaA-?vAin1Dqhvo-Llsue{xqT_W%kcAH~O+ zChOM{^khzhbh#1k?mzNqhiW2-^JA|ol_h`f^qHm2L62H~qvXq*O9+tc0fxF<1HJ46 z`d!OT%~R?jfc1?cOd0IVUxlkEA@_dRKt97KHlla@`@K#Z{w$j4>f*AY5be{ zRXnLaDL#*0Y^pE)0)K4pl{VE%$3$7xFU4nY?=ntYDyIS;-zgTV0~JfDe*O^d@Vid* z19XuXvd`1!)TGn*@>?zW6|HWko*zM2MX^FjGqPDVvE0W^GB@t`{)Z8+1iIjEKQH@z zLyB!t-BilnMMIjO1WG%t}gXku=8qzA}NijA~0Q8&z=Wqx#jdwY7T;9ZJG{#`7!JpYf~e z(eOWhAFYZnT0pf3Y0?-FCbijMKe(H}lyzDKY^XMqbWV?1$B+WITw4cx9o>HkwwZN-yXhoY)iu`^ufU+cuK#RNkr!ro3TLqA;NvKL{ zQQvD(`g{%*JRN!aRrw>nqB`AVYJtZ?Z+=uM_3lgfQXj_k>~wG-rLbT8l$+nZpK!|b zp6Vu3XWV~k$3q{{*5eYjKfC_akGnQuf9i2oJ#63w_{GEeB2z1~e#yUp^jxL*skcY< z7YqhLxsx&eHH`pfqiUtTN?lia$y)!4;LR2fMgWT|4i4FO1jOu_wP^>atp=#=LbLu- z6OFrjG$BUW*SZo|Rsn>n(+<7Jbd2-tPr21Ki#ss>6F?9uNzMVP^QxU4b%cgcAP5Cseu`k z39~9A2^if~{Vaa>mhvN{JrCCPQOdfC!DFF5pnvF}uZZnq3lB1UpMkg3ne2H#gaoP1 z(RZMlAb#?_eDaYdSCD!!eBUBApm5^}L0q|?u9Q-LEQ%9@rS*0m{qVmj3qR*o`RXG4Kb?y5wv_#C)1&bb9q!HJ3h%124NZW1F>aa4ZY+GstL|sRUlB%bu955Puw zQa8~Oe2x){)I{V76G^|~CJ%YJOcr@nJx3C11m;nis$b=e?ggi*I#nB7hsyIxTC|!- zLW`=(s(z^a>K-XlZ8$A`vhrFg_Jp}es)O+16Xc%8O(`Skm6!Y<0w@h!N8eN1qFVs!Ae83xO+1t6ltpGS&)A)r$y^FgcmtkuQN< z>J^k^aoH_&uU#HRUXRB+bzsH&>)uihqMf0C$>ZHsuBUC-k3h-^!8UsMd#Ry84^O?Q zylM}B9|5tat3D`TNeA_qkWLj(n0_EJ)zo%u;h1Ag>G|dFM`gc9B7FtOU%6jLV|i3R z_b-X@JfhqeAKrIELT9L5<-bJ7d+@2IRo@6paf8V84y2xr2kQB62RgI_KvE}>zJVTe zF0Q9F*m7#TRv&x_5RD)`0l!FRl0ZH7sr&MuDbR}7!8`j*^~H3c_r&qFvME)P)+PV8 zDaGK4dQt~xj0vD@ToE)`Ex=2B6>%zoWb3ZWw|;YL+z-uaLa51nwB)aq4JoO>Y8vuH zbzsRvU^&)5w#~dp(s$JUFhU0}9v-`~y#^IY)}Tp%!O&JjQ43Kzl6skO4X^OP?WucX z&`*@WBT!W@N52%@Gl;^z)m(S_L2AiR-x+|C$!$;<3i;>KCIY2LiMqpP6iT1!#8b7r zE>Whc>!~`={{bL)p}H|zKYK~tXfw*A^Lv{6@OzzT)NcpC>Vc)zMv(y+qA69;q2{7{ zO}_MZ0KS5$6rUMo0xWBvpu8377q(q>hCf1RJ`ixLAi=>gL zU86io8dXbrF2|IEx=bwnv*0fRi9W668W+l%*ND_uM0Gs_{s^#D*}jd~TZ(y6{2aBJ zf^lZPxNfvTrKdahUu!GOPSvI5c21N}t{Z`!ALQqgSVio2{U-0=`;wo}l~PnTnYLEY z97=6^85!rJ9@Q*1&2qYenU#U3)ET7Y8~O4xRh?pL;rTc^lmWnrBTUj;*&bh|R0P3^ zJfSY7jtkr?wd{A#rxTPz^7h%V->j2NyBMfv(#LAEspxy)?0-9c2V`s~u{I z_P^!0ij6O)4`FdoqfGfH0IRpjXGmSaY|5r<9qD|Gq`M@dSZleKz=lzt2jU#+g z69-a3ohrJa*7AK_9Vrhe3nWvPV9k1+sYjdYkC8UTqdR=MbQxt2m<2- z*JX~{R6yfWDev@0pr*zm%Cqy`hrjzVOK^3a$Ae#EJVt8#jQTn9pk&@Lui^pI88}s2 z;}i3|K8iS{^l4?OpHn$zFc;}_l}>W*BS?J}@le^YACEyn7gVG>oXZbKLw9;s-*^h_ zLi1Y*j&cDBm3{fk8UBNB{0A{e;^fcw7dIkOI4FGwiWg4SR9l4yE@as2PuJf+E z8~CGCdnZ6PRv%SfptenB*`b78%s2=rKuWn2OZYMo8o*&6t#CG)kJ)$G%kn4u~47!9PwlXMlR(=`HuKxUK4?edf^>W zBn7H*%+wE0;lrd~>6hX$2V?lG91}>W11o#^1SV5mjTjh(fz?C=cXT;rJu14LS^=klHY%0NJE$2Inw?q z0JnR~U!SkyRkix^XO}*Cqw559ny?@+VWNf0`3LZW8&nLWXpd@TW3y8=bS>b-RLd&P z$KRdQQnUZo9_18FY9+C}!h_1oyhZgODg7z(6@idS>j5GKP&)Dx^(6+m@xH0+s;)>n zRWGd6eUJNsWum$wN^#7HvMv0UIOm8M+x#?0*)=QPq z5z-56I+Yihdr7SlYC>QB2@dO1x>+VqXWc0Rr{8}zpTfKdst5Qx zQ`m6T{wsAGji0(FFVeOdH8mGh*Nb|6r2op^^x2yJ)JdIvk0*v=)cy~#5yj*tRA_Yn zUeZu{bx^GS{@K#|u5aB&k9YW0NIjG~7qBZm%4Yzks4K;dDx;0KGsHwiV%t&S3oj4b zGYaEZz;x50M&3{u2JqQZAN8n@qUw=5`e15z&P{hZkum>h*xxgdJFrp@b`K5Xb))Nw z)Y8uA_cJN=2*8*(Tn=Xfl1PF(I_*^TP4%Tovm-o3`4um!|It_(rStD+ydPax_bt3O#W%YV zM{OL{snXQ=hAGy0;W>AelH@>TL(z zH8NI}P*oro6H=%1$-Df@ci%UpW-y!bGpW7>QM78=GEbJ&^rt4ylkz|&Y?NQ9-uVv_ zJ0^-6*2PvOP-bGUEObAe!T#6?bPYoIJt*I~zn{aqyd;ZBp(qCrek<1&a0zO{bBL6b zitVcF3LK(5+%J``(tKnVA*n|7M0}*+s*?0LS3bxWNs%f|y;xL!JGiHPU8#P?dB*gk zv~| zSp$?E|E=~Zjrvn}J9ToP{*=ey(ve3NUU%?xJ?y6(^R2~j3x)?i}EzURdUQIoqZ2QfS&^pdX3N5NJ(4vQXTQt2uO~kGzCcNWyAGm z%Ev&(fXiUaGU2oP`0Cic0>X-DjIv9pZings0QF(O;LaT1Wujm6LO^=}p2KZY%)Xze~oGHk3=OvZ<^PoP7xB*r2Zf(_kH_Bsyr>DsjijG=nsc*5#fhhMlPuYtz!BgLBJmH0=Mmp;f%_=d zf6q;i>gs}P^XuO>%&ufi@5Cpbo`ueI0Am5J4#>#Y13(#1Jw>{K*%Sh!iJgB0Sl`|E zArWS8n@d1h$D0_ybK5j(0>0C;q*_8F0YFp0p{_@(sPu-)=-FH9prCVytd5-pOAmyRq|L5}iA)@i$!Q;q*(LYf| z;A!lBivIs|vgBt6uH>KE@AL-P=-7C_Ii9A_M(q57n z<&_LuQ({6$fKquCm_^IYEYdi?({uo;5#Vs$JVuzR`oeWbd7^7kUR9R)9PiM`SBCr9 zzNdOORXG#m8}ZNM%Dk#_qMk&XQGT?^sVt!@8!Zm%R&#ccMCl788z%=G-&H<4FqYp4 zk|zq(?DnP}QU6PB`q3{C!_*`78y#Cb=RIQoNd$c6Ljcujro5#0{yL$={F(AP=w1TJ zok^KYE%Z`TN1)h#gmk{Gu?t{j>!7-n`?b;}T>3c%osRBXCea$deT*irB9x5$It1EzMshW8ak|t9aru zdG`BR9uxQONJ>;Mi|;w8PqnG8o4A*XACaEvzNPZdqv`VYq;?-RwP`id$H_7@Hv00r zo{*#T`|_Ukq=UU_ZeVHv*l%>El(&rs`XRV|hCI>ky&LzRVS`H1;QET7k^2p~BXa$z z@9=X}ecb7X@OzsPKOUV@C>sFgg-%R8*`S9V2sfuLU~}rabJv@q&eWw+T<*K;DYccy zBTz=|=J=o^DG(WRcpjXNO?HjTY7mU_sNYITjPhd}N-{-Kd^4!1JW*=uMy2OV^?|=f zd82!&#xrV1@rl0`A4g?4pW;2LpDDPfs6)*K&~lrAwZ_zki5qr;jg8I;YU}}uew1bnq*&a1a{Vvv^xr^F z8U>j~TT}*UUd9LZs4Mv~(jG9SmLDWvs3Ve6adXO-@-tmSKG@&icl8|}GC30H@O`x_ zPox!`2tfzxqOg5yxijcdx!tHOMG7P|Y`rE;+rg4Q2kkxM5px|$=Zf!03RmsDBGHW; zjpL#~E|~`Dc0b4R24y0CvZ#A(L#L}c;huTbyeULd5krt(t4Yp@};8uPF5P&dQ=HBiVEfTRoG2jJ**0clo6?EeHj8i48* z_*T*^pU;ovQl^_f`9XS7fM*Y0;=0g}wr!gn1U(N+y6BZPiNpVDUkNO67r$GX;7bR} zd%eQjZg0E$rEYGN7A@2IGPrFq0*RWmSVtr=May)x+*kZ5QamV9FPI1fR2~~F9!7e` z^Q(O_!E01k1bC4|Y~_WR%bm5LJf=sIw|dDP-DA~O9<$Wrq;VKZLRq#IGt_;4+*8|- zG6GYdtTiwQNG2b!4ECLIwbPG;@lYQiZE}!lR1d5X`@wW-tKHpC9ke5>0bH`-!LvAl)(A|Mqvr=uK9;E2!;bqUJzB-eE} zxiVE%M|uiqNBoZfH}a;&_K5c*8q2oOjEc`Aiu$YW&9gpG`l`rEOY@ZCt`4lG-5zx_ zKT6tL3MZX!X76W)3iZZLh6H?Jr zN;P=H7pcc$b)HK$<;x#;A$l4kiHytBfXMp%1}cdo0@F-+Ug0O^ZS1QP`tf7L{v+^K z^;qe>zp!#K8dKw;#@U|aGZ-r#n<$^+I~rGRKXt#x`c#{ouF8ynJ(9ZL+^0oUQFd{$ z{w_#xF~UDX{T`kEMpD!*_2=0;m||3_pNO%$0+@b~6s!E{t&cX9XBchQb)spOwY;7C z>bFGFYU=g0-MRd!)nR0V>eqNf3In6yvj3w1(hYp@Cj!<}U@z*lq+Z{8BAs@0gfz!K zHPVq{+*>?{f69G8=`IhrnX;!;p{$qu5x^N-7Z1!6%A&NgP#u9(Nhl_GRN$+wM-)uT z!Ba}r6}4%#$Gz`+1Z=8}=zgSwvEY1B-HKFuSfBSJ>a%K-!QN=h)O~(NYD`SrE52^s zF&5ju-SQm1FSJB_6p8Chn?CGQ|APQJgLtS+D5?+>dsv z9D%BCR8jhrd&_`x2`-J~OMlPnaZyo^>Yh;%2x2;f@vD-k6Q5CqI$7n`if!`d;{qO1 zz5#WH-!7rz@h4{enPk>UsJWZ!*17?tq=(=^Bq?UpvPDZpgUJ_7Y{dtckFF_FK+Kbp zJ*8gZBj)wn_{&ZIl%JK1XJxs6O&gjv=3c0PrXrLDLC8}GEpW>g9 zMYW^Sj(!^*e4^GLV~Kd2)ji^C_{q|H`JF*c!-Ddi>ULoR{~Vmqwi72j@64YGSbW+4 zM$+jCqCKJKlhTKJWiVJQLO;*SCC9yN)6QuilHX@LSc;mWwA}fi|Ng4J>d|Ch;Ht;ffqD2&e$t&ffJVzj=BuJfyPhd#l{d~rc zu0N(Eo*fvc>c{VPEhU?8-k_&cqD_V~NtF|v5w9lcxq;jUK&T#2N1R~vekRYu$5gXj z>18+Y-~L=Gj=Z#RGYU7jW;i?#U1?UWAH1j=uttqe=Iwloyzr8l|>gRzCm-*;YjH`1kdy zzABK4cu{oJhb-=6R4+eAiZ6aHRDX<4JtaxTia~a%F5{XZ5w9*e)}=r3as%My-Fn{T zpDF0H>rOE+iV@I(D{H!fhtw5xoE|Hn?zoG4`7QN2UnUOMhvaR!6wAK+CfrW(*b}8L z>7+Uc<%fAa(DbQzNv$e?x?)KEE@O`u9DU}4+d8u-J`>Z<2l6bc9+$Ve#d?J3% z%|~DP@>>DdxtzzZK#K#Ypf7*nAz#{^+?M=TkQzJSF7=?j>!)IG`c0Tknf1Q>98|?s z2OPEEgxM66ORE^n#CQ1-R2MM(H>>*BdUsKGI*Fjw7mCQQeED%X?>qQ->gj`Yt#v%h zr$?NsJN=+Ka_S}2XcF3!iJ>TybUM~Jf{mImih4QsbwX)L^$jPv+TCYfBdIVdf8*WJc~S>rsryv?y#kb6R()q)_&20&EH0x~NNh%QzWg5fJ{A7i zL&}Lap*|pd-v^|r2vY{JPEjiKV^i3d|E&khYJZBm{H#M&aR9#gl9rb14y5S$#ZCcE z9$Rl(^0r$7~;^xy`|csK6%lN(a% zH>CUpipKnEQ);JU=+ksGiBpxujJ7P|Qs3KVrip%3yOM_ZH`X)tl1|qz#b?xRE7#yB zGXy~0s$Rvf%B$*7z|Z;Ab-tE>7hH3g3?Dw0Q>1t}s>_1D({J36s(*q9kTkj)Jgd7{ za+Le20FFyobFk!Bgg|KkyuNf-OMiDc^=rO4HPKR^%MIpGrELs^@(pyhbD(;_h*Q@f zkP1quXNr>Vrd*wLN)n|3_|Z`)hIiei+zXjV`I6s#`O&h#KzEu*t$@b;u0K7~=9HCd zelozOH!bNZ+LUP{4yb-@-9E-b!n9IJ4kOaPzR3pOGk^^V~QrQ zs?9-lr*T0TO&FFw@j6PUiXwoF>O4u9ARG0E%W^h#zqnlLqW1TC%<&Y?N|7(W1I{To$&-Q3^{7ZE^6$sM zCTKxMA7_>J)k_lZ!TdJe*@_i&y&jV+>{{G+wUm^wO8qABBcT(k!R4TeQUX* z3C8*OyILk9srsUJrr^5;`6FOy%a-=9I`!2=zZIyVM9us#xGI2BfUWrE`uQcouSPW{ z7VyiwsrD8BiZ_ujPh+x@gir^DpmfghuCcNa#nVg?;MkY{O3Qw>RW(|&`}Ox8+^R11 zXvba|;L@4!PLkG)Z1bcCKHlA1VgF0Dk$bwk6FLVKLId%Ul#ft z#>x7PDNHxu6-}qyZh3)~joy?J59P4jtfiIc)nGKdLVZn7J&2I!l!XW1Gu=<12CmU-gWrd!YDa5Ldu1Mlmg8 zvv_ zkB#;`4ps=leqt)>ZatmNrPMCJgVY&3xDaRu$-mc`W{_w%Z>b4F_}xk3MKDEAEHta) z6^A-=KNH}eX>5H%YRdAlBOPjS$Mf&QvRO^87#1+^7)FC3mPtumiqu49Fc|q6Nlj?A zF@?4*1<=gu!QR5A@|;%=t37@gtURa6pi=UV+uE| zkk{g|d=MN3N!-+d!~+`C(IPCpN<2wbThT=27Xk94BpfA$JE=IRoHydJ&(m|H@~U(N zh$a9}NrBuS1;|IBr=EdCIdc71le+Q>xJUO;<%fI1e*Co?x%ZT^T}thI`8#9n^2uI1 zxFkmNDVI*2d{gQK#{3SfXrt;0YZZzakm5gmR-%zRK?sH%g{_1a(y_ zOnXdJmr(gAlqL5&?jDt2?eaTK{Vd7%_FW#UVzh}h2`2&1kLoSDO}4SR{G}wsnMQw zfjP2Ds$Q>~ODWGKU&5bA+9bW__9Vior`z8(^<^DgFL?x3G}A)DmuJp>1gZ=YDoUp7 zb8;@aTwfXFRBdMWcEwbumWPxvT}|3L9I}QURKx=%>m6&**CP;8X?6f0k(ZRp8(kaa z(zvv`8s%0mFTS3J_K)dVz9jn69{iZpOCln5ty}C0p0Mxu0tC}3mr`r7a_XsH?uM^O zDOFEMW6PoYJkJ9r?)uxK_T#eLB~<@&BY%#cYQo#9fNw%6Rq0QWKL%Alm;YuxFfOoz z|46-w)K}1@K18G{+?3kRlq%_Wv9w2Br`vV%?tb}9u0J(e%43YvI<8P&E%}XfsGUn` z$&b7IXhP-3M^6}hdjF`r)fG)k-XEl#y1*APsR?YY9-&ukG6`>G9D$>v+|||-N<<2r z)TC7P*nxy^DrRkg>z)jj2M zA}~r8_Z-fX>PG3FS{e8FQHJvzWZH>6rk>GzQ3J39`GCMEP9@s^8W%NRAlS;+G?ryh zMLjQ`HD#<11qs{9b*b*Y$`Z9Y1=YlEJ4V-Egw*JH{qF=%3U6dBxi{|bHm1l073<_6 z(?$U5%Y4?E`ev60)lsU7waTe1%108Nm6V2QRfeFZvl+YZZ|7mszbeTneigk^UV#qN zD<)G(LX66#UN-IOQ96D<0v_gx`A#(E3g*?SgYTm%quN#gs(597)mW&pfj;07D0u2A zFXxjuFCtSw6ZiO06aOaq;*qDGfhkI&7`dNaPgz3s04X!@e#$MlwG$ldSIIq`uENwx zsvJ^Z_5pDKJSG4ix6O15#t%K2kjRT_D^)->yPf9(OZhuVrY8qJX!C9(h~m<|nnOYS zQxn0Zmja|yYKJ+rKzuv`1c~bvHz1^=a?zw!eNdx=z@mVy z?eSE4G%Jgf0ledU*%x~>TLuR2sv*PL8R z9YNJ~sXQ+>s=7c*pNlRH?K%BBpDATFf*tPi*~t9 zF0DSqSZ%xeMN-9ghVpJwOKKAyM<|`Xk;#-Zg({IUb5vSU>` zR7Dqx*q>4_mHIW`?Z@zaXxNXWclq}Ra+Ej}b1ID~7Z{Be;W`zV87IOaF$k*(oP&v} zNC7GL|7e-o_btIUmRU7@PyZFrM&&uLs{d8Vo_nI&Gco207&$!xc~u^>(NWT}{XJ5D zE|O}hd2`#4!bv$SBUwUA<8t3Yjsuzarq!cZ2F$|S$w3h%-Y@M1mYjznRzPl_Z1RNs z-h_m00IqI}idF*3m)}7&ay`A%Sb5yi3oOks3RR(OO<$Uz&g2rNk&1u=ukcaQM)#9_ z`H{}KNv3G@k9whnp8N8m3L^F+smbAVbj`Z!JayABIimKDuD!~4J^&XBCbQE-pIGNn zUHqNpV3rmYDd{%Kuj*3$Is#EumbvfiO~W{-F;w-b_Mb_kN97HMpwd7}Vsn)^ucA&4ll-+#< zQ-IFdq*?wPu-^5-$B7KbGw0f%31dCPS+g+lV9ml;&e zdY98Ed>^}-;_r)T`T)J=74);dF{LD22u8i@4q>y&`E}hY0xNq-UEr7(c0ENf9m4m) zj=THvyRP&C9#p)1r%k6-cbZ&+RVsrMykHQNIkevebhLanl$%N^4=XEUjM4oO_yL4- zZ-=UujV1t=zpDw}%3?T>sY}P_UK>~GKXuAK{>F)a)E7(}VKLRPF8&{W@1tm0&6|nm zF{)JV_`{cm;#W}$#)sQB;@5vq@cotcjwlH@Rrkb1UlTn;NB6BC!#i+)B4;R%W#F=l31=JB*j>H+i{^609(@%6Blg!ifE-DqwFZmPk2#pMxsz>?5&m zm9L-VnNs+mC;R%R|EK+fnuFi|NlcJq$~1A?6ygcRq|z|=(OQl9%k;;!vE*n30O>`Y zYX5x%8>78(9$N)Yqg35PKi-dMEbuz!nT99>BVQx+y&Yc~_+9^ppzd(5pR>^xMDbd3 z;4Z(1@C(aXA7I)gIauj?001BWNklhL@%ab)!(aZT{oydVouYImRwlIHO|D4^l7ltEq`^F%ynN_hsviqv>567*y0TTjD1Zqg?n`ZD%yLZJ*PZ&KrM^q2#V*uOKdmNH$OnfPG}@qY z_gJ<+RfOhZF6rJ#9rBp^KPUI&_b5{+fx0Al5s~$;`;t4uW>hYwR^5rG#=%hlWI1lC zB6RdnE~n0ua^Uz6vi;G;?00`{_J43YJ_MgV;otnsuK)Wl>{mbijs1f^`AhrvhuWMX zaB}iVmEpU5tf>sQ!LkrvKPsc7MpY&PDXxPFUq=l3d7SLjiyl%UsXq^J6}9=C64e)- zzB;zVZTfiW)y72qQZFafF5jTJ+rwi^ zYGCNpHl|d$3-Ns=!~R9~kUo}3IlqzFliQ<~&+K4%f<9 z{b0yGk2ZzZkp4-wKYBC!y}wNMtFNnfu;=}3U#vjF|7d3a#g0) z{+hJ*`szWoHrA(qj~r#_qk1vf3u%g@@oa;Lr-3r8!S16z{03G@o!d$RaMRkkUvk-^IM3{vjHMj!tb zOwVS&`!CIYbuG=W&&^-`+(^3 z{>?x7Yx~E4@YNpw_wU*J-o0+}^rR%IcwwIg@I&e!{&7-8;4w;JN7OG#`Fqp`w}pI0 z)I(`I50=|f{TyFU$9x@83c&POGH!Xsb`y-_I0E>rjAh4~`m&=sLa7aS*}k+i=~D_G zdrMhz`(_6kX1`fG?qXYNmh>q#&(_lpu=z~-xU;(|LfWM)HNTbeZ!noZ6=}}%uOO7B z_5b$!qXfiWrQ#`BdX&E}E9ev{d;M>fo>z%E*YAeRnm5d= z7nDl6;(9TPKU?xD(D2?K@rrHr<1nft6wi9hM_L9bkH_+rHX7gktCQ~+f2z9r{;|B@ zw`T|UM`g<%n!ib=n|=h^gDD=;XMvQ8cB#0_{{=RwYWJtU zSF1$$C2wkme5H-1Z*-LOn)h?ACRG~%d!BC;KUFRD4b%h|N;B&X`&aeH1aoPDc&NPF z&OxE?ft0$G`pT|+!n$x%>O^(<^+jyH)&4@hYichv<-hOg|0LVb&t|{(uaf=hhupgG zuYYbo%YSVD)E@R{E0`L>!RPC*|Ez*)F3bM{s(eYAS$L>e*v%Cd&ynNZg3~2N7Z4JQ{y- z1Lbq^)uDTeILI{8wDZ<2(?38BfFP$fmxj%zqK?3m20nphfC5$A+%m9bH3$WGn;O_X zPP=aTH1B`YWa%+kS^)U?a{{j^>mx&Dzh2Ih+Wyd>AN~0|dsEP*D)Mvruf>}Rb)-4B zX#JhHl-ck8>tw(F4ZIKj`senu+b`@t+raev>p!pU|Mbs)@hASHf@&(DTDtZz!)it? z;aE0PlQnlaN9eR+qGbZXK3_0kL#^Y(GNxd^Udi3-P+2>C3{1^dbd+fOvRX17^Y!T} zKXaMs-lbqn$9t?^3nQOO`c`S`yAhxG`HV**?Ap5Fw1HS#2WDR$uE08%CAu5Buit+H zN0-#iA(seYJaMzfcjaf;Eb>o3yC1>!3%GK+MCoO|P_Py65(41OMmtgj!ZqyOw_@&u zK#czWpTsl6=lUCj|J!!IL4syeCNIB%+iYnC+xrT*v!y&+y3PCd_3vK(A^`L=r7kVt z^Z=w?V3j;>co|%GkaTcnpMKP#q5}Y`BvvrBKi*|)- zDDmZfx4&+p6kvX*_JcPEU8jo1yNKBs8D~C@Q~tjql`e)IEZxab;fA$ z-|3qFxadp?OwH_L1W1`oi^(NLk%4|Jqp`$m%OpdtYB_^WQEFw-lP12`i&m`_P74Nm*4kEUrXecdINqc_)hla^E`s7(PQ>Y1XVG$6+O>^k9r#5ksVGO znDWGrB$xaW=)_=(97a;_Sa!^nsb|>oC~uA};Rtan>9FLOA5$27STY@X)Gr0=?#mRG zRWCrrb6@Ysxz5+$bMbQ6jQQQTf7;D#B9k8G^aN);xzzSU>NaC4pKeyHtUJrS4NW?M+l&j-Q{F$caeYhs^4rA0chTvl?l`a%J*_(vtURR0zRAQJNClXcc$6Kq5p3@yB~QUT z!uYIwYzoH%uw6B*ble@_u0i9~A=c%s)HIZJ|MCGD!P=qJtt3ENLQRsB$|NT_u@Pi+a1#EXSYrOP*q1)mw?iVf#L*`-Hm__ z=}anyt>2Fw9Ip_!)Ise^x>SR6`7dP*R9i*DOsHSQ?+Z!&{2OU1wy~$h^26HEWEpI5 zqdB5AOFOkUa!b>)UxvS)dI0HR#0aJ|9bIEid(P63Cl~~|OwC=rd61+=a2UbL1|Z@7 z_uD!n*KwUD@-D!&l9-VT{vAoJtu4Oqd02HE^@Dj*0adg_JU(ZNO8UBsY`DX26n+tu z6|l740k$lGaXEg278m+73XC#QS#}G(g8tM&AEivQ(K3KX<7&G`P>v~DnaaKE50j4H4g%n{#E(g{XOie_Ux|7FK`K$Nk0wMz1nN}CnT@PC8P#afB z9Hoonv!-Pn&+fRBfQ|sQ(vs>DwSfUjgyYS3QgVd<%4O-RDN47elPbyGX9Y~Ue9P~^ zu@3G8>53wd|f) zoHqt{CF!7uMe=HMeucg5`d{XW8Wa{jdZB&Xs}7B zk3G-{{vl0$G^uX6y`(0YR<9`Mt-PGjd`giz$KMHct1FnQn5k15%P}1RYVFS4!%L$G zq9`S=PD=pl{Lzn6o_7^T=2J_Nsw4|bekTW449WL7 zSIM>GLIDX%fgh=l>W@wXn+exam+tjg6kM7M^Q*0|cet<04)s3u%Y1`C)XaNyh##I7 zfRa82NtsGu7C!of=?G9ut;I*U{cbb@XOxGhOTP$K#C7yMDG*Shjz@q|OJJQp7wL4T zII`5pn;M5!GT4Ls4(i7yADUq){-QJnf3@-G5c(?kwX)+0sXSKdg*5UtzO1M1zbY}` zRRq>)Hzc3kR3>c(<+lCtq%7{F_24xyT2}|!eLyg31Vh%*tswQD#)$n_I&K8Zp2mRG z+mhddq)cfvn^Go9pK?(l8P9Ge)}fQsIs!mAM8+FB2Il>MZ%P` z{{ovxcLGz~SYo?a)T1gX7B;D}$3peMD7ee7cw%}6s2pE@Tz<)}4@<}di@Z^8V~Xk- zxkHVi4iKopLi3ENseq}9ETu?EW(H%lr#qPHUMavoO5=qymsR&j(RfFc(j;oBKdxr1 z%ZB5o?S=bd0pH`wXXI3sEBD~h|E^s4vhiHv!}>;w>qWceEP>dPnlHaEtxvhvp{~36 ze$XB-@zr7P+&0SYexJf0ymZ-ds)okZ=@sO#2So#Th#ycyrC5loMGQKZI-p;V1Ie6Ks$jZ1tLq;*F( z`7$5I+GCgU8A4NPx4eb1yCr1<(c zeH9;y6v*&lAWAA70l2SchSP(_{TM*$o^z9iZ)KhcsOCDav6ohRh& zPC8Qr;S0noT{op33T&r6-ECjHv#21NKYOPkkI3`Gogm;ylu4X1HNmx`C-(?Y4~hv1 zRpm`p3%Lv>m4wJrUL)or8_z{g#`Us|(o(46hn#**06wvpC61Dvd6A+IAdBA;k<9C!& z9k6ECUN6VoC-4yJNBtYB{ zI`XC8B-7l#Ku$&Sz2tUW33^?*=Mn;5IX)$qlTSA=T?kB31%XxqY~F-`Up=b8G-`&= z8W1J*@nchPBnpz+ylYez{o7{ZG)xbl)Z>)O-8VJ0+hQw{#?s-0Na4%isKbhr#?AQH zXSJP32s6=g&oI{m69^Rxo9{75-3q z#P4r5S|fZad=`m#Gr4*c535@M*nH@o0jM~?bCIIoM1-crjoTp&ft3T0)E)3;Up}LR zSa0ZJhD*o~5ET(VU-I&BHdh(Y_YQLE}53BWiv4=%T^b9(7{@fVq#SKYE zfLeuHw#V|0hSfItizQR5Qw9SP^Q2M|N6VMGo$@qX@A+WKZ{#^|GD-?2^N%6#;Z$I= z!A|SVBGey|)Y(AlRanRbl?0~B33UqEq|&FD8++XC5*LUo-~Xim)HI4@>TG1 zGoJFIT5;5+kCO;Ef)jGv+$rDBuzX(2|I{q~Ai&h6*fT_Mst4z#=AHCGe6MCv?`1rF zgT?{UCFjq;FT0b@xtTLvQ*!}5+a6Z$!$#G>oZEqWcVRVPu&D#KxtpZ#=StNxn#ve^ z9cexKkE^VVMeZcC$>Ey8nygb!cL;HEKmSu=;wE^o5ViKGMUuM;dPK-$3 zKTWB<)nD1+0%{$w<-LCOHyIREk;(rNDMZjxyRS5kMt z&BF*Z(!6Le<^D&YtX@`DM_x<%*5&EzO7%*H`{JhojE<=a@WwvIX)c+nYpS0rACB?5 z0kv56Q%`fbdd~fcrv^Z({M6ACXa%L8K3V3QgHzGvUUH4#B*(}lQ=g-NeoZ$FruEWz6xNhV5Xd62QpyOdBLj2aESnTJI%j%oCMYec+eVB*rr;V+5wY0>Rhe;xY>G zVF8a(x=Ksixkycd9>)jAcjOy^VclR_I>;Y#mt#_@d}PCF9Qsg zaWK_jiEt%%jqeep><4wjx=9)z2^5j&LqL>0MxtXtDfJCVwu+p1`4S z87E6!LJM;sCpVB^!E}{&eWOVQvyOb_5u99qx&o<3jY5O|5=^C*U|UxcOMZ`qTFj`n z==c>Jb2GcbkbwyLylIB@FXa`wo+CAtyM#wczZLT`2eCVuT1|Ph6tE&ePyW&_{ay9a zTeSaR2fsQ71S<;HnR+{T0Ac3^2jwt)A5E6vi5T(;%DMxBddaj+;C{*27VjYwtIQf(RNOu26=4ghN!li<@qO7&F{FS8Y|iPR?FOMSoH{ow&A zE?xZu+Sq%F-fSVx1-h}O>9t=Ga(*~xwd1}qYyox2=XxVQ7wp;KJ zH#wU2!}*LPR16y9)SV}lgessMld}G;YKi@3ZkyuU+W%72Kl5zqTuy)WzjFyOI7qyp zGj%&vSAjfWDUZjWm^F(J0~mN_i+VJ%>V#jKRHrEwkU~rcO?{+N}nJ&^d;Wj;6wRB2fCO%bXoR!^ogMPoV@FrCFZUMKs-Wh1ZF!G@9P0RM;>_j$LUtLPnLm;OgWLFgUb;pcPO2o@?|Ar zlfm*-^V*N68Y9K40<7HS-@!CfpCeMs{eIk*4W`nNbF5dbC{+9HIh&Sp9f9$h;JtRh zyGyi-mC?L+;bUAPs;>xSjcqz_BCQzXuafWN_NJ#Y!YAu(NLNoOH}IcJ{L^|yJ}jSC zF!ktGC>`SAfOFBQDw8Nh@2P>Q_iawScyh1 z2Ur#!`=|P?#vpYd*j`S(zES;+ec<+Y$oI!p-(?14eV>`K2!02 zs!uMSNP17&m2@@X`kQHA=6l|2AeFKnR_*GiVs+qW{GWvj>k6vmfyLuqJ))|MXaQ4} zGJ&>!qalB{`IVY0|-Et7JyuU+QxQA9et7}73pE#0oJqJHwDT$if^ zJi@HU0~$$5O!!-aOamzeM*KTLDT5IjjN1TAxqYtBCB$P|LP_5`a2)AqT#WeCc^FDD ze(5ObH>-p3{-NY=@SXpRt_u?`yafdyYlb7qtkk(J^Rt7`C`ad#T;Vob@5g-xTTho< zRv=s^o9^Is^g{ttl=d)=snZ92|0uip(_%~1A1_ltF;^En&E?_uR`9-9f9BLY z9!=eCNbyEgJ?aIV3;e7oG%S_y{%G?k;^9h#tsj3SC)q?GSo3Ba@ z^~BE~1EI_yiMkGTRSm6R`rGMH6=jl4O+KtGt%Z8ausjU9RpmlW3NV?6KD`Ii6!02J zsiVB;`A3j?Mj7CClzQ9CX_VUZ%R-GH=X-@uRewZTg1#;pjj?L)6%(#f*1c^Gb*Q^t zotm64xmiY+!9QTv~4qbQaG1_+{JgQKJ`%f2zS zF89~XDg?Kp^Q~ewc$AeddaZA(Ee=-U`9Nw;!wC49TrA?Hc`ng6)eMY)IjY+VpAJ${f7IAM>w|--0%--# zQQIxwQYF)VsjtH(M&p8Mt~NnaGf}R)iGlRdUC(WgCNt0huWmMlETWFg1D(R31|qM+ehfEFmUgpLr8t>QtB5^n7fASLUK`23~3(AbS3(JS8iL zRvl`Y*$9TWUDD5LL5V?8a3jkINX?p;l$B|^Mz+d3e%FnvBN_p$(O5JIkQ#1jaIN1F zM%i@-sYsHF^lzpoUk9eDj1d4uc@&tYZTo2o%i*$iM08BH1o8tAAJ|qHDRrXj# zfc5yDQtBO7+r&I_?vejV+U*{cOSqxOI$_uCg3>i{9l8Hn^r*i4?_z~oS@M4Y$#l+5 zCko58supXcME!*OG-c!r(`Az_GZ#{U|yUt)efGJ#ae%~>qA1&`u zf^}1~576yKdee2e&r5y-V62-|MMC^IReNGdOS40*lnR(;0#YkrIy{{miK>9At8{or zAD8)V;3HvWk^lf807*naRDYctpA;W;Xsh;lNP#}=MkN{Lmwxhx)rJpo>R`ZS-nBnU zUuU4l(>v#5KIRi!*1EJ&ePA|jNcqN&YBS;;c}=y2sdBULlJ_Hn<0{_nhu?iXQ+Za@ zBdgMwkcWkq`8a;Lo@hJT)T;4CngYpml(YvLl5zq41(x{*RPzqPysS+n*~$~n`&N}! zpZDLK`gyYHM=(HthZTZ zohdpMu(6VGxwA#kqj1FV`or%=hK` z9qMKMtkS1eed+EwwOMF*o$0{A14;GEsY)L!(%RbEAf@UPRvZiW1uaeeO z&3&7@DNjT!`KkUeO;v*K`BY%7>ghqT$$R_rF#4w_DyRA!@jMkiBZ>H^UXBiB1g6*z zufLtcFh-n82hTAIU= zkF-8G&KlFMWd(4_+LwQoO#O5Ox54)S(|!+z1_~VkYAKeM#X*WegC~)uk%e8VnGa2) zo&n3)=I*f*fhO~;Bvu7db^xXf8j5-_$(2u`{}OGF^+zj%1YkP8XvThzAlLK5acswz zM$>?^RL!4Q^Y?(M8iP#LFHJJ_>#HIy!33W@yc?d=Ki>8IN7D%3w2OQ~wk^bGO0Lx9}DdpgLDK}(f%r#qMIxNo_lp&2?(G0@~@^*o3w9Z zG%wW0ZUJZZAkt}S;e)o898Amo8+4{mefe|$UHbA*#X-Zzzg!o)<-rp%dU5bhjW*r+QSV!&a3_~51%-@??&%nDqe1@bh^*N{qvFFGChs#%b(|d zgLKd%6v6<+k7Wl_<;(xbwxqJmFYcvoHLwwyMLA&MU*yZbd1{?(Lce?qeEFe_u`mDE z(yoK4x8?P@p4KJWIrYa*+Y?{@Ja++Z2De^5ipBX|tpMIvCx~g68rL`kOVPb9kNvb) zUS8Lwzj(f%`tncB?X`MOrFz_rJ7)c8U;YWbV3%m(TQGqw0Eb*9(*YF+3MGT)-csT= zAxOpiP!%1YV>?qfb{(sEUnAsPqseQY`!OC!5yEkCS4GoCqAGiZ1nIYNCwq z$}f){OudK)Kq;=Kos|F`Z*u6%ze>-ilg;;LyuX|FklKdrPW|^g!~(d$2Gr2ULJss3 zs0}ziUVE zo+Y1R+6TOHpGJVP4Wd$Rpr3N{{oy|!#|hHM7h?~mYPoM+S_bKKlv~^PX2SK1P^FOQ z9{KWk2h+#E544%5UL%$1_DNs@oV%$J9q-T1}zOMMvoTd=+4-0U*qw-d`CT$yUlgAx;0!wj z7=SIdeF3-kRR!>|*isMp^RWYfMCtS*j&(8N%YQFph= zZD(8J=PAtd65$I#NT%Xp>e_1eC=J&eAWqd^Cz3pmh@slSl>026m+p2@+w9A~-t}p= z$wgCq-Y+7OQ(aP*-*3f4%XO%$RJ!U+(U;$W?;T95d|BFST~{;g1fW2*O2sRfE`h1SV1~eYt7xM5R5&uA1?|Cl;n zflmghBl6cmG%jhA`KCcvtSGuKNc$`FA)gIV7H``rH!~f`=aT6PQhVH0YvBRSm&LGi z-0ch(v!G4SIh(ybcA#8G({-l9S@iH7Z9^XfSVsBQJga0n?dCiiF#vu|Js>$5g70%Y9$wU-z@1y0KFMT##5Yp7)@jOTO<<2uJ2u zw4`=A0h8-bF9l2=r#0^MPF}aij7%lE6>fDu`WMJHG6gryN6B|G6_|Fvvrip0k;g?J zg6UkKKW~3OPF8Uy+6EMZIZsN>kLHynJ}e_{%yUYk#D~88M?5NkLXdJWRU;^X<&c)N zROf;p5A|coseq{!O>qhKJa{(wUlPEK)!{N<^_`w7G?_~Hh1)pUl#0Zs9OJ5yyO_Y} z%YSJ*{TX$pOzg|=OaEuS{HrbO=Xu+J8hrT`h`RojO_Hi4TqI~uR}wK_n{qD&D_{N$ zlBu5*uz-|{yZmR8a1m@B;7e{xY?w@s#-~T08uYJ4a`nUOwq5sf zP5JV#V7l6Ge(bz=zWj4!%WSP~f3RI*%#Q}9H*2S$n$TZfq5Sg1mp`3s;?Q=R+0g^s zlMAtQYxH{q@im6Peb(Qifjt7!yN zbx$x2#LeWda2(gN0p)v+zWr!o+5Mh+P@RO%^K{=vbmP;F=zmDP6l*Ryx-DnfQC_dJ z-~Xck$8BHcPo7?^0^Dsgg{P2$jj7Z6{fAXDU2ORTI?D%)9ZR_vl7`g|{Whd$n-&q1 zVe99#^ZB_*l`Ft1Pb;Jq_%dyjO&&D71RFmA7>*OJj3=F6weIGxre?{l0CLM`VCxF@ zu2lt)`?LS+j9~nXEDNj_OXFK<0J5HTFy)7M%srM=w4U^x1ehwx@fn{zXgvq1EWWGy zx4s5oYH$;J$!j+hsi7~eJOqBLg{Wsa^WiVBBv!uM3 z*6k|FqH6c$U-nHYKPl7p&8O}8M7w?;{vqsb0X$st-~Hr(yzAIjFx_;Mbgup#eEgT( z`{7p*b9+btwe3ii0;XP%A2)p}$0%EooMj*zQ z%(v7|9N5OENYH#&@a(J^&eVF8peyWcWlb_&(ru4pGQ7e;hk6Gvtl*b=_tVaof8Lk* z1^~MqM~y3z5`blMRDjs4+dWRh3n+`nWgG~gT5L%)EmHsh4yHChCobq-Uz)mPI&u}) zl3!?Lvxj{Fq>dmTK?lK9X^10GvOsrOwH%uvPvbMXTRCW#+ja?B@e}c&(oi-{!7~4Q z38m`=Jhc>Wih$oNTw6Bj;u&{kRxn-0fGitdkheP()lWb5KU}`AOZ-*hW2sdUdutgv4Xj}L ztpq%AFy+lAKkMoOHmn9fUDNrbfn8_14X>L^d32}lg+{ylzPsNo-QhZdDc17_WmpoL z#M3-mXL2`ysf~}Fro(eo8siO2ZI}rBra7J}o8Gj5DNpR9CAS>_OQU$1Kkz}HijPcS z8ud)2MR{^rKCfVkw@u!{C;e4?av3$osvmq$cM1BmEu@miZSn|Z_-E;*JCg`Z6@RK0 zl428$({^dLIW-+$f;gz#w{zYE*{UBo@3xxT-v+q*c}K~`gB46a9`-mFNo%5zentUO zs!3F77vrgZ$xYX~6fiyILI1klk+}fP+c*l9@ObH4*(kf%xJhLqgr5QM`6&Phh%TXC zS00OG%1d~3XT5-Qigo+JgdV+We(Ye%k)b@ubUDngo?d#Qji(7L3NC1nzq`In=#JV2 zY~fg}@a){Jd4Mg&;v?xW@NMjeltxvV3_DwR6(yF_9v(u_xZF=ed8~8GF+YZv2J0J> zNRR4mb)PJe1RX86qqe&;>tj$PzGwX8?y8nd8(*g?nI66J`1C1N=awea5n1p$@-eDS zJT1FnRGz~+G_|{vIz>pTU@H4?z$>L^(4TIzo%>^DXdz0x7aSp=FnUD^&tu*Ar7Oelh?o^-slU z|8W}mtOo;H`*i)O(;dLy9qzt7EMJ%6^c2w0SVy4e2`K{8bnt7u4$IbczZ53FTEdUD zjl_~n0x)Ghvh~2Kt|LDi6)-gcJ}gmXN=*d7efp_e<{#0xm)=a2YK+!tg{XVaJMbHU zmFi1|zU&Y+zL29wjjg5|*ZY6_XpR!}cppa+X|?!iS4X6=Y(il5uB~8`4{Rpq`wpf? zrbBZ9(>pA~Swg)~WT|)eyHERW{`u5&rivc$%3LMXH|qmaJG~c4>Zdn*%&^R7S5G{Q zkEK-qjgs}|L@@8}xg6wV7^mFIeNC=Inx+S&|x?j7%nrz28;yZJwD zd=_|33Hn7ZpwxdV+U3&wP?p<$MOGmiTgU6{kI*s5!oz{lW-W)%(gC4TbrrB41m@Z+zC z0j`m)&P8WxAk~(*1q+2xtQ%2fhkshy(trJ(H(i50&P^R5SZ;Mi#NnWOaxg_nCSK}} z#5Q#4G%oX>)r0BL_a6(U*gk&ZGN0>+`1O}cTin_Jrzn|5yf~?Ya|V8=5%iz+H6FwE zd#<1lk5=9xNR_t+t$0=AD`*ANY2Fp_GwA-lK{Y2hO|(Yw!3fB%s(QjA{g3mIkkZ4<8;_hB*}5|O`_E{rSZv<^EgJYr_G%NoogN|$K}XgrUqF| z2&Sq%6TD-eqWiwOlTQ0`@8rjJkb!=gAgLSzw=cCJz%fQgTKW81mig{(I$JND7TsoN z%s^cG%)IPCU;w7(k}pVv7dX4#^}}x1 z|43uJf(xkn5KI;LIys2fs8Yp-_YT)CB?{L%lP+wW&u+eHKMKWB99>UUP?YVM=h>#K z@N7d`;F$sGb_efi+rHgy^a`eTvWGpE%#L-aE!q^Szc$JAb{cncg+#M|*`rt1!w*VY z_Oq2XFue`s4+f;WuB7Pw_bXs(4b%nPVU8V4M?PPvy|1;&sR*XuONr{w=BxR+uvhE@DVxWV(4o*fww2D}wFR{ygCjz#yH-YL4* z%Ig~F1ef{sTq@v+B~A0*v3vZFta#`e)Q*w7hxXXPl!+&|Q|3us zoVYfCHS55X%k%P6waF6>K|kG3auei;!t4O1MicW0gpWvp>9aB_pSL*?=qsKuP1O-y zpGY0imwnDP=U63Z+<;O%s&cA*1lXy8=}-p$N=fvTaiBYaul*W=Z@G;t5|8XZm8eVq zUu|!;Gs~`|hXr%2wf5<@+%SC5F#67xtSid~1P>44clHSQLJwdIvMvPKa>F;;!&+52 z(I6Q?ehdb)>OYcWW9|AYi^(LJ$uDCLS#S~MR{*oa6*nTGd7$wp>-f-pO29R6rpTRg zP5$ud0aPQ!+Dd2bbwJ9$^>T$%-2gym2D!OYd~f&yXL?6DLsS5%J#jf=mB;K+9bZ!~ zu2TYl`dkNKy17zc3XAZeQA+!;P5`#y_n<4^K^@`6EK$bSU5yqTk$ho`ulS%UFh#Jm zIE*;RP)f_e6r_U76ry16H~*bpl8j>xz|;~k@5thOr~^_xx&wLq)wB2x<$!7RLQxWwC<$|=T@+Z1hKP8YFC7e{+>dyn+cZM2V7fL4HZ*2Gp;iStEiw49^ zFTnTRm#U^{OaHt<>5OWO+k5{kCvSCls`); zWwnw-B_WDLRZmAHg?P1@oAW!={+7U$=u5dmy4UgJ+4T--0n;X@{>8D;96jW|(vOg} zMgdGu08=vBS?7@fpm=@&(^07-v;%)u{d5TXyV&cXH>O@MmgFP4M#nFw!6$Wu8qWbL zsRvc-9JxLHPyVKxuxHd{kXiFC3F}QI(ha{#S{I8iWaH#^O;Kmfk z9KbY0KrMUCnUVsxMIAqV;Y_V_C~tGyNoiM@}d)z3B{5sx$WX_bp8UFz8P{eKE z6g?Hr*7I-iK4J2j@L~!+u@;D0ph+O+SCLe#|DN^~QDznQ8~Pk7VrB)X|Lphw`d`(6 z8iCHwez<0SKREc+RsRaP+*Se;om5Dt^cc9f`CWB}9;PPz4L51&WhUC^T-YLRqU#I) zxV_`Q9e}A3%6Ll_0LZ_AW*Pzqt)hugC*6%WQtiVha;DZ=T4T{Bh^!??n=lm#p(k$2akiJguP}@gAU*k zya259dGgye(dd;mpOaWeU|mvD7CkPL)|BKV=uA)4X(D&J-BbeLC?+Y`m%%guVBns| zIr_vVuL0MJ^Q3?kOQTfBT@v%zX+LwNkXC&Dlq-I{M~;;M8C#7 zGXD6w!GtQV3{niwL4*>{w8eXC^IMDU6i6j7otoc2CG?eye~0`*v}fN5%RR{gAw3^# zOVJFsB;D?t^Y#3#b)oq5AB{S~T1&kimS~T^3z)uNM;6LDQChjxcw|4*-Wci4T&?c` zOh=B?QuC7p&v(w+<*Er-gP1?E&NRD4b?(ss;;oQG7h#QlVln^8PUfPkl?^TF_^k5M z#L+(T@3%3f?Ry5_P3HLIJS|3PXML;%H7kEqp#Y|X;b*#7ky9=KtNd#Qo{AUxW2X~6 z2vBF54NAWG%?YQ0B{iVuO*GM3LWL-CW~uDe~WX?6>wQ+I?9WZxXJ^7YbEd= z^lyJ|fA`mJ)4}fHLs%XX~#`b z9dR^H`_{ZHvVM1YJ*RQ>tpUndi(W~LO22)&(;sx~u0%@V;$ognaWmSLHCvUBPQW?R z_*!Vp9HdI=ClydFFcremD8Y$-IOqu6taT1@iz9d#$Z;uOLXg65R$z)A0lD^+tG^2^ z#kf@g>?>qw+UZ=q!4di-<|CLY^2|*J4-AhYc+6!Q(gph3Fr_1(1Xu?Ldsyw`NrE+` z3=HQjVY4}n#Q^E0fM59imw!qB19|$#7N`yenEt~ErnFmp+1Ds7gwJBWwRqMsdIMU8 z=EhLgZu`&4&n=je!KFF{P}W@Vcz6Wpm~UF!WN~tiIaA*-B{lU_0A#Fd0jW9bpsoJ2 zNblJ9!&-9(U}|uX<~d%y2=v_Ly*DP^?kU2!yL6C5{x?zWp3}6Uhz6$vYrZqah9du{ zLR01MRYgL58)-ae8qtMH`axZ*j(XB0deHfxYu@Q#vEN%Es+P#V0LQAw9*+H(YtB@s z?AzejqW+QLArK5Zt8mad`G^8SO9DV{a!N+2dFw_oYSp!%O{P|b@7VER9&T-~UPl#D@!F7NJND$I&v{@1A| z2Kw+^Y_oZNZ|L&g{u^76x_hNq+_f_RA-+$eZdVSb5Xd!#vO4g4cb0~^X}_Eh<~^8G&eC18Ro z6)=^{%$#jnxKAzW5`dFcWKmj5 zY{tmr#*}$N$XT!KbtLc9;B?i|#aLe|DuFCtg**qxQVdW! zmnlIM)tz28Z}5x!sd5PH?9?e-s&n--HiA$7_kT;Tzy3ezf7GBF0rltdcmFLB{b%GE zOw~plY#!u21&+_fJPHC3bqM1J0h+}>PI7a6h$IVt^c1Tb~G8mG98 zDe8eAu2azPc~`qeVH@k1{W7Y*56qeNuHTGDe2Kl!KE-_fxWUeGudMkNy?Y^9lsVH+ z#_09;;P2%|_(ws1p1KH2u!ZjClL;%%f{PONOc;^T2MwkAP zimrN5O94!WjgB8hSrq^J=~@w-AW1b60-vZef|&oBXn1(ru!Mat>bU$9?lkIV_mViq zqDdK~dfE0le&2Bw<{;)rkL?-GT~)Rz!cr(kJ$;<}c9I{rdYsZ;4)T*-!ijm!cTj$< zzh+SVM+~aNz+n2HlBfTL{MPyy?!)xwU&p`sfCEMB4_GK`ICuXb*S$Y z3%}+Z2UncpQDnaWOfA1fT^3~}@8q9=EP`#wA@JPk2ztryzRE7;#aM*>Sw;H@!c0lL z7E(f%F@RPmQ{wp_F;Ir%4_CfpX=#g2&cZeFzKQu^IV---9(5FPzFyNJ>YOqfoB#kI z07*naRD02*`lOB+cX;~3+P_?Jcf#{8SBw3cLU6&#V2a!)`kZR+_76wD|Fx&TS%{{< zz0SS{)nEQ)us0=6HNeGx)qtsVxDC^P`TtCR{^Q&A+du!C_z+C3x%JlYPImzBKoGw< zhyltVpGRM-AV~6LaV1-v&jp;RSJ%`pKEkcvOaqv%kh+hv|HoCuawhsF zT50_*egW+4XWBHN6ngtehNU!L2G)W9>5x{UBIXA$J$c`VcrRjk<@f1s4294pfN5~y z+EbsyGZ?#6-T_o29KZovBLBsPGJSmD7ilGlxKf_x|0VkEhoj&A*3+LSN7KdkbmIH_ zr{8J+>wiW6D-HBdlP6zHR|^*1po83p`Jep#^ylBdU%&q!|Iz;2=ekG+(=zF@O%Pan z914=h4e0}zF5OLzo1K*2(fVhBsWk>I@@v3u#QZSMy^PZvWs|?8k7hBycYSMYxboKT zp4BEjFzxl%lFNR^!2s3EXKIP}`tRQQPmwb%U@BLH|3)hRQmYnBbM8+DQ@%I(s`|Z1 zuD0N7ntieK2d?esQaDpwR0~Wk>pUsH)o;5yJ%cH#1eW65pJ@Qgy#V2N$a9Ju^dEB{ zOogNmZP{mzJOZmY`v)+cKzz;|DuA3$=v>u%Qb0>Jm}Xf@q=BjU!NyOmpGBh=a;e8< zgDGAYe;ky7>i;JC^(TYs!d-_K?>Nv9a>On_(mQvE^_4X3Y)h8uTeK?v%$-4@LpITMJ z?#2M7zkR=c{}%yFsk1>E0x-42VsHF{rTZ*Ei{BNPQU@gT@7D212AEpFK{sG(Q2^6m zhrHto-;AtYooS=PFqHLPLRQb#SYjS?27TRkvJ3ULm+}ohosRbw71q)_UW4 zlL4k3sX!`GR(eC{=}hvrOKF0JJ%VYwCfP*w0#%l_|_Vf~= zWsI2-{PfOi4i&!#Fa^-Bj8xyj9EYs{N(MIKw?SU0q<0*bkO~tNzAm4FycG zL`ptKMMa5KKgaPyTgMr!{x3(r{w)#x+0ozr>zV$3a1~?gYRK?J|Ha?W1x!BzQmVm} zOdXkqSYnZ@-E`Q3viSUUGB>ONrqpRmhPY3i@eT~87L_@+t74IlmW{-j_FLJ#y!$=^ zn085rjvD>TXNoIoUrz7F*=r|cf$2?uqXOtNT7eyn&d1MLz!baiNx|iOZ6(Bll(W*K zl8QibVVu)7g*>Z=F`oy2%7ss#j8MoqqXA056eF%y`1d1$lao44Y&@zAT{1Q-hWA`( zddz-$4c?v3yLTMwru@WcKG3mWyHM#$rOzd13#)qKhs(j=4VX@b zOWe;8UB+TQ-a`x{)-F*5I`mP;^26W%W~AR=6aDd@9Q0>7hN%I41~(TI8O;CUKiq$- z5}+6l3rr`0sl|~{116G$y8KO5J2*G$Oto>frn|8mku&4q)nVoUY%V zlkAyBI%z9ligVE7cMq2D<~H7dzV+hBYv;>zfS+ZYbz<@6rD%++H*P0lK9AEE&$aBq z7TeaENpV;gRzWsL;84$V*xjxQDGJ}}t7VPzIIQs+v+0XQJMGq=q{oRxQkpR?!#~kzgo&bw#ry!KXZ^JK8T@9&z-5IK zYXg@%=+drH(oXxnin>U~ETv9P9*LNc$D~h+?9;z?^y@#|=pSHBE8_Z)R82wuZGF$j zr;Ua&sdah}p>U`u-s>J45ip4P9Wd>2wf1$H0%tmG_HVs0Fljw1UR#5ym~;)J2#npj z3jZEJYS5_ zMcfhwd*b~3aO@1G)sU3$B6kxPV;8p~ayV-zTvb5!j4!SPQbA{mp{v;o z;;Ic&d9CDy1nZX#LvsHX8r@9eJdoQttsxDCec)?&2{p8Ip?O`2%d2cf%omdH&H?vH z#gcC&Pr>hzGhG|DBhORj)96sWPR2*Z1`y5^H&E}K!cDa;n;ZECOo?g`rp~6$f6p6v z04WQYdi{_B8C)p~Of82)eT80Drf7ibjI(*+bjE9a7ci}^r3a0ny2dq-PBxUuY?}T$ z=e_%VvcWWGS(oqpsjG1|-5=BLUfG=#-qq}9O6!doM+JN&PB`@4}pW#2w0M3 z?{IB|$+i`kKA}Y3P(W8b;NyU&8S0%)zPm*qLAC7gW1M{cq`5@4} zh&)^QV+ub4x2Xz@=8zrMk0CKNR#y#ezpHDUt{AuET6oSHLv)g%Y~fivp{)gkLc#?O z5;Y}rWT*b{bS`s@fT~FJw!g6d_R8uFP%%WNM0*GX(7(96%3*M@S6z@V-P2AR=Za1> zfa$i-paT)|i?-;4mg2aRVsRl&gm)!ulg z;19bO8$mTT?{xgUlwUD{l-M73PkC%(SD?yhZh1N2xTuT6TKuBBi=4_*gDDbj?8%G4 ziFK&TiT~lFS|Eh}>;k63G2+}u--_XD0zN;LEc~hRDRY1^ufQBR)0pHxS6dC&2pRJO zcMJV}_a!Md-Y*MG^YW@vDF}w6p)!&MJHRkU45rQi(|jG5KmC|OJTp5j%3lFNoc3;8wzyyfo|r=-ACQ}e{CPw1(FS^?9W zMd*^=ya=XubO)doMNkFKv=OyM(ZZj7FfG7yb->gT-Fs`RzdHu~aepXmMOb3OiREn>cq zcG)?ouKBMGQW#q5x8lN;U7;YF3AxhBz*GVPnuN|-l>D=SwsGTvt+j-DuwwhS1N+% z3iYPw9g?G_W*S3900%i<t()$l(6(;gu}cnccNh3F{a^It-GoC2m6 z=iKtf%?2_F!BnqL{`{bVm$cT_d@^1RJ+dw#$L6c7XP;ViPTNx=3ry?vv|a&iznasY zVoJkBLY2I6UbYElFg5Ii0*S}Gp+9T@QhlpElrr`{i~3k{u$sdxu2It&gEfxAdPLAm z({Wz7uK-R6s@dTlxYWRzN_g&}L6pDS2BHLHi%)t~uDS2zI?GJc?@Jw|V}-cpf`1Ii z*~Kbxm<6!dA68tixcqZk6aM~?LWS%$g$5~foe~N<)FmWj>2Rjjv5S>R48EC5mCu+% zU`rJN26?%ue5)2^eX6WKvI2q!NhW$$nL z>%0`KceZe*?pV9?z;k-{3^|`;dNp9G$Jbv?`x-ur`7%yx6jjf6NxveU45rYN7WEzf zfj*|7rEzl05P%R&&AFuaNeFWlk97 zB^5z=mBxjp-)AG@5jf+=*;Y>_!{`;~eYofy@l9%Mu{XgcE=9h8X`qYO+7kIux>%w? z&yT_HwWoWXm60r@@C%@N7KSWyvO#BhzS1p~WGnKpc6MIl9gxL*6yaAIN23gkUbBJC zxN+fO-%J^P_z;vj3HHiY{C7t;51er{wGLoP9Ub3WQihXwg{cEkgaVijU(i8YeIN;#Hgl@TRc0s;?esV^2OT+61buVW z@dy@8ApLg$(~ZoCGD|SgePb}c!}?4MP2+SfcbW9Xcp@}{AvbvnI4}Kqh|~(4=1cXf z)9+#5$UVJ^bAA-tgP8xb1E$#TU0G_R=jo2|MaLpyue0+QU|8lQRau7`R7Io@yI==@ z*qyyeW?m!gJDzhT5T&w%TvKHr`I*M`#OzX*&oF^n#?qb2_h^*l>{ed&iF3!m2_~2C z*VPmGlQ8k3VR{+Awr%g))F9^Q3L%AYQ?+4@cm4Dz0KR9?*I?P@CO_%d08`yB8KBsk zi(j^wCRkdyYE|mKHSlYo#d*bYWqTQCudno@Z+_QwfY*WbyY3w$c6#SH$-7$XpffXH z)}%SFsyT#CX8}w_XKGy2>o4jVa2?a3aHbL^GfFfQ%uR!-MG{WB9OM3DE0IML_`&8n z{1A%|1{rO64?56br19U=tA0M`Yt~uoUvKnI2&N#yM$U9(YyPRgbW@?Mno!&qV3l$C zwSXy>m);p%o4l=q^Ki`bc}~s?b#G?oOb3a4Vr%=*dHxQ?wOTdz17|ALUVA>N1RUz< zP1kK#i~RW^|99q0ZGb79Y5N}O_0uB(eS&dn0J69}e{-!2R5xJSJ;ykfzt1naSj@M^ zX^oLO$L_#XQ?trgYEke6HsE0x%6fB>qo0g_0x+#d6WiV`olfV(I9wbrzVNJh4Eh-! zf=D_5$EV2>QST`Cp~U>2UhrdLFzs=r8aOoB+l$Yu|c}GClD+B|~ z@b7e%h2Oh<@KO99U9?8H>7>(dbZiiEs$=p|r0-P&*wi|OinNYPQs1c!NJ$O$%K!o0 zCGmMW_+@Etpg!lP2|?!y#u9Pm@#)cKQ)}tRzuQ{e%(tAWHJ0AE_22mWaIQqJhmFMg zT9T+-; zIYO;_{TaY?gdhk8Z*N6qeL{&dZ8>PYKJ2*K+~#)diAP^(_S3PP_tJ6%*j3z*Zkh(p z^mx%O<)JU;Ko5>|l0tqO1hHH+e#(v6=1{lbnkQaybjQ*b{g?6gbF9}L!IYE=K)*0H z*8lF1NThwMC5|IlYVOwQth z^Zf~+KiKQ}j$`&lW&-IO!PI=oeNguw&*_1wHAgNLT;aSSJ;c;~GtGWJD$eu{ShFh> z#PH+q0ZhkNz^be&3xwkyd;cw3m>D^jh2ith5s_?Y(^7jk7nCS#zdu z`pehHQs5Qn7cjNPX&iGpLdsH0EFrbsUL^$&U^;fNU1)+DQ_RhUq$tjx2~4FOa**GB zmEa^-NL?ZOJ}E9SgY81opXO^0$NpeLj`aPm0)RX$(k60z+ps@aXKHbxavV!Z=NzKS z;x2mB0IC9}a?Sv?sag)SfGjm`RH;r`2rdXa=}1n9UIGLbUvs8d6`)sBs!B%9IRtPH znTA+#wJ}IFULE+%>~x)*7|KG;e6;2}!_Z*;twm@}{sv5`zt{UT+lDf)KB)tyq(D56 z{VxF1yK&oKsz>JYH>-tpo$(Er>hU$C02Vn@YrU+oSzYS3NoQK?%1N!cChIv8&NaD4 zwZR&1NOY)qYWk(I&>X-tB*|UK`v9cEnci`zM77BN3xnd%bKHW?6mR?r;<$+VqpPj^ zNQ>IIA?`n<;Cn2={@{lv&uU`*sDP=(p$efNYq<8j)ycMz^CW|t#ww>9mEE zaAp5i1*)iKu+%33OkJ|($2%9oY!A?ZqMlUrssq%L(tx-~EUJC)CcbqBRtf4i|@ZJw#YW+rZ|H81&k+xCHmvI^$7>90u zKbBVpQ;Ry!pKzxRA2nRth2~+39P|)!svfbLXUeZiY~lZeP6;R76PV%+5-v7px#!~> zaE&60i&1LR;$-0XmUDTg>%^WOn0J-y{of5$t`)}e+=e}HQm3J}?1}uN@<6x%@a6o4 zIaAH;N}T%uRZ}I56Wa~yJOEQ7a7B`E(u0&com|g2hGUT&0#e_9hx0JlfU69|-DkN@ z<#AuJuuhfTs(GU{o5=z^OGM1PR{&GAl51JZac&>hllaaxGR?ICir#>+H-7T~PI>H+ zGkutSyd!5^N5ItTuWsx3?^a;8#-2FS{>!Po+WjvGrg!)G^LeD>GjOK)p8h3lFH->1 zqXVYic&xa4ca}K*3UB4hO7p<#2nMMf@}Gb$WV0`wj=hLC?sGrJ?b;|-I+lm@#bdEJ z$A$H!3!gu#s-&Z&j$<$-D%Aj{Jj=4BK7l*xSP#%0qz>R>#IcMXo5)O3~Khp%Jr)J$2@Sqk;x*+btMyMPy<;wL*iutja zKd?{n0IG|q%jIzm93~6puO0X03D;_)%b#tkz+&Y`-ibO7Y+l9AX9K3v0f4D|#?olK z<1BzqOCP}Wc`GhjW9xxEDKORZvF2)#-p~n5`$^iJ`pW_<9J>b7dl6JCGF)?igrY{u zFhE%^QR{DPU)uRf%)fgmxnd%54UB9UU(=rC`QSmXRQx~?Nx^pz)fTnx^PMmD*dO@iMq3rvaX zOq9T~IQgwdQD^#WuA{GQjmx5ZB?YF{P>p%@C~xfL6`eY8Tn-+E-uk^8cL3AjWslRM z8f*mWias2{)S9<7misZMclI2#XZxDNMtXhq`bPHAM`hgW)|zkiZ(Z+FkMt5?YHxMr zuI7G9^F+deL`!>2*TET8_W2dS6gT4FYj-8&=JJI2N?3{nRRc#bl+9pN0fICGX)m&McYT``qNOPjNL2C{Qr~{@N1V16Cz|^V!ddDm^gdU54 z>AiZaPv!olD+DXK1*Y%1w}7kg*a=KSq!y-G>q;A{AFG`1Yv;=s zgqVO6MOvWLikuh1UPJO2>bOE-Z~`V1KcFBWfodW6!-ky%QC5Ce;n5ACet8cEFue?r zsvCI-{!4#**V%;3nQCs)0v_wT-hi1pU`iDLwb$v<#bAop>WSKN)Uis%gK9;K-pH9^ ze${)iztt1xX~*D#de2$y>@n*ZP#*OZInzf}+YHca>tWlHb^Vxv4?tgoD0S|Seu)YR z$GlQBlwHc#HB=5A6nCn1hT_b=0^khCybZ6^3_*ebIJFi3;=Z+2U&Q=q*m|T$Eh@gQ z_&N!Ov*D;k;Rvb+i~UFfrW=F4fZ+h5t}cC|^{Dc96KfytdJcO{E?l86DN#)Tyrhgj zxexeTz?87y9ZEqw*O++<#!@AH_QlFCHLQH}Iw*do!N@egvw14Dz)bh9Rw27p*hyZM zN6`r(CfFkBLO7MXtr6RQ0;U!jqJ9i6Se{wTCj)Gd+8(F@x4dc3$J>(B%{4InzWR=w zsRj7fxUFO;S{2X}^UX9Kx{a|$0Zg@Sw};EUjfZ{?+H87+aJYl z%LkPdm?H7HG3(UjQ@X<7HnlLkzKi8YFcr#r)}%N0IHrqVCQ-NQO460Q#0;hvJbP89 zGPp;LmA@K=wH@-YAnNU3w35e$F6T?HfKP!b^*BwVOG`D8&k0~^fRxpbNeamVn0gTN zy)g#;cin$2kY_MGA2H^=JB}~TK)}>`5n0#J|a z*3TO22gk-WBzoG`o){lDYyc_eqq;RR+1`0f1TwmE&b%iu&C^t(-VWkk02(wFN!bjY zX(}d%ek3qO_og0A0wka+5U%$RzDD3o1DHx+z;{?{$+BeWF|!{kbEV&O0|wJo`L^Z& z2akOP&b1b)E_mV0iRC_qXNt{V3=y7^GrwcaO$61;)h`r%-oOn@fHwdDAOJ~3K~$V+ zaNg4bofyeptOFL35-`G{URAA%`$=Gt6)eO4Tw#hqFlRn4WgvHSr{-3^%D-N7=BA|z_gRC96G zTzlPPy9!Jxsd7SL2n$R*{QVaOQ^#O>mI8r!F2a#&J?6Vu{>=bW z>VSVyYk0RSF*>^`9qu@oGaXdHJrKhqhYD%{_b!&-JrbDeNGUDa2ho4m`ea#i)}KZ% z2*|ri%xofiCDG05m?7wT^{;9GoT=u}`lK~tz_}P;N}Wwl1~~M{2ax)LmHZtAFh!lI zHO4#cuNTWNoT)WeY8hmc%Ib!4AopTE-m~Uf#<=BJ5%UXOAA+ff*O)i;0M4{}37Y4= zCmH7)0!p{l0e9I0RoSF^?&yRcz;uV;0u44*h9h5M=ikNhk1Ne?4z3r8{(wI3LP?1& z{sd0`fn#+HrXR}0{Nn{soWBB2()1OuFoz^U?lC=i+RP(6>V0uS) zoM|(UIdRZ$He~aA?}c~=rWDcS{ovYXB!!b6z?o{538}TUo<(Cm6N4#H5$pQ?SM}%; z=%wO+a?XQwrrNb1lY?BGf$1CTA90a-vHSr{f16W9fE7TA(0$69CzUn=rm-TxG48wa zIzZ=q0xnb=((YpUgP1=XV2a;GtugtUqn0+=MJd&)s&u9oi0o*PigEj_f1e_@-N*8e z!BDmo*C;EN-%@i75Eh%q6kY_OZtgQB1s_Y>+GScLn9k$RM=UM|e-kjphuj1+lQjGU zweZjA8ue~VTHtB@p4%N?15@id6|K*xGaXdhhI79Grg{dcWe-d%4jc^A?>NP9u*Yj!V||6CH7{(yV?QhHOQyB9$4usE4B)$6I9@QqxgaaZ+X`8|WFK3Bg4SKx>b zygqZP63g#*x{i&GAmQwad-m<$TIBb&4z)}`O^Lyj^oH-Af#jO45DYuR+)vD*&+d;* zZLZ^CMnK(>?`-HupflB?t!}F~zuhkVI-cLiy;_b>uSFGEbVC75_fDi%Z~gATUtSIc zOtHWAtWR~QhXJPgy4E;)BwXD@%Q3%J&ub;ziIfY@Z2`d3 z*PNRb%Rj9&zvg4rvHS>BlgcEOmkt7z z>En(&Mb6af&*Jc{_0gA@4KS^^@L=J0E<_u-gRjbdp5Q`7~L((`W0 zF<;t@zNF8qN_#9N?6rO4+u&-=SFZ6_TLRMzgmpM)q`@~yMQZh6isjGuVPY}=RLP++ zDYW$x6i|J++7NcS;u4R;A*{$PNGH_kCOKsA06&eRa|^*nQ*?%u-R1Jh6LOQX_(@3T|{ z=ujovw-q?m0f zCrrMH$${Q zR^VT%BfvB#PR5u+f9@Fe>s34LPh>jqM{u7C76fGLvRls0kCbFk+B%!}mksyF0}4Ntfs zm6-qULU9u^m{KXFVN!3tJ+Ph5uaEOi+!rvlxOLwFtR7*T=>|-zzCyH{Po{%A?$qK; z$yg)$aJ=$+G(Z_@6KUexnnN9MjhkRPme)(H`MjA>BwpolP&&#T{#mj72&M$OMs3)! z>ORA4`76+vdXF5wh)A}sUmE|#5T>&`-rcS@pzQCzw5m;ICg*&xC^-k2+*B`&&4_g6D zX9DjGP+DN>bkiKa15-l4bLDmDZ(OGkO!fNoz!P5zjo`=s7Fy;Gn8s#Y+iRmXloUbr z;&BBrKUnkgQu;RY;7c9{UD}$-isctD6#y1XI2P$6L%g?)QX!T1z4W^I>_M>sBS7MZB=V#+*s>k!uebF5B z8!)ZT5x8L;ss*T;Gqu*~Zk*Oyy12_CXS%BtY&}Aw41NxrhwD0)S170_mpfd^LL^Z% zdZPwV*g@5mYT>lvgj*CL*hPtgroXO>e-|(rfi7fN2C&<}>9!z~V76K)sVV@;QMk zl?36&d`>8@l27UNb<;+-V=$Ft7MM!ql*PB)nWiiF)dQHyZQbeqwRfp#qa8pna&R#M zDuJmciIQ4@V?~kQ(ofD?GC)b&MY)3^7)r>gHD6L0mMqSc7;s*rcL<~wnCg<)6Ik;h zL35L0j{pD{6`N1BA8FwDd@w*=oGQ?|=hhr83P2dfH3FCl_c?>(z5uC!s{W@1$Nb&X zP(=Pubf#oH^u|NOLrh@mRZCqd(mLNdmgxqj%~Eye6^EG#H?ueUDoq zWvL~@(jUN78=xkx0zP9BY2`XK`XUbQu87cL?H4d@1_UJFG(w#zovBJFaHc`b=k}qF zRDS9g04U^U<>DIytZ=6i{S>*h5LvXIi=+~4>iP%Y*`XHot!SwnF1vGi72YQZY7=wg z8dSA$3Tr{hr;ib3i8HlQ|7p@uQh6PHtuvK-n)Rb#gu3bkqZw$M^!(uPe`!2a5Th^i{@}9y!nJB9#~Jz*HamL@guNWCPT!o;!p)C7L0qyURk@M%BOkh~?Y zzy@tCk$o|0LOs};|C7N~)<|=?fzSUA&-_cddl7Ki^IjXENVs<93SaC+AR_+(E>tM; zV;SgJ1B$^E>i8S8O!Q8N8t4f+Q`~{*7Im=kFy-KafqW>V^P$dE z=x#F?G2b!}wcFbg&n*Ln<+N`tprv~=sUzm=d0q55cS;@36h-CyX@F{DgmEorN)5Q# zbO%_@(3yUsBB}1XFPTIGmuiXmcVymUgO*~=-|t=!x;vOp1*%ER-d z)!OU~JbAMNXS%AAAgDv_(WE>CLU|PgQvu)8)oKjQd5^xdBlS{=$*7q#mG6fuiCeIb zQGsbsj~Y1B@n_;p!#Q{!CZ0w^lumMjYb`IZs54!BaEd6?x(k5rz>Ma=Y9+PvfESAnT~tn2%9HEgX%kjQ~*;CS)*hZ3Sdh5d!3{Ob*fsw z8Y8tv8vI;^y|yJ#PW$nHPZ~^XaL@{Z_8L77$s1tWo?VV>uxa{KI@9L&H>6(;LPG~k zt+wgH?UnIJ;7m`$0OdMk=z)?3H{?vsadk+qtE~08loWhq+}+-|kWk%$I#UIvGm85+ zeM*YG1*4^oy8-pnUV3vxe z%Z@zWqvSRZk0*U}gPvuR3V0tKy6Wzjsm>-ia1A-v1O6oqVln6T2Ym)l@ z0Z1P{XN0O|r(dQzQVJ=6=_+Bb%2{7TeJsj!k`4Akvd$so^@95TS@)|?uv`V|5vu8h zzXt`TREhYcN+x^eTiYS)jc9=>!KQ7vB?D}#HU?*E^?}r^kU@7~+Vp7vsU`taYmQ$b zuh!|#HR@|R)bu@w&->7-O~|+px_`V^TGe5IDQOVxtV=-2jdgP+=U%GsFK$gLULxNR zop@OO=?Ej@O&!4WVldVInHFcNqls3jB)^HV4@QF1)1Q?yJeR|MU&We<(l9{jpN|%++ z21crn50dMaN;|XM$xNePOA_nK$F-UHJ8A$Y0O@RRDi8HHH4Hndv-UUVcEFSj;Jy1j z6BwY7?#4hJV-#NZ9hg>+#0{7hj_+v}{VkUNtGQbquAn;kDe>J_LGcDb?{I44O;SkgN{S$yG8P;!7Y4PN5o#qb9q%8Zm zO`tQy^92AgoK#rN3qU&i#6mj((;f$H0Vx4EYLE#GS=@Cxyup`nPXfafTK7ZV z)t{@MF#FXQD!jUYi#Ay=t?V7ZV2ZzG2YonC$L>p{lsNi}xG(Nfexfl{QWZ{hsIlm3 z@}Yi28H8@Yv?g0<#WKf8pMYuSL9l;gFzwCM8Ux*cskH6sOs&3i{~bN5Q=BOtx7zBz ztrvxiRfDO1f%N9DN!lF2Q1*s1)qPvX^|d>ksqSkpPf)|1kpQkQVCo3&0gS_WQ%=hL zN`bkiCj45g`Px{c2aiUn0;JAkdjV4{BO>}&DPyu0j?-_-!Y_TxS}c6dZ)=_C#EQii zs&bj0&WrwZ8VV;p9PAnefe*6*x-My8xkKw7>h`X3 z+An8VDgCUmTGy9;-+`&>Yqr*eDS}N@N2EVTZ>(3cUy)5(R zt%e9sN_4k;MMccl+}5d*mrw%AyiG-5W zILNAmN`oS$%`E<G0nd@QCE>-$?(SVxv`OAO(p{+awtkt{u{rQQ^< z)rP15rfw-Z(+m7`uCl*PqttsE*w0jhTQ#z3BZ=O$aHa&CDeL;)fT`{u$r?k?&(zxB z7T}ZNHuY67ZNyqb>=!WYjiEPY>soldz(J4Ox8`iCFLV9WIWeDU27To3eAD(_-#FK~ zj(~bgMrq=TLiO|@<}>GXz!)G9ytUcku&VSFnJ349>E+*^d}w2ffy-Bq0BDi(JmN0Oc~^;QcP-0kMG9E0 z9JsHU#u+%%MM_n}iy@z{A1n*CD{?9V>J#p!238Lo4d~v!m^G@$_2%n^T2-o0oxgbj zka67dLA9Lr@2I*S#K7lk7-GIPpGGZWv>{lN2&SDpwwB2Mj%qNK^F*F;P5*a8RF*IwHTs%?}_(V`P*AFrDG0!}In8dQ`$JcpWuQ;7la~3aL{7Fp?OZPQ2%?_D?+k zOocWDxK-uVW@L9HI#bQ<^)`?Paj@1_`CRw(tDGrbmwMM;o@RL!;{orIfGI{v4N$Af zyskl&D6Y6u?HZ-~^_^qy<}x&3im+GrqyM((h^cqAL9ZP_d!#$MA(W*{RukVFsn)gb~U%hLhhO|BvK@k(5jK{eBc%?)qQYrO2j03BX z0%&_a?y&6)V0f?rO6OATaivJ;hZ_G4-bFE={WnL*Ej#*FuIq zRN+jWdg$JB79MQ+rDd*xc|2~DF89cHz$M1!8(>;S(~k8WKn{kOe?Moc+7b58Zp7Zu znd<&r2aI~{$pq8S$m*W}Oi8Vsr`n|RRgO1+>A)cMiS!_(UNU)OAIzB&dsnMuHizmP zY63azT3_EkXj$exCprn-sc@-68mz31mJ=^;)9dx59l`hXEypQ3Lh(Q4e!W#@gowj5 zmpajj)}Ly_lo+}y{V8A9rzF-#E-lSt6wt$Be=`7S09MR2B@X@qa4+^VwYW?;);vK1 zs=EC12-bYmZ|Zve0)jfbl@|9!4o&eDEPNqHmsg z;a*o-+_UEBSaiMu*FvT3J zqpLxb6!5u(C%p>@-J6?r=Q@L zI(p|X??NcmdA>@0e{K8{LY=5iI)18lahywSfD(^{%{BddosXc=p*GY5Q*Ue(>vvZ< z@x$}Y`AogBSwEqgTPk8c8GzBu$rx*w3^27o0lI6 z?9m+n5?k|6rGu{97A1xCg6getOcfY(k?Gi^&wE3Sbw6;XFV`ew31UBr{@&O6G)jq4 z;=c@_u(2O2Eq>ZoUDhOUrpTT4GBEw2=CbZFPHPts6~ofYNaCVHRs*23>y*P7e)coX zU`i^Ns#VsRlrHs$E7u?erYDH`r*B1FVt(_R z!Lit+1#_1BjgKpg(;LZS21or(WNZ&Qu$PG_VTyD;cr^s9pf7LJx?| zKMV`L0H4lYWvwrP1OHD3(}`*i0_pPt;6^`GsfQI(nFJA|)QO3<7vbaR-D1(#; zc0Pk?coe?Mnf2PaFMuiCjJN6crff;CkGrv6%g-q0OAqKeb~l#ZZ!(67In$mRz#6yJ zpZu*kQ|r2=pH^wn8^ctFS3TH`auk;VLtIa7T-7WMPf?HY4nGYp}TIn$iH*+@hp z9O_Fx4TDdNxep>bi}_opv}&DX5klOgUSee=cmh5FOwaEFvv!Iv@STD_|RF!(yCfMi|^jq^<7 z;7aaR@lX(O#^l&n3Sai3Pt6>wzF>TF3z%Bm9I4HvH+b8wv`C!kTIt@tO4WHCFtz&D z98>Q%`VdS%A!&Q9wE;?0Ay%IjM{3QcqQI$JT0rWvHNSm{ z_Ri^%v^|RfYPy@d68Vibj{lc*bHJG*oobB2p|0}D$1y}S8g};S_2lHxivm*1;*NkR z)@~S#50?HPVSmOF$_Y&EhqN{{Sx)^T_J?aO&jh9j;PL{o(gf=K0m7N0K`O4(gQlNz zs_%ap8Nzn>tW+FDB8dMN{poVJJvi+TP}mQ-(ZLsy-=aa~x0N)00ZfAtYPj)l)(KrM zS2)yLx2ZX7D)BSzabiw!B0Vm)+Jub(s_5U^2mPKzXX*@VeovIf@4a*A4VeBVqznHM zXio3uZLK}3CMKmbwLs9K-Zf7U^YJbwlMCmjW48K(01pz^8cc0=YUQBPC>1N?cqM*kkk`5L52Q~{;M{2cZVxJM17{svSd z#fku{Y6pR${&^_p$eyE0q49 z{Gy%`XBuruvFfb2i3^~*`uhcdNnk|6+EojHX>el9ZeY>|Ur5aPN|oF$d4g<)ShhrN zMsFD`5zFFc;_<4y3c_bm2>3VGs|di!`pK=Wy2tsntg?JvtF(*0{=DbB54gNQ?PBi9xG7dTSfNbQ@X&6pm4IpbBFF#52*Tav+Mc2(-LG-vu5wJ_xsnD#hVQea(+ z=+r{{0oI{{Pb{H{iUE>j-csCzLjv>ekG@zaVjCK8UUa9BZq8vdoy z$?34@B)xE^Dv>mjWZM@27I3vnnPkyCqzasCYrfW>{^ILOs&^E`{F4n(mdZb&z#N781=jfdVU=;Z^s7lDGi23ql3@X#VfSdL$wc_>{(3yt3 zs{u^2A<2;wu$CHFFQX51@~8C7M5EMx(iNucmJAUlKS8a{~n6}W<63*9Z>(@5ZzSb35x<=O1$)F&Us9qG}yL6t|+5gboBz zwo1GhOt+2pELOrf+Im0vnp@NWh*45&NEJ9&ex_bFfqcqC@lwVpQUEX%IS7%GC)bHO8GpTttZnWaY+oF1{=iu0Hy(=6J6|(MQhom>Idr2#g&JC7n0ol^2b-Pnb03eynd-`^!euW87fJ?q zEMstN&Br@2u`!PT@@RIGdK5 ztcTeW0rPLB&Xg1k*8Py$$Q7|QAJ4(I#zSmU16%;67NFdb#s2hlrtMncN;IIXzDJ#D z2!gOWHu}G57RgR@@>M--yGmNj*Zs=nQ5U5-bo>;~)Owls#^@MC2LM*chZ;Bh8d3#r zVkmR0yeL6cum+;{Y@GTzS}ObUBGUuOiImcH?P0n>N%o~umPI{{4f z>&*goErFC{wTv)9q7#dZmt_u-Y_D8%rq+vyj6SV<$D+R^MmYdXFIRCBiBsig5>YJ2 zvI}SJd=&KqnC=XwXtmGAi`+i_jeVl~5`tGA%p-y6oi6kU1^}3_Y9`Fil{teB1PyZDCADjc!W7v z(Ez2L`VaMe<+adJTnDHZ{6^Ox_5FqW<nd#=&O0@EG{SUqTPlfMN_^&RU`4;Y0kFuj|vwdP3TqcB|yjhiX4X6lUXa0(C! zz?6*htQUbbK4v#DmOpT&3pni$@M6e%R0dh$v;wxmE_RY33@`$!*cQ3P0H*7!#O4b(Cds1F*HQ@Qi%$I;k9Vd5 zrgWojK%F##llDO+2GikZih!b;YpizF#iIGp=C&>RRG6oLsjl6B8NQ`El_)9ken9Rw zR!u#U0ZM92N#VYtLsjG*)OqS{PMMyxyKceMT$t<uA>~i!5%i?W>;G7&+4b`gbksbLx>1geJEJ zs87`|#NFCZiSmv~+j`HwkrrYOEjxs+WcJ`r&Hp}05%FtPLt zXIidRPiYE3%3yl%x;^Z+@%xhvP$P4l4__OWWE?%WCGB8SPmG2Ze)27_BO3b56UgzTwdU_tol3Wd#xXT3oN}M=38W*t9amwI$-)00Ikk33{X9h+q#A&_^qQXq69gc>`BE+gtC?b)K5~vlg}@0?*20+*aJfha=uS0 z_A`A)QcO@A>+*PyB<7z=Skzpy4X8*KNXX&{XWHAKh4f?Jf=MLiOtmQZRXu6bz5}LK z+vZ%0)=~os$(oZ_bE$u+uNSTPoYF9l$G;c%t!q*Qsi$dxvc~xpN@9L;+P4ZBYU&I> zCw&$%zc(&ZiZOnNIOfS({kl@(HoU^+ch3O*Gp@3rAb#%mdgNM+OC*#M=lJNS}P5cRv34)(pND>)*CP-W0P9zP_<{y zv5X zh0C+7PoT^z{iZRCg2u6n2VRQs+Z0L%0662z91i5j$M~KHI6}4RQmf z7HI%&d*hpit97L{e}OvF-df&)s+J=BT!ITc^}$~Ef$f_Y zURB>e1@Q$S^-Yw#P1c-_4wzbPdt^KV(_Dk8kV-{YL3PdvDzW!Y>e~kk)bbQC#dim0 zT@sE?I8)SJ2uMoO63M_HIMZ!D7Y$53&h%g%>S4%tA(lUY>7){!;G9LLIRlqyB@z)) zJ-4dKS<}P87M+@Q=THbgD=FDT1n{GbN=rmBiO7>9iB> zRZ<4-3QS43Rw_w#i2uILHkGGhEOh$K;7qN}M@)s z=`U)In1EW-gY~Er7^Gw)1~B~w$)R;@zWjSAm!QkI&QHuVwbFD=wU|%f_J#A;^TywE zjegddT0sy(0ETWt9V*1~=e6a}F{U&uV5zq^TC<)tzj;C2 zT?7cld}|(BB|>WbtWO7ETH3f=AB(J~=$?*fD^-4`xHdRmYs@_g*8KUkI@cPOde*Z` zVzOZx($*bIEL%c`!@gC<<3+YXY6FnnfHNg_!2bi1e3|)EM$&5YANEG?qODn))RmxeBD;5Kek=*%HiWYLJ$fLOU<+Qo>b>^*wN=`;uIv zEZr*sNUy#a=U$4tl=%Ibt@(Jq=dq54=nvWZJC6PBk=mMXft+222;$mZ@uVR^+S7Y{e4uNsmHTL z)PE!L6O73+KxvND8kcnp<}ghKOtXfhV~E0IL63?XK=gFmxx9{NX`0iz@nf*_Jrw{# zM}8eriu8QYd`?G5yzf@d5GBT&SI3_di8<65A@z)@?P6?x#VBJAReYiBAo_}{)DGuV zYqTaX4M|Th5jLry1Wj7CK_rz6hW%h`zQo(3?o)sgz)eJa4;-wUzycq=79PcEAE^hd z)yvUU*N^#717{j^yZVV1H4m1VzB*g722?EuI%@q)wHDB;O=}aJvAoDlKXa=)FxDb+ z@ApVt5kQac6SDdaoGG!Gf5(CKHhZtlc&_Ba=2y4P90S!FaEk;?sRf$b@mR<4_g2i; zjeIi)iyVOI(TRYvsMp4;XE5kY=kjv$k{|=lv&4O+XOk2Fku#m2wDn@n2Oh)hi=+Ah zp!l=1B2&m36~VNSoM)9Pu|SnMR3Bpc1xyjd4%a3+5iV7Ldsl!ns`d>k7XNnF+er02TUl!R}pM5&db#x7&ucuea4x7Ld!wdu@x|tPXW-8U!)_v zw4JWnn?-&t?#cseML=2H&u8SxMKFCEz&&bi2y>9boD4 zOPkTCqWZ3%J5k>Qm|EA<$9mV$bBc*hKpoNcmyV#7|4!Bk1}IE)qSX?5te=oiU@Dv` zl5}eUsn7uFy(O25-@};6Kwv(r!Md*L1jR^6hgT1|M$R9EyAmMo9%l z7c22&itLFV+vHd0dymT3Xx``7ywP=zWt`*Lz6IqCKKM4CR|qYF=S+`%z8-_0&6_TI z83!DTe3!m)!+qQ4*R;`fxNwgO6Fd3RS9S%uY9=>}#eCiX;*4Kt-DAz7q$TQEOV5z` zQTj3Fp4Vv)>5Su>JB#F@PLKn~dW2X99EuzlgOP{l%+Iu3{#^Vk6|K0O_k(wiKM5c^ z_XT70yyjUUGw#D4UiYV?)s^eS+VJuS`ZDgSAKv`=6*0oS_cKlB?iboe!hVg{N5xmm z`dqL!(X-%ip>TEplSgR7Y6v~o+=ox*!#p;ZxPRiewOmM zbxr%RJiG2p4*4;W$&yMvPe!b}Gsav0&3o!f9ABk0yC#~>fhMyK+Fb0>JF;wR%6 zK4Z=wwA0SzRrD*~r)Lj;3v0=HM&?mnuQ9Uy?|-IWS3n{h_yAv zB6s0|8^Y?Hij#5IvAoGo^!eNj}IvsZHB6XUZ=%t4O8ZBdMG36KA?T&HyUUs*vF6d|(=m%dSafU+2U=ys=dc&{5sfYVO7k)MDcu|AweHu_r4Fi)o^YnoptaNK4z8&M zeeAB(>cFTUDM4%tI!`Ymuapla=dMtV84Nq(A+RH`V0|QNL09_Q(dB3j z)kzP#bT-Hf;?ysjGb!QH4M(sH*8E`$)i&}Jh?bV9eSUXtekrqg;Z8r-5= z(dZLbJg}%u<@3Cpx4<=m>9gcrodHan>`+u6*JYXmw>t=T8J+e8Ov609+neX6Y!v0V zU-cW-C4gxV^GCktIio*FhngG5@6OlT-VTYibf(Rino=H%=|i-4kA?0oJ3$ zy!U$R9k<9anBqBT+1FNnQedXXXM!nFTYK{Za7E5k>r8VSbzS{i??ojP6SC~6Gj&y4 zYmRtjT_^WY!3EY!k2-6Jr0263Nvze_dT|hze$pSy(Jyhb%J!yeC`X3RN?QDQ9tX&qBVcaU`hsf6H5%)o5Gc>Pfd~$c&WRP zE@-)?sD9y>4Za*o`INMfLtBD7Q;YyRqla;E+6P@J)oP4}Lml8HE#!;NeQ@-@`Tsut z8H&`BIPq$+R0Dx^OpX(48itJqI(S*M(@~GCZCf9UI#|D`-!)(8n6uN7Jnfj>U8uL& ze=0ugj8Dqkol7rK(xtPh%AZj8ZxQ~sD~3Qr9U0fEXDwr{`vVpQ-yRrZ)0?-aT)V!Z07*qoM6N<$g5k{~SO5S3 diff --git a/yanzhu-ui-vue3/src/assets/images/pay.png b/yanzhu-ui-vue3/src/assets/images/pay.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8b9672381a3e4119fcd33e6ddc21973672e273 GIT binary patch literal 140720 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 vPok;F)*{# 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 DPqhcR literal 0 HcmV?d00001 diff --git a/yanzhu-ui-vue3/src/assets/images/task_bg.png b/yanzhu-ui-vue3/src/assets/images/task_bg.png deleted file mode 100644 index 23ca26fdc672b24921f49f12a1c474648307bd0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54651 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 diff --git a/yanzhu-ui-vue3/src/assets/styles/flow-viewer.scss b/yanzhu-ui-vue3/src/assets/styles/flow-viewer.scss new file mode 100644 index 00000000..b95885ba --- /dev/null +++ b/yanzhu-ui-vue3/src/assets/styles/flow-viewer.scss @@ -0,0 +1,101 @@ +.my-header { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.flowMsgPopover{ + display: none; +} +.tipBox { + width: 300px; + background: #fff; + border-radius: 4px; + border: 1px solid #ebeef5; + padding: 12px; +} +.cell-item { + display: flex; + align-items: center; +} +// bpmn 画布 logo +//.bjs-powered-by { +// display: none; +//} +.view-mode { + .el-header, .el-aside, .djs-palette, .bjs-powered-by { + display: none; + } + .el-loading-mask { + background-color: initial; + } + .el-loading-spinner { + display: none; + } +} +.containers { + width: 100%; + height: 100%; + .canvas { + width: 100%; + height: 100%; + background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+") + } + .panel { + position: absolute; + right: 0; + top: 50px; + width: 300px; + } + .load { + margin-right: 10px; + } + .el-form-item__label{ + font-size: 13px; + } + + .djs-palette{ + left: 0px!important; + top: 0px; + border-top: none; + } + + .djs-container svg { + min-height: 650px; + } + + .overlays-div { + font-size: 10px; + color: red; + width: 100px; + top: -20px !important; + } + + // 流程线 + .highlight.djs-shape .djs-visual > :nth-child(1) { + fill: #56bb56 !important; + stroke: #56bb56 !important; + fill-opacity: 0.2 !important; + } + .highlight.djs-shape .djs-visual > :nth-child(2) { + fill: #56bb56 !important; + } + .highlight.djs-shape .djs-visual > path { + fill: #56bb56 !important; + fill-opacity: 0.2 !important; + stroke: #56bb56 !important; + } + .highlight.djs-connection > .djs-visual > path { + stroke: #56bb56 !important; + } + .highlight-todo.djs-connection > .djs-visual > path { + stroke: #eab24a !important; + stroke-dasharray: 4px !important; + fill-opacity: 0.2 !important; + } + .highlight-todo.djs-shape .djs-visual > :nth-child(1) { + fill: #eab24a !important; + stroke: #eab24a !important; + stroke-dasharray: 4px !important; + fill-opacity: 0.2 !important; + } +} diff --git a/yanzhu-ui-vue3/src/assets/styles/index.scss b/yanzhu-ui-vue3/src/assets/styles/index.scss index 086747f0..2b8dca52 100644 --- a/yanzhu-ui-vue3/src/assets/styles/index.scss +++ b/yanzhu-ui-vue3/src/assets/styles/index.scss @@ -133,7 +133,6 @@ aside { .pagination-container { margin-top: 30px; - position: relative; } .text-center { @@ -183,12 +182,3 @@ aside { margin-bottom: 10px; } } - -//refine vue-multiselect plugin -.multiselect { - line-height: 16px; -} - -.multiselect--active { - z-index: 1000 !important; -} diff --git a/yanzhu-ui-vue3/src/assets/styles/ruoyi.scss b/yanzhu-ui-vue3/src/assets/styles/ruoyi.scss index 88f37027..0b7a9e59 100644 --- a/yanzhu-ui-vue3/src/assets/styles/ruoyi.scss +++ b/yanzhu-ui-vue3/src/assets/styles/ruoyi.scss @@ -275,3 +275,8 @@ .top-right-btn { margin-left: auto; } + +/* bpmn隐藏水印 */ +.bjs-powered-by { + display: none; +} \ No newline at end of file diff --git a/yanzhu-ui-vue3/src/assets/styles/sidebar.scss b/yanzhu-ui-vue3/src/assets/styles/sidebar.scss index 0808812d..8b3c472d 100644 --- a/yanzhu-ui-vue3/src/assets/styles/sidebar.scss +++ b/yanzhu-ui-vue3/src/assets/styles/sidebar.scss @@ -1,7 +1,7 @@ #app { .main-container { - min-height: 100%; + height: 100%; transition: margin-left .28s; margin-left: $base-sidebar-width; position: relative; diff --git a/yanzhu-ui-vue3/src/assets/styles/transition.scss b/yanzhu-ui-vue3/src/assets/styles/transition.scss index eb498955..073f8c6c 100644 --- a/yanzhu-ui-vue3/src/assets/styles/transition.scss +++ b/yanzhu-ui-vue3/src/assets/styles/transition.scss @@ -18,10 +18,6 @@ transition: all .5s; } -.fade-transform-leave-active { - position: absolute; -} - .fade-transform-enter { opacity: 0; transform: translateX(-30px); diff --git a/yanzhu-ui-vue3/src/components/DictTag/index.vue b/yanzhu-ui-vue3/src/components/DictTag/index.vue index c03a1a6f..4806fdb4 100644 --- a/yanzhu-ui-vue3/src/components/DictTag/index.vue +++ b/yanzhu-ui-vue3/src/components/DictTag/index.vue @@ -7,7 +7,8 @@ :key="item.value" :index="index" :class="item.elTagClass" - >{{ item.label }} + >{{ item.label + " " }} {{ item.label }} + >{{ item.label + " " }} + \ No newline at end of file diff --git a/yanzhu-ui-vue3/src/components/ImagePreview/index.vue b/yanzhu-ui-vue3/src/components/ImagePreview/index.vue index cf4cc126..e2900df6 100644 --- a/yanzhu-ui-vue3/src/components/ImagePreview/index.vue +++ b/yanzhu-ui-vue3/src/components/ImagePreview/index.vue @@ -4,7 +4,7 @@ fit="cover" :style="`width:${realWidth};height:${realHeight};`" :preview-src-list="realSrcList" - preview-teleported + append-to-body="true" > diff --git a/yanzhu-ui-vue3/src/lib/vform/designer.style.css b/yanzhu-ui-vue3/src/lib/vform/designer.style.css deleted file mode 100644 index 3607e325..00000000 --- a/yanzhu-ui-vue3/src/lib/vform/designer.style.css +++ /dev/null @@ -1,16 +0,0 @@ -@charset "UTF-8";.primary-color[data-v-47daada2]{color:#409eff}.background-opacity[data-v-47daada2]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-47daada2]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-47daada2]{margin-top:8px}.el-form-item--medium .el-radio[data-v-47daada2]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-47daada2]{margin-top:8px}.el-form-item--small .el-radio[data-v-47daada2]{line-height:32px!important}.el-form-item--small .el-rate[data-v-47daada2]{margin-top:6px}.el-form-item--mini .el-radio[data-v-47daada2]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-47daada2]{margin-top:4px}.el-card[data-v-47daada2]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-47daada2]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-47daada2],.auto-full-width.el-date-editor.el-input__inner[data-v-47daada2]{width:100%!important}[data-v-47daada2]::-webkit-scrollbar{width:8px;height:8px}[data-v-47daada2]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-47daada2]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-47daada2]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-47daada2]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.svg-icon[data-v-47daada2]{width:1.1em;height:1.1em;margin-left:.35em;margin-right:.35em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.primary-color[data-v-4f9cfab7]{color:#409eff}.background-opacity[data-v-4f9cfab7]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-4f9cfab7]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-4f9cfab7]{margin-top:8px}.el-form-item--medium .el-radio[data-v-4f9cfab7]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-4f9cfab7]{margin-top:8px}.el-form-item--small .el-radio[data-v-4f9cfab7]{line-height:32px!important}.el-form-item--small .el-rate[data-v-4f9cfab7]{margin-top:6px}.el-form-item--mini .el-radio[data-v-4f9cfab7]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-4f9cfab7]{margin-top:4px}.el-card[data-v-4f9cfab7]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-4f9cfab7]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-4f9cfab7],.auto-full-width.el-date-editor.el-input__inner[data-v-4f9cfab7]{width:100%!important}[data-v-4f9cfab7]::-webkit-scrollbar{width:8px;height:8px}[data-v-4f9cfab7]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4f9cfab7]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4f9cfab7]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-4f9cfab7]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.color-svg-icon[data-v-4f9cfab7]{-webkit-font-smoothing:antialiased;color:#7c7d82}.side-scroll-bar[data-v-4f9cfab7] .el-scrollbar__wrap{overflow-x:hidden}div.panel-container[data-v-4f9cfab7]{padding-bottom:10px}.no-bottom-margin[data-v-4f9cfab7] .el-tabs__header{margin-bottom:0}.indent-left-margin[data-v-4f9cfab7] .el-tabs__nav{margin-left:20px}.el-collapse-item[data-v-4f9cfab7] ul>li{list-style:none}.widget-collapse[data-v-4f9cfab7]{border-top-width:0}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__header{margin-left:8px;font-style:italic;font-weight:700}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content{padding-bottom:6px}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul{padding-left:10px;margin:0;margin-block-start:0;margin-block-end:.25em;padding-inline-start:10px}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul:after{content:"";display:block;clear:both}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul .container-widget-item,.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul .field-widget-item{display:inline-block;height:32px;line-height:32px;width:98px;float:left;margin:2px 6px 6px 0;cursor:move;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background:#fff;border:1px solid #e8e9eb;border-radius:4px;padding:0 8px}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul .container-widget-item:hover,.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul .field-widget-item:hover{background:#F1F2F3;border-color:#409eff}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul .container-widget-item:hover .color-svg-icon,.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul .field-widget-item:hover .color-svg-icon{color:#409eff}.widget-collapse[data-v-4f9cfab7] .el-collapse-item__content ul .drag-handler{position:absolute;top:0;left:160px;background-color:#ddd;border-radius:5px;padding-right:5px;font-size:11px;color:#666}.el-card.ft-card[data-v-4f9cfab7]{border:1px solid #8896B3}.ft-card[data-v-4f9cfab7]{margin-bottom:10px}.ft-card .bottom[data-v-4f9cfab7]{margin-top:10px;line-height:12px}.ft-card .ft-title[data-v-4f9cfab7]{font-size:13px;font-weight:700}.ft-card .right-button[data-v-4f9cfab7]{padding:0;float:right}.ft-card .clear-fix[data-v-4f9cfab7]:before,.ft-card .clear-fix[data-v-4f9cfab7]:after{display:table;content:""}.ft-card .clear-fix[data-v-4f9cfab7]:after{clear:both}.primary-color[data-v-40b65808]{color:#409eff}.background-opacity[data-v-40b65808]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-40b65808]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-40b65808]{margin-top:8px}.el-form-item--medium .el-radio[data-v-40b65808]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-40b65808]{margin-top:8px}.el-form-item--small .el-radio[data-v-40b65808]{line-height:32px!important}.el-form-item--small .el-rate[data-v-40b65808]{margin-top:6px}.el-form-item--mini .el-radio[data-v-40b65808]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-40b65808]{margin-top:4px}.el-card[data-v-40b65808]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-40b65808]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-40b65808],.auto-full-width.el-date-editor.el-input__inner[data-v-40b65808]{width:100%!important}[data-v-40b65808]::-webkit-scrollbar{width:8px;height:8px}[data-v-40b65808]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-40b65808]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-40b65808]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-40b65808]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.design-time-bottom-margin[data-v-40b65808]{margin-bottom:5px}.field-wrapper[data-v-40b65808]{position:relative}.field-wrapper .field-action[data-v-40b65808]{position:absolute;bottom:0;right:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.field-wrapper .field-action i[data-v-40b65808]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.field-wrapper .drag-handler[data-v-40b65808]{position:absolute;top:0;left:-1px;height:20px;line-height:20px;z-index:9}.field-wrapper .drag-handler i[data-v-40b65808]{font-size:12px;font-style:normal;color:#fff;margin:4px;cursor:move}.field-wrapper .drag-handler[data-v-40b65808]:hover{background:#409EFF}.field-action[data-v-40b65808] .svg-icon,.drag-handler[data-v-40b65808] .svg-icon{margin-left:.1em;margin-right:.1em}.static-content-item[data-v-40b65808]{min-height:20px;display:flex;align-items:center}.static-content-item[data-v-40b65808] .el-divider--horizontal{margin:0}.el-form-item.selected[data-v-40b65808],.static-content-item.selected[data-v-40b65808]{outline:2px solid #409EFF}.primary-color[data-v-6f92d10c]{color:#409eff}.background-opacity[data-v-6f92d10c]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-6f92d10c]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-6f92d10c]{margin-top:8px}.el-form-item--medium .el-radio[data-v-6f92d10c]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-6f92d10c]{margin-top:8px}.el-form-item--small .el-radio[data-v-6f92d10c]{line-height:32px!important}.el-form-item--small .el-rate[data-v-6f92d10c]{margin-top:6px}.el-form-item--mini .el-radio[data-v-6f92d10c]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-6f92d10c]{margin-top:4px}.el-card[data-v-6f92d10c]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-6f92d10c]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-6f92d10c],.auto-full-width.el-date-editor.el-input__inner[data-v-6f92d10c]{width:100%!important}[data-v-6f92d10c]::-webkit-scrollbar{width:8px;height:8px}[data-v-6f92d10c]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6f92d10c]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6f92d10c]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-6f92d10c]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-2d53b001]{color:#409eff}.background-opacity[data-v-2d53b001]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-2d53b001]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-2d53b001]{margin-top:8px}.el-form-item--medium .el-radio[data-v-2d53b001]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-2d53b001]{margin-top:8px}.el-form-item--small .el-radio[data-v-2d53b001]{line-height:32px!important}.el-form-item--small .el-rate[data-v-2d53b001]{margin-top:6px}.el-form-item--mini .el-radio[data-v-2d53b001]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-2d53b001]{margin-top:4px}.el-card[data-v-2d53b001]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-2d53b001]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-2d53b001],.auto-full-width.el-date-editor.el-input__inner[data-v-2d53b001]{width:100%!important}[data-v-2d53b001]::-webkit-scrollbar{width:8px;height:8px}[data-v-2d53b001]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2d53b001]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2d53b001]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-2d53b001]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.design-time-bottom-margin[data-v-2d53b001]{margin-bottom:5px}.field-wrapper[data-v-2d53b001]{position:relative}.field-wrapper .field-action[data-v-2d53b001]{position:absolute;bottom:0;right:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.field-wrapper .field-action i[data-v-2d53b001]{font-size:14px;color:#fff;margin:0 3px;cursor:pointer}.field-wrapper .drag-handler[data-v-2d53b001]{position:absolute;top:0;left:-1px;height:20px;line-height:20px;z-index:9}.field-wrapper .drag-handler i[data-v-2d53b001]{font-size:12px;font-style:normal;color:#fff;margin:4px;cursor:move}.field-wrapper .drag-handler[data-v-2d53b001]:hover{background:#409EFF}.field-action[data-v-2d53b001] .svg-icon,.drag-handler[data-v-2d53b001] .svg-icon{margin-left:0;margin-right:0}.el-form-item[data-v-2d53b001]{position:relative}.el-form-item[data-v-2d53b001] .el-form-item__label{white-space:nowrap;text-overflow:ellipsis}.el-form-item span.custom-label i[data-v-2d53b001]{margin:0 3px}.el-form-item[data-v-2d53b001] .hide-spin-button input::-webkit-outer-spin-button,.el-form-item[data-v-2d53b001] .hide-spin-button input::-webkit-inner-spin-button{-webkit-appearance:none!important}.el-form-item[data-v-2d53b001] .hide-spin-button input[type=number]{-moz-appearance:textfield}.required[data-v-2d53b001] .el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.static-content-item[data-v-2d53b001]{min-height:20px;display:flex;align-items:center}.static-content-item[data-v-2d53b001] .el-divider--horizontal{margin:0}.el-form-item.selected[data-v-2d53b001],.static-content-item.selected[data-v-2d53b001]{outline:2px solid #409EFF}[data-v-2d53b001] .label-left-align .el-form-item__label{text-align:left;justify-content:flex-start!important}[data-v-2d53b001] .label-center-align .el-form-item__label{text-align:center;justify-content:center!important}[data-v-2d53b001] .label-right-align .el-form-item__label{text-align:right;justify-content:flex-end!important}.primary-color[data-v-130f5280]{color:#409eff}.background-opacity[data-v-130f5280]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-130f5280]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-130f5280]{margin-top:8px}.el-form-item--medium .el-radio[data-v-130f5280]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-130f5280]{margin-top:8px}.el-form-item--small .el-radio[data-v-130f5280]{line-height:32px!important}.el-form-item--small .el-rate[data-v-130f5280]{margin-top:6px}.el-form-item--mini .el-radio[data-v-130f5280]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-130f5280]{margin-top:4px}.el-card[data-v-130f5280]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-130f5280]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-130f5280],.auto-full-width.el-date-editor.el-input__inner[data-v-130f5280]{width:100%!important}[data-v-130f5280]::-webkit-scrollbar{width:8px;height:8px}[data-v-130f5280]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-130f5280]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-130f5280]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-130f5280]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-130f5280],.full-width-input[data-v-130f5280] .el-cascader{width:100%!important}.primary-color[data-v-501920b3]{color:#409eff}.background-opacity[data-v-501920b3]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-501920b3]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-501920b3]{margin-top:8px}.el-form-item--medium .el-radio[data-v-501920b3]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-501920b3]{margin-top:8px}.el-form-item--small .el-radio[data-v-501920b3]{line-height:32px!important}.el-form-item--small .el-rate[data-v-501920b3]{margin-top:6px}.el-form-item--mini .el-radio[data-v-501920b3]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-501920b3]{margin-top:4px}.el-card[data-v-501920b3]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-501920b3]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-501920b3],.auto-full-width.el-date-editor.el-input__inner[data-v-501920b3]{width:100%!important}[data-v-501920b3]::-webkit-scrollbar{width:8px;height:8px}[data-v-501920b3]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-501920b3]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-501920b3]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-501920b3]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-1aa76420]{color:#409eff}.background-opacity[data-v-1aa76420]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-1aa76420]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-1aa76420]{margin-top:8px}.el-form-item--medium .el-radio[data-v-1aa76420]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-1aa76420]{margin-top:8px}.el-form-item--small .el-radio[data-v-1aa76420]{line-height:32px!important}.el-form-item--small .el-rate[data-v-1aa76420]{margin-top:6px}.el-form-item--mini .el-radio[data-v-1aa76420]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-1aa76420]{margin-top:4px}.el-card[data-v-1aa76420]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-1aa76420]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-1aa76420],.auto-full-width.el-date-editor.el-input__inner[data-v-1aa76420]{width:100%!important}[data-v-1aa76420]::-webkit-scrollbar{width:8px;height:8px}[data-v-1aa76420]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1aa76420]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1aa76420]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-1aa76420]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-1aa76420]{width:100%!important}.primary-color[data-v-8805cad8]{color:#409eff}.background-opacity[data-v-8805cad8]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-8805cad8]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-8805cad8]{margin-top:8px}.el-form-item--medium .el-radio[data-v-8805cad8]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-8805cad8]{margin-top:8px}.el-form-item--small .el-radio[data-v-8805cad8]{line-height:32px!important}.el-form-item--small .el-rate[data-v-8805cad8]{margin-top:6px}.el-form-item--mini .el-radio[data-v-8805cad8]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-8805cad8]{margin-top:4px}.el-card[data-v-8805cad8]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-8805cad8]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-8805cad8],.auto-full-width.el-date-editor.el-input__inner[data-v-8805cad8]{width:100%!important}[data-v-8805cad8]::-webkit-scrollbar{width:8px;height:8px}[data-v-8805cad8]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-8805cad8]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-8805cad8]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-8805cad8]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-8805cad8]{width:100%!important}.auto-full-width[data-v-8805cad8]{width:100%}.auto-full-width[data-v-8805cad8] .el-range-editor{width:100%!important}.primary-color[data-v-14d5b71a]{color:#409eff}.background-opacity[data-v-14d5b71a]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-14d5b71a]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-14d5b71a]{margin-top:8px}.el-form-item--medium .el-radio[data-v-14d5b71a]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-14d5b71a]{margin-top:8px}.el-form-item--small .el-radio[data-v-14d5b71a]{line-height:32px!important}.el-form-item--small .el-rate[data-v-14d5b71a]{margin-top:6px}.el-form-item--mini .el-radio[data-v-14d5b71a]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-14d5b71a]{margin-top:4px}.el-card[data-v-14d5b71a]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-14d5b71a]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-14d5b71a],.auto-full-width.el-date-editor.el-input__inner[data-v-14d5b71a]{width:100%!important}[data-v-14d5b71a]::-webkit-scrollbar{width:8px;height:8px}[data-v-14d5b71a]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-14d5b71a]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-14d5b71a]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-14d5b71a]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-14d5b71a]{width:100%!important}.primary-color[data-v-a326e5e0]{color:#409eff}.background-opacity[data-v-a326e5e0]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-a326e5e0]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-a326e5e0]{margin-top:8px}.el-form-item--medium .el-radio[data-v-a326e5e0]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-a326e5e0]{margin-top:8px}.el-form-item--small .el-radio[data-v-a326e5e0]{line-height:32px!important}.el-form-item--small .el-rate[data-v-a326e5e0]{margin-top:6px}.el-form-item--mini .el-radio[data-v-a326e5e0]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-a326e5e0]{margin-top:4px}.el-card[data-v-a326e5e0]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-a326e5e0]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-a326e5e0],.auto-full-width.el-date-editor.el-input__inner[data-v-a326e5e0]{width:100%!important}[data-v-a326e5e0]::-webkit-scrollbar{width:8px;height:8px}[data-v-a326e5e0]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-a326e5e0]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-a326e5e0]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-a326e5e0]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-396987e9]{color:#409eff}.background-opacity[data-v-396987e9]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-396987e9]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-396987e9]{margin-top:8px}.el-form-item--medium .el-radio[data-v-396987e9]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-396987e9]{margin-top:8px}.el-form-item--small .el-radio[data-v-396987e9]{line-height:32px!important}.el-form-item--small .el-rate[data-v-396987e9]{margin-top:6px}.el-form-item--mini .el-radio[data-v-396987e9]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-396987e9]{margin-top:4px}.el-card[data-v-396987e9]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-396987e9]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-396987e9],.auto-full-width.el-date-editor.el-input__inner[data-v-396987e9]{width:100%!important}[data-v-396987e9]::-webkit-scrollbar{width:8px;height:8px}[data-v-396987e9]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-396987e9]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-396987e9]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-396987e9]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-396987e9]{width:100%!important}.dynamicPseudoAfter[data-v-396987e9] .el-upload.el-upload--text{color:#409eff;font-size:12px}.dynamicPseudoAfter[data-v-396987e9] .el-upload.el-upload--text .el-icon-plus:after{content:var(--select-file-action)}.hideUploadDiv[data-v-396987e9] div.el-upload--picture-card,.hideUploadDiv[data-v-396987e9] div.el-upload--text,.hideUploadDiv[data-v-396987e9] div.el-upload__tip{display:none}.upload-file-list[data-v-396987e9]{font-size:12px}.upload-file-list .file-action[data-v-396987e9]{color:#409eff;margin-left:5px;margin-right:5px;cursor:pointer}.primary-color[data-v-a0d236d6]{color:#409eff}.background-opacity[data-v-a0d236d6]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-a0d236d6]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-a0d236d6]{margin-top:8px}.el-form-item--medium .el-radio[data-v-a0d236d6]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-a0d236d6]{margin-top:8px}.el-form-item--small .el-radio[data-v-a0d236d6]{line-height:32px!important}.el-form-item--small .el-rate[data-v-a0d236d6]{margin-top:6px}.el-form-item--mini .el-radio[data-v-a0d236d6]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-a0d236d6]{margin-top:4px}.el-card[data-v-a0d236d6]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-a0d236d6]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-a0d236d6],.auto-full-width.el-date-editor.el-input__inner[data-v-a0d236d6]{width:100%!important}[data-v-a0d236d6]::-webkit-scrollbar{width:8px;height:8px}[data-v-a0d236d6]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-a0d236d6]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-a0d236d6]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-a0d236d6]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-b6d96cc0]{color:#409eff}.background-opacity[data-v-b6d96cc0]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-b6d96cc0]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-b6d96cc0]{margin-top:8px}.el-form-item--medium .el-radio[data-v-b6d96cc0]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-b6d96cc0]{margin-top:8px}.el-form-item--small .el-radio[data-v-b6d96cc0]{line-height:32px!important}.el-form-item--small .el-rate[data-v-b6d96cc0]{margin-top:6px}.el-form-item--mini .el-radio[data-v-b6d96cc0]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-b6d96cc0]{margin-top:4px}.el-card[data-v-b6d96cc0]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-b6d96cc0]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-b6d96cc0],.auto-full-width.el-date-editor.el-input__inner[data-v-b6d96cc0]{width:100%!important}[data-v-b6d96cc0]::-webkit-scrollbar{width:8px;height:8px}[data-v-b6d96cc0]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-b6d96cc0]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-b6d96cc0]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-b6d96cc0]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-78aba4ad]{color:#409eff}.background-opacity[data-v-78aba4ad]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-78aba4ad]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-78aba4ad]{margin-top:8px}.el-form-item--medium .el-radio[data-v-78aba4ad]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-78aba4ad]{margin-top:8px}.el-form-item--small .el-radio[data-v-78aba4ad]{line-height:32px!important}.el-form-item--small .el-rate[data-v-78aba4ad]{margin-top:6px}.el-form-item--mini .el-radio[data-v-78aba4ad]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-78aba4ad]{margin-top:4px}.el-card[data-v-78aba4ad]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-78aba4ad]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-78aba4ad],.auto-full-width.el-date-editor.el-input__inner[data-v-78aba4ad]{width:100%!important}[data-v-78aba4ad]::-webkit-scrollbar{width:8px;height:8px}[data-v-78aba4ad]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-78aba4ad]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-78aba4ad]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-78aba4ad]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-78aba4ad]{width:100%!important}.primary-color[data-v-5404b7f6]{color:#409eff}.background-opacity[data-v-5404b7f6]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5404b7f6]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5404b7f6]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5404b7f6]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5404b7f6]{margin-top:8px}.el-form-item--small .el-radio[data-v-5404b7f6]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5404b7f6]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5404b7f6]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5404b7f6]{margin-top:4px}.el-card[data-v-5404b7f6]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5404b7f6]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5404b7f6],.auto-full-width.el-date-editor.el-input__inner[data-v-5404b7f6]{width:100%!important}[data-v-5404b7f6]::-webkit-scrollbar{width:8px;height:8px}[data-v-5404b7f6]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5404b7f6]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5404b7f6]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-5404b7f6]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-5404b7f6]{width:100%!important}.hideUploadDiv[data-v-5404b7f6] div.el-upload--picture-card,.hideUploadDiv[data-v-5404b7f6] div.el-upload--text,.hideUploadDiv[data-v-5404b7f6] div.el-upload__tip{display:none}.uploader-icon[data-v-5404b7f6]{height:100%;display:flex;color:#8c939d;font-size:28px;justify-content:center;align-items:center}.primary-color[data-v-5becdb92]{color:#409eff}.background-opacity[data-v-5becdb92]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5becdb92]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5becdb92]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5becdb92]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5becdb92]{margin-top:8px}.el-form-item--small .el-radio[data-v-5becdb92]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5becdb92]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5becdb92]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5becdb92]{margin-top:4px}.el-card[data-v-5becdb92]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5becdb92]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5becdb92],.auto-full-width.el-date-editor.el-input__inner[data-v-5becdb92]{width:100%!important}[data-v-5becdb92]::-webkit-scrollbar{width:8px;height:8px}[data-v-5becdb92]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5becdb92]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5becdb92]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-5becdb92]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-block[data-v-5becdb92]{display:block!important}.primary-color[data-v-e8d5267c]{color:#409eff}.background-opacity[data-v-e8d5267c]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-e8d5267c]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-e8d5267c]{margin-top:8px}.el-form-item--medium .el-radio[data-v-e8d5267c]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-e8d5267c]{margin-top:8px}.el-form-item--small .el-radio[data-v-e8d5267c]{line-height:32px!important}.el-form-item--small .el-rate[data-v-e8d5267c]{margin-top:6px}.el-form-item--mini .el-radio[data-v-e8d5267c]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-e8d5267c]{margin-top:4px}.el-card[data-v-e8d5267c]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-e8d5267c]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-e8d5267c],.auto-full-width.el-date-editor.el-input__inner[data-v-e8d5267c]{width:100%!important}[data-v-e8d5267c]::-webkit-scrollbar{width:8px;height:8px}[data-v-e8d5267c]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e8d5267c]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e8d5267c]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-e8d5267c]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-e8d5267c]{width:100%!important}/*! -* Quill Editor v1.3.7 -* https://quilljs.com/ -* Copyright (c) 2014, Jason Chen -* Copyright (c) 2013, salesforce.com -*//*! - * Quill Editor v1.3.7 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}/*! - * Quill Editor v1.3.7 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-bubble.ql-toolbar:after,.ql-bubble .ql-toolbar:after{clear:both;content:"";display:table}.ql-bubble.ql-toolbar button,.ql-bubble .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-bubble.ql-toolbar button svg,.ql-bubble .ql-toolbar button svg{float:left;height:100%}.ql-bubble.ql-toolbar button:active:hover,.ql-bubble .ql-toolbar button:active:hover{outline:none}.ql-bubble.ql-toolbar input.ql-image[type=file],.ql-bubble .ql-toolbar input.ql-image[type=file]{display:none}.ql-bubble.ql-toolbar button:hover,.ql-bubble .ql-toolbar button:hover,.ql-bubble.ql-toolbar button:focus,.ql-bubble .ql-toolbar button:focus,.ql-bubble.ql-toolbar button.ql-active,.ql-bubble .ql-toolbar button.ql-active,.ql-bubble.ql-toolbar .ql-picker-label:hover,.ql-bubble .ql-toolbar .ql-picker-label:hover,.ql-bubble.ql-toolbar .ql-picker-label.ql-active,.ql-bubble .ql-toolbar .ql-picker-label.ql-active,.ql-bubble.ql-toolbar .ql-picker-item:hover,.ql-bubble .ql-toolbar .ql-picker-item:hover,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected{color:#fff}.ql-bubble.ql-toolbar button:hover .ql-fill,.ql-bubble .ql-toolbar button:hover .ql-fill,.ql-bubble.ql-toolbar button:focus .ql-fill,.ql-bubble .ql-toolbar button:focus .ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#fff}.ql-bubble.ql-toolbar button:hover .ql-stroke,.ql-bubble .ql-toolbar button:hover .ql-stroke,.ql-bubble.ql-toolbar button:focus .ql-stroke,.ql-bubble .ql-toolbar button:focus .ql-stroke,.ql-bubble.ql-toolbar button.ql-active .ql-stroke,.ql-bubble .ql-toolbar button.ql-active .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble.ql-toolbar button:hover .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover .ql-stroke-miter,.ql-bubble.ql-toolbar button:focus .ql-stroke-miter,.ql-bubble .ql-toolbar button:focus .ql-stroke-miter,.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#fff}@media (pointer: coarse){.ql-bubble.ql-toolbar button:hover:not(.ql-active),.ql-bubble .ql-toolbar button:hover:not(.ql-active){color:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#ccc}}.ql-bubble,.ql-bubble *{box-sizing:border-box}.ql-bubble .ql-hidden{display:none}.ql-bubble .ql-out-bottom,.ql-bubble .ql-out-top{visibility:hidden}.ql-bubble .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-bubble .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-bubble .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-bubble .ql-formats{display:inline-block;vertical-align:middle}.ql-bubble .ql-formats:after{clear:both;content:"";display:table}.ql-bubble .ql-stroke{fill:none;stroke:#ccc;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-bubble .ql-stroke-miter{fill:none;stroke:#ccc;stroke-miterlimit:10;stroke-width:2}.ql-bubble .ql-fill,.ql-bubble .ql-stroke.ql-fill{fill:#ccc}.ql-bubble .ql-empty{fill:none}.ql-bubble .ql-even{fill-rule:evenodd}.ql-bubble .ql-thin,.ql-bubble .ql-stroke.ql-thin{stroke-width:1}.ql-bubble .ql-transparent{opacity:.4}.ql-bubble .ql-direction svg:last-child{display:none}.ql-bubble .ql-direction.ql-active svg:last-child{display:inline}.ql-bubble .ql-direction.ql-active svg:first-child{display:none}.ql-bubble .ql-editor h1{font-size:2em}.ql-bubble .ql-editor h2{font-size:1.5em}.ql-bubble .ql-editor h3{font-size:1.17em}.ql-bubble .ql-editor h4{font-size:1em}.ql-bubble .ql-editor h5{font-size:.83em}.ql-bubble .ql-editor h6{font-size:.67em}.ql-bubble .ql-editor a{text-decoration:underline}.ql-bubble .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-bubble .ql-editor code,.ql-bubble .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-bubble .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-bubble .ql-editor code{font-size:85%;padding:2px 4px}.ql-bubble .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-bubble .ql-editor img{max-width:100%}.ql-bubble .ql-picker{color:#ccc;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-bubble .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-bubble .ql-picker-label:before{display:inline-block;line-height:22px}.ql-bubble .ql-picker-options{background-color:#444;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-bubble .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-bubble .ql-picker.ql-expanded .ql-picker-label{color:#777;z-index:2}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-bubble .ql-color-picker,.ql-bubble .ql-icon-picker{width:28px}.ql-bubble .ql-color-picker .ql-picker-label,.ql-bubble .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-label svg,.ql-bubble .ql-icon-picker .ql-picker-label svg{right:4px}.ql-bubble .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-bubble .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-bubble .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-bubble .ql-picker.ql-header{width:98px}.ql-bubble .ql-picker.ql-header .ql-picker-label:before,.ql-bubble .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-bubble .ql-picker.ql-font{width:108px}.ql-bubble .ql-picker.ql-font .ql-picker-label:before,.ql-bubble .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-bubble .ql-picker.ql-size{width:98px}.ql-bubble .ql-picker.ql-size .ql-picker-label:before,.ql-bubble .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-bubble .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-bubble .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-bubble .ql-toolbar .ql-formats{margin:8px 12px 8px 0}.ql-bubble .ql-toolbar .ql-formats:first-child{margin-left:12px}.ql-bubble .ql-color-picker svg{margin:1px}.ql-bubble .ql-color-picker .ql-picker-item.ql-selected,.ql-bubble .ql-color-picker .ql-picker-item:hover{border-color:#fff}.ql-bubble .ql-tooltip{background-color:#444;border-radius:25px;color:#fff}.ql-bubble .ql-tooltip-arrow{border-left:6px solid transparent;border-right:6px solid transparent;content:" ";display:block;left:50%;margin-left:-6px;position:absolute}.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow{border-bottom:6px solid #444;top:-6px}.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow{border-top:6px solid #444;bottom:-6px}.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor{display:block}.ql-bubble .ql-tooltip.ql-editing .ql-formats{visibility:hidden}.ql-bubble .ql-tooltip-editor{display:none}.ql-bubble .ql-tooltip-editor input[type=text]{background:transparent;border:none;color:#fff;font-size:13px;height:100%;outline:none;padding:10px 20px;position:absolute;width:100%}.ql-bubble .ql-tooltip-editor a{top:10px;position:absolute;right:20px}.ql-bubble .ql-tooltip-editor a:before{color:#ccc;content:"\d7";font-size:16px;font-weight:700}.ql-container.ql-bubble:not(.ql-disabled) a{position:relative;white-space:nowrap}.ql-container.ql-bubble:not(.ql-disabled) a:before{background-color:#444;border-radius:15px;top:-5px;font-size:12px;color:#fff;content:attr(href);font-weight:400;overflow:hidden;padding:5px 15px;text-decoration:none;z-index:1}.ql-container.ql-bubble:not(.ql-disabled) a:after{border-top:6px solid #444;border-left:6px solid transparent;border-right:6px solid transparent;top:0;content:" ";height:0;width:0}.ql-container.ql-bubble:not(.ql-disabled) a:before,.ql-container.ql-bubble:not(.ql-disabled) a:after{left:0;margin-left:50%;position:absolute;transform:translate(-50%,-100%);transition:visibility 0s ease .2s;visibility:hidden}.ql-container.ql-bubble:not(.ql-disabled) a:hover:before,.ql-container.ql-bubble:not(.ql-disabled) a:hover:after{visibility:visible}.primary-color[data-v-736d97e5]{color:#409eff}.background-opacity[data-v-736d97e5]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-736d97e5]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-736d97e5]{margin-top:8px}.el-form-item--medium .el-radio[data-v-736d97e5]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-736d97e5]{margin-top:8px}.el-form-item--small .el-radio[data-v-736d97e5]{line-height:32px!important}.el-form-item--small .el-rate[data-v-736d97e5]{margin-top:6px}.el-form-item--mini .el-radio[data-v-736d97e5]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-736d97e5]{margin-top:4px}.el-card[data-v-736d97e5]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-736d97e5]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-736d97e5],.auto-full-width.el-date-editor.el-input__inner[data-v-736d97e5]{width:100%!important}[data-v-736d97e5]::-webkit-scrollbar{width:8px;height:8px}[data-v-736d97e5]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-736d97e5]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-736d97e5]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-736d97e5]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-736d97e5]{width:100%!important}.primary-color[data-v-73c0fb69]{color:#409eff}.background-opacity[data-v-73c0fb69]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-73c0fb69]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-73c0fb69]{margin-top:8px}.el-form-item--medium .el-radio[data-v-73c0fb69]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-73c0fb69]{margin-top:8px}.el-form-item--small .el-radio[data-v-73c0fb69]{line-height:32px!important}.el-form-item--small .el-rate[data-v-73c0fb69]{margin-top:6px}.el-form-item--mini .el-radio[data-v-73c0fb69]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-73c0fb69]{margin-top:4px}.el-card[data-v-73c0fb69]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-73c0fb69]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-73c0fb69],.auto-full-width.el-date-editor.el-input__inner[data-v-73c0fb69]{width:100%!important}[data-v-73c0fb69]::-webkit-scrollbar{width:8px;height:8px}[data-v-73c0fb69]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-73c0fb69]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-73c0fb69]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-73c0fb69]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-73c0fb69]{width:100%!important}.primary-color[data-v-e54b3390]{color:#409eff}.background-opacity[data-v-e54b3390]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-e54b3390]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-e54b3390]{margin-top:8px}.el-form-item--medium .el-radio[data-v-e54b3390]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-e54b3390]{margin-top:8px}.el-form-item--small .el-radio[data-v-e54b3390]{line-height:32px!important}.el-form-item--small .el-rate[data-v-e54b3390]{margin-top:6px}.el-form-item--mini .el-radio[data-v-e54b3390]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-e54b3390]{margin-top:4px}.el-card[data-v-e54b3390]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-e54b3390]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-e54b3390],.auto-full-width.el-date-editor.el-input__inner[data-v-e54b3390]{width:100%!important}[data-v-e54b3390]::-webkit-scrollbar{width:8px;height:8px}[data-v-e54b3390]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e54b3390]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e54b3390]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-e54b3390]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-e54b3390]{width:100%!important}.primary-color[data-v-1b458525]{color:#409eff}.background-opacity[data-v-1b458525]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-1b458525]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-1b458525]{margin-top:8px}.el-form-item--medium .el-radio[data-v-1b458525]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-1b458525]{margin-top:8px}.el-form-item--small .el-radio[data-v-1b458525]{line-height:32px!important}.el-form-item--small .el-rate[data-v-1b458525]{margin-top:6px}.el-form-item--mini .el-radio[data-v-1b458525]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-1b458525]{margin-top:4px}.el-card[data-v-1b458525]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-1b458525]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-1b458525],.auto-full-width.el-date-editor.el-input__inner[data-v-1b458525]{width:100%!important}[data-v-1b458525]::-webkit-scrollbar{width:8px;height:8px}[data-v-1b458525]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1b458525]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1b458525]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-1b458525]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.slot-wrapper-design[data-v-1b458525]{width:100%;min-height:26px;background:linear-gradient(45deg,#ccc 25%,#eee 0,#eee 50%,#ccc 0,#ccc 75%,#eee 0);background-size:20px 20px;text-align:center}.slot-wrapper-design .slot-title[data-v-1b458525]{font-size:13px}.primary-color[data-v-990dcae8]{color:#409eff}.background-opacity[data-v-990dcae8]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-990dcae8]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-990dcae8]{margin-top:8px}.el-form-item--medium .el-radio[data-v-990dcae8]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-990dcae8]{margin-top:8px}.el-form-item--small .el-radio[data-v-990dcae8]{line-height:32px!important}.el-form-item--small .el-rate[data-v-990dcae8]{margin-top:6px}.el-form-item--mini .el-radio[data-v-990dcae8]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-990dcae8]{margin-top:4px}.el-card[data-v-990dcae8]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-990dcae8]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-990dcae8],.auto-full-width.el-date-editor.el-input__inner[data-v-990dcae8]{width:100%!important}[data-v-990dcae8]::-webkit-scrollbar{width:8px;height:8px}[data-v-990dcae8]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-990dcae8]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-990dcae8]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-990dcae8]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-51a90f56]{color:#409eff}.background-opacity[data-v-51a90f56]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-51a90f56]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-51a90f56]{margin-top:8px}.el-form-item--medium .el-radio[data-v-51a90f56]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-51a90f56]{margin-top:8px}.el-form-item--small .el-radio[data-v-51a90f56]{line-height:32px!important}.el-form-item--small .el-rate[data-v-51a90f56]{margin-top:6px}.el-form-item--mini .el-radio[data-v-51a90f56]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-51a90f56]{margin-top:4px}.el-card[data-v-51a90f56]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-51a90f56]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-51a90f56],.auto-full-width.el-date-editor.el-input__inner[data-v-51a90f56]{width:100%!important}[data-v-51a90f56]::-webkit-scrollbar{width:8px;height:8px}[data-v-51a90f56]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-51a90f56]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-51a90f56]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-51a90f56]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-51a90f56]{width:100%!important}.primary-color[data-v-07ccea24]{color:#409eff}.background-opacity[data-v-07ccea24]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-07ccea24]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-07ccea24]{margin-top:8px}.el-form-item--medium .el-radio[data-v-07ccea24]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-07ccea24]{margin-top:8px}.el-form-item--small .el-radio[data-v-07ccea24]{line-height:32px!important}.el-form-item--small .el-rate[data-v-07ccea24]{margin-top:6px}.el-form-item--mini .el-radio[data-v-07ccea24]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-07ccea24]{margin-top:4px}.el-card[data-v-07ccea24]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-07ccea24]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-07ccea24],.auto-full-width.el-date-editor.el-input__inner[data-v-07ccea24]{width:100%!important}[data-v-07ccea24]::-webkit-scrollbar{width:8px;height:8px}[data-v-07ccea24]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-07ccea24]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-07ccea24]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-07ccea24]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-6789eaac]{color:#409eff}.background-opacity[data-v-6789eaac]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-6789eaac]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-6789eaac]{margin-top:8px}.el-form-item--medium .el-radio[data-v-6789eaac]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-6789eaac]{margin-top:8px}.el-form-item--small .el-radio[data-v-6789eaac]{line-height:32px!important}.el-form-item--small .el-rate[data-v-6789eaac]{margin-top:6px}.el-form-item--mini .el-radio[data-v-6789eaac]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-6789eaac]{margin-top:4px}.el-card[data-v-6789eaac]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-6789eaac]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-6789eaac],.auto-full-width.el-date-editor.el-input__inner[data-v-6789eaac]{width:100%!important}[data-v-6789eaac]::-webkit-scrollbar{width:8px;height:8px}[data-v-6789eaac]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6789eaac]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6789eaac]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-6789eaac]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-6789eaac]{width:100%!important}.auto-full-width[data-v-6789eaac]{width:100%}.auto-full-width[data-v-6789eaac] .el-range-editor{width:100%!important}.primary-color[data-v-b2bd1886]{color:#409eff}.background-opacity[data-v-b2bd1886]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-b2bd1886]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-b2bd1886]{margin-top:8px}.el-form-item--medium .el-radio[data-v-b2bd1886]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-b2bd1886]{margin-top:8px}.el-form-item--small .el-radio[data-v-b2bd1886]{line-height:32px!important}.el-form-item--small .el-rate[data-v-b2bd1886]{margin-top:6px}.el-form-item--mini .el-radio[data-v-b2bd1886]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-b2bd1886]{margin-top:4px}.el-card[data-v-b2bd1886]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-b2bd1886]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-b2bd1886],.auto-full-width.el-date-editor.el-input__inner[data-v-b2bd1886]{width:100%!important}[data-v-b2bd1886]::-webkit-scrollbar{width:8px;height:8px}[data-v-b2bd1886]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-b2bd1886]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-b2bd1886]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-b2bd1886]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-b2bd1886]{width:100%!important}.primary-color[data-v-6c64446c]{color:#409eff}.background-opacity[data-v-6c64446c]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-6c64446c]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-6c64446c]{margin-top:8px}.el-form-item--medium .el-radio[data-v-6c64446c]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-6c64446c]{margin-top:8px}.el-form-item--small .el-radio[data-v-6c64446c]{line-height:32px!important}.el-form-item--small .el-rate[data-v-6c64446c]{margin-top:6px}.el-form-item--mini .el-radio[data-v-6c64446c]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-6c64446c]{margin-top:4px}.el-card[data-v-6c64446c]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-6c64446c]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-6c64446c],.auto-full-width.el-date-editor.el-input__inner[data-v-6c64446c]{width:100%!important}[data-v-6c64446c]::-webkit-scrollbar{width:8px;height:8px}[data-v-6c64446c]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6c64446c]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6c64446c]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-6c64446c]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.blank-cell[data-v-6c64446c]{font-style:italic;color:#ccc}.blank-cell span.invisible-content[data-v-6c64446c]{opacity:0}.primary-color[data-v-806f6ffe]{color:#409eff}.background-opacity[data-v-806f6ffe]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-806f6ffe]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-806f6ffe]{margin-top:8px}.el-form-item--medium .el-radio[data-v-806f6ffe]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-806f6ffe]{margin-top:8px}.el-form-item--small .el-radio[data-v-806f6ffe]{line-height:32px!important}.el-form-item--small .el-rate[data-v-806f6ffe]{margin-top:6px}.el-form-item--mini .el-radio[data-v-806f6ffe]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-806f6ffe]{margin-top:4px}.el-card[data-v-806f6ffe]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-806f6ffe]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-806f6ffe],.auto-full-width.el-date-editor.el-input__inner[data-v-806f6ffe]{width:100%!important}[data-v-806f6ffe]::-webkit-scrollbar{width:8px;height:8px}[data-v-806f6ffe]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-806f6ffe]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-806f6ffe]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-806f6ffe]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.sub-form-container[data-v-806f6ffe]{margin-bottom:8px;text-align:left}.sub-form-container[data-v-806f6ffe] .el-row.header-row{padding-bottom:0}.sub-form-container[data-v-806f6ffe] .el-row.sub-form-row{padding-top:3px;padding-bottom:3px}.sub-form-container[data-v-806f6ffe] .el-row.sub-form-row .row-number-span{margin-left:16px}div.action-header-column[data-v-806f6ffe]{display:inline-block;width:120px}div.action-header-column .action-label[data-v-806f6ffe]{margin-right:12px}div.action-header-column .action-button[data-v-806f6ffe]{padding-left:8px;padding-right:8px}div.field-header-column[data-v-806f6ffe]{display:inline-block}div.field-header-column span.custom-label i[data-v-806f6ffe]{margin:0 3px}div.field-header-column.is-required[data-v-806f6ffe]:before{content:"*";color:#f56c6c;margin-right:4px}div.label-center-left[data-v-806f6ffe]{text-align:left}div.label-center-align[data-v-806f6ffe]{text-align:center}div.label-right-align[data-v-806f6ffe]{text-align:right}div.sub-form-action-column[data-v-806f6ffe]{display:inline-block;width:120px}div.sub-form-action-column[data-v-806f6ffe] .el-form-item{margin-bottom:0}div.sub-form-action-column[data-v-806f6ffe] .el-button{font-size:14px;padding:0;background:#DCDFE6;border:4px solid #DCDFE6}div.sub-form-action-column.hide-label[data-v-806f6ffe] .el-form-item__label{display:none}div.sub-form-table-column[data-v-806f6ffe]{display:inline-block}div.sub-form-table-column[data-v-806f6ffe] .el-form-item{margin-left:4px;margin-right:4px;margin-bottom:0}div.sub-form-table-column[data-v-806f6ffe] .el-form-item__content{margin-left:0!important}div.sub-form-table-column.hide-label[data-v-806f6ffe] .el-form-item__label{display:none}.primary-color[data-v-df1ad646]{color:#409eff}.background-opacity[data-v-df1ad646]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-df1ad646]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-df1ad646]{margin-top:8px}.el-form-item--medium .el-radio[data-v-df1ad646]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-df1ad646]{margin-top:8px}.el-form-item--small .el-radio[data-v-df1ad646]{line-height:32px!important}.el-form-item--small .el-rate[data-v-df1ad646]{margin-top:6px}.el-form-item--mini .el-radio[data-v-df1ad646]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-df1ad646]{margin-top:4px}.el-card[data-v-df1ad646]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-df1ad646]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-df1ad646],.auto-full-width.el-date-editor.el-input__inner[data-v-df1ad646]{width:100%!important}[data-v-df1ad646]::-webkit-scrollbar{width:8px;height:8px}[data-v-df1ad646]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-df1ad646]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-df1ad646]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-df1ad646]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}td.table-cell[data-v-df1ad646]{display:table-cell;height:36px;border:1px solid #e5e5e5}.primary-color[data-v-6cba7003]{color:#409eff}.background-opacity[data-v-6cba7003]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-6cba7003]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-6cba7003]{margin-top:8px}.el-form-item--medium .el-radio[data-v-6cba7003]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-6cba7003]{margin-top:8px}.el-form-item--small .el-radio[data-v-6cba7003]{line-height:32px!important}.el-form-item--small .el-rate[data-v-6cba7003]{margin-top:6px}.el-form-item--mini .el-radio[data-v-6cba7003]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-6cba7003]{margin-top:4px}.el-card[data-v-6cba7003]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-6cba7003]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-6cba7003],.auto-full-width.el-date-editor.el-input__inner[data-v-6cba7003]{width:100%!important}[data-v-6cba7003]::-webkit-scrollbar{width:8px;height:8px}[data-v-6cba7003]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6cba7003]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6cba7003]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-6cba7003]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}div.table-container table.table-layout[data-v-6cba7003]{width:100%;table-layout:fixed;border-collapse:collapse}.primary-color[data-v-5ad82756]{color:#409eff}.background-opacity[data-v-5ad82756]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5ad82756]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5ad82756]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5ad82756]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5ad82756]{margin-top:8px}.el-form-item--small .el-radio[data-v-5ad82756]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5ad82756]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5ad82756]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5ad82756]{margin-top:4px}.el-card[data-v-5ad82756]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5ad82756]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5ad82756],.auto-full-width.el-date-editor.el-input__inner[data-v-5ad82756]{width:100%!important}[data-v-5ad82756]::-webkit-scrollbar{width:8px;height:8px}[data-v-5ad82756]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5ad82756]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5ad82756]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-5ad82756]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.el-form[data-v-5ad82756] .el-row{padding:8px}.primary-color[data-v-35f2b510]{color:#409eff}.background-opacity[data-v-35f2b510]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-35f2b510]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-35f2b510]{margin-top:8px}.el-form-item--medium .el-radio[data-v-35f2b510]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-35f2b510]{margin-top:8px}.el-form-item--small .el-radio[data-v-35f2b510]{line-height:32px!important}.el-form-item--small .el-rate[data-v-35f2b510]{margin-top:6px}.el-form-item--mini .el-radio[data-v-35f2b510]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-35f2b510]{margin-top:4px}.el-card[data-v-35f2b510]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-35f2b510]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-35f2b510],.auto-full-width.el-date-editor.el-input__inner[data-v-35f2b510]{width:100%!important}[data-v-35f2b510]::-webkit-scrollbar{width:8px;height:8px}[data-v-35f2b510]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-35f2b510]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-35f2b510]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-35f2b510]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.ace-editor[data-v-35f2b510]{min-height:300px}.primary-color[data-v-7c21aacb]{color:#409eff}.background-opacity[data-v-7c21aacb]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-7c21aacb]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-7c21aacb]{margin-top:8px}.el-form-item--medium .el-radio[data-v-7c21aacb]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-7c21aacb]{margin-top:8px}.el-form-item--small .el-radio[data-v-7c21aacb]{line-height:32px!important}.el-form-item--small .el-rate[data-v-7c21aacb]{margin-top:6px}.el-form-item--mini .el-radio[data-v-7c21aacb]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-7c21aacb]{margin-top:4px}.el-card[data-v-7c21aacb]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-7c21aacb]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-7c21aacb],.auto-full-width.el-date-editor.el-input__inner[data-v-7c21aacb]{width:100%!important}[data-v-7c21aacb]::-webkit-scrollbar{width:8px;height:8px}[data-v-7c21aacb]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7c21aacb]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7c21aacb]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-7c21aacb]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.toolbar-container[data-v-7c21aacb]:after{display:block;content:"";clear:both}.left-toolbar[data-v-7c21aacb]{display:flex;margin-top:4px;float:left;font-size:16px}.right-toolbar[data-v-7c21aacb]{display:flex;float:right;line-height:42px;text-align:right;overflow:hidden}.right-toolbar .right-toolbar-con[data-v-7c21aacb]{text-align:left;width:600px}.right-toolbar[data-v-7c21aacb] .el-button{margin-left:10px}.right-toolbar[data-v-7c21aacb] .el-button--text{font-size:14px!important}.right-toolbar[data-v-7c21aacb] .svg-icon{margin-left:0;margin-right:.05em}.el-button i[data-v-7c21aacb]{margin-right:3px}.small-padding-dialog[data-v-7c21aacb] .el-dialog__header{background:#f1f2f3}.small-padding-dialog[data-v-7c21aacb] .el-dialog__body{padding:12px 15px}.small-padding-dialog[data-v-7c21aacb] .el-dialog__body .el-alert.alert-padding{padding:0 10px}.small-padding-dialog[data-v-7c21aacb] .ace-container{border:1px solid #DCDFE6}.dialog-title-light-bg[data-v-7c21aacb] .el-dialog__header{background:#f1f2f3}.no-box-shadow[data-v-7c21aacb]{box-shadow:none}.no-padding.el-tabs--border-card[data-v-7c21aacb] .el-tabs__content{padding:0}.form-render-wrapper.h5-layout[data-v-7c21aacb]{margin:0 auto;width:420px;border-radius:15px;box-shadow:0 0 1px 10px #495060;height:calc(100vh - 175px);overflow-y:auto;overflow-x:hidden}.form-render-wrapper.pad-layout[data-v-7c21aacb]{margin:0 auto;width:960px;border-radius:15px;box-shadow:0 0 1px 10px #495060;height:calc(100vh - 175px);overflow-y:auto;overflow-x:hidden}.node-tree-drawer[data-v-7c21aacb] .el-drawer{padding:10px;overflow:auto}.node-tree-drawer[data-v-7c21aacb] .el-drawer__header{margin-bottom:12px;padding:5px 5px 0}.node-tree-drawer[data-v-7c21aacb] .el-drawer__body{padding-left:5px}[data-v-7c21aacb] .node-tree .el-tree-node{position:relative;padding-left:12px}[data-v-7c21aacb] .node-tree .el-tree-node__content{padding-left:0!important}[data-v-7c21aacb] .node-tree .el-tree-node__expand-icon.is-leaf{display:none}[data-v-7c21aacb] .node-tree .el-tree-node__children{padding-left:12px;overflow:visible!important}[data-v-7c21aacb] .node-tree .el-tree-node :last-child:before{height:38px}[data-v-7c21aacb] .node-tree .el-tree>.el-tree-node:before{border-left:none}[data-v-7c21aacb] .node-tree .el-tree>.el-tree-node:after{border-top:none}[data-v-7c21aacb] .node-tree .el-tree-node:before{content:"";left:-4px;position:absolute;right:auto;border-width:1px}[data-v-7c21aacb] .node-tree .el-tree-node:after{content:"";left:-4px;position:absolute;right:auto;border-width:1px}[data-v-7c21aacb] .node-tree .el-tree-node:before{border-left:1px dashed #4386c6;bottom:0px;height:100%;top:-10px;width:1px}[data-v-7c21aacb] .node-tree .el-tree-node:after{border-top:1px dashed #4386c6;height:20px;top:12px;width:16px}[data-v-7c21aacb] .node-tree .el-tree-node.is-current>.el-tree-node__content{background:#c2d6ea!important}[data-v-7c21aacb] .node-tree .el-tree-node__expand-icon{margin-left:-3px;padding:6px 6px 6px 0;font-size:16px}.primary-color[data-v-fcb445c6]{color:#409eff}.background-opacity[data-v-fcb445c6]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-fcb445c6]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-fcb445c6]{margin-top:8px}.el-form-item--medium .el-radio[data-v-fcb445c6]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-fcb445c6]{margin-top:8px}.el-form-item--small .el-radio[data-v-fcb445c6]{line-height:32px!important}.el-form-item--small .el-rate[data-v-fcb445c6]{margin-top:6px}.el-form-item--mini .el-radio[data-v-fcb445c6]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-fcb445c6]{margin-top:4px}.el-card[data-v-fcb445c6]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-fcb445c6]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-fcb445c6],.auto-full-width.el-date-editor.el-input__inner[data-v-fcb445c6]{width:100%!important}[data-v-fcb445c6]::-webkit-scrollbar{width:8px;height:8px}[data-v-fcb445c6]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-fcb445c6]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-fcb445c6]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-fcb445c6]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-custom[data-v-fcb445c6] .el-radio-button__inner{padding-left:12px;padding-right:12px}.primary-color[data-v-7ee8ebb1]{color:#409eff}.background-opacity[data-v-7ee8ebb1]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-7ee8ebb1]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-7ee8ebb1]{margin-top:8px}.el-form-item--medium .el-radio[data-v-7ee8ebb1]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-7ee8ebb1]{margin-top:8px}.el-form-item--small .el-radio[data-v-7ee8ebb1]{line-height:32px!important}.el-form-item--small .el-rate[data-v-7ee8ebb1]{margin-top:6px}.el-form-item--mini .el-radio[data-v-7ee8ebb1]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-7ee8ebb1]{margin-top:4px}.el-card[data-v-7ee8ebb1]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-7ee8ebb1]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-7ee8ebb1],.auto-full-width.el-date-editor.el-input__inner[data-v-7ee8ebb1]{width:100%!important}[data-v-7ee8ebb1]::-webkit-scrollbar{width:8px;height:8px}[data-v-7ee8ebb1]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7ee8ebb1]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7ee8ebb1]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-7ee8ebb1]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.option-items-pane[data-v-7ee8ebb1]{width:100%}.option-items-pane ul[data-v-7ee8ebb1]{padding-inline-start:6px;padding-left:6px}li.ghost[data-v-7ee8ebb1]{background:#fff;border:2px dotted #409EFF}.drag-option[data-v-7ee8ebb1]{cursor:move}.small-padding-dialog[data-v-7ee8ebb1] .el-dialog__body{padding:10px 15px}.dialog-footer .el-button[data-v-7ee8ebb1]{width:100px}.full-width-input[data-v-7ee8ebb1],.full-width-input[data-v-7ee8ebb1] .el-cascader{width:100%!important}.primary-color[data-v-7454a9b8]{color:#409eff}.background-opacity[data-v-7454a9b8]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-7454a9b8]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-7454a9b8]{margin-top:8px}.el-form-item--medium .el-radio[data-v-7454a9b8]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-7454a9b8]{margin-top:8px}.el-form-item--small .el-radio[data-v-7454a9b8]{line-height:32px!important}.el-form-item--small .el-rate[data-v-7454a9b8]{margin-top:6px}.el-form-item--mini .el-radio[data-v-7454a9b8]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-7454a9b8]{margin-top:4px}.el-card[data-v-7454a9b8]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-7454a9b8]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-7454a9b8],.auto-full-width.el-date-editor.el-input__inner[data-v-7454a9b8]{width:100%!important}[data-v-7454a9b8]::-webkit-scrollbar{width:8px;height:8px}[data-v-7454a9b8]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7454a9b8]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7454a9b8]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-7454a9b8]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-custom[data-v-7454a9b8] .el-radio-button__inner{padding-left:12px;padding-right:12px}.primary-color[data-v-077327a0]{color:#409eff}.background-opacity[data-v-077327a0]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-077327a0]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-077327a0]{margin-top:8px}.el-form-item--medium .el-radio[data-v-077327a0]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-077327a0]{margin-top:8px}.el-form-item--small .el-radio[data-v-077327a0]{line-height:32px!important}.el-form-item--small .el-rate[data-v-077327a0]{margin-top:6px}.el-form-item--mini .el-radio[data-v-077327a0]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-077327a0]{margin-top:4px}.el-card[data-v-077327a0]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-077327a0]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-077327a0],.auto-full-width.el-date-editor.el-input__inner[data-v-077327a0]{width:100%!important}[data-v-077327a0]::-webkit-scrollbar{width:8px;height:8px}[data-v-077327a0]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-077327a0]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-077327a0]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-077327a0]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}li.col-item[data-v-077327a0]{list-style:none}li.col-item span.col-span-title[data-v-077327a0]{display:inline-block;font-size:13px;width:120px}li.col-item .col-delete-button[data-v-077327a0]{margin-left:6px}.primary-color[data-v-7c6da3d6]{color:#409eff}.background-opacity[data-v-7c6da3d6]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-7c6da3d6]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-7c6da3d6]{margin-top:8px}.el-form-item--medium .el-radio[data-v-7c6da3d6]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-7c6da3d6]{margin-top:8px}.el-form-item--small .el-radio[data-v-7c6da3d6]{line-height:32px!important}.el-form-item--small .el-rate[data-v-7c6da3d6]{margin-top:6px}.el-form-item--mini .el-radio[data-v-7c6da3d6]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-7c6da3d6]{margin-top:4px}.el-card[data-v-7c6da3d6]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-7c6da3d6]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-7c6da3d6],.auto-full-width.el-date-editor.el-input__inner[data-v-7c6da3d6]{width:100%!important}[data-v-7c6da3d6]::-webkit-scrollbar{width:8px;height:8px}[data-v-7c6da3d6]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7c6da3d6]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-7c6da3d6]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-7c6da3d6]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-custom[data-v-7c6da3d6] .el-radio-button__inner{padding-left:12px;padding-right:12px}.primary-color[data-v-3679856a]{color:#409eff}.background-opacity[data-v-3679856a]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-3679856a]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-3679856a]{margin-top:8px}.el-form-item--medium .el-radio[data-v-3679856a]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-3679856a]{margin-top:8px}.el-form-item--small .el-radio[data-v-3679856a]{line-height:32px!important}.el-form-item--small .el-rate[data-v-3679856a]{margin-top:6px}.el-form-item--mini .el-radio[data-v-3679856a]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-3679856a]{margin-top:4px}.el-card[data-v-3679856a]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-3679856a]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-3679856a],.auto-full-width.el-date-editor.el-input__inner[data-v-3679856a]{width:100%!important}[data-v-3679856a]::-webkit-scrollbar{width:8px;height:8px}[data-v-3679856a]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3679856a]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3679856a]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-3679856a]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}li.col-item[data-v-3679856a]{list-style:none}li.col-item span.col-span-title[data-v-3679856a]{display:inline-block;font-size:13px;width:120px}li.col-item .col-delete-button[data-v-3679856a]{margin-left:6px}.panes-setting ul[data-v-3679856a]{padding-inline-start:0;padding-left:0;margin:0}.panes-setting .drag-option[data-v-3679856a]{cursor:move}.panes-setting li.ghost[data-v-3679856a]{background:#fff;border:2px dotted #409EFF}.html-content-editor[data-v-e311c596]{font-size:13px}.primary-color[data-v-79cf111c]{color:#409eff}.background-opacity[data-v-79cf111c]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-79cf111c]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-79cf111c]{margin-top:8px}.el-form-item--medium .el-radio[data-v-79cf111c]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-79cf111c]{margin-top:8px}.el-form-item--small .el-radio[data-v-79cf111c]{line-height:32px!important}.el-form-item--small .el-rate[data-v-79cf111c]{margin-top:6px}.el-form-item--mini .el-radio[data-v-79cf111c]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-79cf111c]{margin-top:4px}.el-card[data-v-79cf111c]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-79cf111c]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-79cf111c],.auto-full-width.el-date-editor.el-input__inner[data-v-79cf111c]{width:100%!important}[data-v-79cf111c]::-webkit-scrollbar{width:8px;height:8px}[data-v-79cf111c]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-79cf111c]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-79cf111c]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-79cf111c]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.setting-form[data-v-79cf111c] .el-form-item__label{font-size:13px;overflow:hidden;white-space:nowrap}.setting-form[data-v-79cf111c] .el-form-item--small.el-form-item{margin-bottom:10px}.setting-form .radio-group-custom[data-v-79cf111c] .el-radio-button__inner{padding-left:12px;padding-right:12px}.setting-form .custom-divider.el-divider--horizontal[data-v-79cf111c]{margin:10px 0}.setting-collapse[data-v-79cf111c] .el-collapse-item__content{padding-bottom:6px}.setting-collapse[data-v-79cf111c] .el-collapse-item__header{font-style:italic;font-weight:700}.small-padding-dialog[data-v-79cf111c] .el-dialog__body{padding:6px 15px 12px}.primary-color[data-v-69cfbe35]{color:#409eff}.background-opacity[data-v-69cfbe35]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-69cfbe35]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-69cfbe35]{margin-top:8px}.el-form-item--medium .el-radio[data-v-69cfbe35]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-69cfbe35]{margin-top:8px}.el-form-item--small .el-radio[data-v-69cfbe35]{line-height:32px!important}.el-form-item--small .el-rate[data-v-69cfbe35]{margin-top:6px}.el-form-item--mini .el-radio[data-v-69cfbe35]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-69cfbe35]{margin-top:4px}.el-card[data-v-69cfbe35]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-69cfbe35]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-69cfbe35],.auto-full-width.el-date-editor.el-input__inner[data-v-69cfbe35]{width:100%!important}[data-v-69cfbe35]::-webkit-scrollbar{width:8px;height:8px}[data-v-69cfbe35]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-69cfbe35]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-69cfbe35]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-69cfbe35]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.panel-container[data-v-69cfbe35]{padding:0 8px}.setting-scrollbar[data-v-69cfbe35] .el-scrollbar__wrap{overflow-x:hidden}.setting-collapse[data-v-69cfbe35] .el-collapse-item__content{padding-bottom:6px}.setting-collapse[data-v-69cfbe35] .el-collapse-item__header{font-style:italic;font-weight:700}.setting-form[data-v-69cfbe35] .el-form-item__label{font-size:13px;overflow:hidden;white-space:nowrap}.setting-form[data-v-69cfbe35] .el-form-item--small.el-form-item{margin-bottom:10px}[data-v-69cfbe35] .hide-spin-button input::-webkit-outer-spin-button,[data-v-69cfbe35] .hide-spin-button input::-webkit-inner-spin-button{-webkit-appearance:none!important}[data-v-69cfbe35] .hide-spin-button input[type=number]{-moz-appearance:textfield}[data-v-69cfbe35] .custom-divider.el-divider--horizontal{margin:10px 0}[data-v-69cfbe35] .custom-divider-margin-top.el-divider--horizontal{margin:20px 0}.small-padding-dialog[data-v-69cfbe35] .el-dialog__body{padding:6px 15px 12px}.primary-color[data-v-dc661e70]{color:#409eff}.background-opacity[data-v-dc661e70]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-dc661e70]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-dc661e70]{margin-top:8px}.el-form-item--medium .el-radio[data-v-dc661e70]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-dc661e70]{margin-top:8px}.el-form-item--small .el-radio[data-v-dc661e70]{line-height:32px!important}.el-form-item--small .el-rate[data-v-dc661e70]{margin-top:6px}.el-form-item--mini .el-radio[data-v-dc661e70]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-dc661e70]{margin-top:4px}.el-card[data-v-dc661e70]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-dc661e70]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-dc661e70],.auto-full-width.el-date-editor.el-input__inner[data-v-dc661e70]{width:100%!important}[data-v-dc661e70]::-webkit-scrollbar{width:8px;height:8px}[data-v-dc661e70]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-dc661e70]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-dc661e70]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-dc661e70]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.container-wrapper[data-v-dc661e70]{position:relative;margin-bottom:5px}.container-wrapper .container-action[data-v-dc661e70]{position:absolute;bottom:0;right:-2px;height:28px;line-height:28px;background:#409EFF;z-index:999}.container-wrapper .container-action i[data-v-dc661e70]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.container-wrapper .drag-handler[data-v-dc661e70]{position:absolute;top:-2px;left:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.container-wrapper .drag-handler i[data-v-dc661e70]{font-size:14px;font-style:normal;color:#fff;margin:4px;cursor:move}.container-action[data-v-dc661e70] .svg-icon,.drag-handler[data-v-dc661e70] .svg-icon{margin-left:.1em;margin-right:.1em}.primary-color[data-v-bed400ee]{color:#409eff}.background-opacity[data-v-bed400ee]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-bed400ee]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-bed400ee]{margin-top:8px}.el-form-item--medium .el-radio[data-v-bed400ee]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-bed400ee]{margin-top:8px}.el-form-item--small .el-radio[data-v-bed400ee]{line-height:32px!important}.el-form-item--small .el-rate[data-v-bed400ee]{margin-top:6px}.el-form-item--mini .el-radio[data-v-bed400ee]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-bed400ee]{margin-top:4px}.el-card[data-v-bed400ee]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-bed400ee]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-bed400ee],.auto-full-width.el-date-editor.el-input__inner[data-v-bed400ee]{width:100%!important}[data-v-bed400ee]::-webkit-scrollbar{width:8px;height:8px}[data-v-bed400ee]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-bed400ee]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-bed400ee]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-bed400ee]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.grid-cell[data-v-bed400ee]{min-height:38px!important;padding:3px;outline:1px dashed #336699;position:relative}.grid-cell .form-widget-list[data-v-bed400ee]{min-height:28px}.grid-cell .grid-col-action[data-v-bed400ee]{position:absolute;bottom:0;right:-2px;height:28px;line-height:28px;background:#409EFF;z-index:999}.grid-cell .grid-col-action i[data-v-bed400ee]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.grid-cell .grid-col-handler[data-v-bed400ee]{position:absolute;top:-2px;left:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.grid-cell .grid-col-handler i[data-v-bed400ee]{font-size:14px;font-style:normal;color:#fff;margin:4px;cursor:default}.grid-col-action[data-v-bed400ee] .svg-icon,.grid-col-handler[data-v-bed400ee] .svg-icon{margin-left:.1em;margin-right:.1em}.primary-color[data-v-0786fd36]{color:#409eff}.background-opacity[data-v-0786fd36]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-0786fd36]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-0786fd36]{margin-top:8px}.el-form-item--medium .el-radio[data-v-0786fd36]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-0786fd36]{margin-top:8px}.el-form-item--small .el-radio[data-v-0786fd36]{line-height:32px!important}.el-form-item--small .el-rate[data-v-0786fd36]{margin-top:6px}.el-form-item--mini .el-radio[data-v-0786fd36]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-0786fd36]{margin-top:4px}.el-card[data-v-0786fd36]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-0786fd36]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-0786fd36],.auto-full-width.el-date-editor.el-input__inner[data-v-0786fd36]{width:100%!important}[data-v-0786fd36]::-webkit-scrollbar{width:8px;height:8px}[data-v-0786fd36]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0786fd36]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0786fd36]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-0786fd36]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.el-row.grid-container[data-v-0786fd36]{min-height:50px;outline:1px dashed #336699}.el-row.grid-container .form-widget-list[data-v-0786fd36]{min-height:28px}.grid-container.selected[data-v-0786fd36],.grid-cell.selected[data-v-0786fd36]{outline:2px solid #409EFF!important}.primary-color[data-v-0e77dc48]{color:#409eff}.background-opacity[data-v-0e77dc48]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-0e77dc48]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-0e77dc48]{margin-top:8px}.el-form-item--medium .el-radio[data-v-0e77dc48]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-0e77dc48]{margin-top:8px}.el-form-item--small .el-radio[data-v-0e77dc48]{line-height:32px!important}.el-form-item--small .el-rate[data-v-0e77dc48]{margin-top:6px}.el-form-item--mini .el-radio[data-v-0e77dc48]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-0e77dc48]{margin-top:4px}.el-card[data-v-0e77dc48]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-0e77dc48]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-0e77dc48],.auto-full-width.el-date-editor.el-input__inner[data-v-0e77dc48]{width:100%!important}[data-v-0e77dc48]::-webkit-scrollbar{width:8px;height:8px}[data-v-0e77dc48]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0e77dc48]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0e77dc48]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-0e77dc48]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.tab-container[data-v-0e77dc48]{margin:2px}.tab-container .form-widget-list[data-v-0e77dc48],.tab-container[data-v-0e77dc48] .el-tabs__content{min-height:28px}.tab-container.selected[data-v-0e77dc48]{outline:2px solid #409EFF!important}.primary-color[data-v-5cb283bf]{color:#409eff}.background-opacity[data-v-5cb283bf]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5cb283bf]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5cb283bf]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5cb283bf]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5cb283bf]{margin-top:8px}.el-form-item--small .el-radio[data-v-5cb283bf]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5cb283bf]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5cb283bf]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5cb283bf]{margin-top:4px}.el-card[data-v-5cb283bf]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5cb283bf]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5cb283bf],.auto-full-width.el-date-editor.el-input__inner[data-v-5cb283bf]{width:100%!important}[data-v-5cb283bf]::-webkit-scrollbar{width:8px;height:8px}[data-v-5cb283bf]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5cb283bf]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5cb283bf]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-5cb283bf]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.table-cell[data-v-5cb283bf]{border:1px dashed #336699;display:table-cell;position:relative}.table-cell .draggable-div[data-v-5cb283bf]{position:relative;height:100%}.table-cell .form-widget-list[data-v-5cb283bf]{border:1px dashed #336699;margin:3px;min-height:28px}.table-cell .table-cell-action[data-v-5cb283bf]{position:absolute;bottom:0;right:-2px;height:28px;line-height:28px;background:#409EFF;z-index:999;display:flex;align-items:center}.table-cell .table-cell-action i[data-v-5cb283bf]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.table-cell .table-cell-handler[data-v-5cb283bf]{position:absolute;top:-2px;left:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.table-cell .table-cell-handler i[data-v-5cb283bf]{font-size:14px;font-style:normal;color:#fff;margin:4px;cursor:default}.table-cell-action[data-v-5cb283bf] .svg-icon,.table-cell-handler[data-v-5cb283bf] .svg-icon{margin-left:.1em;margin-right:.1em}.table-cell.selected[data-v-5cb283bf]{outline:2px solid #409EFF!important}.primary-color[data-v-e9069e7e]{color:#409eff}.background-opacity[data-v-e9069e7e]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-e9069e7e]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-e9069e7e]{margin-top:8px}.el-form-item--medium .el-radio[data-v-e9069e7e]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-e9069e7e]{margin-top:8px}.el-form-item--small .el-radio[data-v-e9069e7e]{line-height:32px!important}.el-form-item--small .el-rate[data-v-e9069e7e]{margin-top:6px}.el-form-item--mini .el-radio[data-v-e9069e7e]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-e9069e7e]{margin-top:4px}.el-card[data-v-e9069e7e]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-e9069e7e]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-e9069e7e],.auto-full-width.el-date-editor.el-input__inner[data-v-e9069e7e]{width:100%!important}[data-v-e9069e7e]::-webkit-scrollbar{width:8px;height:8px}[data-v-e9069e7e]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e9069e7e]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e9069e7e]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-e9069e7e]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}div.table-container[data-v-e9069e7e]{padding:5px;border:1px dashed #336699;box-sizing:border-box}div.table-container table.table-layout[data-v-e9069e7e]{width:100%;text-align:center;border-collapse:collapse;table-layout:fixed}div.table-container table.table-layout[data-v-e9069e7e] td{height:48px;border:1px dashed #336699;padding:3px;display:table-cell}div.table-container table.table-layout .form-widget-list[data-v-e9069e7e]{border:1px dashed #336699;min-height:36px}.table-container.selected[data-v-e9069e7e]{outline:2px solid #409EFF!important}.primary-color[data-v-28ec7276]{color:#409eff}.background-opacity[data-v-28ec7276]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-28ec7276]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-28ec7276]{margin-top:8px}.el-form-item--medium .el-radio[data-v-28ec7276]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-28ec7276]{margin-top:8px}.el-form-item--small .el-radio[data-v-28ec7276]{line-height:32px!important}.el-form-item--small .el-rate[data-v-28ec7276]{margin-top:6px}.el-form-item--mini .el-radio[data-v-28ec7276]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-28ec7276]{margin-top:4px}.el-card[data-v-28ec7276]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-28ec7276]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-28ec7276],.auto-full-width.el-date-editor.el-input__inner[data-v-28ec7276]{width:100%!important}[data-v-28ec7276]::-webkit-scrollbar{width:8px;height:8px}[data-v-28ec7276]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-28ec7276]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-28ec7276]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-28ec7276]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.container-scroll-bar[data-v-28ec7276] .el-scrollbar__wrap,.container-scroll-bar[data-v-28ec7276] .el-scrollbar__view{overflow-x:hidden}.form-widget-container[data-v-28ec7276]{padding:10px;background:#f1f2f3;overflow-x:hidden;overflow-y:auto}.form-widget-container .el-form.full-height-width[data-v-28ec7276]{height:100%;padding:3px;background:#ffffff}.form-widget-container .el-form.full-height-width .no-widget-hint[data-v-28ec7276]{position:absolute;left:0;right:0;top:0;bottom:0;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:18px;color:#999}.form-widget-container .el-form.full-height-width .form-widget-list[data-v-28ec7276]{min-height:calc(100vh - 124px);padding:3px}.form-widget-container .el-form.Pad-layout[data-v-28ec7276]{margin:0 auto;max-width:960px;border-radius:15px;box-shadow:0 0 1px 10px #495060}.form-widget-container .el-form.H5-layout[data-v-28ec7276]{margin:0 auto;width:420px;border-radius:15px;box-shadow:0 0 1px 10px #495060}.form-widget-container .el-form.widget-form[data-v-28ec7276] .el-row{padding:2px;border:1px dashed rgba(170,170,170,.75)}.grid-cell[data-v-28ec7276]{min-height:30px;border-right:1px dotted #cccccc}.fade-enter-active[data-v-28ec7276],.fade-leave-active[data-v-28ec7276]{transition:opacity .5s}.fade-enter[data-v-28ec7276],.fade-leave-to[data-v-28ec7276]{opacity:0}.primary-color[data-v-616b4399]{color:#409eff}.background-opacity[data-v-616b4399]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-616b4399]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-616b4399]{margin-top:8px}.el-form-item--medium .el-radio[data-v-616b4399]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-616b4399]{margin-top:8px}.el-form-item--small .el-radio[data-v-616b4399]{line-height:32px!important}.el-form-item--small .el-rate[data-v-616b4399]{margin-top:6px}.el-form-item--mini .el-radio[data-v-616b4399]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-616b4399]{margin-top:4px}.el-card[data-v-616b4399]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-616b4399]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-616b4399],.auto-full-width.el-date-editor.el-input__inner[data-v-616b4399]{width:100%!important}[data-v-616b4399]::-webkit-scrollbar{width:8px;height:8px}[data-v-616b4399]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-616b4399]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-616b4399]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-616b4399]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.el-container.main-container[data-v-616b4399]{background:#fff}.el-container.main-container[data-v-616b4399] aside{margin:0;padding:0;background:inherit}.el-container.full-height[data-v-616b4399]{height:100%;overflow-y:hidden}.el-container.center-layout-container[data-v-616b4399]{min-width:680px;border-left:2px dotted #EBEEF5;border-right:2px dotted #EBEEF5}.el-header.main-header[data-v-616b4399]{border-bottom:2px dotted #EBEEF5;height:48px!important;line-height:48px!important;min-width:800px}div.main-title[data-v-616b4399]{font-size:18px;color:#242424;display:flex;align-items:center;justify-items:center}div.main-title img[data-v-616b4399]{cursor:pointer;width:36px;height:36px}div.main-title span.bold[data-v-616b4399]{font-size:20px;font-weight:700;margin:0 6px}div.main-title span.version-span[data-v-616b4399]{font-size:14px;color:#101f1c;margin-left:6px}.float-left[data-v-616b4399]{float:left}.float-right[data-v-616b4399]{float:right}.el-dropdown-link[data-v-616b4399]{margin-right:12px;cursor:pointer}div.external-link[data-v-616b4399]{display:flex;align-items:center}div.external-link a[data-v-616b4399]{font-size:13px;text-decoration:none;margin-right:10px;color:#606266}.el-header.toolbar-header[data-v-616b4399]{font-size:14px;border-bottom:1px dotted #CCCCCC;height:42px!important}.el-aside.side-panel[data-v-616b4399]{width:260px!important;overflow-y:hidden}.el-main.form-widget-main[data-v-616b4399]{padding:0;position:relative;overflow-x:hidden}.container-scroll-bar[data-v-616b4399] .el-scrollbar__wrap,.container-scroll-bar[data-v-616b4399] .el-scrollbar__view{overflow-x:hidden}@font-face{font-family:iconfont;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI8i0leAAABjAAAAFZjbWFw7bW54gAAAfgAAAGqZ2x5Zpkon+wAAAOwAAADNGhlYWQcnMJsAAAA4AAAADZoaGVhB4IDhgAAALwAAAAkaG10eBQAAAAAAAHkAAAAFGxvY2EBeAI2AAADpAAAAAxtYXhwARcAagAAARgAAAAgbmFtZT5U/n0AAAbkAAACbXBvc3T0IfeLAAAJVAAAAFAAAQAAA4D/gAAABAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAUAAQAAAAEAALwRH5pfDzz1AAsEAAAAAADcvr83AAAAANy+vzcAAP+ABAADgQAAAAgAAgAAAAAAAAABAAAABQBeAAgAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAEEAAGQAAUAAAKJAswAAACPAokCzAAAAesAMgEIAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAQOYd52sDgP+AAFwDgQCAAAAAAQAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAWoAAQAAAAAAZAADAAEAAAAsAAMACgAAAWoABAA4AAAACAAIAAIAAOYd51Tna///AADmHedT52v//wAAAAAAAAABAAgACAAKAAAABAABAAIAAwAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAQAAAAAAAAAAEAADmHQAA5h0AAAAEAADnUwAA51MAAAABAADnVAAA51QAAAACAADnawAA52sAAAADAAAAAAAAAE4AnAEqAZoABAAA/8AEAANAABoAHgAmAC4AACU2MhcWDwEUDwEGDwEiFAcjIiYvASY+ATIfAQMRIREBESMRIREjAyERIxEhESMDAo0KGwoFAQEJfQIJAgICAwQJBYwJBRQbCmmlAUD9wEABAD8BAkBAAQA/AbYKCgUMBg0KfwIEAQEBBASACRsUCmQC7v3AAkD9gP8AAUD+wAEA/wABQP7AAQAABAAA/4ADwANAABoAHgAmAC4AACUWFAcGLwEiLwEmLwE0Iic1NDY/ATYeARQPASUhESEBITUhESE1JREhNSERITUlATYKCgUMBg0KfwIEAQEBBASACRsUCmQC7v3AAkD9gP8AAUD+wAEA/wABQP7AAQDzChsKBQEBCX0CCQICAgMECQWMCQUUGwpppf7AAkBA/wA/Af3AQP8APwEABQAAAAADwgL9ACYAOQBBAEkAXQAAASYnNzY0JiIPASYjIgcGBwYUFxYXFhcHBhQXFjI/ARYzMjY3Njc2BTY3NjMyFwcuASMiDgEVFBcHJiUUBiMiJzcWBzQ2MzIXByYXIic3HgEzMj4BNTQnNxYXDgEHBgO9TWNpChMaCXRdeZF9XlEFBSIqMDRtCQkPGAl0YHZcs0RHIwX8xEZSanhcSlAQLRksSSsaWlIBkjcpFhSACsA3KRYUgApgXEpQEC0ZLEkrGlpUSSF6SkwBkINKaQoaEwpzQGRLgQcSBzkyOSltCRoJCgpzPU9FR1gPAm5AUi1QDg8rSSwxKVlBcik3CoAUFik3CoAU6i1QDg8rSSwxKVlAc0l1ICIAAAAIAAD/gANBA4EACAARABoAIwAsADUAPgBHAAABIiY0NjIWFAYDIiY0NjIWFAYDIiY0NjIWFAYDIiY0NjIWFAYBIiY0NjIWFAYDIiY0NjIWFAYDIiY0NjIWFAYDIiY0NjIWFAYBICg4OFA4OCgoODhQODgoKDg4UDg4KCg4OFA4OAGYKDg4UDg4KCg4OFA4OCgoODhQODgoKDg4UDg4AsA4UDg4UDj+6zhPOTlPOP7qOU84OE85/us4UDg4UDgDQDhQODhQOP7rOE85OU84/uo5Tzg4Tzn+6zhQODhQOAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQECAQMBBAEFAQYADGluc2VydGNvbHVtbglpbnNlcnRyb3cEaGlkZQRkcmFnAAA=) format("truetype")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-insertcolumn:before{content:"\e753"}.icon-insertrow:before{content:"\e754"}.icon-hide:before{content:"\e76b"}.icon-drag:before{content:"\e61d"}.primary-color[data-v-78104555]{color:#409eff}.background-opacity[data-v-78104555]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-78104555]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-78104555]{margin-top:8px}.el-form-item--medium .el-radio[data-v-78104555]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-78104555]{margin-top:8px}.el-form-item--small .el-radio[data-v-78104555]{line-height:32px!important}.el-form-item--small .el-rate[data-v-78104555]{margin-top:6px}.el-form-item--mini .el-radio[data-v-78104555]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-78104555]{margin-top:4px}.el-card[data-v-78104555]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-78104555]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-78104555],.auto-full-width.el-date-editor.el-input__inner[data-v-78104555]{width:100%!important}[data-v-78104555]::-webkit-scrollbar{width:8px;height:8px}[data-v-78104555]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-78104555]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-78104555]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-78104555]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.card-container.selected[data-v-78104555]{outline:2px solid #409EFF!important}.card-container[data-v-78104555]{margin:3px}.card-container .form-widget-list[data-v-78104555]{min-height:28px}[data-v-78104555] .el-card__header{padding:10px 12px}.folded[data-v-78104555] .el-card__body{display:none}.clear-fix[data-v-78104555]:before,.clear-fix[data-v-78104555]:after{display:table;content:""}.clear-fix[data-v-78104555]:after{clear:both}.float-right[data-v-78104555]{float:right}.primary-color[data-v-1999fb0d]{color:#409eff}.background-opacity[data-v-1999fb0d]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-1999fb0d]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-1999fb0d]{margin-top:8px}.el-form-item--medium .el-radio[data-v-1999fb0d]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-1999fb0d]{margin-top:8px}.el-form-item--small .el-radio[data-v-1999fb0d]{line-height:32px!important}.el-form-item--small .el-rate[data-v-1999fb0d]{margin-top:6px}.el-form-item--mini .el-radio[data-v-1999fb0d]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-1999fb0d]{margin-top:4px}.el-card[data-v-1999fb0d]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-1999fb0d]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-1999fb0d],.auto-full-width.el-date-editor.el-input__inner[data-v-1999fb0d]{width:100%!important}[data-v-1999fb0d]::-webkit-scrollbar{width:8px;height:8px}[data-v-1999fb0d]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1999fb0d]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1999fb0d]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}*[data-v-1999fb0d]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}[data-v-1999fb0d] .el-card__header{padding:10px 12px}.folded[data-v-1999fb0d] .el-card__body{display:none}.clear-fix[data-v-1999fb0d]:before,.clear-fix[data-v-1999fb0d]:after{display:table;content:""}.clear-fix[data-v-1999fb0d]:after{clear:both}.float-right[data-v-1999fb0d]{float:right} diff --git a/yanzhu-ui-vue3/src/lib/vform/designer.umd.js b/yanzhu-ui-vue3/src/lib/vform/designer.umd.js deleted file mode 100644 index ed9b7ab5..00000000 --- a/yanzhu-ui-vue3/src/lib/vform/designer.umd.js +++ /dev/null @@ -1,1601 +0,0 @@ -var Ae=Object.defineProperty,Re=Object.defineProperties;var Fe=Object.getOwnPropertyDescriptors;var Me=Object.getOwnPropertySymbols;var Ne=Object.prototype.hasOwnProperty,Ie=Object.prototype.propertyIsEnumerable;var qe=(n,d,e)=>d in n?Ae(n,d,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[d]=e,xe=(n,d)=>{for(var e in d||(d={}))Ne.call(d,e)&&qe(n,e,d[e]);if(Me)for(var e of Me(d))Ie.call(d,e)&&qe(n,e,d[e]);return n},ke=(n,d)=>Re(n,Fe(d));(function(n,d){typeof exports=="object"&&typeof module!="undefined"?module.exports=d(require("vue")):typeof define=="function"&&define.amd?define(["vue"],d):(n=typeof globalThis!="undefined"?globalThis:n||self,n.VFormDesigner=d(n.Vue))})(this,function(require$$0$1){"use strict";function _interopDefaultLegacy(n){return n&&typeof n=="object"&&"default"in n?n:{default:n}}var require$$0__default=_interopDefaultLegacy(require$$0$1),commonjsGlobal=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function getDefaultExportFromCjs(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var axios$2={exports:{}},bind$2=function(d,e){return function(){for(var m=new Array(arguments.length),g=0;g=0)return;p==="set-cookie"?e[p]=(e[p]?e[p]:[]).concat([m]):e[p]=e[p]?e[p]+", "+m:m}}),e},utils$7=utils$d,isURLSameOrigin$1=utils$7.isStandardBrowserEnv()?function(){var d=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a"),p;function m(g){var a=g;return d&&(e.setAttribute("href",a),a=e.href),e.setAttribute("href",a),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:e.pathname.charAt(0)==="/"?e.pathname:"/"+e.pathname}}return p=m(window.location.href),function(a){var c=utils$7.isString(a)?m(a):a;return c.protocol===p.protocol&&c.host===p.host}}():function(){return function(){return!0}}();function Cancel$3(n){this.message=n}Cancel$3.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Cancel$3.prototype.__CANCEL__=!0;var Cancel_1=Cancel$3,utils$6=utils$d,settle=settle$1,cookies=cookies$1,buildURL$1=buildURL$2,buildFullPath=buildFullPath$1,parseHeaders=parseHeaders$1,isURLSameOrigin=isURLSameOrigin$1,createError=createError$2,defaults$5=defaults_1,Cancel$2=Cancel_1,xhr=function(d){return new Promise(function(p,m){var g=d.data,a=d.headers,c=d.responseType,i;function u(){d.cancelToken&&d.cancelToken.unsubscribe(i),d.signal&&d.signal.removeEventListener("abort",i)}utils$6.isFormData(g)&&delete a["Content-Type"];var r=new XMLHttpRequest;if(d.auth){var t=d.auth.username||"",l=d.auth.password?unescape(encodeURIComponent(d.auth.password)):"";a.Authorization="Basic "+btoa(t+":"+l)}var o=buildFullPath(d.baseURL,d.url);r.open(d.method.toUpperCase(),buildURL$1(o,d.params,d.paramsSerializer),!0),r.timeout=d.timeout;function s(){if(!!r){var h="getAllResponseHeaders"in r?parseHeaders(r.getAllResponseHeaders()):null,v=!c||c==="text"||c==="json"?r.responseText:r.response,$={data:v,status:r.status,statusText:r.statusText,headers:h,config:d,request:r};settle(function(b){p(b),u()},function(b){m(b),u()},$),r=null}}if("onloadend"in r?r.onloadend=s:r.onreadystatechange=function(){!r||r.readyState!==4||r.status===0&&!(r.responseURL&&r.responseURL.indexOf("file:")===0)||setTimeout(s)},r.onabort=function(){!r||(m(createError("Request aborted",d,"ECONNABORTED",r)),r=null)},r.onerror=function(){m(createError("Network Error",d,null,r)),r=null},r.ontimeout=function(){var v=d.timeout?"timeout of "+d.timeout+"ms exceeded":"timeout exceeded",$=d.transitional||defaults$5.transitional;d.timeoutErrorMessage&&(v=d.timeoutErrorMessage),m(createError(v,d,$.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",r)),r=null},utils$6.isStandardBrowserEnv()){var f=(d.withCredentials||isURLSameOrigin(o))&&d.xsrfCookieName?cookies.read(d.xsrfCookieName):void 0;f&&(a[d.xsrfHeaderName]=f)}"setRequestHeader"in r&&utils$6.forEach(a,function(v,$){typeof g=="undefined"&&$.toLowerCase()==="content-type"?delete a[$]:r.setRequestHeader($,v)}),utils$6.isUndefined(d.withCredentials)||(r.withCredentials=!!d.withCredentials),c&&c!=="json"&&(r.responseType=d.responseType),typeof d.onDownloadProgress=="function"&&r.addEventListener("progress",d.onDownloadProgress),typeof d.onUploadProgress=="function"&&r.upload&&r.upload.addEventListener("progress",d.onUploadProgress),(d.cancelToken||d.signal)&&(i=function(h){!r||(m(!h||h&&h.type?new Cancel$2("canceled"):h),r.abort(),r=null)},d.cancelToken&&d.cancelToken.subscribe(i),d.signal&&(d.signal.aborted?i():d.signal.addEventListener("abort",i))),g||(g=null),r.send(g)})},utils$5=utils$d,normalizeHeaderName=normalizeHeaderName$1,enhanceError=enhanceError$2,DEFAULT_CONTENT_TYPE={"Content-Type":"application/x-www-form-urlencoded"};function setContentTypeIfUnset(n,d){!utils$5.isUndefined(n)&&utils$5.isUndefined(n["Content-Type"])&&(n["Content-Type"]=d)}function getDefaultAdapter(){var n;return(typeof XMLHttpRequest!="undefined"||typeof process!="undefined"&&Object.prototype.toString.call(process)==="[object process]")&&(n=xhr),n}function stringifySafely(n,d,e){if(utils$5.isString(n))try{return(d||JSON.parse)(n),utils$5.trim(n)}catch(p){if(p.name!=="SyntaxError")throw p}return(e||JSON.stringify)(n)}var defaults$4={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:getDefaultAdapter(),transformRequest:[function(d,e){return normalizeHeaderName(e,"Accept"),normalizeHeaderName(e,"Content-Type"),utils$5.isFormData(d)||utils$5.isArrayBuffer(d)||utils$5.isBuffer(d)||utils$5.isStream(d)||utils$5.isFile(d)||utils$5.isBlob(d)?d:utils$5.isArrayBufferView(d)?d.buffer:utils$5.isURLSearchParams(d)?(setContentTypeIfUnset(e,"application/x-www-form-urlencoded;charset=utf-8"),d.toString()):utils$5.isObject(d)||e&&e["Content-Type"]==="application/json"?(setContentTypeIfUnset(e,"application/json"),stringifySafely(d)):d}],transformResponse:[function(d){var e=this.transitional||defaults$4.transitional,p=e&&e.silentJSONParsing,m=e&&e.forcedJSONParsing,g=!p&&this.responseType==="json";if(g||m&&utils$5.isString(d)&&d.length)try{return JSON.parse(d)}catch(a){if(g)throw a.name==="SyntaxError"?enhanceError(a,this,"E_JSON_PARSE"):a}return d}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(d){return d>=200&&d<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};utils$5.forEach(["delete","get","head"],function(d){defaults$4.headers[d]={}}),utils$5.forEach(["post","put","patch"],function(d){defaults$4.headers[d]=utils$5.merge(DEFAULT_CONTENT_TYPE)});var defaults_1=defaults$4,utils$4=utils$d,defaults$3=defaults_1,transformData$1=function(d,e,p){var m=this||defaults$3;return utils$4.forEach(p,function(a){d=a.call(m,d,e)}),d},isCancel$1=function(d){return!!(d&&d.__CANCEL__)},utils$3=utils$d,transformData=transformData$1,isCancel=isCancel$1,defaults$2=defaults_1,Cancel$1=Cancel_1;function throwIfCancellationRequested(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new Cancel$1("canceled")}var dispatchRequest$1=function(d){throwIfCancellationRequested(d),d.headers=d.headers||{},d.data=transformData.call(d,d.data,d.headers,d.transformRequest),d.headers=utils$3.merge(d.headers.common||{},d.headers[d.method]||{},d.headers),utils$3.forEach(["delete","get","head","post","put","patch","common"],function(m){delete d.headers[m]});var e=d.adapter||defaults$2.adapter;return e(d).then(function(m){return throwIfCancellationRequested(d),m.data=transformData.call(d,m.data,m.headers,d.transformResponse),m},function(m){return isCancel(m)||(throwIfCancellationRequested(d),m&&m.response&&(m.response.data=transformData.call(d,m.response.data,m.response.headers,d.transformResponse))),Promise.reject(m)})},utils$2=utils$d,mergeConfig$2=function(d,e){e=e||{};var p={};function m(r,t){return utils$2.isPlainObject(r)&&utils$2.isPlainObject(t)?utils$2.merge(r,t):utils$2.isPlainObject(t)?utils$2.merge({},t):utils$2.isArray(t)?t.slice():t}function g(r){if(utils$2.isUndefined(e[r])){if(!utils$2.isUndefined(d[r]))return m(void 0,d[r])}else return m(d[r],e[r])}function a(r){if(!utils$2.isUndefined(e[r]))return m(void 0,e[r])}function c(r){if(utils$2.isUndefined(e[r])){if(!utils$2.isUndefined(d[r]))return m(void 0,d[r])}else return m(void 0,e[r])}function i(r){if(r in e)return m(d[r],e[r]);if(r in d)return m(void 0,d[r])}var u={url:a,method:a,data:a,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutMessage:c,withCredentials:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,responseEncoding:c,validateStatus:i};return utils$2.forEach(Object.keys(d).concat(Object.keys(e)),function(t){var l=u[t]||g,o=l(t);utils$2.isUndefined(o)&&l!==i||(p[t]=o)}),p},data={version:"0.24.0"},VERSION=data.version,validators$1={};["object","boolean","number","function","string","symbol"].forEach(function(n,d){validators$1[n]=function(p){return typeof p===n||"a"+(d<1?"n ":" ")+n}});var deprecatedWarnings={};validators$1.transitional=function(d,e,p){function m(g,a){return"[Axios v"+VERSION+"] Transitional option '"+g+"'"+a+(p?". "+p:"")}return function(g,a,c){if(d===!1)throw new Error(m(a," has been removed"+(e?" in "+e:"")));return e&&!deprecatedWarnings[a]&&(deprecatedWarnings[a]=!0,console.warn(m(a," has been deprecated since v"+e+" and will be removed in the near future"))),d?d(g,a,c):!0}};function assertOptions(n,d,e){if(typeof n!="object")throw new TypeError("options must be an object");for(var p=Object.keys(n),m=p.length;m-- >0;){var g=p[m],a=d[g];if(a){var c=n[g],i=c===void 0||a(c,g,n);if(i!==!0)throw new TypeError("option "+g+" must be "+i);continue}if(e!==!0)throw Error("Unknown option "+g)}}var validator$1={assertOptions,validators:validators$1},utils$1=utils$d,buildURL=buildURL$2,InterceptorManager=InterceptorManager_1,dispatchRequest=dispatchRequest$1,mergeConfig$1=mergeConfig$2,validator=validator$1,validators=validator.validators;function Axios$1(n){this.defaults=n,this.interceptors={request:new InterceptorManager,response:new InterceptorManager}}Axios$1.prototype.request=function(d){typeof d=="string"?(d=arguments[1]||{},d.url=arguments[0]):d=d||{},d=mergeConfig$1(this.defaults,d),d.method?d.method=d.method.toLowerCase():this.defaults.method?d.method=this.defaults.method.toLowerCase():d.method="get";var e=d.transitional;e!==void 0&&validator.assertOptions(e,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1);var p=[],m=!0;this.interceptors.request.forEach(function(l){typeof l.runWhen=="function"&&l.runWhen(d)===!1||(m=m&&l.synchronous,p.unshift(l.fulfilled,l.rejected))});var g=[];this.interceptors.response.forEach(function(l){g.push(l.fulfilled,l.rejected)});var a;if(!m){var c=[dispatchRequest,void 0];for(Array.prototype.unshift.apply(c,p),c=c.concat(g),a=Promise.resolve(d);c.length;)a=a.then(c.shift(),c.shift());return a}for(var i=d;p.length;){var u=p.shift(),r=p.shift();try{i=u(i)}catch(t){r(t);break}}try{a=dispatchRequest(i)}catch(t){return Promise.reject(t)}for(;g.length;)a=a.then(g.shift(),g.shift());return a},Axios$1.prototype.getUri=function(d){return d=mergeConfig$1(this.defaults,d),buildURL(d.url,d.params,d.paramsSerializer).replace(/^\?/,"")},utils$1.forEach(["delete","get","head","options"],function(d){Axios$1.prototype[d]=function(e,p){return this.request(mergeConfig$1(p||{},{method:d,url:e,data:(p||{}).data}))}}),utils$1.forEach(["post","put","patch"],function(d){Axios$1.prototype[d]=function(e,p,m){return this.request(mergeConfig$1(m||{},{method:d,url:e,data:p}))}});var Axios_1=Axios$1,Cancel=Cancel_1;function CancelToken(n){if(typeof n!="function")throw new TypeError("executor must be a function.");var d;this.promise=new Promise(function(m){d=m});var e=this;this.promise.then(function(p){if(!!e._listeners){var m,g=e._listeners.length;for(m=0;mhtml text",customClass:"",onCreated:"",onMounted:""}},{type:"button",icon:"button",formItemFlag:!1,options:{name:"",label:"",columnWidth:"200px",size:"",displayStyle:"block",disabled:!1,hidden:!1,type:"",plain:!1,round:!1,circle:!1,icon:null,customClass:"",onCreated:"",onMounted:"",onClick:""}},{type:"divider",icon:"divider",formItemFlag:!1,options:{name:"",label:"",columnWidth:"200px",direction:"horizontal",contentPosition:"center",hidden:!1,customClass:"",onCreated:"",onMounted:""}}],advancedFields=[{type:"picture-upload",icon:"picture-upload-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",disabled:!1,hidden:!1,required:!1,requiredHint:"",customRule:"",customRuleHint:"",uploadURL:"",uploadTip:"",withCredentials:!1,multipleSelect:!1,showFileList:!0,limit:3,fileMaxSize:5,fileTypes:["jpg","jpeg","png"],customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,onCreated:"",onMounted:"",onBeforeUpload:"",onUploadSuccess:"",onUploadError:"",onFileRemove:"",onValidate:""}},{type:"file-upload",icon:"file-upload-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",disabled:!1,hidden:!1,required:!1,requiredHint:"",customRule:"",customRuleHint:"",uploadURL:"",uploadTip:"",withCredentials:!1,multipleSelect:!1,showFileList:!0,limit:3,fileMaxSize:5,fileTypes:["doc","docx","xls","xlsx"],customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,onCreated:"",onMounted:"",onBeforeUpload:"",onUploadSuccess:"",onUploadError:"",onFileRemove:"",onValidate:""}},{type:"rich-editor",icon:"rich-editor-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",placeholder:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",contentHeight:"200px",disabled:!1,hidden:!1,required:!1,requiredHint:"",customRule:"",customRuleHint:"",customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,minLength:null,maxLength:null,showWordLimit:!1,onCreated:"",onMounted:"",onValidate:""}},{type:"cascader",icon:"cascader-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",defaultValue:"",placeholder:"",size:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",disabled:!1,hidden:!1,clearable:!0,filterable:!1,multiple:!1,checkStrictly:!1,showAllLevels:!0,optionItems:[{label:"select 1",value:1,children:[{label:"child 1",value:11}]},{label:"select 2",value:2},{label:"select 3",value:3}],required:!1,requiredHint:"",customRule:"",customRuleHint:"",customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,onCreated:"",onMounted:"",onChange:"",onFocus:"",onBlur:"",onValidate:""}}],customFields=[];function addContainerWidgetSchema(n){containers.push(n)}function addCustomWidgetSchema(n){customFields.push(n)}const formTemplates=[{title:"\u5355\u5217\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t1.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json1.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u591A\u5217\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t2.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json2.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u5206\u7EC4\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t3.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json3.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u6807\u7B7E\u9875\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t4.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json4.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u4E3B\u4ECE\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t5.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json5.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u54CD\u5E94\u5F0F\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t6.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json6.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u95EE\u5377\u8C03\u67E5\u8868",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t7.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json7.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u56FA\u5B9A\u8868\u683C\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t8.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json8.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."}];var clipboard={exports:{}};/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(n,d){(function(p,m){n.exports=m()})(commonjsGlobal,function(){return function(){var e={686:function(g,a,c){c.d(a,{default:function(){return R}});var i=c(279),u=c.n(i),r=c(370),t=c.n(r),l=c(817),o=c.n(l);function s(V){try{return document.execCommand(V)}catch{return!1}}var f=function(F){var P=o()(F);return s("cut"),P},h=f;function v(V){var F=document.documentElement.getAttribute("dir")==="rtl",P=document.createElement("textarea");P.style.fontSize="12pt",P.style.border="0",P.style.padding="0",P.style.margin="0",P.style.position="absolute",P.style[F?"right":"left"]="-9999px";var j=window.pageYOffset||document.documentElement.scrollTop;return P.style.top="".concat(j,"px"),P.setAttribute("readonly",""),P.value=V,P}var $=function(F,P){var j=v(F);P.container.appendChild(j);var I=o()(j);return s("copy"),j.remove(),I},C=function(F){var P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},j="";return typeof F=="string"?j=$(F,P):F instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(F==null?void 0:F.type)?j=$(F.value,P):(j=o()(F),s("copy")),j},b=C;function y(V){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?y=function(P){return typeof P}:y=function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},y(V)}var _=function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},P=F.action,j=P===void 0?"copy":P,I=F.container,W=F.target,H=F.text;if(j!=="copy"&&j!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(W!==void 0)if(W&&y(W)==="object"&&W.nodeType===1){if(j==="copy"&&W.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(j==="cut"&&(W.hasAttribute("readonly")||W.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(H)return b(H,{container:I});if(W)return j==="cut"?h(W):b(W,{container:I})},E=_;function O(V){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(P){return typeof P}:O=function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},O(V)}function T(V,F){if(!(V instanceof F))throw new TypeError("Cannot call a class as a function")}function x(V,F){for(var P=0;P0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=O(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var W=this;this.listener=t()(I,"click",function(H){return W.onClick(H)})}},{key:"onClick",value:function(I){var W=I.delegateTarget||I.currentTarget,H=this.action(W)||"copy",z=E({action:H,container:this.container,target:this.target(W),text:this.text(W)});this.emit(z?"success":"error",{action:H,text:z,trigger:W,clearSelection:function(){W&&W.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return N("action",I)}},{key:"defaultTarget",value:function(I){var W=N("target",I);if(W)return document.querySelector(W)}},{key:"defaultText",value:function(I){return N("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return b(I,W)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],W=typeof I=="string"?[I]:I,H=!!document.queryCommandSupported;return W.forEach(function(z){H=H&&!!document.queryCommandSupported(z)}),H}}]),P}(u()),R=B},828:function(g){var a=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var c=Element.prototype;c.matches=c.matchesSelector||c.mozMatchesSelector||c.msMatchesSelector||c.oMatchesSelector||c.webkitMatchesSelector}function i(u,r){for(;u&&u.nodeType!==a;){if(typeof u.matches=="function"&&u.matches(r))return u;u=u.parentNode}}g.exports=i},438:function(g,a,c){var i=c(828);function u(l,o,s,f,h){var v=t.apply(this,arguments);return l.addEventListener(s,v,h),{destroy:function(){l.removeEventListener(s,v,h)}}}function r(l,o,s,f,h){return typeof l.addEventListener=="function"?u.apply(null,arguments):typeof s=="function"?u.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(v){return u(v,o,s,f,h)}))}function t(l,o,s,f){return function(h){h.delegateTarget=i(h.target,o),h.delegateTarget&&f.call(l,h)}}g.exports=r},879:function(g,a){a.node=function(c){return c!==void 0&&c instanceof HTMLElement&&c.nodeType===1},a.nodeList=function(c){var i=Object.prototype.toString.call(c);return c!==void 0&&(i==="[object NodeList]"||i==="[object HTMLCollection]")&&"length"in c&&(c.length===0||a.node(c[0]))},a.string=function(c){return typeof c=="string"||c instanceof String},a.fn=function(c){var i=Object.prototype.toString.call(c);return i==="[object Function]"}},370:function(g,a,c){var i=c(879),u=c(438);function r(s,f,h){if(!s&&!f&&!h)throw new Error("Missing required arguments");if(!i.string(f))throw new TypeError("Second argument must be a String");if(!i.fn(h))throw new TypeError("Third argument must be a Function");if(i.node(s))return t(s,f,h);if(i.nodeList(s))return l(s,f,h);if(i.string(s))return o(s,f,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function t(s,f,h){return s.addEventListener(f,h),{destroy:function(){s.removeEventListener(f,h)}}}function l(s,f,h){return Array.prototype.forEach.call(s,function(v){v.addEventListener(f,h)}),{destroy:function(){Array.prototype.forEach.call(s,function(v){v.removeEventListener(f,h)})}}}function o(s,f,h){return u(document.body,s,f,h)}g.exports=r},817:function(g){function a(c){var i;if(c.nodeName==="SELECT")c.focus(),i=c.value;else if(c.nodeName==="INPUT"||c.nodeName==="TEXTAREA"){var u=c.hasAttribute("readonly");u||c.setAttribute("readonly",""),c.select(),c.setSelectionRange(0,c.value.length),u||c.removeAttribute("readonly"),i=c.value}else{c.hasAttribute("contenteditable")&&c.focus();var r=window.getSelection(),t=document.createRange();t.selectNodeContents(c),r.removeAllRanges(),r.addRange(t),i=r.toString()}return i}g.exports=a},279:function(g){function a(){}a.prototype={on:function(c,i,u){var r=this.e||(this.e={});return(r[c]||(r[c]=[])).push({fn:i,ctx:u}),this},once:function(c,i,u){var r=this;function t(){r.off(c,t),i.apply(u,arguments)}return t._=i,this.on(c,t,u)},emit:function(c){var i=[].slice.call(arguments,1),u=((this.e||(this.e={}))[c]||[]).slice(),r=0,t=u.length;for(r;r{n[e]=d[e]})},addWindowResizeHandler=function(n){let d=window.onresize;typeof window.onresize!="function"?window.onresize=n:window.onresize=function(){d(),n()}},insertCustomCssToHead=function(n,d=""){let e=document.getElementsByTagName("head")[0],p=document.getElementById("vform-custom-css");p&&e.removeChild(p),d&&(p=document.getElementById("vform-custom-css-"+d),!!p&&e.removeChild(p));let m=document.createElement("style");m.type="text/css",m.rel="stylesheet",m.id=d?"vform-custom-css-"+d:"vform-custom-css";try{m.appendChild(document.createTextNode(n))}catch{m.styleSheet.cssText=n}e.appendChild(m)},insertGlobalFunctionsToHtml=function(n,d=""){let e=document.getElementsByTagName("body")[0],p=document.getElementById("v_form_global_functions");!!p&&e.removeChild(p),d&&(p=document.getElementById("v_form_global_functions-"+d),!!p&&e.removeChild(p));let m=document.createElement("script");m.id=d?"v_form_global_functions-"+d:"v_form_global_functions",m.type="text/javascript",m.innerHTML=n,e.appendChild(m)},loadRemoteScript=function(n,d){let e=encodeURIComponent(n);if(!document.getElementById(e)){let m=document.createElement("script");m.src=n,m.id=e,document.body.appendChild(m),m.onload=m.onreadystatechange=function(g,a){(a||!m.readyState||m.readyState==="loaded"||m.readyState==="complete")&&(m=m.onload=m.onreadystatechange=null,a||d())}}};function traverseFieldWidgets(n,d,e=null){!n||n.map(p=>{p.formItemFlag?d(p,e):p.type==="grid"?p.cols.map(m=>{traverseFieldWidgets(m.widgetList,d,p)}):p.type==="table"?p.rows.map(m=>{m.cols.map(g=>{traverseFieldWidgets(g.widgetList,d,p)})}):p.type==="tab"?p.tabs.map(m=>{traverseFieldWidgets(m.widgetList,d,p)}):(p.type==="sub-form"||p.category==="container")&&traverseFieldWidgets(p.widgetList,d,p)})}function traverseContainerWidgets(n,d){!n||n.map(e=>{e.category==="container"&&d(e),e.type==="grid"?e.cols.map(p=>{traverseContainerWidgets(p.widgetList,d)}):e.type==="table"?e.rows.map(p=>{p.cols.map(m=>{traverseContainerWidgets(m.widgetList,d)})}):e.type==="tab"?e.tabs.map(p=>{traverseContainerWidgets(p.widgetList,d)}):(e.type==="sub-form"||e.category==="container")&&traverseContainerWidgets(e.widgetList,d)})}function traverseAllWidgets(n,d){!n||n.map(e=>{d(e),e.type==="grid"?e.cols.map(p=>{d(p),traverseAllWidgets(p.widgetList,d)}):e.type==="table"?e.rows.map(p=>{p.cols.map(m=>{d(m),traverseAllWidgets(m.widgetList,d)})}):e.type==="tab"?e.tabs.map(p=>{traverseAllWidgets(p.widgetList,d)}):(e.type==="sub-form"||e.category==="container")&&traverseAllWidgets(e.widgetList,d)})}function handleWidgetForTraverse(n,d){n.category?traverseFieldWidgetsOfContainer(n,d):n.formItemFlag&&d(n)}function traverseFieldWidgetsOfContainer(n,d){n.type==="grid"?n.cols.forEach(e=>{e.widgetList.forEach(p=>{handleWidgetForTraverse(p,d)})}):n.type==="table"?n.rows.forEach(e=>{e.cols.forEach(p=>{p.widgetList.forEach(m=>{handleWidgetForTraverse(m,d)})})}):n.type==="tab"?n.tabs.forEach(e=>{e.widgetList.forEach(p=>{handleWidgetForTraverse(p,d)})}):n.type==="sub-form"?n.widgetList.forEach(e=>{handleWidgetForTraverse(e,d)}):n.category==="container"&&n.widgetList.forEach(e=>{handleWidgetForTraverse(e,d)})}function getAllFieldWidgets(n){if(!n)return[];let d=[];return traverseFieldWidgets(n,p=>{d.push({type:p.type,name:p.options.name,field:p})}),d}function getAllContainerWidgets(n){if(!n)return[];let d=[];return traverseContainerWidgets(n,p=>{d.push({type:p.type,name:p.options.name,container:p})}),d}function copyToClipboard(n,d,e,p,m){const g=new Clipboard(d.target,{text:()=>n});g.on("success",()=>{e.success(p),g.destroy()}),g.on("error",()=>{e.error(m),g.destroy()}),g.onClick(d)}function getQueryParam(n){let e=window.location.search.substring(1).split("&");for(let p=0;p{p=isDef(p)&&isDef(p[m])?p[m]:null}),p}let locale=require$$0$1.reactive({lang:localStorage.getItem("v_form_locale")||"zh-CN"});function createI18n(n){return{messages:n.messages,$st(d,...e){const p=get(this.messages[locale.lang],d);return typeof p=="function"?p(...e):p!==null?p:d},$st2(d,e){let p=this.messages[locale.lang];const m=get(p,d);return m!==null?m:get(p,e)},setLang(d){locale.lang=d}}}var en={};(function(n){Object.defineProperty(n,"__esModule",{value:!0});var d={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"}}};n.default=d})(en);var enLocaleElement=getDefaultExportFromCjs(en),zhCn={};(function(n){Object.defineProperty(n,"__esModule",{value:!0});var d={name:"zh-cn",el:{colorpicker:{confirm:"\u786E\u5B9A",clear:"\u6E05\u7A7A"},datepicker:{now:"\u6B64\u523B",today:"\u4ECA\u5929",cancel:"\u53D6\u6D88",clear:"\u6E05\u7A7A",confirm:"\u786E\u5B9A",selectDate:"\u9009\u62E9\u65E5\u671F",selectTime:"\u9009\u62E9\u65F6\u95F4",startDate:"\u5F00\u59CB\u65E5\u671F",startTime:"\u5F00\u59CB\u65F6\u95F4",endDate:"\u7ED3\u675F\u65E5\u671F",endTime:"\u7ED3\u675F\u65F6\u95F4",prevYear:"\u524D\u4E00\u5E74",nextYear:"\u540E\u4E00\u5E74",prevMonth:"\u4E0A\u4E2A\u6708",nextMonth:"\u4E0B\u4E2A\u6708",year:"\u5E74",month1:"1 \u6708",month2:"2 \u6708",month3:"3 \u6708",month4:"4 \u6708",month5:"5 \u6708",month6:"6 \u6708",month7:"7 \u6708",month8:"8 \u6708",month9:"9 \u6708",month10:"10 \u6708",month11:"11 \u6708",month12:"12 \u6708",weeks:{sun:"\u65E5",mon:"\u4E00",tue:"\u4E8C",wed:"\u4E09",thu:"\u56DB",fri:"\u4E94",sat:"\u516D"},months:{jan:"\u4E00\u6708",feb:"\u4E8C\u6708",mar:"\u4E09\u6708",apr:"\u56DB\u6708",may:"\u4E94\u6708",jun:"\u516D\u6708",jul:"\u4E03\u6708",aug:"\u516B\u6708",sep:"\u4E5D\u6708",oct:"\u5341\u6708",nov:"\u5341\u4E00\u6708",dec:"\u5341\u4E8C\u6708"}},select:{loading:"\u52A0\u8F7D\u4E2D",noMatch:"\u65E0\u5339\u914D\u6570\u636E",noData:"\u65E0\u6570\u636E",placeholder:"\u8BF7\u9009\u62E9"},cascader:{noMatch:"\u65E0\u5339\u914D\u6570\u636E",loading:"\u52A0\u8F7D\u4E2D",placeholder:"\u8BF7\u9009\u62E9",noData:"\u6682\u65E0\u6570\u636E"},pagination:{goto:"\u524D\u5F80",pagesize:"\u6761/\u9875",total:"\u5171 {total} \u6761",pageClassifier:"\u9875",page:"\u9875",prev:"\u4E0A\u4E00\u9875",next:"\u4E0B\u4E00\u9875",currentPage:"\u7B2C {pager} \u9875",prevPages:"\u5411\u524D {pager} \u9875",nextPages:"\u5411\u540E {pager} \u9875",deprecationWarning:"\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863"},messagebox:{title:"\u63D0\u793A",confirm:"\u786E\u5B9A",cancel:"\u53D6\u6D88",error:"\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!"},upload:{deleteTip:"\u6309 delete \u952E\u53EF\u5220\u9664",delete:"\u5220\u9664",preview:"\u67E5\u770B\u56FE\u7247",continue:"\u7EE7\u7EED\u4E0A\u4F20"},table:{emptyText:"\u6682\u65E0\u6570\u636E",confirmFilter:"\u7B5B\u9009",resetFilter:"\u91CD\u7F6E",clearFilter:"\u5168\u90E8",sumText:"\u5408\u8BA1"},tree:{emptyText:"\u6682\u65E0\u6570\u636E"},transfer:{noMatch:"\u65E0\u5339\u914D\u6570\u636E",noData:"\u65E0\u6570\u636E",titles:["\u5217\u8868 1","\u5217\u8868 2"],filterPlaceholder:"\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9",noCheckedFormat:"\u5171 {total} \u9879",hasCheckedFormat:"\u5DF2\u9009 {checked}/{total} \u9879"},image:{error:"\u52A0\u8F7D\u5931\u8D25"},pageHeader:{title:"\u8FD4\u56DE"},popconfirm:{confirmButtonText:"\u786E\u5B9A",cancelButtonText:"\u53D6\u6D88"}}};n.default=d})(zhCn);var zhLocaleElement=getDefaultExportFromCjs(zhCn),enLocale={application:{"zh-CN":"\u7B80\u4F53\u4E2D\u6587","en-US":"English",productTitle:"Online Form Designer",github:"GitHub",document:"Docs",qqGroup:"WeChat Group",deployment:"Deployment",subscription:"Subscription"},designer:{componentLib:"Components",formLib:"Templates",containerTitle:"Container",dragHandlerHint:"drag container or field to layout center",dragAction:"drag",basicFieldTitle:"Basic Field",advancedFieldTitle:"Advanced Field",customFieldTitle:"Customized Field",noWidgetHint:"Please select a widget from the left list, drag and drop to this container.",widgetLabel:{grid:"Grid",table:"Table",tab:"Tab",section:"Section","sub-form":"SubForm","grid-col":"GridCol","table-cell":"TableCell","tab-pane":"TabPane","data-table":"DataTable",input:"Input",textarea:"Textarea",number:"InputNumber",radio:"Radio",checkbox:"Checkbox",select:"Select",time:"Time","time-range":"Time range",date:"Date","date-range":"Date range",switch:"Switch",rate:"Rate",color:"ColorPicker",slider:"Slider","static-text":"Text","html-text":"HTML",button:"Button",divider:"Divider","picture-upload":"Picture","file-upload":"File","rich-editor":"Rich Editor",cascader:"Cascader",slot:"Slot",custom:"Custom Component"},hint:{selectParentWidget:"Select parent of this widget",moveUpWidget:"Move up this widget",moveDownWidget:"Move down this widget",cloneWidget:"Clone this widget",insertRow:"Insert new row",insertColumn:"Insert new column",remove:"Remove this widget",cellSetting:"Cell setting",dragHandler:"Drag handler",copyField:"Copy field widget",onlyFieldWidgetAcceptable:"Only field widget can be dragged into sub-form",moveUpFirstChildHint:"First child can not be move up",moveDownLastChildHint:"Last child can not be move down",closePreview:"Close",copyJson:"Copy",saveFormJson:"Save As File",copyVueCode:"Copy Vue Code",copyHtmlCode:"Copy HTML Code",copyJsonSuccess:"Copy succeed",importJsonSuccess:"Import succeed",invalidJsonFormat:"Invalid JSON format",jsonVersionMismatch:"Version of JSON mismatch",copyJsonFail:"Copy failed",copyVueCodeSuccess:"Copy succeed",copyVueCodeFail:"Copy failed",copyHtmlCodeSuccess:"Copy succeed",copyHtmlCodeFail:"Copy failed",saveVueCode:"Save Vue File",saveHtmlCode:"Save Html File",getFormData:"Get Data",resetForm:"Reset",disableForm:"Disable",enableForm:"Enable",exportFormData:"Form Data",copyFormData:"Copy",saveFormData:"Save As File",copyVue2SFC:"Copy Vue2",copyVue3SFC:"Copy Vue3",copySFCFail:"Copy failed",copySFCSuccess:"Copy succeed",saveVue2SFC:"Save As Vue2",saveVue3SFC:"Save As Vue3",fileNameForSave:"File name:",saveFileTitle:"Save as File",fileNameInputPlaceholder:"Enter the file name",sampleLoadedSuccess:"Example loaded successfully",sampleLoadedFail:"Sample load failed",loadFormTemplate:"Load This",loadFormTemplateHint:"Are you sure to load this template?",loadFormTemplateSuccess:"Load form template success!",loadFormTemplateFailed:"Load form template failed.",currentNodeCannotBeSelected:"The current node cannot be selected.",widgetSetting:"Widget Config",formSetting:"Form Config",prompt:"Prompt",confirm:"OK",cancel:"Cancel",import:"Import",importJsonHint:"The code to be imported should have the following JSON format.",invalidOptionsData:"Invalid data of options:",lastPaneCannotBeDeleted:"The last pane cannot be deleted.",duplicateName:"Duplicate name: ",nameRequired:"Name required.",numberValidator:"Number",letterValidator:"Letter",letterAndNumberValidator:"LetterAndNumber",mobilePhoneValidator:"MobilePhone",emailValidator:"Email",urlValidator:"URL",noChineseValidator:"Non-Chinese",chineseValidator:"Chinese",rowspanNotConsistentForMergeEntireRow:"Cells in this row don't have the same rowspan, operation failed.",colspanNotConsistentForMergeEntireColumn:"Cells in this column don't have the same colspan, operation failed.",rowspanNotConsistentForDeleteEntireRow:"Cells in this row don't have the same rowspan, operation failed.",colspanNotConsistentForDeleteEntireColumn:"Cells in this column don't have the same colspan, operation failed.",lastColCannotBeDeleted:"The last col cannot be deleted.",lastRowCannotBeDeleted:"The last row cannot be deleted."},toolbar:{undoHint:"Undo",redoHint:"Redo",pcLayout:"PC",padLayout:"Pad",mobileLayout:"H5",nodeTreeHint:"Tree View Of Component Hierarchy",nodeTreeTitle:"Tree View Of Component Hierarchy",clear:"Clear",preview:"Preview",importJson:"Import",exportJson:"Export",exportCode:"Codes",generateCode:"Generate Code",generateSFC:"Generate SFC"},setting:{basicSetting:"Basic Setting",attributeSetting:"Attribute Setting",commonSetting:"Common Setting",advancedSetting:"Advanced Setting",eventSetting:"Event Setting",uniqueName:"Unique Name",editNameHelp:"Press enter to confirm the modification",label:"Label",displayType:"Type",defaultValue:"Default Value",placeholder:"Placeholder",startPlaceholder:"Start Placeholder",endPlaceholder:"End Placeholder",widgetColumnWidth:"Width",widgetSize:"Size",fontSize:"Font Size",textAlign:"Text Align",autoFullWidth:"Auto Full Width",showStops:"Show Stops",displayStyle:"Display Style",inlineLayout:"inline",blockLayout:"block",buttonStyle:"Show As Button",border:"Show Border",labelWidth:"Width Of Label",rows:"Rows",labelHidden:"Hide Label",required:"Required",requiredHint:"Failure Hint",validation:"Validation",validationHelp:"Regular expressions supported",validationHint:"Validation Hint",readonly:"Readonly",disabled:"Disabled",hidden:"Hidden",textContent:"Text",preWrap:"Line Wrap",htmlContent:"HTML",clearable:"Clearable",editable:"Editable",format:"Format",valueFormat:"Value Format",showPassword:"Show Reveal",filterable:"Filterable",allowCreate:"Allow Create",remote:"Remote Query",automaticDropdown:"Automatic Dropdown",multiple:"Multiple",multipleLimit:"Multiple Limit",checkStrictly:"Any Level Selectable",showAllLevels:"Show All Levels",contentPosition:"Content Position",plain:"Plain",round:"Round",circle:"Circle",icon:"Icon",optionsSetting:"Options Setting",addOption:"Add Option",importOptions:"Import Options",resetDefault:"Reset Default",uploadSetting:"Upload Setting",uploadURL:"Upload URL",uploadTip:"Tip Content",withCredentials:"Send Cookie",multipleSelect:"File Multi-select",showFileList:"Show File List",limit:"Max Upload Number",fileMaxSize:"Max Size(MB)",fileTypes:"Upload File Types",fileTypesHelp:"Allows to add more file types",headers:"Request Headers",cellWidth:"Width",cellHeight:"Height",wordBreak:"Line Wrap",gridColHeight:"Height Of Col(px)",gutter:"Gutter(px)",columnSetting:"Cols Setting",colsOfGrid:"Cols Of Grid:",colSpanTitle:"Spans Of Col",colOffsetTitle:"Offset Of Col",colPushTitle:"Push Of Col",colPullTitle:"Pull Of Col",addColumn:"Add Column",responsive:"Responsive",tabPaneSetting:"Tab Panes",addTabPane:"Add Tab Pane",paneActive:"Active",customLabelIcon:"Custom Label",labelIconClass:"Label Icon Class",labelIconPosition:"Label Icon Position",labelTooltip:"Label Tooltip",minValue:"Min Value",maxValue:"Max Value",precision:"Precision",step:"Step",controlsPosition:"Controls Position",minLength:"Min Length",maxLength:"Max Length",showWordLimit:"Show Word Limit",prefixIcon:"Prefix Icon",suffixIcon:"Suffix Icon",inputButton:"Input Button Setting",appendButton:"Append Button",appendButtonDisabled:"Button Disabled",appendButtonIcon:"Append Button Icon",buttonIcon:"Button Icon",switchWidth:"Width of Switch(px)",activeText:"Active Text",inactiveText:"Inactive Text",activeColor:"Active Color",inactiveColor:"Inactive Color",maxStars:"Stars Max Number",lowThreshold:"Low Threshold",highThreshold:"High Threshold",allowHalf:"Allow Half",showText:"Show Text",showScore:"Show Score",range:"Range",vertical:"Vertical",showBlankRow:"Show Blank Row",showRowNumber:"Show Row Number",contentHeight:"Content Area Height",insertColumnToLeft:"insert column to left",insertColumnToRight:"insert column to right",insertRowAbove:"insert row above",insertRowBelow:"insert row below",mergeLeftColumn:"merge left cell",mergeRightColumn:"merge right cell",mergeEntireRow:"merge entire row",mergeRowAbove:"merge cell above",mergeRowBelow:"merge cell below",mergeEntireColumn:"merge entire column",undoMergeCol:"undo merge column",undoMergeRow:"undo merge row",deleteEntireCol:"delete entire column",deleteEntireRow:"delete entire row",widgetName:"Unique Name",formSize:"Size",labelPosition:"Position Of Label",topPosition:"Top",leftPosition:"Left",labelAlign:"Label Align",leftAlign:"Left",centerAlign:"Center",rightAlign:"Right",formCss:"Form CSS",addCss:"Edit",customClass:"Custom Class",globalFunctions:"Global Functions",addEventHandler:"Edit",editWidgetEventHandler:"Edit Widget Event Handler",editFormEventHandler:"Edit Form Event Handler",formSFCSetting:"SFC Setting",formModelName:"Model Name",formRefName:"Ref Name",formRulesName:"Rules Name",syntaxCheckWarning:"Syntax error in the javascript codes, please check again!"}}},zhLocale={application:{"zh-CN":"\u7B80\u4F53\u4E2D\u6587","en-US":"English",productTitle:"\u8868\u5355\u8BBE\u8BA1\u5668",github:"GitHub",document:"\u6587\u6863",qqGroup:"\u6280\u672FWX\u7FA4",deployment:"\u79C1\u6709\u90E8\u7F72",subscription:"\u8BA2\u9605Pro"},designer:{componentLib:"\u7EC4\u4EF6\u5E93",formLib:"\u8868\u5355\u6A21\u677F",containerTitle:"\u5BB9\u5668",dragHandlerHint:"\u9F20\u6807\u62D6\u62FD\u5BB9\u5668\u7EC4\u4EF6\u6216\u5B57\u6BB5\u7EC4\u4EF6\u5E76\u653E\u7F6E\u4E8E\u8868\u5355\u4E2D",dragAction:"\u62D6\u52A8",basicFieldTitle:"\u57FA\u7840\u5B57\u6BB5",advancedFieldTitle:"\u9AD8\u7EA7\u5B57\u6BB5",customFieldTitle:"\u81EA\u5B9A\u4E49\u6269\u5C55\u5B57\u6BB5",noWidgetHint:"\u8BF7\u4ECE\u5DE6\u4FA7\u5217\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u7EC4\u4EF6, \u7136\u540E\u7528\u9F20\u6807\u62D6\u52A8\u7EC4\u4EF6\u653E\u7F6E\u4E8E\u6B64\u5904.",widgetLabel:{grid:"\u6805\u683C",table:"\u8868\u683C",tab:"\u6807\u7B7E\u9875",section:"\u533A\u5757","sub-form":"\u5B50\u8868\u5355","grid-col":"\u6805\u683C\u5217","table-cell":"\u5355\u5143\u683C","tab-pane":"\u9009\u9879\u5361\u9875","data-table":"\u6570\u636E\u8868\u683C",input:"\u5355\u884C\u8F93\u5165",textarea:"\u591A\u884C\u8F93\u5165",number:"\u8BA1\u6570\u5668",radio:"\u5355\u9009\u9879",checkbox:"\u591A\u9009\u9879",select:"\u4E0B\u62C9\u9009\u9879",time:"\u65F6\u95F4","time-range":"\u65F6\u95F4\u8303\u56F4",date:"\u65E5\u671F","date-range":"\u65E5\u671F\u8303\u56F4",switch:"\u5F00\u5173",rate:"\u8BC4\u5206",color:"\u989C\u8272\u9009\u62E9\u5668",slider:"\u6ED1\u5757","static-text":"\u9759\u6001\u6587\u5B57","html-text":"HTML",button:"\u6309\u94AE",divider:"\u5206\u9694\u7EBF","picture-upload":"\u56FE\u7247","file-upload":"\u6587\u4EF6","rich-editor":"\u5BCC\u6587\u672C",cascader:"\u7EA7\u8054\u9009\u62E9",slot:"\u63D2\u69FD",custom:"Custom Component"},hint:{selectParentWidget:"\u9009\u4E2D\u7236\u7EC4\u4EF6",moveUpWidget:"\u4E0A\u79FB\u7EC4\u4EF6",moveDownWidget:"\u4E0B\u79FB\u7EC4\u4EF6",cloneWidget:"\u590D\u5236\u7EC4\u4EF6",insertRow:"\u63D2\u5165\u65B0\u884C",insertColumn:"\u63D2\u5165\u65B0\u5217",remove:"\u79FB\u9664\u7EC4\u4EF6",cellSetting:"\u5355\u5143\u683C\u64CD\u4F5C",dragHandler:"\u62D6\u62FD\u624B\u67C4",copyField:"\u590D\u5236\u5B57\u6BB5\u7EC4\u4EF6",onlyFieldWidgetAcceptable:"\u5B50\u8868\u5355\u53EA\u80FD\u63A5\u6536\u5B57\u6BB5\u7EC4\u4EF6",moveUpFirstChildHint:"\u5DF2\u7ECF\u79FB\u52A8\u5230\u6700\u4E0A\u9762",moveDownLastChildHint:"\u5DF2\u7ECF\u79FB\u52A8\u5230\u6700\u4E0B\u9762",closePreview:"\u5173\u95ED",copyJson:"\u590D\u5236JSON",saveFormJson:"\u4FDD\u5B58\u4E3A\u6587\u4EF6",copyVueCode:"\u590D\u5236Vue\u4EE3\u7801",copyHtmlCode:"\u590D\u5236HTML\u4EE3\u7801",copyJsonSuccess:"\u590D\u5236JSON\u6210\u529F",importJsonSuccess:"\u5BFC\u5165JSON\u6210\u529F",invalidJsonFormat:"\u65E0\u6548\u7684\u8868\u5355JSON\u683C\u5F0F",jsonVersionMismatch:"\u8868\u5355JSON\u7248\u672C\u53F7\u4E0D\u5339\u914D",copyJsonFail:"\u590D\u5236JSON\u5931\u8D25",copyVueCodeSuccess:"\u590D\u5236Vue\u4EE3\u7801\u6210\u529F",copyVueCodeFail:"\u590D\u5236Vue\u4EE3\u7801\u5931\u8D25",copyHtmlCodeSuccess:"\u590D\u5236HTML\u4EE3\u7801\u6210\u529F",copyHtmlCodeFail:"\u590D\u5236HTML\u4EE3\u7801\u5931\u8D25",saveVueCode:"\u4FDD\u5B58Vue\u6587\u4EF6",saveHtmlCode:"\u4FDD\u5B58Html\u6587\u4EF6",getFormData:"\u83B7\u53D6\u6570\u636E",resetForm:"\u91CD\u7F6E\u8868\u5355",disableForm:"\u7981\u7528\u7F16\u8F91",enableForm:"\u6062\u590D\u7F16\u8F91",exportFormData:"\u8868\u5355\u6570\u636E",copyFormData:"\u590D\u5236JSON",saveFormData:"\u4FDD\u5B58\u4E3A\u6587\u4EF6",copyVue2SFC:"\u590D\u5236Vue2\u4EE3\u7801",copyVue3SFC:"\u590D\u5236Vue3\u4EE3\u7801",copySFCFail:"\u590D\u5236SFC\u4EE3\u7801\u5931\u8D25",copySFCSuccess:"\u590D\u5236SFC\u4EE3\u7801\u6210\u529F",saveVue2SFC:"\u4FDD\u5B58\u4E3AVue2\u7EC4\u4EF6",saveVue3SFC:"\u4FDD\u5B58\u4E3AVue3\u7EC4\u4EF6",fileNameForSave:"\u6587\u4EF6\u540D\uFF1A",saveFileTitle:"\u4FDD\u5B58\u4E3A\u6587\u4EF6",fileNameInputPlaceholder:"\u8BF7\u8F93\u5165\u6587\u4EF6\u540D",sampleLoadedSuccess:"\u8868\u5355\u793A\u4F8B\u52A0\u8F7D\u6210\u529F",sampleLoadedFail:"\u8868\u5355\u793A\u4F8B\u52A0\u8F7D\u5931\u8D25",loadFormTemplate:"\u52A0\u8F7D\u6B64\u6A21\u677F",loadFormTemplateHint:"\u662F\u5426\u52A0\u8F7D\u8FD9\u4E2A\u6A21\u677F\uFF1F\u52A0\u8F7D\u540E\u4F1A\u8986\u76D6\u8BBE\u8BA1\u5668\u5F53\u524D\u8868\u5355\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u201C\u64A4\u9500\u201D\u529F\u80FD\u6062\u590D\u3002",loadFormTemplateSuccess:"\u8868\u5355\u6A21\u677F\u52A0\u8F7D\u6210\u529F",loadFormTemplateFailed:"\u8868\u5355\u6A21\u677F\u52A0\u8F7D\u5931\u8D25",currentNodeCannotBeSelected:"\u5F53\u524D\u7EC4\u4EF6\u8282\u70B9\u4E0D\u53EF\u9009\u62E9",widgetSetting:"\u7EC4\u4EF6\u8BBE\u7F6E",formSetting:"\u8868\u5355\u8BBE\u7F6E",prompt:"\u63D0\u793A",confirm:"\u786E\u5B9A",cancel:"\u53D6\u6D88",import:"\u5BFC\u5165",importJsonHint:"\u5BFC\u5165\u7684JSON\u5185\u5BB9\u987B\u7B26\u5408\u4E0B\u8FF0\u683C\u5F0F\uFF0C\u4EE5\u4FDD\u8BC1\u987A\u5229\u5BFC\u5165.",invalidOptionsData:"\u65E0\u6548\u7684\u9009\u9879\u6570\u636E:",lastPaneCannotBeDeleted:"\u4EC5\u5269\u4E00\u4E2A\u9009\u9879\u5361\u9875\u4E0D\u53EF\u5220\u9664.",duplicateName:"\u7EC4\u4EF6\u540D\u79F0\u5DF2\u5B58\u5728: ",nameRequired:"\u7EC4\u4EF6\u540D\u79F0\u4E0D\u53EF\u4E3A\u7A7A",numberValidator:"\u6570\u5B57",letterValidator:"\u5B57\u6BCD",letterAndNumberValidator:"\u6570\u5B57\u5B57\u6BCD",mobilePhoneValidator:"\u624B\u673A\u53F7\u7801",emailValidator:"\u90AE\u7BB1",urlValidator:"\u7F51\u5740",noChineseValidator:"\u975E\u4E2D\u6587\u5B57\u7B26",chineseValidator:"\u4EC5\u4E2D\u6587\u5B57\u7B26",rowspanNotConsistentForMergeEntireRow:"\u5B58\u5728\u884C\u9AD8\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u65E0\u6CD5\u5408\u5E76\u6574\u884C.",colspanNotConsistentForMergeEntireColumn:"\u5B58\u5728\u5217\u5BBD\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u65E0\u6CD5\u5408\u5E76\u6574\u5217.",rowspanNotConsistentForDeleteEntireRow:"\u5B58\u5728\u884C\u9AD8\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u4E0D\u53EF\u5220\u9664\u6574\u884C.",colspanNotConsistentForDeleteEntireColumn:"\u5B58\u5728\u5217\u5BBD\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u4E0D\u53EF\u5220\u9664\u6574\u5217.",lastColCannotBeDeleted:"\u6700\u540E\u4E00\u5217\u4E0D\u53EF\u5220\u9664.",lastRowCannotBeDeleted:"\u6700\u540E\u4E00\u884C\u4E0D\u53EF\u5220\u9664."},toolbar:{undoHint:"\u64A4\u9500",redoHint:"\u91CD\u505A",pcLayout:"PC",padLayout:"Pad",mobileLayout:"H5",nodeTreeHint:"\u7EC4\u4EF6\u5C42\u6B21\u7ED3\u6784\u6811",nodeTreeTitle:"\u7EC4\u4EF6\u5C42\u6B21\u7ED3\u6784\u6811",clear:"\u6E05\u7A7A",preview:"\u9884\u89C8",importJson:"\u5BFC\u5165JSON",exportJson:"\u5BFC\u51FAJSON",exportCode:"\u5BFC\u51FA\u4EE3\u7801",generateCode:"\u751F\u6210\u4EE3\u7801",generateSFC:"\u751F\u6210SFC"},setting:{basicSetting:"\u57FA\u672C\u5C5E\u6027",attributeSetting:"\u5C5E\u6027\u8BBE\u7F6E",commonSetting:"\u5E38\u89C1\u5C5E\u6027",advancedSetting:"\u9AD8\u7EA7\u5C5E\u6027",eventSetting:"\u4E8B\u4EF6\u5C5E\u6027",uniqueName:"\u552F\u4E00\u540D\u79F0",editNameHelp:"\u4FEE\u6539\u540D\u79F0\u540E\u9700\u6309\u56DE\u8F66\u786E\u8BA4",label:"\u6807\u7B7E",displayType:"\u663E\u793A\u7C7B\u578B",defaultValue:"\u9ED8\u8BA4\u503C",placeholder:"\u5360\u4F4D\u5185\u5BB9",startPlaceholder:"\u8D77\u59CB\u5360\u4F4D\u5185\u5BB9",endPlaceholder:"\u622A\u6B62\u5360\u4F4D\u5185\u5BB9",widgetColumnWidth:"\u7EC4\u4EF6\u5217\u5BBD",widgetSize:"\u7EC4\u4EF6\u5927\u5C0F",fontSize:"\u5B57\u4F53\u5927\u5C0F",textAlign:"\u6587\u5B57\u5BF9\u9F50",autoFullWidth:"\u81EA\u52A8\u62C9\u4F38\u5BBD\u5EA6",showStops:"\u663E\u793A\u95F4\u65AD\u70B9",displayStyle:"\u663E\u793A\u6837\u5F0F",inlineLayout:"\u884C\u5185",blockLayout:"\u5757",buttonStyle:"\u663E\u793A\u4E3A\u6309\u94AE",border:"\u5E26\u6709\u8FB9\u6846",labelWidth:"\u6807\u7B7E\u5BBD\u5EA6",rows:"\u884C\u6570",labelHidden:"\u9690\u85CF\u5B57\u6BB5\u6807\u7B7E",required:"\u5FC5\u586B\u5B57\u6BB5",requiredHint:"\u5FC5\u586B\u6821\u9A8C\u63D0\u793A",validation:"\u5B57\u6BB5\u6821\u9A8C",validationHelp:"\u652F\u6301\u8F93\u5165\u6B63\u5219\u8868\u8FBE\u5F0F",validationHint:"\u6821\u9A8C\u5931\u8D25\u63D0\u793A",readonly:"\u53EA\u8BFB",disabled:"\u7981\u7528",hidden:"\u9690\u85CF",textContent:"\u9759\u6001\u6587\u5B57",preWrap:"\u81EA\u52A8\u6362\u884C",htmlContent:"HTML",clearable:"\u53EF\u6E05\u9664",editable:"\u53EF\u8F93\u5165",format:"\u663E\u793A\u683C\u5F0F",valueFormat:"\u7ED1\u5B9A\u503C\u683C\u5F0F",showPassword:"\u53EF\u663E\u793A\u5BC6\u7801",filterable:"\u53EF\u641C\u7D22\u9009\u9879",allowCreate:"\u5141\u8BB8\u521B\u5EFA\u9009\u9879",remote:"\u53EF\u8FDC\u7A0B\u641C\u7D22",automaticDropdown:"\u81EA\u52A8\u5F39\u51FA\u9009\u9879",multiple:"\u9009\u9879\u53EF\u591A\u9009",multipleLimit:"\u591A\u9009\u6570\u91CF\u9650\u5236",checkStrictly:"\u4EFB\u610F\u7EA7\u8282\u70B9\u53EF\u9009",showAllLevels:"\u663E\u793A\u5B8C\u6574\u8DEF\u5F84",contentPosition:"\u6587\u5B57\u4F4D\u7F6E",plain:"\u6734\u7D20\u6309\u94AE",round:"\u5706\u89D2\u6309\u94AE",circle:"\u5706\u5F62\u6309\u94AE",icon:"\u56FE\u6807",optionsSetting:"\u9009\u9879\u8BBE\u7F6E",addOption:"\u589E\u52A0\u9009\u9879",importOptions:"\u5BFC\u5165\u9009\u9879",resetDefault:"\u91CD\u8BBE\u9009\u4E2D\u9879",uploadSetting:"\u4E0A\u4F20\u53C2\u6570\u8BBE\u7F6E",uploadURL:"\u4E0A\u4F20\u5730\u5740",uploadTip:"\u4E0A\u4F20\u63D0\u793A\u5185\u5BB9",withCredentials:"\u53D1\u9001cookie\u51ED\u8BC1",multipleSelect:"\u6587\u4EF6\u53EF\u591A\u9009",showFileList:"\u663E\u793A\u6587\u4EF6\u5217\u8868",limit:"\u6700\u5927\u4E0A\u4F20\u6570\u91CF",fileMaxSize:"\u6587\u4EF6\u5927\u5C0F\u9650\u5236(MB)",fileTypes:"\u4E0A\u4F20\u6587\u4EF6\u7C7B\u578B",fileTypesHelp:"\u652F\u6301\u6DFB\u52A0\u5176\u4ED6\u6587\u4EF6\u7C7B\u578B",headers:"\u4E0A\u4F20\u8BF7\u6C42\u5934",cellWidth:"\u5BBD\u5EA6",cellHeight:"\u9AD8\u5EA6",wordBreak:"\u6587\u5B57\u81EA\u52A8\u6362\u884C",gridColHeight:"\u6805\u683C\u5217\u7EDF\u4E00\u9AD8\u5EA6(px)",gutter:"\u6805\u683C\u95F4\u9694(px)",columnSetting:"\u6805\u683C\u5C5E\u6027\u8BBE\u7F6E",colsOfGrid:"\u5F53\u524D\u6805\u683C\u5217:",colSpanTitle:"\u6805\u683C\u5BBD\u5EA6",colOffsetTitle:"\u5DE6\u4FA7\u95F4\u9694\u683C\u6570",colPushTitle:"\u53F3\u79FB\u6805\u683C\u6570",colPullTitle:"\u5DE6\u79FB\u6805\u683C\u6570",addColumn:"\u589E\u52A0\u6805\u683C",responsive:"\u54CD\u5E94\u5F0F\u5E03\u5C40",tabPaneSetting:"\u9009\u9879\u5361\u8BBE\u7F6E",addTabPane:"\u589E\u52A0\u9009\u9879\u5361\u9875",paneActive:"\u6FC0\u6D3B",customLabelIcon:"\u5B9A\u5236\u5B57\u6BB5\u6807\u7B7E",labelIconClass:"\u6807\u7B7EIcon\u6837\u5F0F",labelIconPosition:"\u6807\u7B7EIcon\u4F4D\u7F6E",labelTooltip:"\u6807\u7B7E\u6587\u5B57\u63D0\u793A",minValue:"\u6700\u5C0F\u503C",maxValue:"\u6700\u5927\u503C",precision:"\u7CBE\u5EA6",step:"\u589E\u51CF\u6B65\u957F",controlsPosition:"\u63A7\u5236\u6309\u94AE\u4F4D\u7F6E",minLength:"\u6700\u5C0F\u957F\u5EA6",maxLength:"\u6700\u5927\u957F\u5EA6",showWordLimit:"\u663E\u793A\u5B57\u6570\u7EDF\u8BA1",prefixIcon:"\u5934\u90E8Icon",suffixIcon:"\u5C3E\u90E8Icon",inputButton:"\u8F93\u5165\u6846\u6309\u94AE\u8BBE\u7F6E",appendButton:"\u6DFB\u52A0\u540E\u7F6E\u6309\u94AE",appendButtonDisabled:"\u540E\u7F6E\u6309\u94AE\u7981\u7528",appendButtonIcon:"\u540E\u7F6E\u6309\u94AEIcon",buttonIcon:"\u6309\u94AEIcon",switchWidth:"\u5F00\u5173\u5BBD\u5EA6\uFF08\u50CF\u7D20\uFF09",activeText:"\u5F00\u542F\u65F6\u6587\u5B57\u63CF\u8FF0",inactiveText:"\u5173\u95ED\u65F6\u6587\u5B57\u63CF\u8FF0",activeColor:"\u5F00\u542F\u65F6\u80CC\u666F\u8272",inactiveColor:"\u5173\u95ED\u65F6\u80CC\u666F\u8272",maxStars:"\u6700\u5927\u8BC4\u5206\u503C",lowThreshold:"\u4F4E\u5206\u754C\u9650\u503C",highThreshold:"\u9AD8\u5206\u754C\u9650\u503C",allowHalf:"\u5141\u8BB8\u534A\u9009",showText:"\u663E\u793A\u8F85\u52A9\u6587\u5B57",showScore:"\u663E\u793A\u5F53\u524D\u5206\u6570",range:"\u662F\u5426\u4E3A\u8303\u56F4\u9009\u62E9",vertical:"\u662F\u5426\u7AD6\u5411\u663E\u793A",showBlankRow:"\u9ED8\u8BA4\u663E\u793A\u65B0\u884C",showRowNumber:"\u663E\u793A\u884C\u53F7",contentHeight:"\u5185\u5BB9\u533A\u9AD8\u5EA6",insertColumnToLeft:"\u63D2\u5165\u5DE6\u4FA7\u5217",insertColumnToRight:"\u63D2\u5165\u53F3\u4FA7\u5217",insertRowAbove:"\u63D2\u5165\u4E0A\u65B9\u884C",insertRowBelow:"\u63D2\u5165\u4E0B\u65B9\u884C",mergeLeftColumn:"\u5408\u5E76\u5DE6\u4FA7\u5355\u5143\u683C",mergeRightColumn:"\u5408\u5E76\u53F3\u4FA7\u5355\u5143\u683C",mergeEntireRow:"\u5408\u5E76\u6574\u884C",mergeRowAbove:"\u5408\u5E76\u4E0A\u65B9\u5355\u5143\u683C",mergeRowBelow:"\u5408\u5E76\u4E0B\u65B9\u5355\u5143\u683C",mergeEntireColumn:"\u5408\u5E76\u6574\u5217",undoMergeCol:"\u64A4\u9500\u5217\u5408\u5E76",undoMergeRow:"\u64A4\u9500\u884C\u5408\u5E76",deleteEntireCol:"\u5220\u9664\u6574\u5217",deleteEntireRow:"\u5220\u9664\u6574\u884C",widgetName:"\u7EC4\u4EF6\u552F\u4E00\u540D\u79F0",formSize:"\u5168\u5C40\u7EC4\u4EF6\u5927\u5C0F",labelPosition:"\u6807\u7B7E\u4F4D\u7F6E",topPosition:"\u9876\u90E8",leftPosition:"\u5DE6\u8FB9",labelAlign:"\u5B57\u6BB5\u6807\u7B7E\u5BF9\u9F50",leftAlign:"\u5C45\u5DE6",centerAlign:"\u5C45\u4E2D",rightAlign:"\u5C45\u53F3",formCss:"\u8868\u5355\u5168\u5C40CSS",addCss:"\u7F16\u5199CSS",customClass:"\u81EA\u5B9A\u4E49CSS\u6837\u5F0F",globalFunctions:"\u8868\u5355\u5168\u5C40\u51FD\u6570",addEventHandler:"\u7F16\u5199\u4EE3\u7801",editWidgetEventHandler:"\u7EC4\u4EF6\u4E8B\u4EF6\u5904\u7406",editFormEventHandler:"\u8868\u5355\u4E8B\u4EF6\u5904\u7406",formSFCSetting:"\u751F\u6210SFC\u8BBE\u7F6E",formModelName:"\u6570\u636E\u5BF9\u8C61\u540D\u79F0",formRefName:"\u5F15\u7528\u540D\u79F0",formRulesName:"\u9A8C\u8BC1\u89C4\u5219\u540D\u79F0",syntaxCheckWarning:"JS\u4EE3\u7801\u5B58\u5728\u8BED\u6CD5\u9519\u8BEF\uFF0C\u8BF7\u4ED4\u7EC6\u68C0\u67E5\uFF01"}}},enLocale_render={render:{hint:{prompt:"Prompt",confirm:"OK",cancel:"Cancel",selectPlaceholder:"Pick some item",timePlaceholder:"Select time",startTimePlaceholder:"Start time",endTimePlaceholder:"End time",datePlaceholder:"Select date",startDatePlaceholder:"Start date",endDatePlaceholder:"End date",blankCellContent:"--",uploadError:"Upload error: ",uploadExceed:"The maximum number(${uploadLimit}) of file uploads has been exceeded.",unsupportedFileType:"Unsupported format: ",fileSizeExceed:"File size out of limit: ",refNotFound:"Ref not found: ",fieldRequired:"Input value should be not null.",invalidNumber:"Invalid number format",selectFile:" File...",downloadFile:"Download",removeFile:"Remove",validationFailed:"Form validation failed",subFormAction:"Action",subFormAddAction:"Add",subFormAddActionHint:"add new row",insertSubFormRow:"insert new row",deleteSubFormRow:"delete this row",nonSubFormType:"The type of widget don't match sub-form"}}},zhLocale_render={render:{hint:{prompt:"\u63D0\u793A",confirm:"\u786E\u5B9A",cancel:"\u53D6\u6D88",selectPlaceholder:"\u8BF7\u9009\u62E9",timePlaceholder:"\u9009\u62E9\u65F6\u95F4",startTimePlaceholder:"\u8D77\u59CB\u65F6\u95F4",endTimePlaceholder:"\u622A\u6B62\u65F6\u95F4",datePlaceholder:"\u9009\u62E9\u65E5\u671F",startDatePlaceholder:"\u8D77\u59CB\u65E5\u671F",endDatePlaceholder:"\u622A\u6B62\u65E5\u671F",blankCellContent:"--",uploadError:"\u4E0A\u4F20\u9519\u8BEF: ",uploadExceed:"\u6700\u5927\u4E0A\u4F20\u6570\u91CF(${uploadLimit})\u5DF2\u8D85\u51FA.",unsupportedFileType:"\u4E0D\u652F\u6301\u683C\u5F0F: ",fileSizeExceed:"\u6587\u4EF6\u5927\u5C0F\u5DF2\u8D85\u51FA: ",refNotFound:"\u7EC4\u4EF6\u672A\u627E\u5230: ",fieldRequired:"\u5B57\u6BB5\u503C\u4E0D\u53EF\u4E3A\u7A7A",invalidNumber:"\u6570\u636E\u683C\u5F0F\u9519\u8BEF",selectFile:" \u9009\u62E9\u6587\u4EF6",downloadFile:"\u4E0B\u8F7D",removeFile:"\u79FB\u9664",validationFailed:"\u8868\u5355\u6570\u636E\u6821\u9A8C\u5931\u8D25",subFormAction:"\u64CD\u4F5C",subFormAddAction:"\u65B0\u589E",subFormAddActionHint:"\u65B0\u589E\u884C",insertSubFormRow:"\u63D2\u5165\u884C",deleteSubFormRow:"\u5220\u9664\u884C",nonSubFormType:"\u7EC4\u4EF6\u7C7B\u578B\u4E0D\u662F\u5B50\u8868\u5355"}}},enLocale_extension={extension:{widgetLabel:{card:"Card",alert:"Alert"},setting:{cardFolded:"Folded",cardShowFold:"Show Fold",cardWidth:"Width Of Card",cardShadow:"Shadow",alertTitle:"Title",alertType:"Type",description:"Description",closable:"Closable",closeText:"Text On Close Btn",center:"Center",showIcon:"Show Icon",effect:"Effect"}}},zhLocale_extension={extension:{widgetLabel:{card:"\u5361\u7247",alert:"\u63D0\u793A"},setting:{cardFolded:"\u662F\u5426\u6536\u8D77",cardShowFold:"\u663E\u793A\u6298\u53E0\u6309\u94AE",cardWidth:"\u5361\u7247\u5BBD\u5EA6",cardShadow:"\u663E\u793A\u9634\u5F71",alertTitle:"\u6807\u9898",alertType:"\u7C7B\u578B",description:"\u8F85\u52A9\u6027\u6587\u5B57",closable:"\u662F\u5426\u53EF\u5173\u95ED",closeText:"\u5173\u95ED\u6309\u94AE\u6587\u5B57",center:"\u6587\u5B57\u5C45\u4E2D",showIcon:"\u663E\u793A\u56FE\u6807",effect:"\u663E\u793A\u6548\u679C"}}};const langResources={"en-US":xe(xe(xe(xe({something:{}},enLocaleElement),enLocale),enLocale_render),enLocale_extension),"zh-CN":xe(xe(xe(xe({something:{}},zhLocaleElement),zhLocale),zhLocale_render),zhLocale_extension)},i18n=createI18n({locale:localStorage.getItem("v_form_locale")||"zh-CN",messages:langResources}),changeLocale=function(n){i18n.setLang(n),localStorage.setItem("v_form_locale",n)},translate=function(n){return i18n.$st(n)};var i18n$1={methods:{i18nt(n){return i18n.$st(n)},i18n2t(n,d){return i18n.$st2(n,d)}}},index_vue_vue_type_style_index_0_scoped_true_lang$7="",_export_sfc$1=(n,d)=>{const e=n.__vccOpts||n;for(const[p,m]of d)e[p]=m;return e};const _sfc_main$39={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String},title:{type:String,default:""}},computed:{iconName(){return`#icon-${this.iconClass}`},svgClass(){return this.className?"svg-icon "+this.className:"svg-icon"}}},_hoisted_1$F=["xlink:href"],_hoisted_2$s={key:0};function _sfc_render$39(n,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("svg",{class:require$$0$1.normalizeClass(g.svgClass),"aria-hidden":"true"},[require$$0$1.createElementVNode("use",{"xlink:href":g.iconName},null,8,_hoisted_1$F),e.title?(require$$0$1.openBlock(),require$$0$1.createElementBlock("title",_hoisted_2$s,require$$0$1.toDisplayString(e.title),1)):require$$0$1.createCommentVNode("",!0)],2)}var SvgIcon=_export_sfc$1(_sfc_main$39,[["render",_sfc_render$39],["__scopeId","data-v-47daada2"]]),index_vue_vue_type_style_index_0_scoped_true_lang$6="";const _sfc_main$38={name:"FieldPanel",mixins:[i18n$1],components:{SvgIcon},props:{designer:Object},inject:["getBannedWidgets","getDesignerConfig"],data(){return{designerConfig:this.getDesignerConfig(),firstTab:"componentLib",scrollerHeight:0,activeNames:["1","2","3","4"],containers:[],basicFields:[],advancedFields:[],customFields:[],formTemplates}},computed:{},created(){this.loadWidgets()},mounted(){this.scrollerHeight=window.innerHeight-56+"px",addWindowResizeHandler(()=>{this.$nextTick(()=>{this.scrollerHeight=window.innerHeight-56+"px"})})},methods:{isBanned(n){return this.getBannedWidgets().indexOf(n)>-1},showFormTemplates(){return this.designerConfig.formTemplates===void 0?!0:!!this.designerConfig.formTemplates},loadWidgets(){this.containers=containers.map(n=>ke(xe({key:generateId()},n),{displayName:this.i18n2t(`designer.widgetLabel.${n.type}`,`extension.widgetLabel.${n.type}`)})).filter(n=>!n.internal&&!this.isBanned(n.type)),this.basicFields=basicFields.map(n=>ke(xe({key:generateId()},n),{displayName:this.i18n2t(`designer.widgetLabel.${n.type}`,`extension.widgetLabel.${n.type}`)})).filter(n=>!this.isBanned(n.type)),this.advancedFields=advancedFields.map(n=>ke(xe({key:generateId()},n),{displayName:this.i18n2t(`designer.widgetLabel.${n.type}`,`extension.widgetLabel.${n.type}`)})).filter(n=>!this.isBanned(n.type)),this.customFields=customFields.map(n=>ke(xe({key:generateId()},n),{displayName:this.i18n2t(`designer.widgetLabel.${n.type}`,`extension.widgetLabel.${n.type}`)})).filter(n=>!this.isBanned(n.type))},handleContainerWidgetClone(n){return this.designer.copyNewContainerWidget(n)},handleFieldWidgetClone(n){return this.designer.copyNewFieldWidget(n)},checkContainerMove(n){return this.designer.checkWidgetMove(n)},checkFieldMove(n){return this.designer.checkFieldMove(n)},onContainerDragEnd(n){},addContainerByDbClick(n){this.designer.addContainerByDbClick(n)},addFieldByDbClick(n){this.designer.addFieldByDbClick(n)},loadFormTemplate(n){this.$confirm(this.i18nt("designer.hint.loadFormTemplateHint"),this.i18nt("render.hint.prompt"),{confirmButtonText:this.i18nt("render.hint.confirm"),cancelButtonText:this.i18nt("render.hint.cancel")}).then(()=>{axios.get(n).then(d=>{let e=!1;typeof d.data=="string"?e=this.designer.loadFormJson(JSON.parse(d.data)):d.data.constructor===Object&&(e=this.designer.loadFormJson(d.data)),e&&this.designer.emitHistoryChange(),this.$message.success(this.i18nt("designer.hint.loadFormTemplateSuccess"))}).catch(d=>{this.$message.error(this.i18nt("designer.hint.loadFormTemplateFailed")+":"+d)})}).catch(d=>{console.error(d)})}}},_hoisted_1$E={class:"panel-container"},_hoisted_2$r=["title","onDblclick"],_hoisted_3$m=["title","onDblclick"],_hoisted_4$f=["title","onDblclick"],_hoisted_5$d=["title","onDblclick"],_hoisted_6$c=["src"],_hoisted_7$9=["src"],_hoisted_8$6={class:"bottom clear-fix"},_hoisted_9$4={class:"ft-title"};function _sfc_render$38(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("draggable"),i=require$$0$1.resolveComponent("el-collapse-item"),u=require$$0$1.resolveComponent("el-collapse"),r=require$$0$1.resolveComponent("el-tab-pane"),t=require$$0$1.resolveComponent("el-popover"),l=require$$0$1.resolveComponent("el-button"),o=require$$0$1.resolveComponent("el-card"),s=require$$0$1.resolveComponent("el-tabs"),f=require$$0$1.resolveComponent("el-scrollbar");return require$$0$1.openBlock(),require$$0$1.createBlock(f,{class:"side-scroll-bar",style:require$$0$1.normalizeStyle({height:m.scrollerHeight})},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$E,[require$$0$1.createVNode(s,{modelValue:m.firstTab,"onUpdate:modelValue":d[1]||(d[1]=h=>m.firstTab=h),class:"no-bottom-margin indent-left-margin"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(r,{name:"componentLib"},{label:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(a,{"icon-class":"el-set-up"}),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(n.i18nt("designer.componentLib")),1)])]),default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(u,{modelValue:m.activeNames,"onUpdate:modelValue":d[0]||(d[0]=h=>m.activeNames=h),class:"widget-collapse"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{name:"1",title:n.i18nt("designer.containerTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.containers,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},clone:g.handleContainerWidgetClone,"ghost-class":"ghost",sort:!1,move:g.checkContainerMove,onEnd:g.onContainerDragEnd},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"container-widget-item",title:h.displayName,onDblclick:v=>g.addContainerByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(a,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_2$r)]),_:1},8,["list","clone","move","onEnd"])]),_:1},8,["title"]),require$$0$1.createVNode(i,{name:"2",title:n.i18nt("designer.basicFieldTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.basicFields,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},move:g.checkFieldMove,clone:g.handleFieldWidgetClone,"ghost-class":"ghost",sort:!1},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"field-widget-item",title:h.displayName,onDblclick:v=>g.addFieldByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(a,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_3$m)]),_:1},8,["list","move","clone"])]),_:1},8,["title"]),require$$0$1.createVNode(i,{name:"3",title:n.i18nt("designer.advancedFieldTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.advancedFields,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},move:g.checkFieldMove,clone:g.handleFieldWidgetClone,"ghost-class":"ghost",sort:!1},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"field-widget-item",title:h.displayName,onDblclick:v=>g.addFieldByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(a,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_4$f)]),_:1},8,["list","move","clone"])]),_:1},8,["title"]),require$$0$1.createVNode(i,{name:"4",title:n.i18nt("designer.customFieldTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.customFields,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},move:g.checkFieldMove,clone:g.handleFieldWidgetClone,"ghost-class":"ghost",sort:!1},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"field-widget-item",title:h.displayName,onDblclick:v=>g.addFieldByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(a,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_5$d)]),_:1},8,["list","move","clone"])]),_:1},8,["title"])]),_:1},8,["modelValue"])]),_:1}),g.showFormTemplates()?(require$$0$1.openBlock(),require$$0$1.createBlock(r,{key:0,name:"formLib",style:{padding:"8px"}},{label:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(a,{"icon-class":"el-form-template"}),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(n.i18nt("designer.formLib")),1)])]),default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(m.formTemplates,(h,v)=>(require$$0$1.openBlock(),require$$0$1.createBlock(o,{"bord-style":{padding:"0"},shadow:"hover",class:"ft-card"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(t,{placement:"right",trigger:"hover"},{reference:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("img",{src:h.imgUrl,style:{width:"200px"}},null,8,_hoisted_6$c)]),default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("img",{src:h.imgUrl,style:{height:"600px",width:"720px"}},null,8,_hoisted_7$9)]),_:2},1024),require$$0$1.createElementVNode("div",_hoisted_8$6,[require$$0$1.createElementVNode("span",_hoisted_9$4,"#"+require$$0$1.toDisplayString(v+1)+" "+require$$0$1.toDisplayString(h.title),1),require$$0$1.createVNode(l,{link:"",type:"primary",class:"right-button",onClick:$=>g.loadFormTemplate(h.jsonUrl)},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.i18nt("designer.hint.loadFormTemplate")),1)]),_:2},1032,["onClick"])])]),_:2},1024))),256))]),_:1})):require$$0$1.createCommentVNode("",!0)]),_:1},8,["modelValue"])])]),_:1},8,["style"])}var WidgetPanel=_export_sfc$1(_sfc_main$38,[["render",_sfc_render$38],["__scopeId","data-v-4f9cfab7"]]),emitter={data(){return{vfEvents:{}}},methods:{emit$(n,d){this.vfEvents[n]&&this.vfEvents[n].forEach(e=>{e(d)})},on$(n,d){this.vfEvents[n]=this.vfEvents[n]||[],this.vfEvents[n].push(d)},off$(n,d){if(this.vfEvents[n]){if(d==null){this.vfEvents[n].length=0;return}for(let e=0;e{if(this.widgetRefList[m].$options.componentName===d){let a=this.widgetRefList[m];a.emit$.call(a,e,p)}}),this.refList&&Object.keys(this.refList).forEach(m=>{if(this.refList[m].$options.componentName===d){let a=this.refList[m];a.emit$.call(a,e,p)}})}}};const _sfc_main$37={name:"container-item-wrapper",props:{widget:Object},computed:{customClass(){return this.widget.options.customClass?this.widget.options.customClass.join(" "):""}}};function _sfc_render$37(n,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{class:require$$0$1.normalizeClass(["container-wrapper",[g.customClass]])},[require$$0$1.renderSlot(n.$slots,"default")],2)}var ContainerItemWrapper=_export_sfc$1(_sfc_main$37,[["render",_sfc_render$37]]),__glob_0_0$3=Object.freeze(Object.defineProperty({__proto__:null,default:ContainerItemWrapper},Symbol.toStringTag,{value:"Module"})),refMixin={methods:{initRefList(){this.refList!==null&&!!this.widget.options.name&&(this.refList[this.widget.options.name]=this)},getWidgetRef(n,d){let e=this.refList[n];return!e&&!!d&&this.$message.error(this.i18nt("render.hint.refNotFound")+n),e},getFormRef(){return this.refList.v_form_ref},getComponentByContainer(n){return n.type==="grid"?"vf-grid-item":n.type+"-item"}}},staticContentWrapper_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$36={name:"static-content-wrapper",mixins:[i18n$1],components:{SvgIcon},props:{field:Object,designer:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designState:{type:Boolean,default:!1},displayStyle:{type:String,default:"block"},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},computed:{selected(){return!!this.designer&&this.field.id===this.designer.selectedId},customClass(){return this.field.options.customClass?this.field.options.customClass.join(" "):""}},methods:{selectField(n){this.designer&&(this.designer.setSelected(n),this.designer.emitEvent("field-selected",this.parentWidget))},selectParentWidget(){this.parentWidget?this.designer.setSelected(this.parentWidget):this.designer.clearSelected()},moveUpWidget(){this.designer.moveUpWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},moveDownWidget(){this.designer.moveDownWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},removeFieldWidget(){if(this.parentList){const n=this.designer.selectedWidgetName;let d=null;this.parentList.length===1?this.parentWidget&&(d=this.parentWidget):this.parentList.length===1+this.indexOfParentList?d=this.parentList[this.indexOfParentList-1]:d=this.parentList[this.indexOfParentList+1],this.$nextTick(()=>{this.parentList.splice(this.indexOfParentList,1),this.designer.setSelected(d),this.designer.formWidget.deleteWidgetRef(n),this.designer.emitHistoryChange()})}}}},_hoisted_1$D={key:0,class:"field-action"},_hoisted_2$q=["title"],_hoisted_3$l=["title"],_hoisted_4$e=["title"],_hoisted_5$c=["title"],_hoisted_6$b={key:1,class:"drag-handler background-opacity"},_hoisted_7$8=["title"],_hoisted_8$5={key:0};function _sfc_render$36(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("svg-icon");return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{class:require$$0$1.normalizeClass(["field-wrapper",{"design-time-bottom-margin":!!this.designer}]),style:require$$0$1.normalizeStyle({display:e.displayStyle})},[!e.field.options.hidden||e.designState===!0?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:0,class:require$$0$1.normalizeClass(["static-content-item",[g.selected?"selected":"",g.customClass]]),style:require$$0$1.normalizeStyle({display:e.displayStyle}),onClick:d[0]||(d[0]=require$$0$1.withModifiers(c=>g.selectField(e.field),["stop"]))},[require$$0$1.renderSlot(n.$slots,"default",{},void 0,!0)],6)):require$$0$1.createCommentVNode("",!0),this.designer?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$D,[require$$0$1.createElementVNode("i",{title:n.i18nt("designer.hint.selectParentWidget"),onClick:d[1]||(d[1]=require$$0$1.withModifiers(c=>g.selectParentWidget(e.field),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-back"})],8,_hoisted_2$q),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:0,title:n.i18nt("designer.hint.moveUpWidget"),onClick:d[2]||(d[2]=require$$0$1.withModifiers(c=>g.moveUpWidget(e.field),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-move-up"})],8,_hoisted_3$l)):require$$0$1.createCommentVNode("",!0),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:1,title:n.i18nt("designer.hint.moveDownWidget"),onClick:d[3]||(d[3]=require$$0$1.withModifiers(c=>g.moveDownWidget(e.field),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-move-down"})],8,_hoisted_4$e)):require$$0$1.createCommentVNode("",!0),require$$0$1.createElementVNode("i",{title:n.i18nt("designer.hint.remove"),onClick:d[4]||(d[4]=require$$0$1.withModifiers((...c)=>g.removeFieldWidget&&g.removeFieldWidget(...c),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-delete"})],8,_hoisted_5$c)])):require$$0$1.createCommentVNode("",!0),e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_6$b,[require$$0$1.createElementVNode("i",{title:n.i18nt("designer.hint.dragHandler")},[require$$0$1.createVNode(a,{"icon-class":"el-drag-move"})],8,_hoisted_7$8),require$$0$1.createElementVNode("i",null,require$$0$1.toDisplayString(n.i18n2t(`designer.widgetLabel.${e.field.type}`,`extension.widgetLabel.${e.field.type}`)),1),e.field.options.hidden===!0?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",_hoisted_8$5,[require$$0$1.createVNode(a,{"icon-class":"el-hide"})])):require$$0$1.createCommentVNode("",!0)])):require$$0$1.createCommentVNode("",!0)],64)):require$$0$1.createCommentVNode("",!0)],6)}var StaticContentWrapper=_export_sfc$1(_sfc_main$36,[["render",_sfc_render$36],["__scopeId","data-v-40b65808"]]),__glob_0_19$1=Object.freeze(Object.defineProperty({__proto__:null,default:StaticContentWrapper},Symbol.toStringTag,{value:"Module"}));const getRegExp=function(n){return{number:"/^[-]?\\d+(\\.\\d+)?$/",letter:"/^[A-Za-z]+$/",letterAndNumber:"/^[A-Za-z0-9]+$/",mobilePhone:"/^[1][3-9][0-9]{9}$/",letterStartNumberIncluded:"/^[A-Za-z]+[A-Za-z\\d]*$/",noChinese:"/^[^\u4E00-\u9FA5]+$/",chinese:"/^[\u4E00-\u9FA5]+$/",email:"/^([-_A-Za-z0-9.]+)@([_A-Za-z0-9]+\\.)+[A-Za-z0-9]{2,3}$/",url:"/^([hH][tT]{2}[pP]:\\/\\/|[hH][tT]{2}[pP][sS]:\\/\\/)(([A-Za-z0-9-~]+)\\.)+([A-Za-z0-9-~\\/])+$/"}[n]},validateFn=function(validatorName,rule,value,callback,defaultErrorMsg){if(isNull(value)||value.length<=0){callback();return}const reg=eval(getRegExp(validatorName));if(reg.test(value))callback();else{let n=rule.errorMsg||defaultErrorMsg;callback(new Error(n))}},FormValidators={number(n,d,e){validateFn("number",n,d,e,"["+n.label+"]\u5305\u542B\u975E\u6570\u5B57\u5B57\u7B26")},letter(n,d,e){validateFn("letter",n,d,e,"["+n.label+"]\u5305\u542B\u975E\u5B57\u6BCD\u5B57\u7B26")},letterAndNumber(n,d,e){validateFn("letterAndNumber",n,d,e,"["+n.label+"]\u53EA\u80FD\u8F93\u5165\u5B57\u6BCD\u6216\u6570\u5B57")},mobilePhone(n,d,e){validateFn("mobilePhone",n,d,e,"["+n.label+"]\u624B\u673A\u53F7\u7801\u683C\u5F0F\u6709\u8BEF")},noBlankStart(n,d,e){},noBlankEnd(n,d,e){},letterStartNumberIncluded(n,d,e){validateFn("letterStartNumberIncluded",n,d,e,"["+n.label+"]\u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u53EF\u5305\u542B\u6570\u5B57")},noChinese(n,d,e){validateFn("noChinese",n,d,e,"["+n.label+"]\u4E0D\u53EF\u8F93\u5165\u4E2D\u6587\u5B57\u7B26")},chinese(n,d,e){validateFn("chinese",n,d,e,"["+n.label+"]\u53EA\u80FD\u8F93\u5165\u4E2D\u6587\u5B57\u7B26")},email(n,d,e){validateFn("email",n,d,e,"["+n.label+"]\u90AE\u7BB1\u683C\u5F0F\u6709\u8BEF")},url(n,d,e){validateFn("url",n,d,e,"["+n.label+"]URL\u683C\u5F0F\u6709\u8BEF")},regExp(rule,value,callback){if(isNull(value)||value.length<=0){callback();return}const pattern=eval(rule.regExp);if(pattern.test(value))callback();else{let n=rule.errorMsg||"["+rule.label+"]invalid value";callback(new Error(n))}}};function mitt(n){return{all:n=n||new Map,on:function(d,e){var p=n.get(d);p?p.push(e):n.set(d,[e])},off:function(d,e){var p=n.get(d);p&&(e?p.splice(p.indexOf(e)>>>0,1):n.set(d,[]))},emit:function(d,e){var p=n.get(d);p&&p.slice().map(function(m){m(e)}),(p=n.get("*"))&&p.slice().map(function(m){m(d,e)})}}}const instance=mitt(),eventBus={};eventBus.$on=instance.on,eventBus.$off=instance.off,eventBus.$emit=instance.emit;var fieldMixin={inject:["refList","getFormConfig","getGlobalDsv","globalOptionData","globalModel","getOptionData"],computed:{formConfig(){return this.getFormConfig()},widgetSize(){return this.field.options.size||"default"},subFormName(){return this.parentWidget?this.parentWidget.options.name:""},subFormItemFlag(){return this.parentWidget?this.parentWidget.type==="sub-form":!1},formModel:{cache:!1,get(){return this.globalModel.formModel}}},methods:{getPropName(){return this.subFormItemFlag&&!this.designState?this.subFormName+"."+this.subFormRowIndex+"."+this.field.options.name+"":this.field.options.name},initFieldModel(){if(!!this.field.formItemFlag){if(!!this.subFormItemFlag&&!this.designState){let n=this.formModel[this.subFormName];(n===void 0||n[this.subFormRowIndex]===void 0||n[this.subFormRowIndex][this.field.options.name]===void 0)&&this.field.options.defaultValue!==void 0?(this.fieldModel=this.field.options.defaultValue,n[this.subFormRowIndex][this.field.options.name]=this.field.options.defaultValue):n[this.subFormRowIndex][this.field.options.name]===void 0?(this.fieldModel=null,n[this.subFormRowIndex][this.field.options.name]=null):this.fieldModel=n[this.subFormRowIndex][this.field.options.name],setTimeout(()=>{this.handleOnChangeForSubForm(this.fieldModel,this.oldFieldValue,n,this.subFormRowId)},800),this.oldFieldValue=deepClone(this.fieldModel),this.initFileList();return}this.formModel[this.field.options.name]===void 0&&this.field.options.defaultValue!==void 0?this.fieldModel=this.field.options.defaultValue:this.formModel[this.field.options.name]===void 0?this.formModel[this.field.options.name]=null:this.fieldModel=this.formModel[this.field.options.name],this.oldFieldValue=deepClone(this.fieldModel),this.initFileList()}},initFileList(){this.field.type!=="picture-upload"&&this.field.type!=="file-upload"||this.designState===!0||this.fieldModel&&(Array.isArray(this.fieldModel)?this.fileList=deepClone(this.fieldModel):this.fileList.splice(0,0,deepClone(this.fieldModel)))},initEventHandler(){this.on$("setFormData",n=>{console.log("formModel of globalModel----------",this.globalModel.formModel),this.subFormItemFlag||this.setValue(n[this.field.options.name])}),this.on$("field-value-changed",n=>{if(this.subFormItemFlag){let d=this.formModel[this.subFormName];this.handleOnChangeForSubForm(n[0],n[1],d,this.subFormRowId)}else this.handleOnChange(n[0],n[1])}),this.on$("reloadOptionItems",n=>{(n.length===0||n.indexOf(this.field.options.name)>-1)&&this.initOptionItems(!0)})},handleOnCreated(){this.field.options.onCreated&&new Function(this.field.options.onCreated).call(this)},handleOnMounted(){this.field.options.onMounted&&new Function(this.field.options.onMounted).call(this)},registerToRefList(n){this.refList!==null&&!!this.field.options.name&&(this.subFormItemFlag&&!this.designState?(n&&delete this.refList[n+"@row"+this.subFormRowId],this.refList[this.field.options.name+"@row"+this.subFormRowId]=this):(n&&delete this.refList[n],this.refList[this.field.options.name]=this))},unregisterFromRefList(){if(this.refList!==null&&!!this.field.options.name){let n=this.field.options.name;this.subFormItemFlag&&!this.designState?delete this.refList[n+"@row"+this.subFormRowId]:delete this.refList[n]}},initOptionItems(n){if(!this.designState&&(this.field.type==="radio"||this.field.type==="checkbox"||this.field.type==="select"||this.field.type==="cascader")){const d=this.getOptionData();!!d&&d.hasOwnProperty(this.field.options.name)&&(n?this.reloadOptions(d[this.field.options.name]):this.loadOptions(d[this.field.options.name]))}},refreshDefaultValue(){this.designState===!0&&this.field.options.defaultValue!==void 0&&(this.fieldModel=this.field.options.defaultValue)},clearFieldRules(){!this.field.formItemFlag||this.rules.splice(0,this.rules.length)},buildFieldRules(){if(!(!this.field.formItemFlag&&this.field.options.hidden)){if(this.rules.splice(0,this.rules.length),this.field.options.required&&this.rules.push({required:!0,trigger:["blur"],message:this.field.options.requiredHint||this.i18nt("render.hint.fieldRequired")}),this.field.options.validation){let n=this.field.options.validation;FormValidators[n]?this.rules.push({validator:FormValidators[n],trigger:["blur","change"],label:this.field.options.label,errorMsg:this.field.options.validationHint}):this.rules.push({validator:FormValidators.regExp,trigger:["blur","change"],regExp:n,label:this.field.options.label,errorMsg:this.field.options.validationHint})}if(this.field.options.onValidate){let n=(d,e,p)=>new Function("rule","value","callback",this.field.options.onValidate).call(this,d,e,p);this.rules.push({validator:n,trigger:["blur","change"],label:this.field.options.label})}}},disableChangeValidate(){!this.rules||this.rules.forEach(n=>{n.trigger&&n.trigger.splice(0,n.trigger.length)})},enableChangeValidate(){!this.rules||this.rules.forEach(n=>{n.trigger&&(n.trigger.push("blur"),n.trigger.push("change"))})},disableOptionOfList(n,d){!!n&&n.length>0&&n.forEach(e=>{e.value===d&&(e.disabled=!0)})},enableOptionOfList(n,d){!!n&&n.length>0&&n.forEach(e=>{e.value===d&&(e.disabled=!1)})},emitFieldDataChange(n,d){this.emit$("field-value-changed",[n,d]),this.dispatch("VFormRender","fieldChange",[this.field.options.name,n,d,this.subFormName,this.subFormRowIndex])},syncUpdateFormModel(n){if(!this.designState)if(this.subFormItemFlag){let e=(this.formModel[this.subFormName]||[{}])[this.subFormRowIndex];e&&(e[this.field.options.name]=n)}else this.formModel[this.field.options.name]=n},handleChangeEvent(n){this.syncUpdateFormModel(n),this.emitFieldDataChange(n,this.oldFieldValue),this.oldFieldValue=deepClone(n),this.dispatch("VFormRender","fieldValidation",[this.getPropName()])},handleFocusCustomEvent(n){this.oldFieldValue=deepClone(this.fieldModel),this.field.options.onFocus&&new Function("event",this.field.options.onFocus).call(this,n)},handleBlurCustomEvent(n){this.field.options.onBlur&&new Function("event",this.field.options.onBlur).call(this,n)},handleInputCustomEvent(n){this.syncUpdateFormModel(n),this.dispatch("VFormRender","fieldValidation",[this.getPropName()]),this.field.options.onInput&&new Function("value",this.field.options.onInput).call(this,n)},emitAppendButtonClick(){this.designState||(this.field.options.onAppendButtonClick?new Function(this.field.options.onAppendButtonClick).call(this):this.dispatch("VFormRender","appendButtonClick",[this]))},handleOnChange(n,d){this.field.options.onChange&&new Function("value","oldValue",this.field.options.onChange).call(this,n,d)},handleOnChangeForSubForm(n,d,e,p){this.field.options.onChange&&new Function("value","oldValue","subFormData","rowId",this.field.options.onChange).call(this,n,d,e,p)},handleButtonWidgetClick(){this.designState||(this.field.options.onClick?new Function(this.field.options.onClick).call(this):this.dispatch("VFormRender","buttonClick",[this]))},remoteQuery(n){this.field.options.onRemoteQuery&&new Function("keyword",this.field.options.onRemoteQuery).call(this,n)},getFormRef(){return this.refList.v_form_ref},getWidgetRef(n,d){let e=this.refList[n];return!e&&!!d&&this.$message.error(this.i18nt("render.hint.refNotFound")+n),e},getFieldEditor(){return this.$refs.fieldEditor},setValue(n){if(this.field.formItemFlag){let d=deepClone(this.fieldModel);this.fieldModel=n,this.initFileList(),this.syncUpdateFormModel(n),this.emitFieldDataChange(n,d)}},getValue(){return this.fieldModel},resetField(){let n=this.field.options.defaultValue;this.setValue(n),this.$nextTick(()=>{}),(this.field.type==="picture-upload"||this.field.type==="file-upload")&&(this.$refs.fieldEditor.clearFiles(),this.fileList.splice(0,this.fileList.length))},setWidgetOption(n,d){this.field.options.hasOwnProperty(n)&&(this.field.options[n]=d)},setReadonly(n){this.field.options.readonly=n},setDisabled(n){this.field.options.disabled=n},setAppendButtonVisible(n){this.field.options.appendButton=n},setAppendButtonDisabled(n){this.field.options.appendButtonDisabled=n},setHidden(n){this.field.options.hidden=n,n?this.clearFieldRules():this.buildFieldRules()},setRequired(n){this.field.options.required=n,this.buildFieldRules()},setLabel(n){this.field.options.label=n},focus(){!!this.getFieldEditor()&&!!this.getFieldEditor().focus&&this.getFieldEditor().focus()},clearSelectedOptions(){this.field.type!=="checkbox"&&this.field.type!=="radio"&&this.field.type!=="select"||(this.field.type==="checkbox"||this.field.type==="select"&&this.field.options.multiple?this.fieldModel=[]:this.fieldModel="")},loadOptions(n){this.field.options.optionItems=deepClone(n)},reloadOptions(n){this.field.options.optionItems=deepClone(n)},disableOption(n){this.disableOptionOfList(this.field.options.optionItems,n)},enableOption(n){this.enableOptionOfList(this.field.options.optionItems,n)},getOptionItems(){return this.field.options.optionItems},setUploadHeader(n,d){this.uploadHeaders[n]=d},setUploadData(n,d){this.uploadData[n]=d},setToolbar(n){this.customToolbar=n},isSubFormItem(){return this.parentWidget?this.parentWidget.type==="sub-form":!1},addCssClass(n){this.field.options.customClass?this.field.options.customClass.push(n):this.field.options.customClass=[n]},removeCssClass(n){if(!this.field.options.customClass)return;let d=-1;this.field.options.customClass.map((e,p)=>{e===n&&(d=p)}),d>-1&&this.field.options.customClass.splice(d,1)}}},buttonWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$35={name:"button-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$35(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-button"),c=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,"design-state":e.designState,"display-style":e.field.options.displayStyle,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",type:e.field.options.type,size:n.widgetSize,plain:e.field.options.plain,round:e.field.options.round,circle:e.field.options.circle,icon:e.field.options.icon,disabled:e.field.options.disabled,onClick:n.handleButtonWidgetClick},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(e.field.options.label),1)]),_:1},8,["type","size","plain","round","circle","icon","disabled","onClick"])]),_:1},8,["designer","field","design-state","display-style","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var buttonWidget=_export_sfc$1(_sfc_main$35,[["render",_sfc_render$35],["__scopeId","data-v-6f92d10c"]]),__glob_0_0$2=Object.freeze(Object.defineProperty({__proto__:null,default:buttonWidget},Symbol.toStringTag,{value:"Module"})),formItemWrapper_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$34={name:"form-item-wrapper",mixins:[i18n$1],components:{SvgIcon},props:{field:Object,designer:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""},rules:Array},inject:["getFormConfig"],computed:{formConfig(){return this.getFormConfig()},selected(){return!!this.designer&&this.field.id===this.designer.selectedId},label(){return this.field.options.labelHidden?"":this.field.options.label},labelWidth(){return this.field.options.labelHidden?0:this.field.options.labelWidth?this.field.options.labelWidth:this.designer?this.designer.formConfig.labelWidth:this.formConfig.labelWidth},labelAlign(){return this.field.options.labelAlign?this.field.options.labelAlign:this.designer?this.designer.formConfig.labelAlign||"label-left-align":this.formConfig.labelAlign||"label-left-align"},customClass(){return this.field.options.customClass?this.field.options.customClass.join(" "):""},subFormName(){return this.parentWidget?this.parentWidget.options.name:""},subFormItemFlag(){return this.parentWidget?this.parentWidget.type==="sub-form":!1}},created(){},methods:{selectField(n){this.designer&&(this.designer.setSelected(n),this.designer.emitEvent("field-selected",this.parentWidget))},selectParentWidget(){this.parentWidget?this.designer.setSelected(this.parentWidget):this.designer.clearSelected()},moveUpWidget(){this.designer.moveUpWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},moveDownWidget(){this.designer.moveDownWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},removeFieldWidget(){if(this.parentList){const n=this.designer.selectedWidgetName;let d=null;this.parentList.length===1?this.parentWidget&&(d=this.parentWidget):this.parentList.length===1+this.indexOfParentList?d=this.parentList[this.indexOfParentList-1]:d=this.parentList[this.indexOfParentList+1],this.$nextTick(()=>{this.parentList.splice(this.indexOfParentList,1),this.designer.setSelected(d),this.designer.formWidget.deleteWidgetRef(n),this.designer.emitHistoryChange()})}},getPropName(){return this.subFormItemFlag&&!this.designState?this.subFormName+"."+this.subFormRowIndex+"."+this.field.options.name+"":this.field.options.name}}},_hoisted_1$C={key:0,class:"custom-label"},_hoisted_2$p={key:0,class:"field-action"},_hoisted_3$k=["title"],_hoisted_4$d=["title"],_hoisted_5$b=["title"],_hoisted_6$a=["title"],_hoisted_7$7={key:1,class:"drag-handler background-opacity"},_hoisted_8$4=["title"],_hoisted_9$3={key:0};function _sfc_render$34(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-tooltip"),i=require$$0$1.resolveComponent("el-form-item");return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{class:require$$0$1.normalizeClass(["field-wrapper",{"design-time-bottom-margin":!!this.designer}])},[!!e.field.formItemFlag&&(!e.field.options.hidden||e.designState===!0)?(require$$0$1.openBlock(),require$$0$1.createBlock(i,{key:0,label:g.label,"label-width":g.labelWidth+"px",title:e.field.options.labelTooltip,rules:e.rules,prop:g.getPropName(),class:require$$0$1.normalizeClass([g.selected?"selected":"",g.labelAlign,g.customClass,e.field.options.required?"required":""]),onClick:d[0]||(d[0]=require$$0$1.withModifiers(u=>g.selectField(e.field),["stop"]))},{label:require$$0$1.withCtx(()=>[e.field.options.labelIconClass?(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",_hoisted_1$C,[e.field.options.labelIconPosition==="front"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[e.field.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createVNode(c,{content:e.field.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"])]),_:1},8,["content"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1)],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createVNode(a,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1)],64))],64)):e.field.options.labelIconPosition==="rear"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[e.field.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1),require$$0$1.createVNode(c,{content:e.field.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"])]),_:1},8,["content"])],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1),require$$0$1.createVNode(a,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"])],64))],64)):require$$0$1.createCommentVNode("",!0)])):require$$0$1.createCommentVNode("",!0)]),default:require$$0$1.withCtx(()=>[require$$0$1.renderSlot(n.$slots,"default",{},void 0,!0)]),_:3},8,["label","label-width","title","rules","prop","class"])):require$$0$1.createCommentVNode("",!0),this.designer?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_2$p,[require$$0$1.createElementVNode("i",{title:n.i18nt("designer.hint.selectParentWidget"),onClick:d[1]||(d[1]=require$$0$1.withModifiers(u=>g.selectParentWidget(e.field),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-back"})],8,_hoisted_3$k),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:0,title:n.i18nt("designer.hint.moveUpWidget"),onClick:d[2]||(d[2]=require$$0$1.withModifiers(u=>g.moveUpWidget(e.field),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-move-up"})],8,_hoisted_4$d)):require$$0$1.createCommentVNode("",!0),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:1,title:n.i18nt("designer.hint.moveDownWidget"),onClick:d[3]||(d[3]=require$$0$1.withModifiers(u=>g.moveDownWidget(e.field),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-move-down"})],8,_hoisted_5$b)):require$$0$1.createCommentVNode("",!0),require$$0$1.createElementVNode("i",{title:n.i18nt("designer.hint.remove"),onClick:d[4]||(d[4]=require$$0$1.withModifiers((...u)=>g.removeFieldWidget&&g.removeFieldWidget(...u),["stop"]))},[require$$0$1.createVNode(a,{"icon-class":"el-delete"})],8,_hoisted_6$a)])):require$$0$1.createCommentVNode("",!0),e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_7$7,[require$$0$1.createElementVNode("i",{title:n.i18nt("designer.hint.dragHandler")},[require$$0$1.createVNode(a,{"icon-class":"el-drag-move"})],8,_hoisted_8$4),require$$0$1.createElementVNode("i",null,require$$0$1.toDisplayString(n.i18n2t(`designer.widgetLabel.${e.field.type}`,`extension.widgetLabel.${e.field.type}`)),1),e.field.options.hidden===!0?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",_hoisted_9$3,[require$$0$1.createVNode(a,{"icon-class":"el-hide"})])):require$$0$1.createCommentVNode("",!0)])):require$$0$1.createCommentVNode("",!0)],64)):require$$0$1.createCommentVNode("",!0)],2)}var FormItemWrapper=_export_sfc$1(_sfc_main$34,[["render",_sfc_render$34],["__scopeId","data-v-2d53b001"]]),__glob_0_8$1=Object.freeze(Object.defineProperty({__proto__:null,default:FormItemWrapper},Symbol.toStringTag,{value:"Module"})),cascaderWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$33={name:"cascader-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{showFullPath(){return this.field.options.showAllLevels===void 0||!!this.field.options.showAllLevels}},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}},_hoisted_1$B={class:"full-width-input"};function _sfc_render$33(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-cascader"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$B,[require$$0$1.createVNode(a,{ref:"fieldEditor",options:e.field.options.optionItems,modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,size:n.widgetSize,clearable:e.field.options.clearable,filterable:e.field.options.filterable,placeholder:e.field.options.placeholder||n.i18nt("render.hint.selectPlaceholder"),"show-all-levels":g.showFullPath,props:{checkStrictly:e.field.options.checkStrictly,multiple:e.field.options.multiple,expandTrigger:"hover"},onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onChange:n.handleChangeEvent},null,8,["options","modelValue","disabled","size","clearable","filterable","placeholder","show-all-levels","props","onFocus","onBlur","onChange"])])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var cascaderWidget=_export_sfc$1(_sfc_main$33,[["render",_sfc_render$33],["__scopeId","data-v-130f5280"]]),__glob_0_1$3=Object.freeze(Object.defineProperty({__proto__:null,default:cascaderWidget},Symbol.toStringTag,{value:"Module"})),checkboxWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$32={name:"checkbox-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$32(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-checkbox-button"),c=require$$0$1.resolveComponent("el-checkbox"),i=require$$0$1.resolveComponent("el-checkbox-group"),u=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(u,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=r=>m.fieldModel=r),disabled:e.field.options.disabled,size:n.widgetSize,onChange:n.handleChangeEvent},{default:require$$0$1.withCtx(()=>[e.field.options.buttonStyle?(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},require$$0$1.renderList(e.field.options.optionItems,(r,t)=>(require$$0$1.openBlock(),require$$0$1.createBlock(a,{key:t,label:r.value,disabled:r.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(r.label),1)]),_:2},1032,["label","disabled","border","style"]))),128)):(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},require$$0$1.renderList(e.field.options.optionItems,(r,t)=>(require$$0$1.openBlock(),require$$0$1.createBlock(c,{key:t,label:r.value,disabled:r.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(r.label),1)]),_:2},1032,["label","disabled","border","style"]))),128))]),_:1},8,["modelValue","disabled","size","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var checkboxWidget=_export_sfc$1(_sfc_main$32,[["render",_sfc_render$32],["__scopeId","data-v-501920b3"]]),__glob_0_2$3=Object.freeze(Object.defineProperty({__proto__:null,default:checkboxWidget},Symbol.toStringTag,{value:"Module"})),colorWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$31={name:"color-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$31(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-color-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),size:n.widgetSize,disabled:e.field.options.disabled,onChange:n.handleChangeEvent},null,8,["modelValue","size","disabled","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var colorWidget=_export_sfc$1(_sfc_main$31,[["render",_sfc_render$31],["__scopeId","data-v-1aa76420"]]),__glob_0_3$3=Object.freeze(Object.defineProperty({__proto__:null,default:colorWidget},Symbol.toStringTag,{value:"Module"})),dateRangeWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$30={name:"date-range-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$30(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-date-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""])},[require$$0$1.createVNode(a,{ref:"fieldEditor",type:e.field.options.type,modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:n.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":e.field.options.valueFormat,"start-placeholder":e.field.options.startPlaceholder||n.i18nt("render.hint.startDatePlaceholder"),"end-placeholder":e.field.options.endPlaceholder||n.i18nt("render.hint.endDatePlaceholder"),onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onChange:n.handleChangeEvent},null,8,["type","modelValue","disabled","readonly","size","clearable","editable","format","value-format","start-placeholder","end-placeholder","onFocus","onBlur","onChange"])],2)]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var dateRangeWidget=_export_sfc$1(_sfc_main$30,[["render",_sfc_render$30],["__scopeId","data-v-8805cad8"]]),__glob_0_4$3=Object.freeze(Object.defineProperty({__proto__:null,default:dateRangeWidget},Symbol.toStringTag,{value:"Module"})),dateWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2$={name:"date-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2$(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-date-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",type:e.field.options.type,modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""]),readonly:e.field.options.readonly,disabled:e.field.options.disabled,size:n.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":e.field.options.valueFormat,placeholder:e.field.options.placeholder||n.i18nt("render.hint.datePlaceholder"),onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onChange:n.handleChangeEvent},null,8,["type","modelValue","class","readonly","disabled","size","clearable","editable","format","value-format","placeholder","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var dateWidget=_export_sfc$1(_sfc_main$2$,[["render",_sfc_render$2$],["__scopeId","data-v-14d5b71a"]]),__glob_0_5$3=Object.freeze(Object.defineProperty({__proto__:null,default:dateWidget},Symbol.toStringTag,{value:"Module"})),dividerWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2_={name:"divider-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2_(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-divider"),c=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",direction:"horizontal","content-position":e.field.options.contentPosition},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(e.field.options.label),1)]),_:1},8,["content-position"])]),_:1},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var dividerWidget=_export_sfc$1(_sfc_main$2_,[["render",_sfc_render$2_],["__scopeId","data-v-a326e5e0"]]),__glob_0_6$2=Object.freeze(Object.defineProperty({__proto__:null,default:dividerWidget},Symbol.toStringTag,{value:"Module"})),fileUploadWidget_vue_vue_type_style_index_0_scoped_true_lang="";let selectFileText="'"+translate("render.hint.selectFile")+"'";const _sfc_main$2Z={name:"file-upload-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{SvgIcon,FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:[],rules:[],uploadHeaders:{},uploadData:{key:""},fileList:[],uploadBtnHidden:!1,styleVariables:{"--select-file-action":selectFileText}}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{handleFileExceed(){let n=this.field.options.limit;this.$message.warning(this.i18nt("render.hint.uploadExceed").replace("${uploadLimit}",n))},beforeFileUpload(n){let d=!1,e=n.name.substring(n.name.lastIndexOf(".")+1);if(!!this.field.options&&!!this.field.options.fileTypes){let g=this.field.options.fileTypes;g.length>0&&(d=g.some(a=>e.toLowerCase()===a.toLowerCase()))}if(!d)return this.$message.error(this.i18nt("render.hint.unsupportedFileType")+e),!1;let p=!1,m=5;return!!this.field.options&&!!this.field.options.fileMaxSize&&(m=this.field.options.fileMaxSize),p=n.size/1024/1024<=m,p?(this.uploadData.key=n.name,this.handleOnBeforeUpload(n)):(this.$message.error(this.i18nt("render.hint.fileSizeExceed")+m+"MB"),!1)},handleOnBeforeUpload(n){if(this.field.options.onBeforeUpload){let e=new Function("file",this.field.options.onBeforeUpload).call(this,n);return typeof e=="boolean"?e:!0}return!0},updateFieldModelAndEmitDataChangeForUpload(n,d,e){let p=deepClone(this.fieldModel);!!d&&!!d.name&&!!d.url?this.fieldModel.push({name:d.name,url:d.url}):!!e&&!!e.name&&!!e.url?this.fieldModel.push({name:e.name,url:e.url}):this.fieldModel=deepClone(n),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,p)},handleFileUpload(n,d,e){if(d.status==="success"){let p=null;this.field.options.onUploadSuccess&&(p=new Function("result","file","fileList",this.field.options.onUploadSuccess).call(this,n,d,e)),this.updateFieldModelAndEmitDataChangeForUpload(e,p,n),!!p&&!!p.name?d.name=p.name:d.name=d.name||n.name||n.fileName||n.filename,!!p&&!!p.url?d.url=p.url:d.url=d.url||n.url,this.fileList=deepClone(e),this.uploadBtnHidden=e.length>=this.field.options.limit}},updateFieldModelAndEmitDataChangeForRemove(n,d){let e=deepClone(this.fieldModel);this.fieldModel.splice(n,1),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,e)},removeUploadFile(n,d,e){let p=-1,m=null;this.fileList.forEach((g,a)=>{g.name===n&&(g.url===d||!!e&&g.uid===e)&&(p=a,m=g)}),p>=0&&(this.fileList.splice(p,1),this.updateFieldModelAndEmitDataChangeForRemove(p,this.fileList),this.uploadBtnHidden=this.fileList.length>=this.field.options.limit,this.field.options.onFileRemove&&new Function("file","fileList",this.field.options.onFileRemove).call(this,m,this.fileList))},handleUploadError(n,d,e){this.field.options.onUploadError?new Function("error","file","fileList",this.field.options.onUploadError).call(this,n,d,e):this.$message({message:this.i18nt("render.hint.uploadError")+n,duration:3e3,type:"error"})}}},_withScopeId$3=n=>(require$$0$1.pushScopeId("data-v-396987e9"),n=n(),require$$0$1.popScopeId(),n),_hoisted_1$A={key:0,class:"el-upload__tip"},_hoisted_2$o=_withScopeId$3(()=>require$$0$1.createElementVNode("i",{class:"el-icon-plus avatar-uploader-icon"},null,-1)),_hoisted_3$j={class:"upload-file-list"},_hoisted_4$c=["title"],_hoisted_5$a=["href"],_hoisted_6$9=["title"],_hoisted_7$6=["title","onClick"];function _sfc_render$2Z(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-upload"),i=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{ref:"fieldEditor",disabled:e.field.options.disabled,style:require$$0$1.normalizeStyle(m.styleVariables),class:require$$0$1.normalizeClass(["dynamicPseudoAfter",{hideUploadDiv:m.uploadBtnHidden}]),action:e.field.options.uploadURL,headers:m.uploadHeaders,data:m.uploadData,"with-credentials":e.field.options.withCredentials,multiple:e.field.options.multipleSelect,"file-list":m.fileList,"show-file-list":e.field.options.showFileList,limit:e.field.options.limit,"on-exceed":g.handleFileExceed,"before-upload":g.beforeFileUpload,"on-success":g.handleFileUpload,"on-error":g.handleUploadError},{tip:require$$0$1.withCtx(()=>[e.field.options.uploadTip?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$A,require$$0$1.toDisplayString(e.field.options.uploadTip),1)):require$$0$1.createCommentVNode("",!0)]),default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":"el-plus"}),_hoisted_2$o]),file:require$$0$1.withCtx(({file:u})=>[require$$0$1.createElementVNode("div",_hoisted_3$j,[require$$0$1.createElementVNode("span",{class:"upload-file-name",title:u.name},require$$0$1.toDisplayString(u.name),9,_hoisted_4$c),require$$0$1.createElementVNode("a",{href:u.url,download:"",target:"_blank"},[require$$0$1.createElementVNode("span",{class:"el-icon-download file-action",title:n.i18nt("render.hint.downloadFile")},[require$$0$1.createVNode(a,{"icon-class":"el-download"})],8,_hoisted_6$9)],8,_hoisted_5$a),e.field.options.disabled?require$$0$1.createCommentVNode("",!0):(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",{key:0,class:"file-action",title:n.i18nt("render.hint.removeFile"),onClick:r=>g.removeUploadFile(u.name,u.url,u.uid)},[require$$0$1.createVNode(a,{"icon-class":"el-delete"})],8,_hoisted_7$6))])]),_:1},8,["disabled","style","action","headers","data","with-credentials","multiple","file-list","show-file-list","class","limit","on-exceed","before-upload","on-success","on-error"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var fileUploadWidget=_export_sfc$1(_sfc_main$2Z,[["render",_sfc_render$2Z],["__scopeId","data-v-396987e9"]]),__glob_0_7$1=Object.freeze(Object.defineProperty({__proto__:null,default:fileUploadWidget},Symbol.toStringTag,{value:"Module"})),htmlTextWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2Y={name:"html-text-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}},_hoisted_1$z=["innerHTML"];function _sfc_render$2Y(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(a,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{ref:"fieldEditor",innerHTML:e.field.options.htmlContent},null,8,_hoisted_1$z)]),_:1},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var htmlTextWidget=_export_sfc$1(_sfc_main$2Y,[["render",_sfc_render$2Y],["__scopeId","data-v-a0d236d6"]]),__glob_0_9$1=Object.freeze(Object.defineProperty({__proto__:null,default:htmlTextWidget},Symbol.toStringTag,{value:"Module"})),inputWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2X={name:"input-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper,SvgIcon},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{inputType(){return this.field.options.type==="number"?"text":this.field.options.type}},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2X(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-button"),i=require$$0$1.resolveComponent("el-input"),u=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(u,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=r=>m.fieldModel=r),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:n.widgetSize,class:"hide-spin-button",type:g.inputType,"show-password":e.field.options.showPassword,placeholder:e.field.options.placeholder,clearable:e.field.options.clearable,minlength:e.field.options.minLength,maxlength:e.field.options.maxLength,"show-word-limit":e.field.options.showWordLimit,"prefix-icon":e.field.options.prefixIcon,"suffix-icon":e.field.options.suffixIcon,onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onInput:n.handleInputCustomEvent,onChange:n.handleChangeEvent},require$$0$1.createSlots({_:2},[e.field.options.appendButton?{name:"append",fn:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{disabled:e.field.options.disabled||e.field.options.appendButtonDisabled,onClick:n.emitAppendButtonClick},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":e.field.options.buttonIcon},null,8,["icon-class"])]),_:1},8,["disabled","onClick"])]),key:"0"}:void 0]),1032,["modelValue","disabled","readonly","size","type","show-password","placeholder","clearable","minlength","maxlength","show-word-limit","prefix-icon","suffix-icon","onFocus","onBlur","onInput","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var inputWidget=_export_sfc$1(_sfc_main$2X,[["render",_sfc_render$2X],["__scopeId","data-v-b6d96cc0"]]),__glob_0_10$1=Object.freeze(Object.defineProperty({__proto__:null,default:inputWidget},Symbol.toStringTag,{value:"Module"})),numberWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2W={name:"number-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2W(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-input-number"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:"full-width-input",disabled:e.field.options.disabled,size:n.widgetSize,"controls-position":e.field.options.controlsPosition,placeholder:e.field.options.placeholder,min:e.field.options.min,max:e.field.options.max,precision:e.field.options.precision,step:e.field.options.step,onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onChange:n.handleChangeEvent},null,8,["modelValue","disabled","size","controls-position","placeholder","min","max","precision","step","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var numberWidget=_export_sfc$1(_sfc_main$2W,[["render",_sfc_render$2W],["__scopeId","data-v-78aba4ad"]]),__glob_0_11$1=Object.freeze(Object.defineProperty({__proto__:null,default:numberWidget},Symbol.toStringTag,{value:"Module"})),pictureUploadWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2V={name:"picture-upload-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper,SvgIcon},data(){return{oldFieldValue:null,fieldModel:[],rules:[],uploadHeaders:{},uploadData:{key:""},fileList:[],fileListBeforeRemove:[],uploadBtnHidden:!1,previewIndex:1}},computed:{previewList(){return this.fileList.map(n=>n.url)}},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{handlePictureExceed(){let n=this.field.options.limit;this.$message.warning(this.i18nt("render.hint.uploadExceed").replace("${uploadLimit}",n))},beforePictureUpload(n){let d=!1;if(!!this.field.options&&!!this.field.options.fileTypes){let m=this.field.options.fileTypes;m.length>0&&(d=m.some(g=>n.type==="image/"+g))}if(!d)return this.$message.error(this.i18nt("render.hint.unsupportedFileType")+n.type),!1;let e=!1,p=5;return!!this.field.options&&!!this.field.options.fileMaxSize&&(p=this.field.options.fileMaxSize),e=n.size/1024/1024<=p,e?(this.uploadData.key=n.name,this.handleOnBeforeUpload(n)):(this.$message.error(this.$("render.hint.fileSizeExceed")+p+"MB"),!1)},handleOnBeforeUpload(n){if(this.field.options.onBeforeUpload){let e=new Function("file",this.field.options.onBeforeUpload).call(this,n);return typeof e=="boolean"?e:!0}return!0},updateFieldModelAndEmitDataChangeForUpload(n,d,e){let p=deepClone(this.fieldModel);!!d&&!!d.name&&!!d.url?this.fieldModel.push({name:d.name,url:d.url}):!!e&&!!e.name&&!!e.url?this.fieldModel.push({name:e.name,url:e.url}):this.fieldModel=deepClone(n),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,p)},handlePictureUpload(n,d,e){if(d.status==="success"){let p=null;this.field.options.onUploadSuccess&&(p=new Function("result","file","fileList",this.field.options.onUploadSuccess).call(this,n,d,e)),this.updateFieldModelAndEmitDataChangeForUpload(e,p,n),this.fileList=deepClone(e),this.uploadBtnHidden=e.length>=this.field.options.limit}},updateFieldModelAndEmitDataChangeForRemove(n){let d=deepClone(this.fieldModel),e=-1;this.fileListBeforeRemove.map((p,m)=>{p.name===n.name&&(p.url===n.url||!!p.uid&&p.uid===n.uid)&&(e=m)}),e>-1&&this.fieldModel.splice(e,1),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,d)},handleBeforeRemove(n){this.fileListBeforeRemove=deepClone(n)},handlePictureRemove(n){this.handleBeforeRemove(this.fileList),this.fileList.splice(this.fileList.indexOf(n),1),this.updateFieldModelAndEmitDataChangeForRemove(n);let d=deepClone(this.fileList);this.uploadBtnHidden=d.length>=this.field.options.limit,this.field.options.onFileRemove&&new Function("file","fileList",this.field.options.onFileRemove).call(this,n,d)},handleUploadError(n,d,e){this.field.options.onUploadError?new Function("error","file","fileList",this.field.options.onUploadError).call(this,n,d,e):this.$message({message:this.i18nt("render.hint.uploadError")+n,duration:3e3,type:"error"})},handlePictureCardPreview({url:n}){this.previewIndex=this.previewList.indexOf(n),this.$refs.imageRef.$el.children[0].click()}}},_hoisted_1$y={class:"el-upload-list__item-status-label"},_hoisted_2$n={class:"el-icon--upload-success",style:{color:"#FFF"}},_hoisted_3$i={class:"el-upload-list__item-actions"},_hoisted_4$b=["onClick"],_hoisted_5$9=["onClick"],_hoisted_6$8={key:0,class:"el-upload__tip"},_hoisted_7$5={class:"uploader-icon"};function _sfc_render$2V(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-image"),c=require$$0$1.resolveComponent("svg-icon"),i=require$$0$1.resolveComponent("el-upload"),u=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(u,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",disabled:e.field.options.disabled,action:e.field.options.uploadURL,headers:m.uploadHeaders,data:m.uploadData,"with-credentials":e.field.options.withCredentials,multiple:e.field.options.multipleSelect,"file-list":m.fileList,"show-file-list":e.field.options.showFileList,"list-type":"picture-card",class:require$$0$1.normalizeClass({hideUploadDiv:m.uploadBtnHidden}),limit:e.field.options.limit,"on-exceed":g.handlePictureExceed,"before-upload":g.beforePictureUpload,"on-preview":g.handlePictureCardPreview,"on-success":g.handlePictureUpload,"on-error":g.handleUploadError},{file:require$$0$1.withCtx(({file:r})=>[require$$0$1.createVNode(a,{ref:"imageRef",style:{width:"100%",height:"100%"},src:r.url,"preview-src-list":g.previewList,"initial-index":m.previewIndex,fit:"cover","preview-teleported":""},null,8,["src","preview-src-list","initial-index"]),require$$0$1.createElementVNode("label",_hoisted_1$y,[require$$0$1.createElementVNode("i",_hoisted_2$n,[require$$0$1.createVNode(c,{class:"","icon-class":"el-check"})])]),require$$0$1.createElementVNode("span",_hoisted_3$i,[require$$0$1.createElementVNode("span",{class:"el-upload-list__item-preview",onClick:t=>g.handlePictureCardPreview(r)},[require$$0$1.createVNode(c,{"icon-class":"el-zoom-in"})],8,_hoisted_4$b),require$$0$1.createElementVNode("span",{class:"el-upload-list__item-delete",onClick:t=>g.handlePictureRemove(r)},[require$$0$1.createVNode(c,{"icon-class":"el-delete"})],8,_hoisted_5$9)])]),tip:require$$0$1.withCtx(()=>[e.field.options.uploadTip?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_6$8,require$$0$1.toDisplayString(e.field.options.uploadTip),1)):require$$0$1.createCommentVNode("",!0)]),default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_7$5,[require$$0$1.createVNode(c,{"icon-class":"el-plus"})])]),_:1},8,["disabled","action","headers","data","with-credentials","multiple","file-list","show-file-list","class","limit","on-exceed","before-upload","on-preview","on-success","on-error"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var pictureUploadWidget=_export_sfc$1(_sfc_main$2V,[["render",_sfc_render$2V],["__scopeId","data-v-5404b7f6"]]),__glob_0_12$1=Object.freeze(Object.defineProperty({__proto__:null,default:pictureUploadWidget},Symbol.toStringTag,{value:"Module"})),radioWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2U={name:"radio-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2U(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-radio-button"),c=require$$0$1.resolveComponent("el-radio"),i=require$$0$1.resolveComponent("el-radio-group"),u=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(u,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=r=>m.fieldModel=r),class:require$$0$1.normalizeClass({"radio-group-block":e.field.options.displayStyle==="block"}),disabled:e.field.options.disabled,size:n.widgetSize,onChange:n.handleChangeEvent},{default:require$$0$1.withCtx(()=>[e.field.options.buttonStyle?(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},require$$0$1.renderList(e.field.options.optionItems,(r,t)=>(require$$0$1.openBlock(),require$$0$1.createBlock(a,{key:t,label:r.value,disabled:r.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(r.label),1)]),_:2},1032,["label","disabled","border","style"]))),128)):(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},require$$0$1.renderList(e.field.options.optionItems,(r,t)=>(require$$0$1.openBlock(),require$$0$1.createBlock(c,{key:t,label:r.value,disabled:r.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(r.label),1)]),_:2},1032,["label","disabled","border","style"]))),128))]),_:1},8,["modelValue","class","disabled","size","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var radioWidget=_export_sfc$1(_sfc_main$2U,[["render",_sfc_render$2U],["__scopeId","data-v-5becdb92"]]),__glob_0_13$1=Object.freeze(Object.defineProperty({__proto__:null,default:radioWidget},Symbol.toStringTag,{value:"Module"})),rateWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2T={name:"rate-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2T(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-rate"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,max:e.field.options.max,"low-threshold":e.field.options.lowThreshold,"high-threshold":e.field.options.highThreshold,"allow-half":e.field.options.allowHalf,"show-text":e.field.options.showText,"show-score":e.field.options.showScore,onChange:n.handleChangeEvent},null,8,["modelValue","disabled","max","low-threshold","high-threshold","allow-half","show-text","show-score","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var rateWidget=_export_sfc$1(_sfc_main$2T,[["render",_sfc_render$2T],["__scopeId","data-v-e8d5267c"]]),__glob_0_14$1=Object.freeze(Object.defineProperty({__proto__:null,default:rateWidget},Symbol.toStringTag,{value:"Module"})),quill={exports:{}};/*! - * Quill Editor v1.3.7 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */(function(n,d){(function(p,m){n.exports=m()})(typeof self!="undefined"?self:commonjsGlobal,function(){return function(e){var p={};function m(g){if(p[g])return p[g].exports;var a=p[g]={i:g,l:!1,exports:{}};return e[g].call(a.exports,a,a.exports,m),a.l=!0,a.exports}return m.m=e,m.c=p,m.d=function(g,a,c){m.o(g,a)||Object.defineProperty(g,a,{configurable:!1,enumerable:!0,get:c})},m.n=function(g){var a=g&&g.__esModule?function(){return g.default}:function(){return g};return m.d(a,"a",a),a},m.o=function(g,a){return Object.prototype.hasOwnProperty.call(g,a)},m.p="",m(m.s=109)}([function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(17),a=m(18),c=m(19),i=m(45),u=m(46),r=m(47),t=m(48),l=m(49),o=m(12),s=m(32),f=m(33),h=m(31),v=m(1),$={Scope:v.Scope,create:v.create,find:v.find,query:v.query,register:v.register,Container:g.default,Format:a.default,Leaf:c.default,Embed:t.default,Scroll:i.default,Block:r.default,Inline:u.default,Text:l.default,Attributor:{Attribute:o.default,Class:s.default,Style:f.default,Store:h.default}};p.default=$},function(e,p,m){var g=this&&this.__extends||function(){var h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,$){v.__proto__=$}||function(v,$){for(var C in $)$.hasOwnProperty(C)&&(v[C]=$[C])};return function(v,$){h(v,$);function C(){this.constructor=v}v.prototype=$===null?Object.create($):(C.prototype=$.prototype,new C)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=function(h){g(v,h);function v($){var C=this;return $="[Parchment] "+$,C=h.call(this,$)||this,C.message=$,C.name=C.constructor.name,C}return v}(Error);p.ParchmentError=a;var c={},i={},u={},r={};p.DATA_KEY="__blot";var t;(function(h){h[h.TYPE=3]="TYPE",h[h.LEVEL=12]="LEVEL",h[h.ATTRIBUTE=13]="ATTRIBUTE",h[h.BLOT=14]="BLOT",h[h.INLINE=7]="INLINE",h[h.BLOCK=11]="BLOCK",h[h.BLOCK_BLOT=10]="BLOCK_BLOT",h[h.INLINE_BLOT=6]="INLINE_BLOT",h[h.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",h[h.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",h[h.ANY=15]="ANY"})(t=p.Scope||(p.Scope={}));function l(h,v){var $=s(h);if($==null)throw new a("Unable to create "+h+" blot");var C=$,b=h instanceof Node||h.nodeType===Node.TEXT_NODE?h:C.create(v);return new C(b,v)}p.create=l;function o(h,v){return v===void 0&&(v=!1),h==null?null:h[p.DATA_KEY]!=null?h[p.DATA_KEY].blot:v?o(h.parentNode,v):null}p.find=o;function s(h,v){v===void 0&&(v=t.ANY);var $;if(typeof h=="string")$=r[h]||c[h];else if(h instanceof Text||h.nodeType===Node.TEXT_NODE)$=r.text;else if(typeof h=="number")h&t.LEVEL&t.BLOCK?$=r.block:h&t.LEVEL&t.INLINE&&($=r.inline);else if(h instanceof HTMLElement){var C=(h.getAttribute("class")||"").split(/\s+/);for(var b in C)if($=i[C[b]],$)break;$=$||u[h.tagName]}return $==null?null:v&t.LEVEL&$.scope&&v&t.TYPE&$.scope?$:null}p.query=s;function f(){for(var h=[],v=0;v1)return h.map(function(b){return f(b)});var $=h[0];if(typeof $.blotName!="string"&&typeof $.attrName!="string")throw new a("Invalid definition");if($.blotName==="abstract")throw new a("Cannot register abstract class");if(r[$.blotName||$.attrName]=$,typeof $.keyName=="string")c[$.keyName]=$;else if($.className!=null&&(i[$.className]=$),$.tagName!=null){Array.isArray($.tagName)?$.tagName=$.tagName.map(function(b){return b.toUpperCase()}):$.tagName=$.tagName.toUpperCase();var C=Array.isArray($.tagName)?$.tagName:[$.tagName];C.forEach(function(b){(u[b]==null||$.className==null)&&(u[b]=$)})}return $}p.register=f},function(e,p,m){var g=m(51),a=m(11),c=m(3),i=m(20),u=String.fromCharCode(0),r=function(t){Array.isArray(t)?this.ops=t:t!=null&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]};r.prototype.insert=function(t,l){var o={};return t.length===0?this:(o.insert=t,l!=null&&typeof l=="object"&&Object.keys(l).length>0&&(o.attributes=l),this.push(o))},r.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},r.prototype.retain=function(t,l){if(t<=0)return this;var o={retain:t};return l!=null&&typeof l=="object"&&Object.keys(l).length>0&&(o.attributes=l),this.push(o)},r.prototype.push=function(t){var l=this.ops.length,o=this.ops[l-1];if(t=c(!0,{},t),typeof o=="object"){if(typeof t.delete=="number"&&typeof o.delete=="number")return this.ops[l-1]={delete:o.delete+t.delete},this;if(typeof o.delete=="number"&&t.insert!=null&&(l-=1,o=this.ops[l-1],typeof o!="object"))return this.ops.unshift(t),this;if(a(t.attributes,o.attributes)){if(typeof t.insert=="string"&&typeof o.insert=="string")return this.ops[l-1]={insert:o.insert+t.insert},typeof t.attributes=="object"&&(this.ops[l-1].attributes=t.attributes),this;if(typeof t.retain=="number"&&typeof o.retain=="number")return this.ops[l-1]={retain:o.retain+t.retain},typeof t.attributes=="object"&&(this.ops[l-1].attributes=t.attributes),this}}return l===this.ops.length?this.ops.push(t):this.ops.splice(l,0,t),this},r.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},r.prototype.filter=function(t){return this.ops.filter(t)},r.prototype.forEach=function(t){this.ops.forEach(t)},r.prototype.map=function(t){return this.ops.map(t)},r.prototype.partition=function(t){var l=[],o=[];return this.forEach(function(s){var f=t(s)?l:o;f.push(s)}),[l,o]},r.prototype.reduce=function(t,l){return this.ops.reduce(t,l)},r.prototype.changeLength=function(){return this.reduce(function(t,l){return l.insert?t+i.length(l):l.delete?t-l.delete:t},0)},r.prototype.length=function(){return this.reduce(function(t,l){return t+i.length(l)},0)},r.prototype.slice=function(t,l){t=t||0,typeof l!="number"&&(l=1/0);for(var o=[],s=i.iterator(this.ops),f=0;f0&&o.next(f.retain-h)}for(var v=new r(s);l.hasNext()||o.hasNext();)if(o.peekType()==="insert")v.push(o.next());else if(l.peekType()==="delete")v.push(l.next());else{var $=Math.min(l.peekLength(),o.peekLength()),C=l.next($),b=o.next($);if(typeof b.retain=="number"){var y={};typeof C.retain=="number"?y.retain=$:y.insert=C.insert;var _=i.attributes.compose(C.attributes,b.attributes,typeof C.retain=="number");if(_&&(y.attributes=_),v.push(y),!o.hasNext()&&a(v.ops[v.ops.length-1],y)){var E=new r(l.rest());return v.concat(E).chop()}}else typeof b.delete=="number"&&typeof C.retain=="number"&&v.push(b)}return v.chop()},r.prototype.concat=function(t){var l=new r(this.ops.slice());return t.ops.length>0&&(l.push(t.ops[0]),l.ops=l.ops.concat(t.ops.slice(1))),l},r.prototype.diff=function(t,l){if(this.ops===t.ops)return new r;var o=[this,t].map(function($){return $.map(function(C){if(C.insert!=null)return typeof C.insert=="string"?C.insert:u;var b=$===t?"on":"with";throw new Error("diff() called "+b+" non-document")}).join("")}),s=new r,f=g(o[0],o[1],l),h=i.iterator(this.ops),v=i.iterator(t.ops);return f.forEach(function($){for(var C=$[1].length;C>0;){var b=0;switch($[0]){case g.INSERT:b=Math.min(v.peekLength(),C),s.push(v.next(b));break;case g.DELETE:b=Math.min(C,h.peekLength()),h.next(b),s.delete(b);break;case g.EQUAL:b=Math.min(h.peekLength(),v.peekLength(),C);var y=h.next(b),_=v.next(b);a(y.insert,_.insert)?s.retain(b,i.attributes.diff(y.attributes,_.attributes)):s.push(_).delete(b);break}C-=b}}),s.chop()},r.prototype.eachLine=function(t,l){l=l||` -`;for(var o=i.iterator(this.ops),s=new r,f=0;o.hasNext();){if(o.peekType()!=="insert")return;var h=o.peek(),v=i.length(h)-o.peekLength(),$=typeof h.insert=="string"?h.insert.indexOf(l,v)-v:-1;if($<0)s.push(o.next());else if($>0)s.push(o.next($));else{if(t(s,o.next(1).attributes||{},f)===!1)return;f+=1,s=new r}}s.length()>0&&t(s,{},f)},r.prototype.transform=function(t,l){if(l=!!l,typeof t=="number")return this.transformPosition(t,l);for(var o=i.iterator(this.ops),s=i.iterator(t.ops),f=new r;o.hasNext()||s.hasNext();)if(o.peekType()==="insert"&&(l||s.peekType()!=="insert"))f.retain(i.length(o.next()));else if(s.peekType()==="insert")f.push(s.next());else{var h=Math.min(o.peekLength(),s.peekLength()),v=o.next(h),$=s.next(h);if(v.delete)continue;$.delete?f.push($):f.retain(h,i.attributes.transform(v.attributes,$.attributes,l))}return f.chop()},r.prototype.transformPosition=function(t,l){l=!!l;for(var o=i.iterator(this.ops),s=0;o.hasNext()&&s<=t;){var f=o.peekLength(),h=o.peekType();if(o.next(),h==="delete"){t-=Math.min(f,t-s);continue}else h==="insert"&&(s0&&(S1&&arguments[1]!==void 0?arguments[1]:!1;if(q&&(S===0||S>=this.length()-E)){var L=this.clone();return S===0?(this.parent.insertBefore(L,this),this):(this.parent.insertBefore(L,this.next),L)}else{var A=a(M.prototype.__proto__||Object.getPrototypeOf(M.prototype),"split",this).call(this,S,q);return this.cache={},A}}}]),M}(l.default.Block);T.blotName="block",T.tagName="P",T.defaultChild="break",T.allowedChildren=[h.default,l.default.Embed,$.default];function x(w){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return w==null||(typeof w.formats=="function"&&(M=(0,i.default)(M,w.formats())),w.parent==null||w.parent.blotName=="scroll"||w.parent.statics.scope!==w.statics.scope)?M:x(w.parent,M)}p.bubbleFormats=x,p.BlockEmbed=O,p.default=T},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.overload=p.expandConfig=void 0;var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(N){return typeof N}:function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},a=function(){function N(B,R){var V=[],F=!0,P=!1,j=void 0;try{for(var I=B[Symbol.iterator](),W;!(F=(W=I.next()).done)&&(V.push(W.value),!(R&&V.length===R));F=!0);}catch(H){P=!0,j=H}finally{try{!F&&I.return&&I.return()}finally{if(P)throw j}}return V}return function(B,R){if(Array.isArray(B))return B;if(Symbol.iterator in Object(B))return N(B,R);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function N(B,R){for(var V=0;V2&&arguments[2]!==void 0?arguments[2]:!1;if(typeof R!="string"){var j=R.attrName||R.blotName;typeof j=="string"?this.register("formats/"+j,R,V):Object.keys(R).forEach(function(I){F.register(I,R[I],V)})}else this.imports[R]!=null&&!P&&k.warn("Overwriting "+R+" with",V),this.imports[R]=V,(R.startsWith("blots/")||R.startsWith("formats/"))&&V.blotName!=="abstract"?v.default.register(V):R.startsWith("modules")&&typeof V.register=="function"&&V.register()}}]);function N(B){var R=this,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(M(this,N),this.options=q(B,V),this.container=this.options.container,this.container==null)return k.error("Invalid Quill container",B);this.options.debug&&N.debug(this.options.debug);var F=this.container.innerHTML.trim();this.container.classList.add("ql-container"),this.container.innerHTML="",this.container.__quill=this,this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.root.setAttribute("data-gramm",!1),this.scrollingContainer=this.options.scrollingContainer||this.root,this.emitter=new o.default,this.scroll=v.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new t.default(this.scroll),this.selection=new C.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(o.default.events.EDITOR_CHANGE,function(j){j===o.default.events.TEXT_CHANGE&&R.root.classList.toggle("ql-blank",R.editor.isBlank())}),this.emitter.on(o.default.events.SCROLL_UPDATE,function(j,I){var W=R.selection.lastRange,H=W&&W.length===0?W.index:void 0;L.call(R,function(){return R.editor.update(null,I,H)},j)});var P=this.clipboard.convert(`
`+F+"


");this.setContents(P),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return c(N,[{key:"addContainer",value:function(R){var V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(typeof R=="string"){var F=R;R=document.createElement("div"),R.classList.add(F)}return this.container.insertBefore(R,V),R}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(R,V,F){var P=this,j=A(R,V,F),I=a(j,4);return R=I[0],V=I[1],F=I[3],L.call(this,function(){return P.editor.deleteText(R,V)},F,R,-1*V)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.scroll.enable(R),this.container.classList.toggle("ql-disabled",!R)}},{key:"focus",value:function(){var R=this.scrollingContainer.scrollTop;this.selection.focus(),this.scrollingContainer.scrollTop=R,this.scrollIntoView()}},{key:"format",value:function(R,V){var F=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:o.default.sources.API;return L.call(this,function(){var j=F.getSelection(!0),I=new u.default;if(j==null)return I;if(v.default.query(R,v.default.Scope.BLOCK))I=F.editor.formatLine(j.index,j.length,w({},R,V));else{if(j.length===0)return F.selection.format(R,V),I;I=F.editor.formatText(j.index,j.length,w({},R,V))}return F.setSelection(j,o.default.sources.SILENT),I},P)}},{key:"formatLine",value:function(R,V,F,P,j){var I=this,W=void 0,H=A(R,V,F,P,j),z=a(H,4);return R=z[0],V=z[1],W=z[2],j=z[3],L.call(this,function(){return I.editor.formatLine(R,V,W)},j,R,0)}},{key:"formatText",value:function(R,V,F,P,j){var I=this,W=void 0,H=A(R,V,F,P,j),z=a(H,4);return R=z[0],V=z[1],W=z[2],j=z[3],L.call(this,function(){return I.editor.formatText(R,V,W)},j,R,0)}},{key:"getBounds",value:function(R){var V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,F=void 0;typeof R=="number"?F=this.selection.getBounds(R,V):F=this.selection.getBounds(R.index,R.length);var P=this.container.getBoundingClientRect();return{bottom:F.bottom-P.top,height:F.height,left:F.left-P.left,right:F.right-P.left,top:F.top-P.top,width:F.width}}},{key:"getContents",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.getLength()-R,F=A(R,V),P=a(F,2);return R=P[0],V=P[1],this.editor.getContents(R,V)}},{key:"getFormat",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.getSelection(!0),V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return typeof R=="number"?this.editor.getFormat(R,V):this.editor.getFormat(R.index,R.length)}},{key:"getIndex",value:function(R){return R.offset(this.scroll)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getLeaf",value:function(R){return this.scroll.leaf(R)}},{key:"getLine",value:function(R){return this.scroll.line(R)}},{key:"getLines",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE;return typeof R!="number"?this.scroll.lines(R.index,R.length):this.scroll.lines(R,V)}},{key:"getModule",value:function(R){return this.theme.modules[R]}},{key:"getSelection",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return R&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.getLength()-R,F=A(R,V),P=a(F,2);return R=P[0],V=P[1],this.editor.getText(R,V)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(R,V,F){var P=this,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:N.sources.API;return L.call(this,function(){return P.editor.insertEmbed(R,V,F)},j,R)}},{key:"insertText",value:function(R,V,F,P,j){var I=this,W=void 0,H=A(R,0,F,P,j),z=a(H,4);return R=z[0],W=z[2],j=z[3],L.call(this,function(){return I.editor.insertText(R,V,W)},j,R,V.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(R,V,F){this.clipboard.dangerouslyPasteHTML(R,V,F)}},{key:"removeFormat",value:function(R,V,F){var P=this,j=A(R,V,F),I=a(j,4);return R=I[0],V=I[1],F=I[3],L.call(this,function(){return P.editor.removeFormat(R,V)},F,R)}},{key:"scrollIntoView",value:function(){this.selection.scrollIntoView(this.scrollingContainer)}},{key:"setContents",value:function(R){var V=this,F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:o.default.sources.API;return L.call(this,function(){R=new u.default(R);var P=V.getLength(),j=V.editor.deleteText(0,P),I=V.editor.applyDelta(R),W=I.ops[I.ops.length-1];W!=null&&typeof W.insert=="string"&&W.insert[W.insert.length-1]===` -`&&(V.editor.deleteText(V.getLength()-1,1),I.delete(1));var H=j.compose(I);return H},F)}},{key:"setSelection",value:function(R,V,F){if(R==null)this.selection.setRange(null,V||N.sources.API);else{var P=A(R,V,F),j=a(P,4);R=j[0],V=j[1],F=j[3],this.selection.setRange(new $.Range(R,V),F),F!==o.default.sources.SILENT&&this.selection.scrollIntoView(this.scrollingContainer)}}},{key:"setText",value:function(R){var V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:o.default.sources.API,F=new u.default().insert(R);return this.setContents(F,V)}},{key:"update",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:o.default.sources.USER,V=this.scroll.update(R);return this.selection.update(R),V}},{key:"updateContents",value:function(R){var V=this,F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:o.default.sources.API;return L.call(this,function(){return R=new u.default(R),V.editor.applyDelta(R,F)},F,!0)}}]),N}();S.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,scrollingContainer:null,strict:!0,theme:"default"},S.events=o.default.events,S.sources=o.default.sources,S.version="1.3.7",S.imports={delta:u.default,parchment:v.default,"core/module":f.default,"core/theme":T.default};function q(N,B){if(B=(0,y.default)(!0,{container:N,modules:{clipboard:!0,keyboard:!0,history:!0}},B),!B.theme||B.theme===S.DEFAULTS.theme)B.theme=T.default;else if(B.theme=S.import("themes/"+B.theme),B.theme==null)throw new Error("Invalid theme "+B.theme+". Did you register it?");var R=(0,y.default)(!0,{},B.theme.DEFAULTS);[R,B].forEach(function(P){P.modules=P.modules||{},Object.keys(P.modules).forEach(function(j){P.modules[j]===!0&&(P.modules[j]={})})});var V=Object.keys(R.modules).concat(Object.keys(B.modules)),F=V.reduce(function(P,j){var I=S.import("modules/"+j);return I==null?k.error("Cannot load "+j+" module. Are you sure you registered it?"):P[j]=I.DEFAULTS||{},P},{});return B.modules!=null&&B.modules.toolbar&&B.modules.toolbar.constructor!==Object&&(B.modules.toolbar={container:B.modules.toolbar}),B=(0,y.default)(!0,{},S.DEFAULTS,{modules:F},R,B),["bounds","container","scrollingContainer"].forEach(function(P){typeof B[P]=="string"&&(B[P]=document.querySelector(B[P]))}),B.modules=Object.keys(B.modules).reduce(function(P,j){return B.modules[j]&&(P[j]=B.modules[j]),P},{}),B}function L(N,B,R,V){if(this.options.strict&&!this.isEnabled()&&B===o.default.sources.USER)return new u.default;var F=R==null?null:this.getSelection(),P=this.editor.delta,j=N();if(F!=null&&(R===!0&&(R=F.index),V==null?F=D(F,j,B):V!==0&&(F=D(F,R,V,B)),this.setSelection(F,o.default.sources.SILENT)),j.length()>0){var I,W=[o.default.events.TEXT_CHANGE,j,P,B];if((I=this.emitter).emit.apply(I,[o.default.events.EDITOR_CHANGE].concat(W)),B!==o.default.sources.SILENT){var H;(H=this.emitter).emit.apply(H,W)}}return j}function A(N,B,R,V,F){var P={};return typeof N.index=="number"&&typeof N.length=="number"?typeof B!="number"?(F=V,V=R,R=B,B=N.length,N=N.index):(B=N.length,N=N.index):typeof B!="number"&&(F=V,V=R,R=B,B=0),(typeof R=="undefined"?"undefined":g(R))==="object"?(P=R,F=V):typeof R=="string"&&(V!=null?P[R]=V:F=R),F=F||o.default.sources.API,[N,B,P,F]}function D(N,B,R,V){if(N==null)return null;var F=void 0,P=void 0;if(B instanceof u.default){var j=[N.index,N.index+N.length].map(function(z){return B.transformPosition(z,V!==o.default.sources.USER)}),I=a(j,2);F=I[0],P=I[1]}else{var W=[N.index,N.index+N.length].map(function(z){return z=0?z+R:Math.max(B,z+R)}),H=a(W,2);F=H[0],P=H[1]}return new $.Range(F,P-F)}p.expandConfig=q,p.overload=A,p.default=S},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function h(v,$){for(var C=0;C<$.length;C++){var b=$[C];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(v,b.key,b)}}return function(v,$,C){return $&&h(v.prototype,$),C&&h(v,C),v}}(),a=function h(v,$,C){v===null&&(v=Function.prototype);var b=Object.getOwnPropertyDescriptor(v,$);if(b===void 0){var y=Object.getPrototypeOf(v);return y===null?void 0:h(y,$,C)}else{if("value"in b)return b.value;var _=b.get;return _===void 0?void 0:_.call(C)}},c=m(7),i=t(c),u=m(0),r=t(u);function t(h){return h&&h.__esModule?h:{default:h}}function l(h,v){if(!(h instanceof v))throw new TypeError("Cannot call a class as a function")}function o(h,v){if(!h)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return v&&(typeof v=="object"||typeof v=="function")?v:h}function s(h,v){if(typeof v!="function"&&v!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof v);h.prototype=Object.create(v&&v.prototype,{constructor:{value:h,enumerable:!1,writable:!0,configurable:!0}}),v&&(Object.setPrototypeOf?Object.setPrototypeOf(h,v):h.__proto__=v)}var f=function(h){s(v,h);function v(){return l(this,v),o(this,(v.__proto__||Object.getPrototypeOf(v)).apply(this,arguments))}return g(v,[{key:"formatAt",value:function(C,b,y,_){if(v.compare(this.statics.blotName,y)<0&&r.default.query(y,r.default.Scope.BLOT)){var E=this.isolate(C,b);_&&E.wrap(y,_)}else a(v.prototype.__proto__||Object.getPrototypeOf(v.prototype),"formatAt",this).call(this,C,b,y,_)}},{key:"optimize",value:function(C){if(a(v.prototype.__proto__||Object.getPrototypeOf(v.prototype),"optimize",this).call(this,C),this.parent instanceof v&&v.compare(this.statics.blotName,this.parent.statics.blotName)>0){var b=this.parent.isolate(this.offset(),this.length());this.moveChildren(b),b.wrap(this)}}}],[{key:"compare",value:function(C,b){var y=v.order.indexOf(C),_=v.order.indexOf(b);return y>=0||_>=0?y-_:C===b?0:C1?_-1:0),O=1;O<_;O++)E[O-1]=arguments[O];(this.listeners[y.type]||[]).forEach(function(T){var x=T.node,w=T.handler;(y.target===x||x.contains(y.target))&&w.apply(void 0,[y].concat(E))})}},{key:"listenDOM",value:function(y,_,E){this.listeners[y]||(this.listeners[y]=[]),this.listeners[y].push({node:_,handler:E})}}]),C}(i.default);v.events={EDITOR_CHANGE:"editor-change",SCROLL_BEFORE_UPDATE:"scroll-before-update",SCROLL_OPTIMIZE:"scroll-optimize",SCROLL_UPDATE:"scroll-update",SELECTION_CHANGE:"selection-change",TEXT_CHANGE:"text-change"},v.sources={API:"api",SILENT:"silent",USER:"user"},p.default=v},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});function g(c,i){if(!(c instanceof i))throw new TypeError("Cannot call a class as a function")}var a=function c(i){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};g(this,c),this.quill=i,this.options=u};a.DEFAULTS={},p.default=a},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=["error","warn","log","info"],a="warn";function c(u){if(g.indexOf(u)<=g.indexOf(a)){for(var r,t=arguments.length,l=Array(t>1?t-1:0),o=1;o0&&typeof l[0]!="number")}function t(l,o,s){var f,h;if(u(l)||u(o)||l.prototype!==o.prototype)return!1;if(c(l))return c(o)?(l=g.call(l),o=g.call(o),i(l,o,s)):!1;if(r(l)){if(!r(o)||l.length!==o.length)return!1;for(f=0;f=0;f--)if(v[f]!=$[f])return!1;for(f=v.length-1;f>=0;f--)if(h=v[f],!i(l[h],o[h],s))return!1;return typeof l==typeof o}},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(1),a=function(){function c(i,u,r){r===void 0&&(r={}),this.attrName=i,this.keyName=u;var t=g.Scope.TYPE&g.Scope.ATTRIBUTE;r.scope!=null?this.scope=r.scope&g.Scope.LEVEL|t:this.scope=g.Scope.ATTRIBUTE,r.whitelist!=null&&(this.whitelist=r.whitelist)}return c.keys=function(i){return[].map.call(i.attributes,function(u){return u.name})},c.prototype.add=function(i,u){return this.canAdd(i,u)?(i.setAttribute(this.keyName,u),!0):!1},c.prototype.canAdd=function(i,u){var r=g.query(i,g.Scope.BLOT&(this.scope|g.Scope.TYPE));return r==null?!1:this.whitelist==null?!0:typeof u=="string"?this.whitelist.indexOf(u.replace(/["']/g,""))>-1:this.whitelist.indexOf(u)>-1},c.prototype.remove=function(i){i.removeAttribute(this.keyName)},c.prototype.value=function(i){var u=i.getAttribute(this.keyName);return this.canAdd(i,u)&&u?u:""},c}();p.default=a},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.Code=void 0;var g=function(){function O(T,x){var w=[],M=!0,k=!1,S=void 0;try{for(var q=T[Symbol.iterator](),L;!(M=(L=q.next()).done)&&(w.push(L.value),!(x&&w.length===x));M=!0);}catch(A){k=!0,S=A}finally{try{!M&&q.return&&q.return()}finally{if(k)throw S}}return w}return function(T,x){if(Array.isArray(T))return T;if(Symbol.iterator in Object(T))return O(T,x);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function(){function O(T,x){for(var w=0;w=w+M)){var L=this.newlineIndex(w,!0)+1,A=q-L+1,D=this.isolate(L,A),N=D.next;D.format(k,S),N instanceof T&&N.formatAt(0,w-L+M-A,k,S)}}}},{key:"insertAt",value:function(w,M,k){if(k==null){var S=this.descendant(v.default,w),q=g(S,2),L=q[0],A=q[1];L.insertAt(A,M)}}},{key:"length",value:function(){var w=this.domNode.textContent.length;return this.domNode.textContent.endsWith(` -`)?w:w+1}},{key:"newlineIndex",value:function(w){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(M)return this.domNode.textContent.slice(0,w).lastIndexOf(` -`);var k=this.domNode.textContent.slice(w).indexOf(` -`);return k>-1?w+k:-1}},{key:"optimize",value:function(w){this.domNode.textContent.endsWith(` -`)||this.appendChild(t.default.create("text",` -`)),c(T.prototype.__proto__||Object.getPrototypeOf(T.prototype),"optimize",this).call(this,w);var M=this.next;M!=null&&M.prev===this&&M.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===M.statics.formats(M.domNode)&&(M.optimize(w),M.moveChildren(this),M.remove())}},{key:"replace",value:function(w){c(T.prototype.__proto__||Object.getPrototypeOf(T.prototype),"replace",this).call(this,w),[].slice.call(this.domNode.querySelectorAll("*")).forEach(function(M){var k=t.default.find(M);k==null?M.parentNode.removeChild(M):k instanceof t.default.Embed?k.remove():k.unwrap()})}}],[{key:"create",value:function(w){var M=c(T.__proto__||Object.getPrototypeOf(T),"create",this).call(this,w);return M.setAttribute("spellcheck",!1),M}},{key:"formats",value:function(){return!0}}]),T}(o.default);E.blotName="code-block",E.tagName="PRE",E.TAB=" ",p.Code=_,p.default=E},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(N){return typeof N}:function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},a=function(){function N(B,R){var V=[],F=!0,P=!1,j=void 0;try{for(var I=B[Symbol.iterator](),W;!(F=(W=I.next()).done)&&(V.push(W.value),!(R&&V.length===R));F=!0);}catch(H){P=!0,j=H}finally{try{!F&&I.return&&I.return()}finally{if(P)throw j}}return V}return function(B,R){if(Array.isArray(B))return B;if(Symbol.iterator in Object(B))return N(B,R);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function N(B,R){for(var V=0;V=P&&!z.endsWith(` -`)&&(F=!0),V.scroll.insertAt(j,z);var G=V.scroll.line(j),Z=a(G,2),oe=Z[0],se=Z[1],ae=(0,w.default)({},(0,$.bubbleFormats)(oe));if(oe instanceof C.default){var de=oe.descendant(o.default.Leaf,se),be=a(de,1),ye=be[0];ae=(0,w.default)(ae,(0,$.bubbleFormats)(ye))}H=t.default.attributes.diff(ae,H)||{}}else if(g(I.insert)==="object"){var X=Object.keys(I.insert)[0];if(X==null)return j;V.scroll.insertAt(j,X,I.insert[X])}P+=W}return Object.keys(H).forEach(function(Q){V.scroll.formatAt(j,W,Q,H[Q])}),j+W},0),R.reduce(function(j,I){return typeof I.delete=="number"?(V.scroll.deleteAt(j,I.delete),j):j+(I.retain||I.insert.length||1)},0),this.scroll.batchEnd(),this.update(R)}},{key:"deleteText",value:function(R,V){return this.scroll.deleteAt(R,V),this.update(new u.default().retain(R).delete(V))}},{key:"formatLine",value:function(R,V){var F=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.scroll.update(),Object.keys(P).forEach(function(j){if(!(F.scroll.whitelist!=null&&!F.scroll.whitelist[j])){var I=F.scroll.lines(R,Math.max(V,1)),W=V;I.forEach(function(H){var z=H.length();if(!(H instanceof f.default))H.format(j,P[j]);else{var G=R-H.offset(F.scroll),Z=H.newlineIndex(G+W)-G+1;H.formatAt(G,Z,j,P[j])}W-=z})}}),this.scroll.optimize(),this.update(new u.default().retain(R).retain(V,(0,E.default)(P)))}},{key:"formatText",value:function(R,V){var F=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return Object.keys(P).forEach(function(j){F.scroll.formatAt(R,V,j,P[j])}),this.update(new u.default().retain(R).retain(V,(0,E.default)(P)))}},{key:"getContents",value:function(R,V){return this.delta.slice(R,R+V)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce(function(R,V){return R.concat(V.delta())},new u.default)}},{key:"getFormat",value:function(R){var V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,F=[],P=[];V===0?this.scroll.path(R).forEach(function(I){var W=a(I,1),H=W[0];H instanceof C.default?F.push(H):H instanceof o.default.Leaf&&P.push(H)}):(F=this.scroll.lines(R,V),P=this.scroll.descendants(o.default.Leaf,R,V));var j=[F,P].map(function(I){if(I.length===0)return{};for(var W=(0,$.bubbleFormats)(I.shift());Object.keys(W).length>0;){var H=I.shift();if(H==null)return W;W=A((0,$.bubbleFormats)(H),W)}return W});return w.default.apply(w.default,j)}},{key:"getText",value:function(R,V){return this.getContents(R,V).filter(function(F){return typeof F.insert=="string"}).map(function(F){return F.insert}).join("")}},{key:"insertEmbed",value:function(R,V,F){return this.scroll.insertAt(R,V,F),this.update(new u.default().retain(R).insert(k({},V,F)))}},{key:"insertText",value:function(R,V){var F=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return V=V.replace(/\r\n/g,` -`).replace(/\r/g,` -`),this.scroll.insertAt(R,V),Object.keys(P).forEach(function(j){F.scroll.formatAt(R,V.length,j,P[j])}),this.update(new u.default().retain(R).insert(V,(0,E.default)(P)))}},{key:"isBlank",value:function(){if(this.scroll.children.length==0)return!0;if(this.scroll.children.length>1)return!1;var R=this.scroll.children.head;return R.statics.blotName!==C.default.blotName||R.children.length>1?!1:R.children.head instanceof y.default}},{key:"removeFormat",value:function(R,V){var F=this.getText(R,V),P=this.scroll.line(R+V),j=a(P,2),I=j[0],W=j[1],H=0,z=new u.default;I!=null&&(I instanceof f.default?H=I.newlineIndex(W)-W+1:H=I.length()-W,z=I.delta().slice(W,W+H-1).insert(` -`));var G=this.getContents(R,V+H),Z=G.diff(new u.default().insert(F).concat(z)),oe=new u.default().retain(R).concat(Z);return this.applyDelta(oe)}},{key:"update",value:function(R){var V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],F=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,P=this.delta;if(V.length===1&&V[0].type==="characterData"&&V[0].target.data.match(q)&&o.default.find(V[0].target)){var j=o.default.find(V[0].target),I=(0,$.bubbleFormats)(j),W=j.offset(this.scroll),H=V[0].oldValue.replace(v.default.CONTENTS,""),z=new u.default().insert(H),G=new u.default().insert(j.value()),Z=new u.default().retain(W).concat(z.diff(G,F));R=Z.reduce(function(oe,se){return se.insert?oe.insert(se.insert,I):oe.push(se)},new u.default),this.delta=P.compose(R)}else this.delta=this.getDelta(),(!R||!(0,T.default)(P.compose(R),this.delta))&&(R=P.diff(this.delta,F));return R}}]),N}();function A(N,B){return Object.keys(B).reduce(function(R,V){return N[V]==null||(B[V]===N[V]?R[V]=B[V]:Array.isArray(B[V])?B[V].indexOf(N[V])<0&&(R[V]=B[V].concat([N[V]])):R[V]=[B[V],N[V]]),R},{})}function D(N){return N.reduce(function(B,R){if(R.insert===1){var V=(0,E.default)(R.attributes);return delete V.image,B.insert({image:R.attributes.image},V)}if(R.attributes!=null&&(R.attributes.list===!0||R.attributes.bullet===!0)&&(R=(0,E.default)(R),R.attributes.list?R.attributes.list="ordered":(R.attributes.list="bullet",delete R.attributes.bullet)),typeof R.insert=="string"){var F=R.insert.replace(/\r\n/g,` -`).replace(/\r/g,` -`);return B.insert(F,R.attributes)}return B.push(R)},new u.default)}p.default=L},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.Range=void 0;var g=function(){function O(T,x){var w=[],M=!0,k=!1,S=void 0;try{for(var q=T[Symbol.iterator](),L;!(M=(L=q.next()).done)&&(w.push(L.value),!(x&&w.length===x));M=!0);}catch(A){k=!0,S=A}finally{try{!M&&q.return&&q.return()}finally{if(k)throw S}}return w}return function(T,x){if(Array.isArray(T))return T;if(Symbol.iterator in Object(T))return O(T,x);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function(){function O(T,x){for(var w=0;w1&&arguments[1]!==void 0?arguments[1]:0;C(this,O),this.index=T,this.length=x},_=function(){function O(T,x){var w=this;C(this,O),this.emitter=x,this.scroll=T,this.composing=!1,this.mouseDown=!1,this.root=this.scroll.domNode,this.cursor=i.default.create("cursor",this),this.lastRange=this.savedRange=new y(0,0),this.handleComposition(),this.handleDragging(),this.emitter.listenDOM("selectionchange",document,function(){w.mouseDown||setTimeout(w.update.bind(w,s.default.sources.USER),1)}),this.emitter.on(s.default.events.EDITOR_CHANGE,function(M,k){M===s.default.events.TEXT_CHANGE&&k.length()>0&&w.update(s.default.sources.SILENT)}),this.emitter.on(s.default.events.SCROLL_BEFORE_UPDATE,function(){if(!!w.hasFocus()){var M=w.getNativeRange();M!=null&&M.start.node!==w.cursor.textNode&&w.emitter.once(s.default.events.SCROLL_UPDATE,function(){try{w.setNativeRange(M.start.node,M.start.offset,M.end.node,M.end.offset)}catch{}})}}),this.emitter.on(s.default.events.SCROLL_OPTIMIZE,function(M,k){if(k.range){var S=k.range,q=S.startNode,L=S.startOffset,A=S.endNode,D=S.endOffset;w.setNativeRange(q,L,A,D)}}),this.update(s.default.sources.SILENT)}return a(O,[{key:"handleComposition",value:function(){var x=this;this.root.addEventListener("compositionstart",function(){x.composing=!0}),this.root.addEventListener("compositionend",function(){if(x.composing=!1,x.cursor.parent){var w=x.cursor.restore();if(!w)return;setTimeout(function(){x.setNativeRange(w.startNode,w.startOffset,w.endNode,w.endOffset)},1)}})}},{key:"handleDragging",value:function(){var x=this;this.emitter.listenDOM("mousedown",document.body,function(){x.mouseDown=!0}),this.emitter.listenDOM("mouseup",document.body,function(){x.mouseDown=!1,x.update(s.default.sources.USER)})}},{key:"focus",value:function(){this.hasFocus()||(this.root.focus(),this.setRange(this.savedRange))}},{key:"format",value:function(x,w){if(!(this.scroll.whitelist!=null&&!this.scroll.whitelist[x])){this.scroll.update();var M=this.getNativeRange();if(!(M==null||!M.native.collapsed||i.default.query(x,i.default.Scope.BLOCK))){if(M.start.node!==this.cursor.textNode){var k=i.default.find(M.start.node,!1);if(k==null)return;if(k instanceof i.default.Leaf){var S=k.split(M.start.offset);k.parent.insertBefore(this.cursor,S)}else k.insertBefore(this.cursor,M.start.node);this.cursor.attach()}this.cursor.format(x,w),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}}},{key:"getBounds",value:function(x){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,M=this.scroll.length();x=Math.min(x,M-1),w=Math.min(x+w,M-1)-x;var k=void 0,S=this.scroll.leaf(x),q=g(S,2),L=q[0],A=q[1];if(L==null)return null;var D=L.position(A,!0),N=g(D,2);k=N[0],A=N[1];var B=document.createRange();if(w>0){B.setStart(k,A);var R=this.scroll.leaf(x+w),V=g(R,2);if(L=V[0],A=V[1],L==null)return null;var F=L.position(A,!0),P=g(F,2);return k=P[0],A=P[1],B.setEnd(k,A),B.getBoundingClientRect()}else{var j="left",I=void 0;return k instanceof Text?(A0&&(j="right")),{bottom:I.top+I.height,height:I.height,left:I[j],right:I[j],top:I.top,width:0}}}},{key:"getNativeRange",value:function(){var x=document.getSelection();if(x==null||x.rangeCount<=0)return null;var w=x.getRangeAt(0);if(w==null)return null;var M=this.normalizeNative(w);return b.info("getNativeRange",M),M}},{key:"getRange",value:function(){var x=this.getNativeRange();if(x==null)return[null,null];var w=this.normalizedToRange(x);return[w,x]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"normalizedToRange",value:function(x){var w=this,M=[[x.start.node,x.start.offset]];x.native.collapsed||M.push([x.end.node,x.end.offset]);var k=M.map(function(L){var A=g(L,2),D=A[0],N=A[1],B=i.default.find(D,!0),R=B.offset(w.scroll);return N===0?R:B instanceof i.default.Container?R+B.length():R+B.index(D,N)}),S=Math.min(Math.max.apply(Math,$(k)),this.scroll.length()-1),q=Math.min.apply(Math,[S].concat($(k)));return new y(q,S-q)}},{key:"normalizeNative",value:function(x){if(!E(this.root,x.startContainer)||!x.collapsed&&!E(this.root,x.endContainer))return null;var w={start:{node:x.startContainer,offset:x.startOffset},end:{node:x.endContainer,offset:x.endOffset},native:x};return[w.start,w.end].forEach(function(M){for(var k=M.node,S=M.offset;!(k instanceof Text)&&k.childNodes.length>0;)if(k.childNodes.length>S)k=k.childNodes[S],S=0;else if(k.childNodes.length===S)k=k.lastChild,S=k instanceof Text?k.data.length:k.childNodes.length+1;else break;M.node=k,M.offset=S}),w}},{key:"rangeToNative",value:function(x){var w=this,M=x.collapsed?[x.index]:[x.index,x.index+x.length],k=[],S=this.scroll.length();return M.forEach(function(q,L){q=Math.min(S-1,q);var A=void 0,D=w.scroll.leaf(q),N=g(D,2),B=N[0],R=N[1],V=B.position(R,L!==0),F=g(V,2);A=F[0],R=F[1],k.push(A,R)}),k.length<2&&(k=k.concat(k)),k}},{key:"scrollIntoView",value:function(x){var w=this.lastRange;if(w!=null){var M=this.getBounds(w.index,w.length);if(M!=null){var k=this.scroll.length()-1,S=this.scroll.line(Math.min(w.index,k)),q=g(S,1),L=q[0],A=L;if(w.length>0){var D=this.scroll.line(Math.min(w.index+w.length,k)),N=g(D,1);A=N[0]}if(!(L==null||A==null)){var B=x.getBoundingClientRect();M.topB.bottom&&(x.scrollTop+=M.bottom-B.bottom)}}}}},{key:"setNativeRange",value:function(x,w){var M=arguments.length>2&&arguments[2]!==void 0?arguments[2]:x,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:w,S=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;if(b.info("setNativeRange",x,w,M,k),!(x!=null&&(this.root.parentNode==null||x.parentNode==null||M.parentNode==null))){var q=document.getSelection();if(q!=null)if(x!=null){this.hasFocus()||this.root.focus();var L=(this.getNativeRange()||{}).native;if(L==null||S||x!==L.startContainer||w!==L.startOffset||M!==L.endContainer||k!==L.endOffset){x.tagName=="BR"&&(w=[].indexOf.call(x.parentNode.childNodes,x),x=x.parentNode),M.tagName=="BR"&&(k=[].indexOf.call(M.parentNode.childNodes,M),M=M.parentNode);var A=document.createRange();A.setStart(x,w),A.setEnd(M,k),q.removeAllRanges(),q.addRange(A)}}else q.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(x){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,M=arguments.length>2&&arguments[2]!==void 0?arguments[2]:s.default.sources.API;if(typeof w=="string"&&(M=w,w=!1),b.info("setRange",x),x!=null){var k=this.rangeToNative(x);this.setNativeRange.apply(this,$(k).concat([w]))}else this.setNativeRange(null);this.update(M)}},{key:"update",value:function(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:s.default.sources.USER,w=this.lastRange,M=this.getRange(),k=g(M,2),S=k[0],q=k[1];if(this.lastRange=S,this.lastRange!=null&&(this.savedRange=this.lastRange),!(0,l.default)(w,this.lastRange)){var L;!this.composing&&q!=null&&q.native.collapsed&&q.start.node!==this.cursor.textNode&&this.cursor.restore();var A=[s.default.events.SELECTION_CHANGE,(0,r.default)(this.lastRange),(0,r.default)(w),x];if((L=this.emitter).emit.apply(L,[s.default.events.EDITOR_CHANGE].concat(A)),x!==s.default.sources.SILENT){var D;(D=this.emitter).emit.apply(D,A)}}}}]),O}();function E(O,T){try{T.parentNode}catch{return!1}return T instanceof Text&&(T=T.parentNode),O.contains(T)}p.Range=y,p.default=_},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function s(f,h){for(var v=0;v0&&(o+=1),[this.parent.domNode,o]},r.prototype.value=function(){var t;return t={},t[this.statics.blotName]=this.statics.value(this.domNode)||!0,t},r.scope=c.Scope.INLINE_BLOT,r}(a.default);p.default=i},function(e,p,m){var g=m(11),a=m(3),c={attributes:{compose:function(u,r,t){typeof u!="object"&&(u={}),typeof r!="object"&&(r={});var l=a(!0,{},r);t||(l=Object.keys(l).reduce(function(s,f){return l[f]!=null&&(s[f]=l[f]),s},{}));for(var o in u)u[o]!==void 0&&r[o]===void 0&&(l[o]=u[o]);return Object.keys(l).length>0?l:void 0},diff:function(u,r){typeof u!="object"&&(u={}),typeof r!="object"&&(r={});var t=Object.keys(u).concat(Object.keys(r)).reduce(function(l,o){return g(u[o],r[o])||(l[o]=r[o]===void 0?null:r[o]),l},{});return Object.keys(t).length>0?t:void 0},transform:function(u,r,t){if(typeof u!="object")return r;if(typeof r=="object"){if(!t)return r;var l=Object.keys(r).reduce(function(o,s){return u[s]===void 0&&(o[s]=r[s]),o},{});return Object.keys(l).length>0?l:void 0}}},iterator:function(u){return new i(u)},length:function(u){return typeof u.delete=="number"?u.delete:typeof u.retain=="number"?u.retain:typeof u.insert=="string"?u.insert.length:1}};function i(u){this.ops=u,this.index=0,this.offset=0}i.prototype.hasNext=function(){return this.peekLength()<1/0},i.prototype.next=function(u){u||(u=1/0);var r=this.ops[this.index];if(r){var t=this.offset,l=c.length(r);if(u>=l-t?(u=l-t,this.index+=1,this.offset=0):this.offset+=u,typeof r.delete=="number")return{delete:u};var o={};return r.attributes&&(o.attributes=r.attributes),typeof r.retain=="number"?o.retain=u:typeof r.insert=="string"?o.insert=r.insert.substr(t,u):o.insert=r.insert,o}else return{retain:1/0}},i.prototype.peek=function(){return this.ops[this.index]},i.prototype.peekLength=function(){return this.ops[this.index]?c.length(this.ops[this.index])-this.offset:1/0},i.prototype.peekType=function(){return this.ops[this.index]?typeof this.ops[this.index].delete=="number"?"delete":typeof this.ops[this.index].retain=="number"?"retain":"insert":"retain"},i.prototype.rest=function(){if(this.hasNext()){if(this.offset===0)return this.ops.slice(this.index);var u=this.offset,r=this.index,t=this.next(),l=this.ops.slice(this.index);return this.offset=u,this.index=r,[t].concat(l)}else return[]},e.exports=c},function(e,p){var m=function(){function g(f,h){return h!=null&&f instanceof h}var a;try{a=Map}catch{a=function(){}}var c;try{c=Set}catch{c=function(){}}var i;try{i=Promise}catch{i=function(){}}function u(f,h,v,$,C){typeof h=="object"&&(v=h.depth,$=h.prototype,C=h.includeNonEnumerable,h=h.circular);var b=[],y=[],_=typeof Buffer!="undefined";typeof h=="undefined"&&(h=!0),typeof v=="undefined"&&(v=1/0);function E(O,T){if(O===null)return null;if(T===0)return O;var x,w;if(typeof O!="object")return O;if(g(O,a))x=new a;else if(g(O,c))x=new c;else if(g(O,i))x=new i(function(B,R){O.then(function(V){B(E(V,T-1))},function(V){R(E(V,T-1))})});else if(u.__isArray(O))x=[];else if(u.__isRegExp(O))x=new RegExp(O.source,s(O)),O.lastIndex&&(x.lastIndex=O.lastIndex);else if(u.__isDate(O))x=new Date(O.getTime());else{if(_&&Buffer.isBuffer(O))return Buffer.allocUnsafe?x=Buffer.allocUnsafe(O.length):x=new Buffer(O.length),O.copy(x),x;g(O,Error)?x=Object.create(O):typeof $=="undefined"?(w=Object.getPrototypeOf(O),x=Object.create(w)):(x=Object.create($),w=$)}if(h){var M=b.indexOf(O);if(M!=-1)return y[M];b.push(O),y.push(x)}g(O,a)&&O.forEach(function(B,R){var V=E(R,T-1),F=E(B,T-1);x.set(V,F)}),g(O,c)&&O.forEach(function(B){var R=E(B,T-1);x.add(R)});for(var k in O){var S;w&&(S=Object.getOwnPropertyDescriptor(w,k)),!(S&&S.set==null)&&(x[k]=E(O[k],T-1))}if(Object.getOwnPropertySymbols)for(var q=Object.getOwnPropertySymbols(O),k=0;k0){if(A instanceof l.BlockEmbed||R instanceof l.BlockEmbed){this.optimize();return}if(A instanceof v.default){var V=A.newlineIndex(A.length(),!0);if(V>-1&&(A=A.split(V+1),A===R)){this.optimize();return}}else if(R instanceof v.default){var F=R.newlineIndex(0);F>-1&&R.split(F+1)}var P=R.children.head instanceof f.default?null:R.children.head;A.moveChildren(R,P),A.remove()}this.optimize()}},{key:"enable",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.domNode.setAttribute("contenteditable",k)}},{key:"formatAt",value:function(k,S,q,L){this.whitelist!=null&&!this.whitelist[q]||(c(w.prototype.__proto__||Object.getPrototypeOf(w.prototype),"formatAt",this).call(this,k,S,q,L),this.optimize())}},{key:"insertAt",value:function(k,S,q){if(!(q!=null&&this.whitelist!=null&&!this.whitelist[S])){if(k>=this.length())if(q==null||u.default.query(S,u.default.Scope.BLOCK)==null){var L=u.default.create(this.statics.defaultChild);this.appendChild(L),q==null&&S.endsWith(` -`)&&(S=S.slice(0,-1)),L.insertAt(0,S,q)}else{var A=u.default.create(S,q);this.appendChild(A)}else c(w.prototype.__proto__||Object.getPrototypeOf(w.prototype),"insertAt",this).call(this,k,S,q);this.optimize()}}},{key:"insertBefore",value:function(k,S){if(k.statics.scope===u.default.Scope.INLINE_BLOT){var q=u.default.create(this.statics.defaultChild);q.appendChild(k),k=q}c(w.prototype.__proto__||Object.getPrototypeOf(w.prototype),"insertBefore",this).call(this,k,S)}},{key:"leaf",value:function(k){return this.path(k).pop()||[null,-1]}},{key:"line",value:function(k){return k===this.length()?this.line(k-1):this.descendant(O,k)}},{key:"lines",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE,q=function L(A,D,N){var B=[],R=N;return A.children.forEachAt(D,N,function(V,F,P){O(V)?B.push(V):V instanceof u.default.Container&&(B=B.concat(L(V,F,R))),R-=P}),B};return q(this,k,S)}},{key:"optimize",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.batch!==!0&&(c(w.prototype.__proto__||Object.getPrototypeOf(w.prototype),"optimize",this).call(this,k,S),k.length>0&&this.emitter.emit(t.default.events.SCROLL_OPTIMIZE,k,S))}},{key:"path",value:function(k){return c(w.prototype.__proto__||Object.getPrototypeOf(w.prototype),"path",this).call(this,k).slice(1)}},{key:"update",value:function(k){if(this.batch!==!0){var S=t.default.sources.USER;typeof k=="string"&&(S=k),Array.isArray(k)||(k=this.observer.takeRecords()),k.length>0&&this.emitter.emit(t.default.events.SCROLL_BEFORE_UPDATE,S,k),c(w.prototype.__proto__||Object.getPrototypeOf(w.prototype),"update",this).call(this,k.concat([])),k.length>0&&this.emitter.emit(t.default.events.SCROLL_UPDATE,S,k)}}}]),w}(u.default.Scroll);T.blotName="scroll",T.className="ql-editor",T.tagName="DIV",T.defaultChild="block",T.allowedChildren=[o.default,l.BlockEmbed,C.default],p.default=T},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.SHORTKEY=p.default=void 0;var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(I){return typeof I}:function(I){return I&&typeof Symbol=="function"&&I.constructor===Symbol&&I!==Symbol.prototype?"symbol":typeof I},a=function(){function I(W,H){var z=[],G=!0,Z=!1,oe=void 0;try{for(var se=W[Symbol.iterator](),ae;!(G=(ae=se.next()).done)&&(z.push(ae.value),!(H&&z.length===H));G=!0);}catch(de){Z=!0,oe=de}finally{try{!G&&se.return&&se.return()}finally{if(Z)throw oe}}return z}return function(W,H){if(Array.isArray(W))return W;if(Symbol.iterator in Object(W))return I(W,H);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function I(W,H){for(var z=0;z1&&arguments[1]!==void 0?arguments[1]:{},Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},oe=j(z);if(oe==null||oe.key==null)return q.warn("Attempted to add invalid keyboard binding",oe);typeof G=="function"&&(G={handler:G}),typeof Z=="function"&&(Z={handler:Z}),oe=(0,o.default)(oe,G,Z),this.bindings[oe.key]=this.bindings[oe.key]||[],this.bindings[oe.key].push(oe)}},{key:"listen",value:function(){var z=this;this.quill.root.addEventListener("keydown",function(G){if(!G.defaultPrevented){var Z=G.which||G.keyCode,oe=(z.bindings[Z]||[]).filter(function(U){return W.match(G,U)});if(oe.length!==0){var se=z.quill.getSelection();if(!(se==null||!z.quill.hasFocus())){var ae=z.quill.getLine(se.index),de=a(ae,2),be=de[0],ye=de[1],X=z.quill.getLeaf(se.index),Q=a(X,2),re=Q[0],le=Q[1],ne=se.length===0?[re,le]:z.quill.getLeaf(se.index+se.length),J=a(ne,2),te=J[0],ie=J[1],pe=re instanceof C.default.Text?re.value().slice(0,le):"",$e=te instanceof C.default.Text?te.value().slice(ie):"",fe={collapsed:se.length===0,empty:se.length===0&&be.length()<=1,format:z.quill.getFormat(se),offset:ye,prefix:pe,suffix:$e},K=oe.some(function(U){if(U.collapsed!=null&&U.collapsed!==fe.collapsed||U.empty!=null&&U.empty!==fe.empty||U.offset!=null&&U.offset!==fe.offset)return!1;if(Array.isArray(U.format)){if(U.format.every(function(Y){return fe.format[Y]==null}))return!1}else if(g(U.format)==="object"&&!Object.keys(U.format).every(function(Y){return U.format[Y]===!0?fe.format[Y]!=null:U.format[Y]===!1?fe.format[Y]==null:(0,t.default)(U.format[Y],fe.format[Y])}))return!1;return U.prefix!=null&&!U.prefix.test(fe.prefix)||U.suffix!=null&&!U.suffix.test(fe.suffix)?!1:U.handler.call(z,se,fe)!==!0});K&&G.preventDefault()}}}})}}]),W}(T.default);A.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},A.DEFAULTS={bindings:{bold:P("bold"),italic:P("italic"),underline:P("underline"),indent:{key:A.keys.TAB,format:["blockquote","indent","list"],handler:function(W,H){if(H.collapsed&&H.offset!==0)return!0;this.quill.format("indent","+1",y.default.sources.USER)}},outdent:{key:A.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(W,H){if(H.collapsed&&H.offset!==0)return!0;this.quill.format("indent","-1",y.default.sources.USER)}},"outdent backspace":{key:A.keys.BACKSPACE,collapsed:!0,shiftKey:null,metaKey:null,ctrlKey:null,altKey:null,format:["indent","list"],offset:0,handler:function(W,H){H.format.indent!=null?this.quill.format("indent","-1",y.default.sources.USER):H.format.list!=null&&this.quill.format("list",!1,y.default.sources.USER)}},"indent code-block":F(!0),"outdent code-block":F(!1),"remove tab":{key:A.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(W){this.quill.deleteText(W.index-1,1,y.default.sources.USER)}},tab:{key:A.keys.TAB,handler:function(W){this.quill.history.cutoff();var H=new f.default().retain(W.index).delete(W.length).insert(" ");this.quill.updateContents(H,y.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(W.index+1,y.default.sources.SILENT)}},"list empty enter":{key:A.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(W,H){this.quill.format("list",!1,y.default.sources.USER),H.format.indent&&this.quill.format("indent",!1,y.default.sources.USER)}},"checklist enter":{key:A.keys.ENTER,collapsed:!0,format:{list:"checked"},handler:function(W){var H=this.quill.getLine(W.index),z=a(H,2),G=z[0],Z=z[1],oe=(0,o.default)({},G.formats(),{list:"checked"}),se=new f.default().retain(W.index).insert(` -`,oe).retain(G.length()-Z-1).retain(1,{list:"unchecked"});this.quill.updateContents(se,y.default.sources.USER),this.quill.setSelection(W.index+1,y.default.sources.SILENT),this.quill.scrollIntoView()}},"header enter":{key:A.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(W,H){var z=this.quill.getLine(W.index),G=a(z,2),Z=G[0],oe=G[1],se=new f.default().retain(W.index).insert(` -`,H.format).retain(Z.length()-oe-1).retain(1,{header:null});this.quill.updateContents(se,y.default.sources.USER),this.quill.setSelection(W.index+1,y.default.sources.SILENT),this.quill.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/,handler:function(W,H){var z=H.prefix.length,G=this.quill.getLine(W.index),Z=a(G,2),oe=Z[0],se=Z[1];if(se>z)return!0;var ae=void 0;switch(H.prefix.trim()){case"[]":case"[ ]":ae="unchecked";break;case"[x]":ae="checked";break;case"-":case"*":ae="bullet";break;default:ae="ordered"}this.quill.insertText(W.index," ",y.default.sources.USER),this.quill.history.cutoff();var de=new f.default().retain(W.index-se).delete(z+1).retain(oe.length()-2-se).retain(1,{list:ae});this.quill.updateContents(de,y.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(W.index-z,y.default.sources.SILENT)}},"code exit":{key:A.keys.ENTER,collapsed:!0,format:["code-block"],prefix:/\n\n$/,suffix:/^\s+$/,handler:function(W){var H=this.quill.getLine(W.index),z=a(H,2),G=z[0],Z=z[1],oe=new f.default().retain(W.index+G.length()-Z-2).retain(1,{"code-block":null}).delete(1);this.quill.updateContents(oe,y.default.sources.USER)}},"embed left":D(A.keys.LEFT,!1),"embed left shift":D(A.keys.LEFT,!0),"embed right":D(A.keys.RIGHT,!1),"embed right shift":D(A.keys.RIGHT,!0)}};function D(I,W){var H,z=I===A.keys.LEFT?"prefix":"suffix";return H={key:I,shiftKey:W,altKey:null},w(H,z,/^$/),w(H,"handler",function(Z){var oe=Z.index;I===A.keys.RIGHT&&(oe+=Z.length+1);var se=this.quill.getLeaf(oe),ae=a(se,1),de=ae[0];return de instanceof C.default.Embed?(I===A.keys.LEFT?W?this.quill.setSelection(Z.index-1,Z.length+1,y.default.sources.USER):this.quill.setSelection(Z.index-1,y.default.sources.USER):W?this.quill.setSelection(Z.index,Z.length+1,y.default.sources.USER):this.quill.setSelection(Z.index+Z.length+1,y.default.sources.USER),!1):!0}),H}function N(I,W){if(!(I.index===0||this.quill.getLength()<=1)){var H=this.quill.getLine(I.index),z=a(H,1),G=z[0],Z={};if(W.offset===0){var oe=this.quill.getLine(I.index-1),se=a(oe,1),ae=se[0];if(ae!=null&&ae.length()>1){var de=G.formats(),be=this.quill.getFormat(I.index-1,1);Z=v.default.attributes.diff(de,be)||{}}}var ye=/[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(W.prefix)?2:1;this.quill.deleteText(I.index-ye,ye,y.default.sources.USER),Object.keys(Z).length>0&&this.quill.formatLine(I.index-ye,ye,Z,y.default.sources.USER),this.quill.focus()}}function B(I,W){var H=/^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(W.suffix)?2:1;if(!(I.index>=this.quill.getLength()-H)){var z={},G=0,Z=this.quill.getLine(I.index),oe=a(Z,1),se=oe[0];if(W.offset>=se.length()-1){var ae=this.quill.getLine(I.index+1),de=a(ae,1),be=de[0];if(be){var ye=se.formats(),X=this.quill.getFormat(I.index,1);z=v.default.attributes.diff(ye,X)||{},G=be.length()}}this.quill.deleteText(I.index,H,y.default.sources.USER),Object.keys(z).length>0&&this.quill.formatLine(I.index+G-1,H,z,y.default.sources.USER)}}function R(I){var W=this.quill.getLines(I),H={};if(W.length>1){var z=W[0].formats(),G=W[W.length-1].formats();H=v.default.attributes.diff(G,z)||{}}this.quill.deleteText(I,y.default.sources.USER),Object.keys(H).length>0&&this.quill.formatLine(I.index,1,H,y.default.sources.USER),this.quill.setSelection(I.index,y.default.sources.SILENT),this.quill.focus()}function V(I,W){var H=this;I.length>0&&this.quill.scroll.deleteAt(I.index,I.length);var z=Object.keys(W.format).reduce(function(G,Z){return C.default.query(Z,C.default.Scope.BLOCK)&&!Array.isArray(W.format[Z])&&(G[Z]=W.format[Z]),G},{});this.quill.insertText(I.index,` -`,z,y.default.sources.USER),this.quill.setSelection(I.index+1,y.default.sources.SILENT),this.quill.focus(),Object.keys(W.format).forEach(function(G){z[G]==null&&(Array.isArray(W.format[G])||G!=="link"&&H.quill.format(G,W.format[G],y.default.sources.USER))})}function F(I){return{key:A.keys.TAB,shiftKey:!I,format:{"code-block":!0},handler:function(H){var z=C.default.query("code-block"),G=H.index,Z=H.length,oe=this.quill.scroll.descendant(z,G),se=a(oe,2),ae=se[0],de=se[1];if(ae!=null){var be=this.quill.getIndex(ae),ye=ae.newlineIndex(de,!0)+1,X=ae.newlineIndex(be+de+Z),Q=ae.domNode.textContent.slice(ye,X).split(` -`);de=0,Q.forEach(function(re,le){I?(ae.insertAt(ye+de,z.TAB),de+=z.TAB.length,le===0?G+=z.TAB.length:Z+=z.TAB.length):re.startsWith(z.TAB)&&(ae.deleteAt(ye+de,z.TAB.length),de-=z.TAB.length,le===0?G-=z.TAB.length:Z-=z.TAB.length),de+=re.length+1}),this.quill.update(y.default.sources.USER),this.quill.setSelection(G,Z,y.default.sources.SILENT)}}}}function P(I){return{key:I[0].toUpperCase(),shortKey:!0,handler:function(H,z){this.quill.format(I,!z.format[I],y.default.sources.USER)}}}function j(I){if(typeof I=="string"||typeof I=="number")return j({key:I});if((typeof I=="undefined"?"undefined":g(I))==="object"&&(I=(0,u.default)(I,!1)),typeof I.key=="string")if(A.keys[I.key.toUpperCase()]!=null)I.key=A.keys[I.key.toUpperCase()];else if(I.key.length===1)I.key=I.key.toUpperCase().charCodeAt(0);else return null;return I.shortKey&&(I[L]=I.shortKey,delete I.shortKey),I}p.default=A,p.SHORTKEY=L},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function v($,C){var b=[],y=!0,_=!1,E=void 0;try{for(var O=$[Symbol.iterator](),T;!(y=(T=O.next()).done)&&(b.push(T.value),!(C&&b.length===C));y=!0);}catch(x){_=!0,E=x}finally{try{!y&&O.return&&O.return()}finally{if(_)throw E}}return b}return function($,C){if(Array.isArray($))return $;if(Symbol.iterator in Object($))return v($,C);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function v($,C,b){$===null&&($=Function.prototype);var y=Object.getOwnPropertyDescriptor($,C);if(y===void 0){var _=Object.getPrototypeOf($);return _===null?void 0:v(_,C,b)}else{if("value"in y)return y.value;var E=y.get;return E===void 0?void 0:E.call(b)}},c=function(){function v($,C){for(var b=0;b-1}p.default=o,p.sanitize=s},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(h){return typeof h}:function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a=function(){function h(v,$){for(var C=0;C<$.length;C++){var b=$[C];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(v,b.key,b)}}return function(v,$,C){return $&&h(v.prototype,$),C&&h(v,C),v}}(),c=m(23),i=t(c),u=m(107),r=t(u);function t(h){return h&&h.__esModule?h:{default:h}}function l(h,v){if(!(h instanceof v))throw new TypeError("Cannot call a class as a function")}var o=0;function s(h,v){h.setAttribute(v,h.getAttribute(v)!=="true")}var f=function(){function h(v){var $=this;l(this,h),this.select=v,this.container=document.createElement("span"),this.buildPicker(),this.select.style.display="none",this.select.parentNode.insertBefore(this.container,this.select),this.label.addEventListener("mousedown",function(){$.togglePicker()}),this.label.addEventListener("keydown",function(C){switch(C.keyCode){case i.default.keys.ENTER:$.togglePicker();break;case i.default.keys.ESCAPE:$.escape(),C.preventDefault();break}}),this.select.addEventListener("change",this.update.bind(this))}return a(h,[{key:"togglePicker",value:function(){this.container.classList.toggle("ql-expanded"),s(this.label,"aria-expanded"),s(this.options,"aria-hidden")}},{key:"buildItem",value:function($){var C=this,b=document.createElement("span");return b.tabIndex="0",b.setAttribute("role","button"),b.classList.add("ql-picker-item"),$.hasAttribute("value")&&b.setAttribute("data-value",$.getAttribute("value")),$.textContent&&b.setAttribute("data-label",$.textContent),b.addEventListener("click",function(){C.selectItem(b,!0)}),b.addEventListener("keydown",function(y){switch(y.keyCode){case i.default.keys.ENTER:C.selectItem(b,!0),y.preventDefault();break;case i.default.keys.ESCAPE:C.escape(),y.preventDefault();break}}),b}},{key:"buildLabel",value:function(){var $=document.createElement("span");return $.classList.add("ql-picker-label"),$.innerHTML=r.default,$.tabIndex="0",$.setAttribute("role","button"),$.setAttribute("aria-expanded","false"),this.container.appendChild($),$}},{key:"buildOptions",value:function(){var $=this,C=document.createElement("span");C.classList.add("ql-picker-options"),C.setAttribute("aria-hidden","true"),C.tabIndex="-1",C.id="ql-picker-options-"+o,o+=1,this.label.setAttribute("aria-controls",C.id),this.options=C,[].slice.call(this.select.options).forEach(function(b){var y=$.buildItem(b);C.appendChild(y),b.selected===!0&&$.selectItem(y)}),this.container.appendChild(C)}},{key:"buildPicker",value:function(){var $=this;[].slice.call(this.select.attributes).forEach(function(C){$.container.setAttribute(C.name,C.value)}),this.container.classList.add("ql-picker"),this.label=this.buildLabel(),this.buildOptions()}},{key:"escape",value:function(){var $=this;this.close(),setTimeout(function(){return $.label.focus()},1)}},{key:"close",value:function(){this.container.classList.remove("ql-expanded"),this.label.setAttribute("aria-expanded","false"),this.options.setAttribute("aria-hidden","true")}},{key:"selectItem",value:function($){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,b=this.container.querySelector(".ql-selected");if($!==b&&(b!=null&&b.classList.remove("ql-selected"),$!=null&&($.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call($.parentNode.children,$),$.hasAttribute("data-value")?this.label.setAttribute("data-value",$.getAttribute("data-value")):this.label.removeAttribute("data-value"),$.hasAttribute("data-label")?this.label.setAttribute("data-label",$.getAttribute("data-label")):this.label.removeAttribute("data-label"),C))){if(typeof Event=="function")this.select.dispatchEvent(new Event("change"));else if((typeof Event=="undefined"?"undefined":g(Event))==="object"){var y=document.createEvent("Event");y.initEvent("change",!0,!0),this.select.dispatchEvent(y)}this.close()}}},{key:"update",value:function(){var $=void 0;if(this.select.selectedIndex>-1){var C=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];$=this.select.options[this.select.selectedIndex],this.selectItem(C)}else this.selectItem(null);var b=$!=null&&$!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",b)}}]),h}();p.default=f},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(0),a=q(g),c=m(5),i=q(c),u=m(4),r=q(u),t=m(16),l=q(t),o=m(25),s=q(o),f=m(24),h=q(f),v=m(35),$=q(v),C=m(6),b=q(C),y=m(22),_=q(y),E=m(7),O=q(E),T=m(55),x=q(T),w=m(42),M=q(w),k=m(23),S=q(k);function q(L){return L&&L.__esModule?L:{default:L}}i.default.register({"blots/block":r.default,"blots/block/embed":u.BlockEmbed,"blots/break":l.default,"blots/container":s.default,"blots/cursor":h.default,"blots/embed":$.default,"blots/inline":b.default,"blots/scroll":_.default,"blots/text":O.default,"modules/clipboard":x.default,"modules/history":M.default,"modules/keyboard":S.default}),a.default.register(r.default,l.default,h.default,b.default,_.default,O.default),p.default=i.default},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(1),a=function(){function c(i){this.domNode=i,this.domNode[g.DATA_KEY]={blot:this}}return Object.defineProperty(c.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),c.create=function(i){if(this.tagName==null)throw new g.ParchmentError("Blot definition missing tagName");var u;return Array.isArray(this.tagName)?(typeof i=="string"&&(i=i.toUpperCase(),parseInt(i).toString()===i&&(i=parseInt(i))),typeof i=="number"?u=document.createElement(this.tagName[i-1]):this.tagName.indexOf(i)>-1?u=document.createElement(i):u=document.createElement(this.tagName[0])):u=document.createElement(this.tagName),this.className&&u.classList.add(this.className),u},c.prototype.attach=function(){this.parent!=null&&(this.scroll=this.parent.scroll)},c.prototype.clone=function(){var i=this.domNode.cloneNode(!1);return g.create(i)},c.prototype.detach=function(){this.parent!=null&&this.parent.removeChild(this),delete this.domNode[g.DATA_KEY]},c.prototype.deleteAt=function(i,u){var r=this.isolate(i,u);r.remove()},c.prototype.formatAt=function(i,u,r,t){var l=this.isolate(i,u);if(g.query(r,g.Scope.BLOT)!=null&&t)l.wrap(r,t);else if(g.query(r,g.Scope.ATTRIBUTE)!=null){var o=g.create(this.statics.scope);l.wrap(o),o.format(r,t)}},c.prototype.insertAt=function(i,u,r){var t=r==null?g.create("text",u):g.create(u,r),l=this.split(i);this.parent.insertBefore(t,l)},c.prototype.insertInto=function(i,u){u===void 0&&(u=null),this.parent!=null&&this.parent.children.remove(this);var r=null;i.children.insertBefore(this,u),u!=null&&(r=u.domNode),(this.domNode.parentNode!=i.domNode||this.domNode.nextSibling!=r)&&i.domNode.insertBefore(this.domNode,r),this.parent=i,this.attach()},c.prototype.isolate=function(i,u){var r=this.split(i);return r.split(u),r},c.prototype.length=function(){return 1},c.prototype.offset=function(i){return i===void 0&&(i=this.parent),this.parent==null||this==i?0:this.parent.children.offset(this)+this.parent.offset(i)},c.prototype.optimize=function(i){this.domNode[g.DATA_KEY]!=null&&delete this.domNode[g.DATA_KEY].mutations},c.prototype.remove=function(){this.domNode.parentNode!=null&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},c.prototype.replace=function(i){i.parent!=null&&(i.parent.insertBefore(this,i.next),i.remove())},c.prototype.replaceWith=function(i,u){var r=typeof i=="string"?g.create(i,u):i;return r.replace(this),r},c.prototype.split=function(i,u){return i===0?this:this.next},c.prototype.update=function(i,u){},c.prototype.wrap=function(i,u){var r=typeof i=="string"?g.create(i,u):i;return this.parent!=null&&this.parent.insertBefore(r,this.next),r.appendChild(this),r},c.blotName="abstract",c}();p.default=a},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(12),a=m(32),c=m(33),i=m(1),u=function(){function r(t){this.attributes={},this.domNode=t,this.build()}return r.prototype.attribute=function(t,l){l?t.add(this.domNode,l)&&(t.value(this.domNode)!=null?this.attributes[t.attrName]=t:delete this.attributes[t.attrName]):(t.remove(this.domNode),delete this.attributes[t.attrName])},r.prototype.build=function(){var t=this;this.attributes={};var l=g.default.keys(this.domNode),o=a.default.keys(this.domNode),s=c.default.keys(this.domNode);l.concat(o).concat(s).forEach(function(f){var h=i.query(f,i.Scope.ATTRIBUTE);h instanceof g.default&&(t.attributes[h.attrName]=h)})},r.prototype.copy=function(t){var l=this;Object.keys(this.attributes).forEach(function(o){var s=l.attributes[o].value(l.domNode);t.format(o,s)})},r.prototype.move=function(t){var l=this;this.copy(t),Object.keys(this.attributes).forEach(function(o){l.attributes[o].remove(l.domNode)}),this.attributes={}},r.prototype.values=function(){var t=this;return Object.keys(this.attributes).reduce(function(l,o){return l[o]=t.attributes[o].value(t.domNode),l},{})},r}();p.default=u},function(e,p,m){var g=this&&this.__extends||function(){var u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,t){r.__proto__=t}||function(r,t){for(var l in t)t.hasOwnProperty(l)&&(r[l]=t[l])};return function(r,t){u(r,t);function l(){this.constructor=r}r.prototype=t===null?Object.create(t):(l.prototype=t.prototype,new l)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=m(12);function c(u,r){var t=u.getAttribute("class")||"";return t.split(/\s+/).filter(function(l){return l.indexOf(r+"-")===0})}var i=function(u){g(r,u);function r(){return u!==null&&u.apply(this,arguments)||this}return r.keys=function(t){return(t.getAttribute("class")||"").split(/\s+/).map(function(l){return l.split("-").slice(0,-1).join("-")})},r.prototype.add=function(t,l){return this.canAdd(t,l)?(this.remove(t),t.classList.add(this.keyName+"-"+l),!0):!1},r.prototype.remove=function(t){var l=c(t,this.keyName);l.forEach(function(o){t.classList.remove(o)}),t.classList.length===0&&t.removeAttribute("class")},r.prototype.value=function(t){var l=c(t,this.keyName)[0]||"",o=l.slice(this.keyName.length+1);return this.canAdd(t,o)?o:""},r}(a.default);p.default=i},function(e,p,m){var g=this&&this.__extends||function(){var u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,t){r.__proto__=t}||function(r,t){for(var l in t)t.hasOwnProperty(l)&&(r[l]=t[l])};return function(r,t){u(r,t);function l(){this.constructor=r}r.prototype=t===null?Object.create(t):(l.prototype=t.prototype,new l)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=m(12);function c(u){var r=u.split("-"),t=r.slice(1).map(function(l){return l[0].toUpperCase()+l.slice(1)}).join("");return r[0]+t}var i=function(u){g(r,u);function r(){return u!==null&&u.apply(this,arguments)||this}return r.keys=function(t){return(t.getAttribute("style")||"").split(";").map(function(l){var o=l.split(":");return o[0].trim()})},r.prototype.add=function(t,l){return this.canAdd(t,l)?(t.style[c(this.keyName)]=l,!0):!1},r.prototype.remove=function(t){t.style[c(this.keyName)]="",t.getAttribute("style")||t.removeAttribute("style")},r.prototype.value=function(t){var l=t.style[c(this.keyName)];return this.canAdd(t,l)?l:""},r}(a.default);p.default=i},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function i(u,r){for(var t=0;tT&&this.stack.undo.length>0){var x=this.stack.undo.pop();O=O.compose(x.undo),_=x.redo.compose(_)}else this.lastRecorded=T;this.stack.undo.push({redo:_,undo:O}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(_){this.stack.undo.forEach(function(E){E.undo=_.transform(E.undo,!0),E.redo=_.transform(E.redo,!0)}),this.stack.redo.forEach(function(E){E.undo=_.transform(E.undo,!0),E.redo=_.transform(E.redo,!0)})}},{key:"undo",value:function(){this.change("undo","redo")}}]),b}(t.default);h.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1};function v(C){var b=C.ops[C.ops.length-1];return b==null?!1:b.insert!=null?typeof b.insert=="string"&&b.insert.endsWith(` -`):b.attributes!=null?Object.keys(b.attributes).some(function(y){return c.default.query(y,c.default.Scope.BLOCK)!=null}):!1}function $(C){var b=C.reduce(function(_,E){return _+=E.delete||0,_},0),y=C.length()-b;return v(C)&&(y-=1),y}p.default=h,p.getLastChangeIndex=$},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.BaseTooltip=void 0;var g=function(){function V(F,P){for(var j=0;j0&&arguments[0]!==void 0?arguments[0]:"link",I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),I!=null?this.textbox.value=I:j!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+j)||""),this.root.setAttribute("data-mode",j)}},{key:"restoreFocus",value:function(){var j=this.quill.scrollingContainer.scrollTop;this.quill.focus(),this.quill.scrollingContainer.scrollTop=j}},{key:"save",value:function(){var j=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":{var I=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",j,l.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",j,l.default.sources.USER)),this.quill.root.scrollTop=I;break}case"video":j=B(j);case"formula":{if(!j)break;var W=this.quill.getSelection(!0);if(W!=null){var H=W.index+W.length;this.quill.insertEmbed(H,this.root.getAttribute("data-mode"),j,l.default.sources.USER),this.root.getAttribute("data-mode")==="formula"&&this.quill.insertText(H+1," ",l.default.sources.USER),this.quill.setSelection(H+2,l.default.sources.USER)}break}}this.textbox.value="",this.hide()}}]),F}(O.default);function B(V){var F=V.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||V.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);return F?(F[1]||"https")+"://www.youtube.com/embed/"+F[2]+"?showinfo=0":(F=V.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/))?(F[1]||"https")+"://player.vimeo.com/video/"+F[2]+"/":V}function R(V,F){var P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;F.forEach(function(j){var I=document.createElement("option");j===P?I.setAttribute("selected","selected"):I.setAttribute("value",j),V.appendChild(I)})}p.BaseTooltip=N,p.default=D},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function a(){this.head=this.tail=null,this.length=0}return a.prototype.append=function(){for(var c=[],i=0;i1&&this.append.apply(this,c.slice(1))},a.prototype.contains=function(c){for(var i,u=this.iterator();i=u();)if(i===c)return!0;return!1},a.prototype.insertBefore=function(c,i){!c||(c.next=i,i!=null?(c.prev=i.prev,i.prev!=null&&(i.prev.next=c),i.prev=c,i===this.head&&(this.head=c)):this.tail!=null?(this.tail.next=c,c.prev=this.tail,this.tail=c):(c.prev=null,this.head=this.tail=c),this.length+=1)},a.prototype.offset=function(c){for(var i=0,u=this.head;u!=null;){if(u===c)return i;i+=u.length(),u=u.next}return-1},a.prototype.remove=function(c){!this.contains(c)||(c.prev!=null&&(c.prev.next=c.next),c.next!=null&&(c.next.prev=c.prev),c===this.head&&(this.head=c.next),c===this.tail&&(this.tail=c.prev),this.length-=1)},a.prototype.iterator=function(c){return c===void 0&&(c=this.head),function(){var i=c;return c!=null&&(c=c.next),i}},a.prototype.find=function(c,i){i===void 0&&(i=!1);for(var u,r=this.iterator();u=r();){var t=u.length();if(cs?u(o,c-s,Math.min(i,s+h-c)):u(o,0,Math.min(h,c+i-s)),s+=h}},a.prototype.map=function(c){return this.reduce(function(i,u){return i.push(c(u)),i},[])},a.prototype.reduce=function(c,i){for(var u,r=this.iterator();u=r();)i=c(i,u);return i},a}();p.default=g},function(e,p,m){var g=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,o){l.__proto__=o}||function(l,o){for(var s in o)o.hasOwnProperty(s)&&(l[s]=o[s])};return function(l,o){t(l,o);function s(){this.constructor=l}l.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=m(17),c=m(1),i={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},u=100,r=function(t){g(l,t);function l(o){var s=t.call(this,o)||this;return s.scroll=s,s.observer=new MutationObserver(function(f){s.update(f)}),s.observer.observe(s.domNode,i),s.attach(),s}return l.prototype.detach=function(){t.prototype.detach.call(this),this.observer.disconnect()},l.prototype.deleteAt=function(o,s){this.update(),o===0&&s===this.length()?this.children.forEach(function(f){f.remove()}):t.prototype.deleteAt.call(this,o,s)},l.prototype.formatAt=function(o,s,f,h){this.update(),t.prototype.formatAt.call(this,o,s,f,h)},l.prototype.insertAt=function(o,s,f){this.update(),t.prototype.insertAt.call(this,o,s,f)},l.prototype.optimize=function(o,s){var f=this;o===void 0&&(o=[]),s===void 0&&(s={}),t.prototype.optimize.call(this,s);for(var h=[].slice.call(this.observer.takeRecords());h.length>0;)o.push(h.pop());for(var v=function(y,_){_===void 0&&(_=!0),!(y==null||y===f)&&y.domNode.parentNode!=null&&(y.domNode[c.DATA_KEY].mutations==null&&(y.domNode[c.DATA_KEY].mutations=[]),_&&v(y.parent))},$=function(y){y.domNode[c.DATA_KEY]==null||y.domNode[c.DATA_KEY].mutations==null||(y instanceof a.default&&y.children.forEach($),y.optimize(s))},C=o,b=0;C.length>0;b+=1){if(b>=u)throw new Error("[Parchment] Maximum optimize iterations reached");for(C.forEach(function(y){var _=c.find(y.target,!0);_!=null&&(_.domNode===y.target&&(y.type==="childList"?(v(c.find(y.previousSibling,!1)),[].forEach.call(y.addedNodes,function(E){var O=c.find(E,!1);v(O,!1),O instanceof a.default&&O.children.forEach(function(T){v(T,!1)})})):y.type==="attributes"&&v(_.prev)),v(_))}),this.children.forEach($),C=[].slice.call(this.observer.takeRecords()),h=C.slice();h.length>0;)o.push(h.pop())}},l.prototype.update=function(o,s){var f=this;s===void 0&&(s={}),o=o||this.observer.takeRecords(),o.map(function(h){var v=c.find(h.target,!0);return v==null?null:v.domNode[c.DATA_KEY].mutations==null?(v.domNode[c.DATA_KEY].mutations=[h],v):(v.domNode[c.DATA_KEY].mutations.push(h),null)}).forEach(function(h){h==null||h===f||h.domNode[c.DATA_KEY]==null||h.update(h.domNode[c.DATA_KEY].mutations||[],s)}),this.domNode[c.DATA_KEY].mutations!=null&&t.prototype.update.call(this,this.domNode[c.DATA_KEY].mutations,s),this.optimize(o,s)},l.blotName="scroll",l.defaultChild="block",l.scope=c.Scope.BLOCK_BLOT,l.tagName="DIV",l}(a.default);p.default=r},function(e,p,m){var g=this&&this.__extends||function(){var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,l){t.__proto__=l}||function(t,l){for(var o in l)l.hasOwnProperty(o)&&(t[o]=l[o])};return function(t,l){r(t,l);function o(){this.constructor=t}t.prototype=l===null?Object.create(l):(o.prototype=l.prototype,new o)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=m(18),c=m(1);function i(r,t){if(Object.keys(r).length!==Object.keys(t).length)return!1;for(var l in r)if(r[l]!==t[l])return!1;return!0}var u=function(r){g(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.formats=function(l){if(l.tagName!==t.tagName)return r.formats.call(this,l)},t.prototype.format=function(l,o){var s=this;l===this.statics.blotName&&!o?(this.children.forEach(function(f){f instanceof a.default||(f=f.wrap(t.blotName,!0)),s.attributes.copy(f)}),this.unwrap()):r.prototype.format.call(this,l,o)},t.prototype.formatAt=function(l,o,s,f){if(this.formats()[s]!=null||c.query(s,c.Scope.ATTRIBUTE)){var h=this.isolate(l,o);h.format(s,f)}else r.prototype.formatAt.call(this,l,o,s,f)},t.prototype.optimize=function(l){r.prototype.optimize.call(this,l);var o=this.formats();if(Object.keys(o).length===0)return this.unwrap();var s=this.next;s instanceof t&&s.prev===this&&i(o,s.formats())&&(s.moveChildren(this),s.remove())},t.blotName="inline",t.scope=c.Scope.INLINE_BLOT,t.tagName="SPAN",t}(a.default);p.default=u},function(e,p,m){var g=this&&this.__extends||function(){var u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,t){r.__proto__=t}||function(r,t){for(var l in t)t.hasOwnProperty(l)&&(r[l]=t[l])};return function(r,t){u(r,t);function l(){this.constructor=r}r.prototype=t===null?Object.create(t):(l.prototype=t.prototype,new l)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=m(18),c=m(1),i=function(u){g(r,u);function r(){return u!==null&&u.apply(this,arguments)||this}return r.formats=function(t){var l=c.query(r.blotName).tagName;if(t.tagName!==l)return u.formats.call(this,t)},r.prototype.format=function(t,l){c.query(t,c.Scope.BLOCK)!=null&&(t===this.statics.blotName&&!l?this.replaceWith(r.blotName):u.prototype.format.call(this,t,l))},r.prototype.formatAt=function(t,l,o,s){c.query(o,c.Scope.BLOCK)!=null?this.format(o,s):u.prototype.formatAt.call(this,t,l,o,s)},r.prototype.insertAt=function(t,l,o){if(o==null||c.query(l,c.Scope.INLINE)!=null)u.prototype.insertAt.call(this,t,l,o);else{var s=this.split(t),f=c.create(l,o);s.parent.insertBefore(f,s)}},r.prototype.update=function(t,l){navigator.userAgent.match(/Trident/)?this.build():u.prototype.update.call(this,t,l)},r.blotName="block",r.scope=c.Scope.BLOCK_BLOT,r.tagName="P",r}(a.default);p.default=i},function(e,p,m){var g=this&&this.__extends||function(){var i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,r){u.__proto__=r}||function(u,r){for(var t in r)r.hasOwnProperty(t)&&(u[t]=r[t])};return function(u,r){i(u,r);function t(){this.constructor=u}u.prototype=r===null?Object.create(r):(t.prototype=r.prototype,new t)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=m(19),c=function(i){g(u,i);function u(){return i!==null&&i.apply(this,arguments)||this}return u.formats=function(r){},u.prototype.format=function(r,t){i.prototype.formatAt.call(this,0,this.length(),r,t)},u.prototype.formatAt=function(r,t,l,o){r===0&&t===this.length()?this.format(l,o):i.prototype.formatAt.call(this,r,t,l,o)},u.prototype.formats=function(){return this.statics.formats(this.domNode)},u}(a.default);p.default=c},function(e,p,m){var g=this&&this.__extends||function(){var u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,t){r.__proto__=t}||function(r,t){for(var l in t)t.hasOwnProperty(l)&&(r[l]=t[l])};return function(r,t){u(r,t);function l(){this.constructor=r}r.prototype=t===null?Object.create(t):(l.prototype=t.prototype,new l)}}();Object.defineProperty(p,"__esModule",{value:!0});var a=m(19),c=m(1),i=function(u){g(r,u);function r(t){var l=u.call(this,t)||this;return l.text=l.statics.value(l.domNode),l}return r.create=function(t){return document.createTextNode(t)},r.value=function(t){var l=t.data;return l.normalize&&(l=l.normalize()),l},r.prototype.deleteAt=function(t,l){this.domNode.data=this.text=this.text.slice(0,t)+this.text.slice(t+l)},r.prototype.index=function(t,l){return this.domNode===t?l:-1},r.prototype.insertAt=function(t,l,o){o==null?(this.text=this.text.slice(0,t)+l+this.text.slice(t),this.domNode.data=this.text):u.prototype.insertAt.call(this,t,l,o)},r.prototype.length=function(){return this.text.length},r.prototype.optimize=function(t){u.prototype.optimize.call(this,t),this.text=this.statics.value(this.domNode),this.text.length===0?this.remove():this.next instanceof r&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},r.prototype.position=function(t,l){return[this.domNode,t]},r.prototype.split=function(t,l){if(l===void 0&&(l=!1),!l){if(t===0)return this;if(t===this.length())return this.next}var o=c.create(this.domNode.splitText(t));return this.parent.insertBefore(o,this.next),this.text=this.statics.value(this.domNode),o},r.prototype.update=function(t,l){var o=this;t.some(function(s){return s.type==="characterData"&&s.target===o.domNode})&&(this.text=this.statics.value(this.domNode))},r.prototype.value=function(){return this.text},r.blotName="text",r.scope=c.Scope.INLINE_BLOT,r}(a.default);p.default=i},function(e,p,m){var g=document.createElement("div");if(g.classList.toggle("test-class",!1),g.classList.contains("test-class")){var a=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(c,i){return arguments.length>1&&!this.contains(c)==!i?i:a.call(this,c)}}String.prototype.startsWith||(String.prototype.startsWith=function(c,i){return i=i||0,this.substr(i,c.length)===c}),String.prototype.endsWith||(String.prototype.endsWith=function(c,i){var u=this.toString();(typeof i!="number"||!isFinite(i)||Math.floor(i)!==i||i>u.length)&&(i=u.length),i-=c.length;var r=u.indexOf(c,i);return r!==-1&&r===i}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(i){if(this===null)throw new TypeError("Array.prototype.find called on null or undefined");if(typeof i!="function")throw new TypeError("predicate must be a function");for(var u=Object(this),r=u.length>>>0,t=arguments[1],l,o=0;oy.length?b:y,O=b.length>y.length?y:b,T=E.indexOf(O);if(T!=-1)return _=[[g,E.substring(0,T)],[a,O],[g,E.substring(T+O.length)]],b.length>y.length&&(_[0][0]=_[2][0]=m),_;if(O.length==1)return[[m,b],[g,y]];var x=o(b,y);if(x){var w=x[0],M=x[1],k=x[2],S=x[3],q=x[4],L=c(w,k),A=c(M,S);return L.concat([[a,q]],A)}return u(b,y)}function u(b,y){for(var _=b.length,E=y.length,O=Math.ceil((_+E)/2),T=O,x=2*O,w=new Array(x),M=new Array(x),k=0;k_)A+=2;else if(P>E)L+=2;else if(q){var j=T+S-R;if(j>=0&&j=I)return r(b,y,F,P)}}}for(var W=-B+D;W<=B-N;W+=2){var j=T+W,I;W==-B||W!=B&&M[j-1]_)N+=2;else if(H>E)D+=2;else if(!q){var V=T+S-W;if(V>=0&&V=I)return r(b,y,F,P)}}}}return[[m,b],[g,y]]}function r(b,y,_,E){var O=b.substring(0,_),T=y.substring(0,E),x=b.substring(_),w=y.substring(E),M=c(O,T),k=c(x,w);return M.concat(k)}function t(b,y){if(!b||!y||b.charAt(0)!=y.charAt(0))return 0;for(var _=0,E=Math.min(b.length,y.length),O=E,T=0;_y.length?b:y,E=b.length>y.length?y:b;if(_.length<4||E.length*2<_.length)return null;function O(A,D,N){for(var B=A.substring(N,N+Math.floor(A.length/4)),R=-1,V="",F,P,j,I;(R=D.indexOf(B,R+1))!=-1;){var W=t(A.substring(N),D.substring(R)),H=l(A.substring(0,N),D.substring(0,R));V.length=A.length?[F,P,j,I,V]:null}var T=O(_,E,Math.ceil(_.length/4)),x=O(_,E,Math.ceil(_.length/2)),w;if(!T&&!x)return null;x?T?w=T[4].length>x[4].length?T:x:w=x:w=T;var M,k,S,q;b.length>y.length?(M=w[0],k=w[1],S=w[2],q=w[3]):(S=w[0],q=w[1],M=w[2],k=w[3]);var L=w[4];return[M,k,S,q,L]}function s(b){b.push([a,""]);for(var y=0,_=0,E=0,O="",T="",x;y1?(_!==0&&E!==0&&(x=t(T,O),x!==0&&(y-_-E>0&&b[y-_-E-1][0]==a?b[y-_-E-1][1]+=T.substring(0,x):(b.splice(0,0,[a,T.substring(0,x)]),y++),T=T.substring(x),O=O.substring(x)),x=l(T,O),x!==0&&(b[y][1]=T.substring(T.length-x)+b[y][1],T=T.substring(0,T.length-x),O=O.substring(0,O.length-x))),_===0?b.splice(y-E,_+E,[g,T]):E===0?b.splice(y-_,_+E,[m,O]):b.splice(y-_-E,_+E,[m,O],[g,T]),y=y-_-E+(_?1:0)+(E?1:0)+1):y!==0&&b[y-1][0]==a?(b[y-1][1]+=b[y][1],b.splice(y,1)):y++,E=0,_=0,O="",T="";break}b[b.length-1][1]===""&&b.pop();var w=!1;for(y=1;y0&&E.splice(O+2,0,[x[0],w]),C(E,O,3)}else return b}function $(b){for(var y=!1,_=function(x){return x.charCodeAt(0)>=56320&&x.charCodeAt(0)<=57343},E=function(x){return x.charCodeAt(x.length-1)>=55296&&x.charCodeAt(x.length-1)<=56319},O=2;O0&&T.push(b[O]);return T}function C(b,y,_){for(var E=y+_-1;E>=0&&E>=y-1;E--)if(E+1\r?\n +\<"),this.convert();var ne=this.quill.getFormat(this.quill.selection.savedRange.index);if(ne[E.default.blotName]){var J=this.container.innerText;return this.container.innerHTML="",new t.default().insert(J,k({},E.default.blotName,ne[E.default.blotName]))}var te=this.prepareMatching(),ie=a(te,2),pe=ie[0],$e=ie[1],fe=W(this.container,pe,$e);return j(fe,` -`)&&fe.ops[fe.ops.length-1].attributes==null&&(fe=fe.compose(new t.default().retain(fe.length()-1).delete(1))),A.log("convert",this.container.innerHTML,fe),this.container.innerHTML="",fe}},{key:"dangerouslyPasteHTML",value:function(le,ne){var J=arguments.length>2&&arguments[2]!==void 0?arguments[2]:f.default.sources.API;if(typeof le=="string")this.quill.setContents(this.convert(le),ne),this.quill.setSelection(0,f.default.sources.SILENT);else{var te=this.convert(ne);this.quill.updateContents(new t.default().retain(le).concat(te),J),this.quill.setSelection(le+te.length(),f.default.sources.SILENT)}}},{key:"onPaste",value:function(le){var ne=this;if(!(le.defaultPrevented||!this.quill.isEnabled())){var J=this.quill.getSelection(),te=new t.default().retain(J.index),ie=this.quill.scrollingContainer.scrollTop;this.container.focus(),this.quill.selection.update(f.default.sources.SILENT),setTimeout(function(){te=te.concat(ne.convert()).delete(J.length),ne.quill.updateContents(te,f.default.sources.USER),ne.quill.setSelection(te.length()-J.length,f.default.sources.SILENT),ne.quill.scrollingContainer.scrollTop=ie,ne.quill.focus()},1)}}},{key:"prepareMatching",value:function(){var le=this,ne=[],J=[];return this.matchers.forEach(function(te){var ie=a(te,2),pe=ie[0],$e=ie[1];switch(pe){case Node.TEXT_NODE:J.push($e);break;case Node.ELEMENT_NODE:ne.push($e);break;default:[].forEach.call(le.container.querySelectorAll(pe),function(fe){fe[D]=fe[D]||[],fe[D].push($e)});break}}),[ne,J]}}]),Q}(C.default);V.DEFAULTS={matchers:[],matchVisual:!0};function F(X,Q,re){return(typeof Q=="undefined"?"undefined":g(Q))==="object"?Object.keys(Q).reduce(function(le,ne){return F(le,ne,Q[ne])},X):X.reduce(function(le,ne){return ne.attributes&&ne.attributes[Q]?le.push(ne):le.insert(ne.insert,(0,u.default)({},k({},Q,re),ne.attributes))},new t.default)}function P(X){if(X.nodeType!==Node.ELEMENT_NODE)return{};var Q="__ql-computed-style";return X[Q]||(X[Q]=window.getComputedStyle(X))}function j(X,Q){for(var re="",le=X.ops.length-1;le>=0&&re.length-1}function W(X,Q,re){return X.nodeType===X.TEXT_NODE?re.reduce(function(le,ne){return ne(X,le)},new t.default):X.nodeType===X.ELEMENT_NODE?[].reduce.call(X.childNodes||[],function(le,ne){var J=W(ne,Q,re);return ne.nodeType===X.ELEMENT_NODE&&(J=Q.reduce(function(te,ie){return ie(ne,te)},J),J=(ne[D]||[]).reduce(function(te,ie){return ie(ne,te)},J)),le.concat(J)},new t.default):new t.default}function H(X,Q,re){return F(re,X,!0)}function z(X,Q){var re=o.default.Attributor.Attribute.keys(X),le=o.default.Attributor.Class.keys(X),ne=o.default.Attributor.Style.keys(X),J={};return re.concat(le).concat(ne).forEach(function(te){var ie=o.default.query(te,o.default.Scope.ATTRIBUTE);ie!=null&&(J[ie.attrName]=ie.value(X),J[ie.attrName])||(ie=B[te],ie!=null&&(ie.attrName===te||ie.keyName===te)&&(J[ie.attrName]=ie.value(X)||void 0),ie=R[te],ie!=null&&(ie.attrName===te||ie.keyName===te)&&(ie=R[te],J[ie.attrName]=ie.value(X)||void 0))}),Object.keys(J).length>0&&(Q=F(Q,J)),Q}function G(X,Q){var re=o.default.query(X);if(re==null)return Q;if(re.prototype instanceof o.default.Embed){var le={},ne=re.value(X);ne!=null&&(le[re.blotName]=ne,Q=new t.default().insert(le,re.formats(X)))}else typeof re.formats=="function"&&(Q=F(Q,re.blotName,re.formats(X)));return Q}function Z(X,Q){return j(Q,` -`)||Q.insert(` -`),Q}function oe(){return new t.default}function se(X,Q){var re=o.default.query(X);if(re==null||re.blotName!=="list-item"||!j(Q,` -`))return Q;for(var le=-1,ne=X.parentNode;!ne.classList.contains("ql-clipboard");)(o.default.query(ne)||{}).blotName==="list"&&(le+=1),ne=ne.parentNode;return le<=0?Q:Q.compose(new t.default().retain(Q.length()-1).retain(1,{indent:le}))}function ae(X,Q){return j(Q,` -`)||(I(X)||Q.length()>0&&X.nextSibling&&I(X.nextSibling))&&Q.insert(` -`),Q}function de(X,Q){if(I(X)&&X.nextElementSibling!=null&&!j(Q,` - -`)){var re=X.offsetHeight+parseFloat(P(X).marginTop)+parseFloat(P(X).marginBottom);X.nextElementSibling.offsetTop>X.offsetTop+re*1.5&&Q.insert(` -`)}return Q}function be(X,Q){var re={},le=X.style||{};return le.fontStyle&&P(X).fontStyle==="italic"&&(re.italic=!0),le.fontWeight&&(P(X).fontWeight.startsWith("bold")||parseInt(P(X).fontWeight)>=700)&&(re.bold=!0),Object.keys(re).length>0&&(Q=F(Q,re)),parseFloat(le.textIndent||0)>0&&(Q=new t.default().insert(" ").concat(Q)),Q}function ye(X,Q){var re=X.data;if(X.parentNode.tagName==="O:P")return Q.insert(re.trim());if(re.trim().length===0&&X.parentNode.classList.contains("ql-clipboard"))return Q;if(!P(X.parentNode).whiteSpace.startsWith("pre")){var le=function(J,te){return te=te.replace(/[^\u00a0]/g,""),te.length<1&&J?" ":te};re=re.replace(/\r\n/g," ").replace(/\n/g," "),re=re.replace(/\s\s+/g,le.bind(le,!0)),(X.previousSibling==null&&I(X.parentNode)||X.previousSibling!=null&&I(X.previousSibling))&&(re=re.replace(/^\s+/,le.bind(le,!1))),(X.nextSibling==null&&I(X.parentNode)||X.nextSibling!=null&&I(X.nextSibling))&&(re=re.replace(/\s+$/,le.bind(le,!1)))}return Q.insert(re)}p.default=V,p.matchAttributor=z,p.matchBlot=G,p.matchNewline=ae,p.matchSpacing=de,p.matchText=ye},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function s(f,h){for(var v=0;v '},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function s(f,h){for(var v=0;vo.right&&(f=o.right-s.right,this.root.style.left=t+f+"px"),s.lefto.bottom){var h=s.bottom-s.top,v=r.bottom-r.top+h;this.root.style.top=l-v+"px",this.root.classList.add("ql-flip")}return f}},{key:"show",value:function(){this.root.classList.remove("ql-editing"),this.root.classList.remove("ql-hidden")}}]),i}();p.default=c},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function x(w,M){var k=[],S=!0,q=!1,L=void 0;try{for(var A=w[Symbol.iterator](),D;!(S=(D=A.next()).done)&&(k.push(D.value),!(M&&k.length===M));S=!0);}catch(N){q=!0,L=N}finally{try{!S&&A.return&&A.return()}finally{if(q)throw L}}return k}return function(w,M){if(Array.isArray(w))return w;if(Symbol.iterator in Object(w))return x(w,M);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function x(w,M,k){w===null&&(w=Function.prototype);var S=Object.getOwnPropertyDescriptor(w,M);if(S===void 0){var q=Object.getPrototypeOf(w);return q===null?void 0:x(q,M,k)}else{if("value"in S)return S.value;var L=S.get;return L===void 0?void 0:L.call(k)}},c=function(){function x(w,M){for(var k=0;k
','','',''].join(""),p.default=O},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(29),a=ne(g),c=m(36),i=m(38),u=m(64),r=m(65),t=ne(r),l=m(66),o=ne(l),s=m(67),f=ne(s),h=m(37),v=m(26),$=m(39),C=m(40),b=m(56),y=ne(b),_=m(68),E=ne(_),O=m(27),T=ne(O),x=m(69),w=ne(x),M=m(70),k=ne(M),S=m(71),q=ne(S),L=m(72),A=ne(L),D=m(73),N=ne(D),B=m(13),R=ne(B),V=m(74),F=ne(V),P=m(75),j=ne(P),I=m(57),W=ne(I),H=m(41),z=ne(H),G=m(28),Z=ne(G),oe=m(59),se=ne(oe),ae=m(60),de=ne(ae),be=m(61),ye=ne(be),X=m(108),Q=ne(X),re=m(62),le=ne(re);function ne(J){return J&&J.__esModule?J:{default:J}}a.default.register({"attributors/attribute/direction":i.DirectionAttribute,"attributors/class/align":c.AlignClass,"attributors/class/background":h.BackgroundClass,"attributors/class/color":v.ColorClass,"attributors/class/direction":i.DirectionClass,"attributors/class/font":$.FontClass,"attributors/class/size":C.SizeClass,"attributors/style/align":c.AlignStyle,"attributors/style/background":h.BackgroundStyle,"attributors/style/color":v.ColorStyle,"attributors/style/direction":i.DirectionStyle,"attributors/style/font":$.FontStyle,"attributors/style/size":C.SizeStyle},!0),a.default.register({"formats/align":c.AlignClass,"formats/direction":i.DirectionClass,"formats/indent":u.IndentClass,"formats/background":h.BackgroundStyle,"formats/color":v.ColorStyle,"formats/font":$.FontClass,"formats/size":C.SizeClass,"formats/blockquote":t.default,"formats/code-block":R.default,"formats/header":o.default,"formats/list":f.default,"formats/bold":y.default,"formats/code":B.Code,"formats/italic":E.default,"formats/link":T.default,"formats/script":w.default,"formats/strike":k.default,"formats/underline":q.default,"formats/image":A.default,"formats/video":N.default,"formats/list/item":s.ListItem,"modules/formula":F.default,"modules/syntax":j.default,"modules/toolbar":W.default,"themes/bubble":Q.default,"themes/snow":le.default,"ui/icons":z.default,"ui/picker":Z.default,"ui/icon-picker":de.default,"ui/color-picker":se.default,"ui/tooltip":ye.default},!0),p.default=a.default},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.IndentClass=void 0;var g=function(){function f(h,v){for(var $=0;$0&&this.children.tail.format(E,O)}},{key:"formats",value:function(){return s({},this.statics.blotName,this.statics.formats(this.domNode))}},{key:"insertBefore",value:function(E,O){if(E instanceof $)a(y.prototype.__proto__||Object.getPrototypeOf(y.prototype),"insertBefore",this).call(this,E,O);else{var T=O==null?this.length():O.offset(this),x=this.split(T);x.parent.insertBefore(E,x)}}},{key:"optimize",value:function(E){a(y.prototype.__proto__||Object.getPrototypeOf(y.prototype),"optimize",this).call(this,E);var O=this.next;O!=null&&O.prev===this&&O.statics.blotName===this.statics.blotName&&O.domNode.tagName===this.domNode.tagName&&O.domNode.getAttribute("data-checked")===this.domNode.getAttribute("data-checked")&&(O.moveChildren(this),O.remove())}},{key:"replace",value:function(E){if(E.statics.blotName!==this.statics.blotName){var O=i.default.create(this.statics.defaultChild);E.moveChildren(O),this.appendChild(O)}a(y.prototype.__proto__||Object.getPrototypeOf(y.prototype),"replace",this).call(this,E)}}]),y}(l.default);C.blotName="list",C.scope=i.default.Scope.BLOCK_BLOT,C.tagName=["OL","UL"],C.defaultChild="list-item",C.allowedChildren=[$],p.ListItem=$,p.default=C},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(56),a=c(g);function c(l){return l&&l.__esModule?l:{default:l}}function i(l,o){if(!(l instanceof o))throw new TypeError("Cannot call a class as a function")}function u(l,o){if(!l)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return o&&(typeof o=="object"||typeof o=="function")?o:l}function r(l,o){if(typeof o!="function"&&o!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof o);l.prototype=Object.create(o&&o.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),o&&(Object.setPrototypeOf?Object.setPrototypeOf(l,o):l.__proto__=o)}var t=function(l){r(o,l);function o(){return i(this,o),u(this,(o.__proto__||Object.getPrototypeOf(o)).apply(this,arguments))}return o}(a.default);t.blotName="italic",t.tagName=["EM","I"],p.default=t},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function s(f,h){for(var v=0;v-1?b?this.domNode.setAttribute(C,b):this.domNode.removeAttribute(C):a(v.prototype.__proto__||Object.getPrototypeOf(v.prototype),"format",this).call(this,C,b)}}],[{key:"create",value:function(C){var b=a(v.__proto__||Object.getPrototypeOf(v),"create",this).call(this,C);return typeof C=="string"&&b.setAttribute("src",this.sanitize(C)),b}},{key:"formats",value:function(C){return s.reduce(function(b,y){return C.hasAttribute(y)&&(b[y]=C.getAttribute(y)),b},{})}},{key:"match",value:function(C){return/\.(jpe?g|gif|png)$/.test(C)||/^data:image\/.+;base64/.test(C)}},{key:"sanitize",value:function(C){return(0,u.sanitize)(C,["http","https","data"])?C:"//:0"}},{key:"value",value:function(C){return C.getAttribute("src")}}]),v}(i.default.Embed);f.blotName="image",f.tagName="IMG",p.default=f},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function h(v,$){for(var C=0;C<$.length;C++){var b=$[C];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(v,b.key,b)}}return function(v,$,C){return $&&h(v.prototype,$),C&&h(v,C),v}}(),a=function h(v,$,C){v===null&&(v=Function.prototype);var b=Object.getOwnPropertyDescriptor(v,$);if(b===void 0){var y=Object.getPrototypeOf(v);return y===null?void 0:h(y,$,C)}else{if("value"in b)return b.value;var _=b.get;return _===void 0?void 0:_.call(C)}},c=m(4),i=m(27),u=r(i);function r(h){return h&&h.__esModule?h:{default:h}}function t(h,v){if(!(h instanceof v))throw new TypeError("Cannot call a class as a function")}function l(h,v){if(!h)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return v&&(typeof v=="object"||typeof v=="function")?v:h}function o(h,v){if(typeof v!="function"&&v!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof v);h.prototype=Object.create(v&&v.prototype,{constructor:{value:h,enumerable:!1,writable:!0,configurable:!0}}),v&&(Object.setPrototypeOf?Object.setPrototypeOf(h,v):h.__proto__=v)}var s=["height","width"],f=function(h){o(v,h);function v(){return t(this,v),l(this,(v.__proto__||Object.getPrototypeOf(v)).apply(this,arguments))}return g(v,[{key:"format",value:function(C,b){s.indexOf(C)>-1?b?this.domNode.setAttribute(C,b):this.domNode.removeAttribute(C):a(v.prototype.__proto__||Object.getPrototypeOf(v.prototype),"format",this).call(this,C,b)}}],[{key:"create",value:function(C){var b=a(v.__proto__||Object.getPrototypeOf(v),"create",this).call(this,C);return b.setAttribute("frameborder","0"),b.setAttribute("allowfullscreen",!0),b.setAttribute("src",this.sanitize(C)),b}},{key:"formats",value:function(C){return s.reduce(function(b,y){return C.hasAttribute(y)&&(b[y]=C.getAttribute(y)),b},{})}},{key:"sanitize",value:function(C){return u.default.sanitize(C)}},{key:"value",value:function(C){return C.getAttribute("src")}}]),v}(c.BlockEmbed);f.blotName="video",f.className="ql-video",f.tagName="IFRAME",p.default=f},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.FormulaBlot=void 0;var g=function(){function C(b,y){for(var _=0;_0||this.cachedText==null)&&(this.domNode.innerHTML=T(x),this.domNode.normalize(),this.attach()),this.cachedText=x)}}]),E}(s.default);C.className="ql-syntax";var b=new i.default.Attributor.Class("token","hljs",{scope:i.default.Scope.INLINE}),y=function(_){$(E,_),g(E,null,[{key:"register",value:function(){r.default.register(b,!0),r.default.register(C,!0)}}]);function E(O,T){h(this,E);var x=v(this,(E.__proto__||Object.getPrototypeOf(E)).call(this,O,T));if(typeof x.options.highlight!="function")throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");var w=null;return x.quill.on(r.default.events.SCROLL_OPTIMIZE,function(){clearTimeout(w),w=setTimeout(function(){x.highlight(),w=null},x.options.interval)}),x.highlight(),x}return g(E,[{key:"highlight",value:function(){var T=this;if(!this.quill.selection.composing){this.quill.update(r.default.sources.USER);var x=this.quill.getSelection();this.quill.scroll.descendants(C).forEach(function(w){w.highlight(T.options.highlight)}),this.quill.update(r.default.sources.SILENT),x!=null&&this.quill.setSelection(x,r.default.sources.SILENT)}}}]),E}(l.default);y.DEFAULTS={highlight:function(){return window.hljs==null?null:function(_){var E=window.hljs.highlightAuto(_);return E.value}}(),interval:1e3},p.CodeBlock=C,p.CodeToken=b,p.default=y},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.BubbleTooltip=void 0;var g=function E(O,T,x){O===null&&(O=Function.prototype);var w=Object.getOwnPropertyDescriptor(O,T);if(w===void 0){var M=Object.getPrototypeOf(O);return M===null?void 0:E(M,T,x)}else{if("value"in w)return w.value;var k=w.get;return k===void 0?void 0:k.call(x)}},a=function(){function E(O,T){for(var x=0;x0&&q===r.default.sources.USER){w.show(),w.root.style.left="0px",w.root.style.width="",w.root.style.width=w.root.offsetWidth+"px";var L=w.quill.getLines(k.index,k.length);if(L.length===1)w.position(w.quill.getBounds(k));else{var A=L[L.length-1],D=w.quill.getIndex(A),N=Math.min(A.length()-1,k.index+k.length-D),B=w.quill.getBounds(new o.Range(D,N));w.position(B)}}else document.activeElement!==w.textbox&&w.quill.hasFocus()&&w.hide()}),w}return a(O,[{key:"listen",value:function(){var x=this;g(O.prototype.__proto__||Object.getPrototypeOf(O.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",function(){x.root.classList.remove("ql-editing")}),this.quill.on(r.default.events.SCROLL_OPTIMIZE,function(){setTimeout(function(){if(!x.root.classList.contains("ql-hidden")){var w=x.quill.getSelection();w!=null&&x.position(x.quill.getBounds(w))}},1)})}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(x){var w=g(O.prototype.__proto__||Object.getPrototypeOf(O.prototype),"position",this).call(this,x),M=this.root.querySelector(".ql-tooltip-arrow");if(M.style.marginLeft="",w===0)return w;M.style.marginLeft=-1*w-M.offsetWidth/2+"px"}}]),O}(t.BaseTooltip);_.TEMPLATE=['','
','','',"
"].join(""),p.BubbleTooltip=_,p.default=y},function(e,p,m){e.exports=m(63)}]).default})})(quill);var Quill=getDefaultExportFromCjs(quill.exports),quill_core="",quill_snow="",quill_bubble="";const defaultOptions={theme:"snow",boundary:document.body,modules:{toolbar:[["bold","italic","underline","strike"],["blockquote","code-block"],[{header:1},{header:2}],[{list:"ordered"},{list:"bullet"}],[{script:"sub"},{script:"super"}],[{indent:"-1"},{indent:"+1"}],[{direction:"rtl"}],[{size:["small",!1,"large","huge"]}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],["clean"],["link","image","video"]]},placeholder:"Insert content here ...",readOnly:!1},_sfc_main$2S={name:"quill-editor",props:{content:String,value:String,disabled:{type:Boolean,default:!1},options:{type:Object,required:!1,default:()=>({})}},emits:["ready","change","input","blur","focus","update:value"],setup(n,d){const e={editorOption:{},quill:null};let p="";require$$0$1.watch(()=>n.value,c=>{e.quill&&(c&&c!==p?(p=c,e.quill.pasteHTML(c)):c||e.quill.setText(""))}),require$$0$1.watch(()=>n.content,c=>{e.quill&&(c&&c!==p?(p=c,e.quill.pasteHTML(c)):c||e.quill.setText(""))}),require$$0$1.watch(()=>n.disabled,c=>{e.quill&&e.quill.enable(!c)});const m=require$$0$1.ref(null),g=(c,i)=>{for(const u in i)!c[u]||u!=="modules"?c[u]=i[u]:g(c[u],i[u]);return c},a=()=>{m.value&&(e.editorOption=g(defaultOptions,n.options),e.editorOption.readOnly=!!n.disabled,e.quill=new Quill(m.value,e.editorOption),n.value&&e.quill.pasteHTML(n.value),e.quill.on("selection-change",c=>{c?d.emit("focus",e.quill):d.emit("blur",e.quill)}),e.quill.on("text-change",()=>{n.disabled&&e.quill.enable(!1);let c=m.value.children[0].innerHTML;const i=e.quill,u=e.quill.getText();c==="


"&&(c=""),p=c,d.emit("update:value",p),d.emit("change",{html:c,text:u,quill:i})}),d.emit("ready",e.quill))};return require$$0$1.onBeforeUnmount(()=>{const c=m.value.previousSibling;c&&c.className.indexOf("ql-toolbar")>-1&&c.parentNode.removeChild(c)}),require$$0$1.onMounted(()=>{a()}),require$$0$1.onUnmounted(()=>{e.quill=null}),{editor:m}}},_hoisted_1$x={ref:"editor"};function _sfc_render$2S(n,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("section",_hoisted_1$x,null,512)}var quillEditor=_export_sfc$1(_sfc_main$2S,[["render",_sfc_render$2S]]);quillEditor.install=function(n){n.component(quillEditor.name,quillEditor)};var richEditorWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2R={name:"rich-editor-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper,quillEditor},data(){return{oldFieldValue:null,fieldModel:null,rules:[],customToolbar:[],valueChangedFlag:!1}},computed:{editorOption(){return{placeholder:this.field.options.placeholder,modules:{}}}},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{handleRichEditorChangeEvent(){this.valueChangedFlag=!0,this.syncUpdateFormModel(this.fieldModel)},handleRichEditorFocusEvent(){this.oldFieldValue=deepClone(this.fieldModel)},handleRichEditorBlurEvent(){this.valueChangedFlag&&(this.emitFieldDataChange(this.fieldModel,this.oldFieldValue),this.valueChangedFlag=!1)}}};function _sfc_render$2R(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("quill-editor"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",null,[require$$0$1.createVNode(a,{value:m.fieldModel,"onUpdate:value":d[0]||(d[0]=i=>m.fieldModel=i),options:g.editorOption,disabled:e.field.options.disabled,onBlur:g.handleRichEditorBlurEvent,onFocus:g.handleRichEditorFocusEvent,onChange:g.handleRichEditorChangeEvent,style:require$$0$1.normalizeStyle(e.field.options.contentHeight?`height: ${e.field.options.contentHeight};`:"")},null,8,["value","options","disabled","onBlur","onFocus","onChange","style"])])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var richEditorWidget=_export_sfc$1(_sfc_main$2R,[["render",_sfc_render$2R],["__scopeId","data-v-736d97e5"]]),__glob_0_15$1=Object.freeze(Object.defineProperty({__proto__:null,default:richEditorWidget},Symbol.toStringTag,{value:"Module"})),selectWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2Q={name:"select-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{allowDefaultFirstOption(){return!!this.field.options.filterable&&!!this.field.options.allowCreate},remoteMethod(){if(!!this.field.options.remote&&!!this.field.options.onRemoteQuery)return this.remoteQuery}},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2Q(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-option"),c=require$$0$1.resolveComponent("el-select"),i=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=u=>m.fieldModel=u),class:"full-width-input",disabled:e.field.options.disabled,size:n.widgetSize,clearable:e.field.options.clearable,filterable:e.field.options.filterable,"allow-create":e.field.options.allowCreate,"default-first-option":g.allowDefaultFirstOption,"automatic-dropdown":e.field.options.automaticDropdown,multiple:e.field.options.multiple,"multiple-limit":e.field.options.multipleLimit,placeholder:e.field.options.placeholder||n.i18nt("render.hint.selectPlaceholder"),remote:e.field.options.remote,"remote-method":g.remoteMethod,onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onChange:n.handleChangeEvent},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.field.options.optionItems,u=>(require$$0$1.openBlock(),require$$0$1.createBlock(a,{key:u.value,label:u.label,value:u.value,disabled:u.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","disabled","size","clearable","filterable","allow-create","default-first-option","automatic-dropdown","multiple","multiple-limit","placeholder","remote","remote-method","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var selectWidget=_export_sfc$1(_sfc_main$2Q,[["render",_sfc_render$2Q],["__scopeId","data-v-73c0fb69"]]),__glob_0_16$1=Object.freeze(Object.defineProperty({__proto__:null,default:selectWidget},Symbol.toStringTag,{value:"Module"})),sliderWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2P={name:"slider-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2P(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-slider"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,"show-stops":e.field.options.showStops,min:e.field.options.min,max:e.field.options.max,step:e.field.options.step,range:e.field.options.range,vertical:e.field.options.vertical,onChange:n.handleChangeEvent},null,8,["modelValue","disabled","show-stops","min","max","step","range","vertical","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var sliderWidget=_export_sfc$1(_sfc_main$2P,[["render",_sfc_render$2P],["__scopeId","data-v-e54b3390"]]),__glob_0_17$1=Object.freeze(Object.defineProperty({__proto__:null,default:sliderWidget},Symbol.toStringTag,{value:"Module"})),slotWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2O={name:"slot-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}},_hoisted_1$w={key:0,class:"slot-title"};function _sfc_render$2O(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(a,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{class:require$$0$1.normalizeClass([e.designState?"slot-wrapper-design":"slot-wrapper-render"])},[require$$0$1.renderSlot(n.$slots,e.field.options.name,{formModel:n.formModel},void 0,!0),e.designState?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$w,require$$0$1.toDisplayString(e.field.options.label),1)):require$$0$1.createCommentVNode("",!0)],2)]),_:3},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var slotWidget=_export_sfc$1(_sfc_main$2O,[["render",_sfc_render$2O],["__scopeId","data-v-1b458525"]]),__glob_0_18$1=Object.freeze(Object.defineProperty({__proto__:null,default:slotWidget},Symbol.toStringTag,{value:"Module"})),staticTextWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2N={name:"static-text-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2N(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(a,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{ref:"fieldEditor",style:require$$0$1.normalizeStyle(e.field.options.fontSize?`font-size: ${e.field.options.fontSize};`:"")},[require$$0$1.createElementVNode("pre",{style:require$$0$1.normalizeStyle({"white-space":e.field.options.preWrap?"pre-wrap":"pre","text-align":e.field.options.textAlign?e.field.options.textAlign:"left"})},require$$0$1.toDisplayString(e.field.options.textContent),5)],4)]),_:1},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var staticTextWidget=_export_sfc$1(_sfc_main$2N,[["render",_sfc_render$2N],["__scopeId","data-v-990dcae8"]]),__glob_0_20$1=Object.freeze(Object.defineProperty({__proto__:null,default:staticTextWidget},Symbol.toStringTag,{value:"Module"})),switchWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2M={name:"switch-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2M(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-switch"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,"active-text":e.field.options.activeText,"inactive-text":e.field.options.inactiveText,"active-color":e.field.options.activeColor,"inactive-color":e.field.options.inactiveColor,width:e.field.options.switchWidth,onChange:n.handleChangeEvent},null,8,["modelValue","disabled","active-text","inactive-text","active-color","inactive-color","width","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var switchWidget=_export_sfc$1(_sfc_main$2M,[["render",_sfc_render$2M],["__scopeId","data-v-51a90f56"]]),__glob_0_21$1=Object.freeze(Object.defineProperty({__proto__:null,default:switchWidget},Symbol.toStringTag,{value:"Module"})),textareaWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2L={name:"textarea-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2L(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-input"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{type:"textarea",ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:n.widgetSize,placeholder:e.field.options.placeholder,rows:e.field.options.rows,minlength:e.field.options.minLength,maxlength:e.field.options.maxLength,"show-word-limit":e.field.options.showWordLimit,onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onInput:n.handleInputCustomEvent,onChange:n.handleChangeEvent},null,8,["modelValue","disabled","readonly","size","placeholder","rows","minlength","maxlength","show-word-limit","onFocus","onBlur","onInput","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var textareaWidget=_export_sfc$1(_sfc_main$2L,[["render",_sfc_render$2L],["__scopeId","data-v-07ccea24"]]),__glob_0_22$1=Object.freeze(Object.defineProperty({__proto__:null,default:textareaWidget},Symbol.toStringTag,{value:"Module"})),timeRangeWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2K={name:"time-range-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2K(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-time-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""])},[require$$0$1.createVNode(a,{ref:"fieldEditor","is-range":"",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"full-width-input":""]),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:n.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":"HH:mm:ss","start-placeholder":e.field.options.startPlaceholder||n.i18nt("render.hint.startTimePlaceholder"),"end-placeholder":e.field.options.endPlaceholder||n.i18nt("render.hint.endTimePlaceholder"),onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onChange:n.handleChangeEvent},null,8,["modelValue","class","disabled","readonly","size","clearable","editable","format","start-placeholder","end-placeholder","onFocus","onBlur","onChange"])],2)]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var timeRangeWidget=_export_sfc$1(_sfc_main$2K,[["render",_sfc_render$2K],["__scopeId","data-v-6789eaac"]]),__glob_0_23$1=Object.freeze(Object.defineProperty({__proto__:null,default:timeRangeWidget},Symbol.toStringTag,{value:"Module"})),timeWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2J={name:"time-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2J(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-time-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""]),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:n.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":"HH:mm:ss",placeholder:e.field.options.placeholder||n.i18nt("render.hint.timePlaceholder"),onFocus:n.handleFocusCustomEvent,onBlur:n.handleBlurCustomEvent,onChange:n.handleChangeEvent},null,8,["modelValue","class","disabled","readonly","size","clearable","editable","format","placeholder","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var timeWidget=_export_sfc$1(_sfc_main$2J,[["render",_sfc_render$2J],["__scopeId","data-v-b2bd1886"]]),__glob_0_24$1=Object.freeze(Object.defineProperty({__proto__:null,default:timeWidget},Symbol.toStringTag,{value:"Module"}));let comps$1={};const modules$3={"./button-widget.vue":__glob_0_0$2,"./cascader-widget.vue":__glob_0_1$3,"./checkbox-widget.vue":__glob_0_2$3,"./color-widget.vue":__glob_0_3$3,"./date-range-widget.vue":__glob_0_4$3,"./date-widget.vue":__glob_0_5$3,"./divider-widget.vue":__glob_0_6$2,"./file-upload-widget.vue":__glob_0_7$1,"./form-item-wrapper.vue":__glob_0_8$1,"./html-text-widget.vue":__glob_0_9$1,"./input-widget.vue":__glob_0_10$1,"./number-widget.vue":__glob_0_11$1,"./picture-upload-widget.vue":__glob_0_12$1,"./radio-widget.vue":__glob_0_13$1,"./rate-widget.vue":__glob_0_14$1,"./rich-editor-widget.vue":__glob_0_15$1,"./select-widget.vue":__glob_0_16$1,"./slider-widget.vue":__glob_0_17$1,"./slot-widget.vue":__glob_0_18$1,"./static-content-wrapper.vue":__glob_0_19$1,"./static-text-widget.vue":__glob_0_20$1,"./switch-widget.vue":__glob_0_21$1,"./textarea-widget.vue":__glob_0_22$1,"./time-range-widget.vue":__glob_0_23$1,"./time-widget.vue":__glob_0_24$1};for(const n in modules$3){let d=modules$3[n].default.name;comps$1[d]=modules$3[n].default}var gridColItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2I={name:"GridColItem",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin],components:xe({},comps$1),props:{widget:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,colHeight:{type:String,default:null}},inject:["refList","globalModel","getFormConfig","previewState"],data(){return{layoutProps:{span:this.widget.options.span,md:this.widget.options.md||12,sm:this.widget.options.sm||12,xs:this.widget.options.xs||12,offset:this.widget.options.offset||0,push:this.widget.options.push||0,pull:this.widget.options.pull||0}}},computed:{formConfig(){return this.getFormConfig()},customClass(){return this.widget.options.customClass||""},colHeightStyle(){return this.colHeight?{height:this.colHeight+"px"}:{}}},created(){this.initLayoutProps(),this.initRefList()},methods:{initLayoutProps(){if(this.widget.options.responsive)if(this.previewState){this.layoutProps.md=void 0,this.layoutProps.sm=void 0,this.layoutProps.xs=void 0;let n=this.formConfig.layoutType;n==="H5"?this.layoutProps.span=this.widget.options.xs||12:n==="Pad"?this.layoutProps.span=this.widget.options.sm||12:this.layoutProps.span=this.widget.options.md||12}else this.layoutProps.span=void 0;else this.layoutProps.md=void 0,this.layoutProps.sm=void 0,this.layoutProps.xs=void 0}}},_hoisted_1$v={class:"blank-cell"},_hoisted_2$m={class:"invisible-content"};function _sfc_render$2I(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-col");return require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createBlock(a,require$$0$1.mergeProps({class:["grid-cell",[g.customClass]]},m.layoutProps,{style:g.colHeightStyle,key:e.widget.id}),{default:require$$0$1.withCtx(()=>[!!e.widget.widgetList&&e.widget.widgetList.length>0?(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},require$$0$1.renderList(e.widget.widgetList,(c,i)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[c.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(n.getComponentByContainer(c)),{widget:c,key:i,"parent-list":e.widget.widgetList,"index-of-parent-list":i,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),u=>({name:u,fn:require$$0$1.withCtx(r=>[require$$0$1.renderSlot(n.$slots,u,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(r)),void 0,!0)])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(c.type+"-widget"),{field:c,designer:null,key:i,"parent-list":e.widget.widgetList,"index-of-parent-list":i,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),u=>({name:u,fn:require$$0$1.withCtx(r=>[require$$0$1.renderSlot(n.$slots,u,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(r)),void 0,!0)])}))]),1032,["field","parent-list","index-of-parent-list","parent-widget"]))],64))),256)):(require$$0$1.openBlock(),require$$0$1.createBlock(a,{key:1},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$v,[require$$0$1.createElementVNode("span",_hoisted_2$m,require$$0$1.toDisplayString(n.i18nt("render.hint.blankCellContent")),1)])]),_:1}))]),_:3},16,["class","style"])),[[require$$0$1.vShow,!e.widget.options.hidden]])}var GridColItem=_export_sfc$1(_sfc_main$2I,[["render",_sfc_render$2I],["__scopeId","data-v-6c64446c"]]),__glob_0_1$2=Object.freeze(Object.defineProperty({__proto__:null,default:GridColItem},Symbol.toStringTag,{value:"Module"})),containerItemMixin={inject:["getFormConfig","getGlobalDsv"],computed:{customClass(){return this.widget.options.customClass||""},formModel:{cache:!1,get(){return this.globalModel.formModel}}},mounted(){this.callSetHidden()},methods:{unregisterFromRefList(){if(this.refList!==null&&!!this.widget.options.name){let n=this.widget.options.name;delete this.refList[n]}},callSetHidden(){this.widget.options.hidden===!0&&this.setHidden(!0)},setHidden(n){this.widget.options.hidden=n;let d=e=>{let p=e.options.name,m=this.getWidgetRef(p);n&&!!m&&!!m.clearFieldRules&&m.clearFieldRules(),!n&&!!m&&!!m.buildFieldRules&&m.buildFieldRules()};traverseFieldWidgetsOfContainer(this.widget,d)},activeTab(n){n>=0&&n{d.options.active=e===n,e===n&&(this.activeTabName=d.options.name)})},disableTab(n){n>=0&&n=0&&n=0&&n=0&&n{let e=d.options.name+"@row"+this.rowIdData[n],p=this.getWidgetRef(e);p&&p.setDisabled(!0)})},enableSubFormRow(n){this.widget.widgetList.forEach(d=>{let e=d.options.name+"@row"+this.rowIdData[n],p=this.getWidgetRef(e);p&&p.setDisabled(!1)})},disableSubForm(){this.rowIdData.length>0&&this.rowIdData.forEach((n,d)=>{this.disableSubFormRow(d)}),this.actionDisabled=!0},enableSubForm(){this.rowIdData.length>0&&this.rowIdData.forEach((n,d)=>{this.enableSubFormRow(d)}),this.actionDisabled=!1},resetSubForm(){if(this.widget.type==="sub-form"){let n=this.formModel[this.widget.options.name];n&&(n.splice(0,n.length),this.rowIdData.splice(0,this.rowIdData.length)),this.widget.options.showBlankRow&&this.addSubFormRow()}},getSubFormValues(n=!0){if(this.widget.type==="sub-form")return this.formModel[this.widget.options.name];this.$message.error(this.i18nt("render.hint.nonSubFormType"))},addCssClass(n){this.widget.options.customClass?this.widget.options.customClass.push(n):this.widget.options.customClass=[n]},removeCssClass(n){if(!this.widget.options.customClass)return;let d=-1;this.widget.options.customClass.map((e,p)=>{e===n&&(d=p)}),d>-1&&this.widget.options.customClass.splice(d,1)}}};const _sfc_main$2H={name:"vf-grid-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:{ContainerItemWrapper,GridColItem},props:{widget:Object},inject:["refList","sfRefList","globalModel"],created(){this.initRefList()},mounted(){},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2H(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("grid-col-item"),c=require$$0$1.resolveComponent("el-row"),i=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createBlock(c,{key:e.widget.id,gutter:e.widget.options.gutter,class:require$$0$1.normalizeClass(["grid-container",[n.customClass]]),ref:e.widget.id},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.cols,(u,r)=>(require$$0$1.openBlock(),require$$0$1.createBlock(a,{key:r,widget:u,"parent-list":e.widget.cols,"index-of-parent-list":r,"parent-widget":e.widget,"col-height":e.widget.options.colHeight},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),t=>({name:t,fn:require$$0$1.withCtx(l=>[require$$0$1.renderSlot(n.$slots,t,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(l)))])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget","col-height"]))),128))]),_:3},8,["gutter","class"])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:3},8,["widget"])}var gridItem=_export_sfc$1(_sfc_main$2H,[["render",_sfc_render$2H]]),__glob_0_2$2=Object.freeze(Object.defineProperty({__proto__:null,default:gridItem},Symbol.toStringTag,{value:"Module"})),subFormItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2G={name:"sub-form-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:ke(xe({ContainerItemWrapper},comps$1),{SvgIcon}),props:{widget:Object},inject:["refList","sfRefList","globalModel"],data(){return{rowIdData:[],fieldSchemaData:[],actionDisabled:!1}},created(){this.initRefList(),this.registerSubFormToRefList(),this.initRowIdData(!0),this.initFieldSchemaData(),this.initEventHandler()},mounted(){this.handleSubFormFirstRowAdd()},beforeUnmount(){this.unregisterFromRefList()},methods:{getLabelAlign(n,d){return d.options.labelAlign||n.options.labelAlign},registerSubFormToRefList(){this.widget.type==="sub-form"&&(this.sfRefList[this.widget.options.name]=this)},initRowIdData(n){if(this.widget.type==="sub-form"){this.rowIdData.splice(0,this.rowIdData.length);let d=this.formModel[this.widget.options.name];!!d&&d.length>0&&(d.forEach(()=>{this.rowIdData.push("id"+generateId())}),n&&setTimeout(()=>{this.handleSubFormRowChange(d)},800))}},addToRowIdData(){this.rowIdData.push("id"+generateId())},insertToRowIdData(n){this.rowIdData.splice(n,0,"id"+generateId())},deleteFromRowIdData(n){this.rowIdData.splice(n,1)},getRowIdData(){return this.rowIdData},getWidgetRefOfSubForm(n,d){let e=n+"@row"+this.rowIdData[d];return this.getWidgetRef(e)},initFieldSchemaData(){if(this.widget.type!=="sub-form")return;let n=this.rowIdData.length;if(this.fieldSchemaData.splice(0,this.fieldSchemaData.length),n>0)for(let d=0;d{e.push(this.cloneFieldSchema(p))}),this.fieldSchemaData.push(e)}},addToFieldSchemaData(n){let d=[];this.widget.widgetList.forEach(e=>{d.push(this.cloneFieldSchema(e))}),n===void 0?this.fieldSchemaData.push(d):this.fieldSchemaData.splice(n,0,d)},deleteFromFieldSchemaData(n){this.fieldSchemaData.splice(n,1)},cloneFieldSchema(n){let d=deepClone(n);return d.id=n.type+generateId(),d},initEventHandler(){this.widget.type==="sub-form"&&this.on$("setFormData",n=>{this.initRowIdData(!1),this.initFieldSchemaData();let d=n[this.widget.options.name]||[];setTimeout(()=>{this.handleSubFormRowChange(d)},800)})},handleSubFormFirstRowAdd(){if(this.widget.type==="sub-form"&&!!this.widget.options.showBlankRow&&this.rowIdData.length===1){let n=this.formModel[this.widget.options.name]||[];this.handleSubFormRowAdd(n,this.rowIdData[0]),this.handleSubFormRowChange(n)}},addSubFormRow(){let n={};this.widget.widgetList.forEach(e=>{e.formItemFlag&&(n[e.options.name]=e.options.defaultValue)});let d=this.formModel[this.widget.options.name]||[];d.push(n),this.addToRowIdData(),this.addToFieldSchemaData(),this.handleSubFormRowAdd(d,this.rowIdData[d.length-1]),this.handleSubFormRowChange(d)},insertSubFormRow(n){let d={};this.widget.widgetList.forEach(p=>{p.formItemFlag&&(d[p.options.name]=p.options.defaultValue)});let e=this.formModel[this.widget.options.name]||[];e.splice(n,0,d),this.insertToRowIdData(n),this.addToFieldSchemaData(n),this.handleSubFormRowInsert(e,this.rowIdData[n]),this.handleSubFormRowChange(e)},deleteSubFormRow(n){this.$confirm(this.i18nt("render.hint.deleteSubFormRow")+"?",this.i18nt("render.hint.prompt"),{confirmButtonText:this.i18nt("render.hint.confirm"),cancelButtonText:this.i18nt("render.hint.cancel")}).then(()=>{let d=this.formModel[this.widget.options.name]||[],e=deepClone(d[n]);d.splice(n,1),this.deleteFromRowIdData(n),this.deleteFromFieldSchemaData(n),this.handleSubFormRowDelete(d,e),this.handleSubFormRowChange(d)}).catch(()=>{})},handleSubFormRowChange(n){this.widget.options.onSubFormRowChange&&new Function("subFormData",this.widget.options.onSubFormRowChange).call(this,n)},handleSubFormRowAdd(n,d){this.widget.options.onSubFormRowAdd&&new Function("subFormData","newRowId",this.widget.options.onSubFormRowAdd).call(this,n,d)},handleSubFormRowInsert(n,d){this.widget.options.onSubFormRowInsert&&new Function("subFormData","newRowId",this.widget.options.onSubFormRowInsert).call(this,n,d)},handleSubFormRowDelete(n,d){this.widget.options.onSubFormRowDelete&&new Function("subFormData","deletedDataRow",this.widget.options.onSubFormRowDelete).call(this,n,d)}}},_hoisted_1$u={class:"action-header-column"},_hoisted_2$l={class:"action-label"},_hoisted_3$h={key:0,class:"custom-label"},_hoisted_4$a=["title"],_hoisted_5$8={class:"sub-form-action-column hide-label"},_hoisted_6$7={class:"action-button-column"},_hoisted_7$4={key:0,class:"row-number-span"};function _sfc_render$2G(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-button"),i=require$$0$1.resolveComponent("el-tooltip"),u=require$$0$1.resolveComponent("el-row"),r=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(r,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:e.widget.id,class:"sub-form-container"},[require$$0$1.createVNode(u,{class:"header-row"},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$u,[require$$0$1.createElementVNode("span",_hoisted_2$l,require$$0$1.toDisplayString(n.i18nt("render.hint.subFormAction")),1),require$$0$1.createVNode(c,{disabled:m.actionDisabled,round:"",type:"primary",size:"small",class:"action-button",onClick:g.addSubFormRow,title:n.i18nt("render.hint.subFormAddActionHint")},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.i18nt("render.hint.subFormAddAction")),1),require$$0$1.createVNode(a,{"icon-class":"el-plus"})]),_:1},8,["disabled","onClick","title"])]),(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.widgetList,t=>(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:t.id+"thc",class:require$$0$1.normalizeClass(["field-header-column",[g.getLabelAlign(e.widget,t),t.options.required?"is-required":""]]),style:require$$0$1.normalizeStyle({width:t.options.columnWidth})},[t.options.labelIconClass?(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",_hoisted_3$h,[t.options.labelIconPosition==="front"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[t.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createVNode(i,{content:t.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":t.options.labelIconClass},null,8,["icon-class"])]),_:2},1032,["content"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(t.options.label),1)],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createVNode(a,{"icon-class":t.options.labelIconClass},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(t.options.label),1)],64))],64)):t.options.labelIconPosition==="rear"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[t.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(t.options.label),1),require$$0$1.createVNode(i,{content:t.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":t.options.labelIconClass},null,8,["icon-class"])]),_:2},1032,["content"])],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(t.options.label),1),require$$0$1.createVNode(a,{"icon-class":t.options.labelIconClass},null,8,["icon-class"])],64))],64)):require$$0$1.createCommentVNode("",!0)])):(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",{key:1,title:t.options.labelTooltip},require$$0$1.toDisplayString(t.options.label),9,_hoisted_4$a))],6))),128))]),_:1}),(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(m.rowIdData,(t,l)=>(require$$0$1.openBlock(),require$$0$1.createBlock(u,{class:"sub-form-row",key:t},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_5$8,[require$$0$1.createElementVNode("div",_hoisted_6$7,[require$$0$1.createVNode(c,{disabled:m.actionDisabled,circle:"",onClick:o=>g.insertSubFormRow(l),title:n.i18nt("render.hint.insertSubFormRow")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":"el-plus"})]),_:2},1032,["disabled","onClick","title"]),require$$0$1.createVNode(c,{disabled:m.actionDisabled,circle:"",onClick:o=>g.deleteSubFormRow(l),title:n.i18nt("render.hint.deleteSubFormRow")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(a,{"icon-class":"el-delete"})]),_:2},1032,["disabled","onClick","title"]),e.widget.options.showRowNumber?(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",_hoisted_7$4,"#"+require$$0$1.toDisplayString(l+1),1)):require$$0$1.createCommentVNode("",!0)])]),(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.widgetList,(o,s)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:o.id+"tc"+t,class:"sub-form-table-column hide-label",style:require$$0$1.normalizeStyle({width:o.options.columnWidth})},[(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(o.type+"-widget"),{field:m.fieldSchemaData[l][s],key:m.fieldSchemaData[l][s].id,"parent-list":e.widget.widgetList,"index-of-parent-list":s,"parent-widget":e.widget,"sub-form-row-id":t,"sub-form-row-index":l,"sub-form-col-index":s},null,8,["field","parent-list","index-of-parent-list","parent-widget","sub-form-row-id","sub-form-row-index","sub-form-col-index"]))],4))),128))]),_:2},1024))),128))])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:1},8,["widget"])}var subFormItem=_export_sfc$1(_sfc_main$2G,[["render",_sfc_render$2G],["__scopeId","data-v-806f6ffe"]]),__glob_0_3$2=Object.freeze(Object.defineProperty({__proto__:null,default:subFormItem},Symbol.toStringTag,{value:"Module"}));const _sfc_main$2F={name:"tab-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:xe({ContainerItemWrapper},comps$1),props:{widget:Object},inject:["refList","sfRefList","globalModel"],data(){return{activeTabName:""}},computed:{visibleTabs(){return this.widget.tabs.filter(n=>!n.options.hidden)}},created(){this.initRefList()},mounted(){this.initActiveTab()},beforeUnmount(){this.unregisterFromRefList()},methods:{initActiveTab(){if(this.widget.type==="tab"&&this.widget.tabs.length>0){let n=this.widget.tabs.filter(d=>d.options.active===!0);n.length>0?this.activeTabName=n[0].options.name:this.activeTabName=this.widget.tabs[0].options.name}}}};function _sfc_render$2F(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-tab-pane"),c=require$$0$1.resolveComponent("el-tabs"),i=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:e.widget.id,class:"tab-container"},[require$$0$1.createVNode(c,{modelValue:m.activeTabName,"onUpdate:modelValue":d[0]||(d[0]=u=>m.activeTabName=u),type:e.widget.displayType,ref:e.widget.id,class:require$$0$1.normalizeClass([n.customClass])},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(g.visibleTabs,(u,r)=>(require$$0$1.openBlock(),require$$0$1.createBlock(a,{key:r,label:u.options.label,disabled:u.options.disabled,name:u.options.name},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(u.widgetList,(t,l)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[t.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(n.getComponentByContainer(t)),{widget:t,key:l,"parent-list":u.widgetList,"index-of-parent-list":l,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),o=>({name:o,fn:require$$0$1.withCtx(s=>[require$$0$1.renderSlot(n.$slots,o,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(s)))])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(t.type+"-widget"),{field:t,key:l,"parent-list":u.widgetList,"index-of-parent-list":l,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),o=>({name:o,fn:require$$0$1.withCtx(s=>[require$$0$1.renderSlot(n.$slots,o,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(s)))])}))]),1032,["field","parent-list","index-of-parent-list","parent-widget"]))],64))),256))]),_:2},1032,["label","disabled","name"]))),128))]),_:3},8,["modelValue","type","class"])])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:3},8,["widget"])}var tabItem=_export_sfc$1(_sfc_main$2F,[["render",_sfc_render$2F]]),__glob_0_4$2=Object.freeze(Object.defineProperty({__proto__:null,default:tabItem},Symbol.toStringTag,{value:"Module"})),tableCellItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2E={name:"TableCellItem",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin],components:xe({},comps$1),props:{widget:Object,rowIndex:Number,colIndex:Number},inject:["refList","globalModel"],computed:{customClass(){return this.widget.options.customClass||""}},created(){},methods:{}},_hoisted_1$t=["colspan","rowspan"];function _sfc_render$2E(n,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("td",{class:require$$0$1.normalizeClass(["table-cell",[g.customClass]]),colspan:e.widget.options.colspan||1,rowspan:e.widget.options.rowspan||1,style:require$$0$1.normalizeStyle({width:e.widget.options.cellWidth+" !important"||"",height:e.widget.options.cellHeight+" !important"||"","word-break":e.widget.options.wordBreak?"break-all":"normal"})},[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.widgetList,(a,c)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[a.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(n.getComponentByContainer(a)),{widget:a,key:c,"parent-list":e.widget.widgetList,"index-of-parent-list":c,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),i=>({name:i,fn:require$$0$1.withCtx(u=>[require$$0$1.renderSlot(n.$slots,i,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(u)),void 0,!0)])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(a.type+"-widget"),{field:a,key:c,"parent-list":e.widget.widgetList,"index-of-parent-list":c,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),i=>({name:i,fn:require$$0$1.withCtx(u=>[require$$0$1.renderSlot(n.$slots,i,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(u)),void 0,!0)])}))]),1032,["field","parent-list","index-of-parent-list","parent-widget"]))],64))),256))],14,_hoisted_1$t)}var TableCellItem=_export_sfc$1(_sfc_main$2E,[["render",_sfc_render$2E],["__scopeId","data-v-df1ad646"]]),__glob_0_5$2=Object.freeze(Object.defineProperty({__proto__:null,default:TableCellItem},Symbol.toStringTag,{value:"Module"})),tableItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2D={name:"table-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:{ContainerItemWrapper,TableCellItem},props:{widget:Object},inject:["refList","sfRefList","globalModel"],created(){this.initRefList()},mounted(){},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2D(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("table-cell-item"),c=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:e.widget.id,class:"table-container"},[require$$0$1.createElementVNode("table",{ref:e.widget.id,class:require$$0$1.normalizeClass(["table-layout",[n.customClass]])},[require$$0$1.createElementVNode("tbody",null,[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.rows,(i,u)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock("tr",{key:i.id},[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(i.cols,(r,t)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[r.merged?require$$0$1.createCommentVNode("",!0):(require$$0$1.openBlock(),require$$0$1.createBlock(a,{widget:r,key:t,"parent-list":e.widget.cols,"row-index":u,"col-index":t,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),l=>({name:l,fn:require$$0$1.withCtx(o=>[require$$0$1.renderSlot(n.$slots,l,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(o)),void 0,!0)])}))]),1032,["widget","parent-list","row-index","col-index","parent-widget"]))],64))),256))]))),128))])],2)])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:3},8,["widget"])}var tableItem=_export_sfc$1(_sfc_main$2D,[["render",_sfc_render$2D],["__scopeId","data-v-6cba7003"]]),__glob_0_6$1=Object.freeze(Object.defineProperty({__proto__:null,default:tableItem},Symbol.toStringTag,{value:"Module"}));const modules$2={"./container-item-wrapper.vue":__glob_0_0$3,"./grid-col-item.vue":__glob_0_1$2,"./grid-item.vue":__glob_0_2$2,"./sub-form-item.vue":__glob_0_3$2,"./tab-item.vue":__glob_0_4$2,"./table-cell-item.vue":__glob_0_5$2,"./table-item.vue":__glob_0_6$1};var ContainerItems={install(n){for(const d in modules$2){let e=modules$2[d].default.name;n.component(e,modules$2[d].default)}}},index_vue_vue_type_style_index_0_scoped_true_lang$5="";const _sfc_main$2C={name:"VFormRender",componentName:"VFormRender",mixins:[emitter,i18n$1],components:xe({},comps$1),props:{formJson:{type:Object,default:()=>buildDefaultFormJson()},formData:{type:Object,default:()=>({})},optionData:{type:Object,default:()=>({})},previewState:{type:Boolean,default:!1},globalDsv:{type:Object,default:()=>({})}},provide(){return{refList:this.widgetRefList,sfRefList:this.subFormRefList,getFormConfig:()=>this.formJsonObj.formConfig,getGlobalDsv:()=>this.globalDsv,globalOptionData:this.optionData,getOptionData:()=>this.optionData,globalModel:{formModel:this.formDataModel},previewState:this.previewState}},data(){return{formJsonObj:this.formJson,formDataModel:{},widgetRefList:{},subFormRefList:{},formId:null,externalComponents:{}}},computed:{formConfig(){return this.formJsonObj.formConfig},widgetList(){return this.formJsonObj.widgetList},labelPosition(){return!!this.formConfig&&!!this.formConfig.labelPosition?this.formConfig.labelPosition:"left"},labelWidth(){return!!this.formConfig&&!!this.formConfig.labelWidth?this.formConfig.labelWidth+"px":"80px"},size(){return!!this.formConfig&&!!this.formConfig.size?this.formConfig.size:"default"},customClass(){return!!this.formConfig&&!!this.formConfig.customClass?this.formConfig.customClass:""}},watch:{},created(){this.buildFormModel(this.formJsonObj?this.formJsonObj.widgetList:null),this.initFormObject()},mounted(){this.initLocale(),this.handleOnMounted()},methods:{initFormObject(n=!0){this.formId="vfRender"+generateId(),n&&this.insertCustomStyleAndScriptNode(),this.addFieldChangeEventHandler(),this.addFieldValidateEventHandler(),this.registerFormToRefList(),this.handleOnCreated()},getContainerWidgetName(n){return n.type==="grid"?"vf-grid-item":n.type+"-item"},getWidgetName(n){return n.type+"-widget"},initLocale(){let n=localStorage.getItem("v_form_locale")||"zh-CN";this.changeLanguage(n)},insertCustomStyleAndScriptNode(){!!this.formConfig&&!!this.formConfig.cssCode&&insertCustomCssToHead(this.formConfig.cssCode,this.previewState?"":this.formId),!!this.formConfig&&!!this.formConfig.functions&&insertGlobalFunctionsToHtml(this.formConfig.functions,this.previewState?"":this.formId)},buildFormModel(n){!!n&&n.length>0&&n.forEach(d=>{this.buildDataFromWidget(d)})},buildDataFromWidget(n){if(n.category==="container")if(n.type==="grid")!!n.cols&&n.cols.length>0&&n.cols.forEach(d=>{this.buildDataFromWidget(d)});else if(n.type==="table")!!n.rows&&n.rows.length>0&&n.rows.forEach(d=>{!!d.cols&&d.cols.length>0&&d.cols.forEach(e=>{this.buildDataFromWidget(e)})});else if(n.type==="tab")!!n.tabs&&n.tabs.length>0&&n.tabs.forEach(d=>{!!d.widgetList&&d.widgetList.length>0&&d.widgetList.forEach(e=>{this.buildDataFromWidget(e)})});else if(n.type==="sub-form"){let d=n.options.name;if(this.formData.hasOwnProperty(d)){let e=this.formData[d];this.formDataModel[d]=deepClone(e)}else{let e={};n.options.showBlankRow?(n.widgetList.forEach(p=>{p.formItemFlag&&(e[p.options.name]=p.options.defaultValue)}),this.formDataModel[d]=[e]):this.formDataModel[d]=[]}}else n.type==="grid-col"||n.type==="table-cell"?!!n.widgetList&&n.widgetList.length>0&&n.widgetList.forEach(d=>{this.buildDataFromWidget(d)}):!!n.widgetList&&n.widgetList.length>0&&n.widgetList.forEach(d=>{this.buildDataFromWidget(d)});else if(n.formItemFlag)if(!this.formData.hasOwnProperty(n.options.name))this.formDataModel[n.options.name]=n.options.defaultValue;else{let d=this.formData[n.options.name];this.formDataModel[n.options.name]=deepClone(d)}},addFieldChangeEventHandler(){this.off$("fieldChange"),this.on$("fieldChange",(n,d,e,p,m)=>{this.handleFieldDataChange(n,d,e,p,m),this.$emit("formChange",n,d,e,this.formDataModel,p,m)})},addFieldValidateEventHandler(){this.off$("fieldValidation"),this.on$("fieldValidation",n=>{this.$refs.renderForm.validateField(n)})},registerFormToRefList(){this.widgetRefList.v_form_ref=this},handleFieldDataChange(n,d,e,p,m){!!this.formConfig&&!!this.formConfig.onFormDataChange&&new Function("fieldName","newValue","oldValue","formModel","subFormName","subFormRowIndex",this.formConfig.onFormDataChange).call(this,n,d,e,this.formDataModel,p,m)},handleOnCreated(){!!this.formConfig&&!!this.formConfig.onFormCreated&&new Function(this.formConfig.onFormCreated).call(this)},handleOnMounted(){!!this.formConfig&&!!this.formConfig.onFormMounted&&new Function(this.formConfig.onFormMounted).call(this)},findWidgetAndSetDisabled(n,d){let e=this.getWidgetRef(n);e?e.setDisabled(d):this.findWidgetOfSubFormAndSetDisabled(n,d)},findWidgetOfSubFormAndSetDisabled(n,d){this.findWidgetNameInSubForm(n).forEach(e=>{let p=this.getWidgetRef(e);p&&p.setDisabled(d)})},findWidgetAndSetHidden(n,d){let e=this.getWidgetRef(n);e?e.setHidden(d):this.findWidgetOfSubFormAndSetHidden(n,d)},findWidgetOfSubFormAndSetHidden(n,d){this.findWidgetNameInSubForm(n).forEach(e=>{let p=this.getWidgetRef(e);p&&p.setHidden(d)})},findWidgetNameInSubForm(n){let d=[],e=null,p=(m,g)=>{!!m.options&&m.options.name===n&&(e=g.options.name)};if(traverseFieldWidgets(this.widgetList,p),e){let m=this.getWidgetRef(e);if(m){let g=m.getRowIdData();!!g&&g.length>0&&g.forEach(a=>{d.push(n+"@row"+a)})}}return d},changeLanguage(n){changeLocale(n)},getNativeForm(){return this.$refs.renderForm},getFormRef(){return this},getWidgetRef(n,d=!1){let e=this.widgetRefList[n];return!e&&!!d&&this.$message.error(this.i18nt("render.hint.refNotFound")+n),e},clearFormDataModel(){for(let n in this.formDataModel)delete this.formDataModel[n]},setFormJson(n){if(n)if(typeof n=="string"||n.constructor===Object){let d=null;if(typeof n=="string"?d=JSON.parse(n):d=n,!d.formConfig||!d.widgetList){this.$message.error("Invalid format of form json.");return}this.clearFormDataModel(),this.buildFormModel(d.widgetList),this.formJsonObj.formConfig=d.formConfig,this.formJsonObj.widgetList=d.widgetList,this.insertCustomStyleAndScriptNode(),this.$nextTick(()=>{this.initFormObject(!1),this.handleOnMounted()})}else this.$message.error("Set form json failed.")},reloadOptionData(n){let d=[];!!n&&typeof n=="string"?d=[n]:!!n&&Array.isArray(n)&&(d=[...n]),this.broadcast("FieldWidget","reloadOptionItems",d)},getFormData(n=!0){if(!n)return this.formDataModel;let d=function(){},e=new window.Promise(function(p,m){d=function(g,a){a?m(a):p(g)}});return this.$refs.renderForm.validate(p=>{p?d(this.formDataModel):d(this.formDataModel,this.i18nt("render.hint.validationFailed"))}),e},setFormData(n){Object.keys(this.formDataModel).forEach(d=>{!!n&&n.hasOwnProperty(d)&&(this.formDataModel[d]=deepClone(n[d]))}),this.broadcast("ContainerItem","setFormData",this.formDataModel),this.broadcast("FieldWidget","setFormData",this.formDataModel)},getFieldValue(n){let d=this.getWidgetRef(n);if(!!d&&!!d.getValue)return d.getValue();if(!d){let e=[];return this.findWidgetNameInSubForm(n).forEach(p=>{let m=this.getWidgetRef(p);!!m&&!!m.getValue&&e.push(m.getValue())}),e}},setFieldValue(n,d){let e=this.getWidgetRef(n);!!e&&!!e.setValue&&e.setValue(d),e||this.findWidgetNameInSubForm(n).forEach(p=>{let m=this.getWidgetRef(p);!!m&&!!m.setValue&&m.setValue(d)})},getSubFormValues(n,d=!0){return this.subFormRefList[n].getSubFormValues(d)},disableForm(){Object.keys(this.widgetRefList).forEach(d=>{let e=this.getWidgetRef(d);if(e)if(!!e.widget&&e.widget.type==="sub-form")e.disableSubForm();else{//!!foundW.setDisabled && foundW.setDisabled(true) -e.setDisabled&&e.setDisabled(!0)}})},enableForm(){Object.keys(this.widgetRefList).forEach(d=>{let e=this.getWidgetRef(d);if(e)if(!!e.widget&&e.widget.type==="sub-form")e.enableSubForm();else{//!!foundW.setDisabled && foundW.setDisabled(false) -e.setDisabled&&e.setDisabled(!1)}})},resetForm(){Object.keys(this.subFormRefList).forEach(e=>{this.subFormRefList[e].resetSubForm&&this.subFormRefList[e].resetSubForm()}),Object.keys(this.widgetRefList).forEach(e=>{let p=this.getWidgetRef(e);!!p&&!p.subFormItemFlag&&!!p.resetField&&p.resetField()}),this.$nextTick(()=>{this.clearValidate()})},clearValidate(n){this.$refs.renderForm.clearValidate(n)},validateForm(n){this.$refs.renderForm.validate(d=>{n(d)})},validateFields(){},disableWidgets(n){n&&(typeof n=="string"?this.findWidgetAndSetDisabled(n,!0):Array.isArray(n)&&n.forEach(d=>{this.findWidgetAndSetDisabled(d,!0)}))},enableWidgets(n){n&&(typeof n=="string"?this.findWidgetAndSetDisabled(n,!1):Array.isArray(n)&&n.forEach(d=>{this.findWidgetAndSetDisabled(d,!1)}))},hideWidgets(n){n&&(typeof n=="string"?this.findWidgetAndSetHidden(n,!0):Array.isArray(n)&&n.forEach(d=>{this.findWidgetAndSetHidden(d,!0)}))},showWidgets(n){n&&(typeof n=="string"?this.findWidgetAndSetHidden(n,!1):Array.isArray(n)&&n.forEach(d=>{this.findWidgetAndSetHidden(d,!1)}))},getFieldWidgets(){return getAllFieldWidgets(this.formJsonObj.widgetList)},getContainerWidgets(){return getAllContainerWidgets(this.formJsonObj.widgetList)},addEC(n,d){this.externalComponents[n]=d},hasEC(n){return this.externalComponents.hasOwnProperty(n)},getEC(n){return this.externalComponents[n]},getGlobalDsv(){return this.globalDsv}}};function _sfc_render$2C(n,d,e,p,m,g){const a=require$$0$1.resolveComponent("el-form");return require$$0$1.openBlock(),require$$0$1.createBlock(a,{"label-position":g.labelPosition,size:g.size,class:require$$0$1.normalizeClass([[g.customClass],"render-form"]),"label-width":g.labelWidth,"validate-on-rule-change":!1,model:m.formDataModel,ref:"renderForm",onSubmit:d[0]||(d[0]=require$$0$1.withModifiers(()=>{},["prevent"]))},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(g.widgetList,(c,i)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[c.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(g.getContainerWidgetName(c)),{widget:c,key:c.id,"parent-list":g.widgetList,"index-of-parent-list":i,"parent-widget":null},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),u=>({name:u,fn:require$$0$1.withCtx(r=>[require$$0$1.renderSlot(n.$slots,u,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(r)),void 0,!0)])}))]),1032,["widget","parent-list","index-of-parent-list"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(g.getWidgetName(c)),{field:c,"form-model":m.formDataModel,designer:null,key:c.id,"parent-list":g.widgetList,"index-of-parent-list":i,"parent-widget":null},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(n.$slots),u=>({name:u,fn:require$$0$1.withCtx(r=>[require$$0$1.renderSlot(n.$slots,u,require$$0$1.normalizeProps(require$$0$1.guardReactiveProps(r)),void 0,!0)])}))]),1032,["field","form-model","parent-list","index-of-parent-list"]))],64))),256))]),_:3},8,["label-position","size","class","label-width","model"])}var VFormRender=_export_sfc$1(_sfc_main$2C,[["render",_sfc_render$2C],["__scopeId","data-v-5ad82756"]]),ace$2={exports:{}};(function(n,d){(function(){var e="ace",p=function(){return this}();!p&&typeof window!="undefined"&&(p=window);var m=function(r,t,l){if(typeof r!="string"){m.original?m.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(l=t),m.modules[r]||(m.payloads[r]=l,m.modules[r]=null)};m.modules={},m.payloads={};var g=function(r,t,l){if(typeof t=="string"){var o=i(r,t);if(o!=null)return l&&l(),o}else if(Object.prototype.toString.call(t)==="[object Array]"){for(var s=[],f=0,h=t.length;fi.length)&&(c=i.length),c-=a.length;var u=i.indexOf(a,c);return u!==-1&&u===c}),String.prototype.repeat||g(String.prototype,"repeat",function(a){for(var c="",i=this;a>0;)a&1&&(c+=i),(a>>=1)&&(i+=i);return c}),String.prototype.includes||g(String.prototype,"includes",function(a,c){return this.indexOf(a,c)!=-1}),Object.assign||(Object.assign=function(a){if(a==null)throw new TypeError("Cannot convert undefined or null to object");for(var c=Object(a),i=1;i>>0,u=arguments[1],r=u>>0,t=r<0?Math.max(i+r,0):Math.min(r,i),l=arguments[2],o=l===void 0?i:l>>0,s=o<0?Math.max(i+o,0):Math.min(o,i);t0;)i&1&&(u+=c),(i>>=1)&&(c+=c);return u};var g=/^\s\s*/,a=/\s\s*$/;p.stringTrimLeft=function(c){return c.replace(g,"")},p.stringTrimRight=function(c){return c.replace(a,"")},p.copyObject=function(c){var i={};for(var u in c)i[u]=c[u];return i},p.copyArray=function(c){for(var i=[],u=0,r=c.length;u=0?parseFloat((c.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((c.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),p.isOldIE=p.isIE&&p.isIE<9,p.isGecko=p.isMozilla=c.match(/ Gecko\/\d+/),p.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",p.isWebKit=parseFloat(c.split("WebKit/")[1])||void 0,p.isChrome=parseFloat(c.split(" Chrome/")[1])||void 0,p.isEdge=parseFloat(c.split(" Edge/")[1])||void 0,p.isAIR=c.indexOf("AdobeAIR")>=0,p.isAndroid=c.indexOf("Android")>=0,p.isChromeOS=c.indexOf(" CrOS ")>=0,p.isIOS=/iPad|iPhone|iPod/.test(c)&&!window.MSStream,p.isIOS&&(p.isMac=!0),p.isMobile=p.isIOS||p.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,p,m){var g=e("./useragent"),a="http://www.w3.org/1999/xhtml";p.buildDom=function l(o,s,f){if(typeof o=="string"&&o){var h=document.createTextNode(o);return s&&s.appendChild(h),h}if(!Array.isArray(o))return o&&o.appendChild&&s&&s.appendChild(o),o;if(typeof o[0]!="string"||!o[0]){for(var v=[],$=0;$=1.5:!0,g.isChromeOS&&(p.HI_DPI=!1),typeof document!="undefined"){var t=document.createElement("div");p.HI_DPI&&t.style.transform!==void 0&&(p.HAS_CSS_TRANSFORMS=!0),!g.isEdge&&typeof t.style.animationName!="undefined"&&(p.HAS_CSS_ANIMATION=!0),t=null}p.HAS_CSS_TRANSFORMS?p.translate=function(l,o,s){l.style.transform="translate("+Math.round(o)+"px, "+Math.round(s)+"px)"}:p.translate=function(l,o,s){l.style.top=Math.round(s)+"px",l.style.left=Math.round(o)+"px"}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,p,m){/* -* based on code from: -* -* @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. -* Available via the MIT or new BSD license. -* see: http://github.com/jrburke/requirejs for details -*/var g=e("./dom");p.get=function(a,c){var i=new XMLHttpRequest;i.open("GET",a,!0),i.onreadystatechange=function(){i.readyState===4&&c(i.responseText)},i.send(null)},p.loadScript=function(a,c){var i=g.getDocumentHead(),u=document.createElement("script");u.src=a,i.appendChild(u),u.onload=u.onreadystatechange=function(r,t){(t||!u.readyState||u.readyState=="loaded"||u.readyState=="complete")&&(u=u.onload=u.onreadystatechange=null,t||c())}},p.qualifyURL=function(a){var c=document.createElement("a");return c.href=a,c.href}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,p,m){p.inherits=function(g,a){g.super_=a,g.prototype=Object.create(a.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}})},p.mixin=function(g,a){for(var c in a)g[c]=a[c];return g},p.implement=function(g,a){p.mixin(g,a)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,p,m){var g={},a=function(){this.propagationStopped=!0},c=function(){this.defaultPrevented=!0};g._emit=g._dispatchEvent=function(i,u){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var r=this._eventRegistry[i]||[],t=this._defaultHandlers[i];if(!(!r.length&&!t)){(typeof u!="object"||!u)&&(u={}),u.type||(u.type=i),u.stopPropagation||(u.stopPropagation=a),u.preventDefault||(u.preventDefault=c),r=r.slice();for(var l=0;l1&&(h=s[s.length-2]);var $=u[o+"Path"];return $==null?$=u.basePath:f=="/"&&(o=f=""),$&&$.slice(-1)!="/"&&($+="/"),$+o+f+h+this.get("suffix")},p.setModuleUrl=function(l,o){return u.$moduleUrls[l]=o};var r=function(l,o){return l==="ace/theme/textmate"||l==="./theme/textmate"?o(null,e("./theme/textmate")):console.error("loader is not configured")};p.setLoader=function(l){r=l},p.dynamicModules=Object.create(null),p.$loading={},p.loadModule=function(l,o){var s,f;Array.isArray(l)&&(f=l[0],l=l[1]);var h=function(v){if(v&&!p.$loading[l])return o&&o(v);if(p.$loading[l]||(p.$loading[l]=[]),p.$loading[l].push(o),!(p.$loading[l].length>1)){var $=function(){r(l,function(C,b){p._emit("load.module",{name:l,module:b});var y=p.$loading[l];p.$loading[l]=null,y.forEach(function(_){_&&_(b)})})};if(!p.get("packaged"))return $();a.loadScript(p.moduleUrl(l,f),$),t()}};if(p.dynamicModules[l])p.dynamicModules[l]().then(function(v){v.default?h(v.default):h(v)});else{try{s=e(l)}catch{}h(s)}},p.setModuleLoader=function(l,o){p.dynamicModules[l]=o};var t=function(){!u.basePath&&!u.workerPath&&!u.modePath&&!u.themePath&&!Object.keys(u.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),t=function(){})};p.version="1.22.0"}),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],function(e,p,m){e("./lib/fixoldbrowsers");var g=e("./config");g.setLoader(function(u,r){e([u],function(t){r(null,t)})});var a=function(){return this||typeof window!="undefined"&&window}();m.exports=function(u){g.init=c,u.require=e},c(!0);function c(u){if(!(!a||!a.document)){g.set("packaged",u||e.packaged||m.packaged||a.define&&(void 0).packaged);var r={},t="",l=document.currentScript||document._currentScript,o=l&&l.ownerDocument||document;l&&l.src&&(t=l.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var s=o.getElementsByTagName("script"),f=0;f ["+this.end.row+"/"+this.end.column+"]"},c.prototype.contains=function(i,u){return this.compare(i,u)==0},c.prototype.compareRange=function(i){var u,r=i.end,t=i.start;return u=this.compare(r.row,r.column),u==1?(u=this.compare(t.row,t.column),u==1?2:u==0?1:0):u==-1?-2:(u=this.compare(t.row,t.column),u==-1?-1:u==1?42:0)},c.prototype.comparePoint=function(i){return this.compare(i.row,i.column)},c.prototype.containsRange=function(i){return this.comparePoint(i.start)==0&&this.comparePoint(i.end)==0},c.prototype.intersects=function(i){var u=this.compareRange(i);return u==-1||u==0||u==1},c.prototype.isEnd=function(i,u){return this.end.row==i&&this.end.column==u},c.prototype.isStart=function(i,u){return this.start.row==i&&this.start.column==u},c.prototype.setStart=function(i,u){typeof i=="object"?(this.start.column=i.column,this.start.row=i.row):(this.start.row=i,this.start.column=u)},c.prototype.setEnd=function(i,u){typeof i=="object"?(this.end.column=i.column,this.end.row=i.row):(this.end.row=i,this.end.column=u)},c.prototype.inside=function(i,u){return this.compare(i,u)==0?!(this.isEnd(i,u)||this.isStart(i,u)):!1},c.prototype.insideStart=function(i,u){return this.compare(i,u)==0?!this.isEnd(i,u):!1},c.prototype.insideEnd=function(i,u){return this.compare(i,u)==0?!this.isStart(i,u):!1},c.prototype.compare=function(i,u){return!this.isMultiLine()&&i===this.start.row?uthis.end.column?1:0:ithis.end.row?1:this.start.row===i?u>=this.start.column?0:-1:this.end.row===i?u<=this.end.column?0:1:0},c.prototype.compareStart=function(i,u){return this.start.row==i&&this.start.column==u?-1:this.compare(i,u)},c.prototype.compareEnd=function(i,u){return this.end.row==i&&this.end.column==u?1:this.compare(i,u)},c.prototype.compareInside=function(i,u){return this.end.row==i&&this.end.column==u?1:this.start.row==i&&this.start.column==u?-1:this.compare(i,u)},c.prototype.clipRows=function(i,u){if(this.end.row>u)var r={row:u+1,column:0};else if(this.end.rowu)var t={row:u+1,column:0};else if(this.start.row1?(O++,O>4&&(O=1)):O=1,a.isIE){var q=Math.abs(S.clientX-T)>5||Math.abs(S.clientY-x)>5;(!w||q)&&(O=1),w&&clearTimeout(w),w=setTimeout(function(){w=null},b[O-1]||600),O==1&&(T=S.clientX,x=S.clientY)}if(S._clicks=O,y[_]("mousedown",S),O>4)O=0;else if(O>1)return y[_](M[O],S)}Array.isArray(C)||(C=[C]),C.forEach(function(S){o(S,"mousedown",k,E)})};var f=function(C){return 0|(C.ctrlKey?1:0)|(C.altKey?2:0)|(C.shiftKey?4:0)|(C.metaKey?8:0)};p.getModifierString=function(C){return g.KEY_MODS[f(C)]};function h(C,b,y){var _=f(b);if(!a.isMac&&c){if(b.getModifierState&&(b.getModifierState("OS")||b.getModifierState("Win"))&&(_|=8),c.altGr)if((3&_)!=3)c.altGr=0;else return;if(y===18||y===17){var E="location"in b?b.location:b.keyLocation;if(y===17&&E===1)c[y]==1&&(i=b.timeStamp);else if(y===18&&_===3&&E===2){var O=b.timeStamp-i;O<50&&(c.altGr=!0)}}}if(y in g.MODIFIER_KEYS&&(y=-1),!_&&y===13){var E="location"in b?b.location:b.keyLocation;if(E===3&&(C(b,_,-y),b.defaultPrevented))return}if(a.isChromeOS&&_&8){if(C(b,_,y),b.defaultPrevented)return;_&=~8}return!_&&!(y in g.FUNCTION_KEYS)&&!(y in g.PRINTABLE_KEYS)?!1:C(b,_,y)}p.addCommandKeyListener=function(C,b,y){if(a.isOldGecko||a.isOpera&&!("KeyboardEvent"in window)){var _=null;o(C,"keydown",function(O){_=O.keyCode},y),o(C,"keypress",function(O){return h(b,O,_)},y)}else{var E=null;o(C,"keydown",function(O){c[O.keyCode]=(c[O.keyCode]||0)+1;var T=h(b,O,O.keyCode);return E=O.defaultPrevented,T},y),o(C,"keypress",function(O){E&&(O.ctrlKey||O.altKey||O.shiftKey||O.metaKey)&&(p.stopEvent(O),E=null)},y),o(C,"keyup",function(O){c[O.keyCode]=null},y),c||(v(),o(window,"focus",v))}};function v(){c=Object.create(null)}if(typeof window=="object"&&window.postMessage&&!a.isOldIE){var $=1;p.nextTick=function(C,b){b=b||window;var y="zero-timeout-message-"+$++,_=function(E){E.data==y&&(p.stopPropagation(E),s(b,"message",_),C())};o(b,"message",_),b.postMessage(y,"*")}}p.$idleBlocked=!1,p.onIdle=function(C,b){return setTimeout(function y(){p.$idleBlocked?setTimeout(y,100):C()},b)},p.$idleBlockId=null,p.blockIdle=function(C){p.$idleBlockId&&clearTimeout(p.$idleBlockId),p.$idleBlocked=!0,p.$idleBlockId=setTimeout(function(){p.$idleBlocked=!1},C||100)},p.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),p.nextFrame?p.nextFrame=p.nextFrame.bind(window):p.nextFrame=function(C){setTimeout(C,17)}}),ace.define("ace/clipboard",["require","exports","module"],function(e,p,m){var g;m.exports={lineMode:!1,pasteCancelled:function(){return g&&g>Date.now()-50?!0:g=!1},cancel:function(){g=Date.now()}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(e,p,m){var g=e("../lib/event"),a=e("../config").nls,c=e("../lib/useragent"),i=e("../lib/dom"),u=e("../lib/lang"),r=e("../clipboard"),t=c.isChrome<18,l=c.isIE,o=c.isChrome>63,s=400,f=e("../lib/keys"),h=f.KEY_MODS,v=c.isIOS,$=v?/\s/:/\n/,C=c.isMobile,b=function(y,_){var E=i.createElement("textarea");E.className="ace_text-input",E.setAttribute("wrap","off"),E.setAttribute("autocorrect","off"),E.setAttribute("autocapitalize","off"),E.setAttribute("spellcheck",!1),E.style.opacity="0",y.insertBefore(E,y.firstChild);var O=!1,T=!1,x=!1,w=!1,M="";C||(E.style.fontSize="1px");var k=!1,S=!1,q="",L=0,A=0,D=0;try{var N=document.activeElement===E}catch{}this.setAriaOptions=function(J){J.activeDescendant?(E.setAttribute("aria-haspopup","true"),E.setAttribute("aria-autocomplete",J.inline?"both":"list"),E.setAttribute("aria-activedescendant",J.activeDescendant)):(E.setAttribute("aria-haspopup","false"),E.setAttribute("aria-autocomplete","both"),E.removeAttribute("aria-activedescendant")),J.role&&E.setAttribute("role",J.role)},this.setAriaLabel=function(){if(_.session&&_.renderer.enableKeyboardAccessibility){var J=_.session.selection.cursor.row;E.setAttribute("aria-roledescription",a("editor")),E.setAttribute("aria-label",a("Cursor at row $0",[J+1]))}else E.removeAttribute("aria-roledescription"),E.removeAttribute("aria-label")},this.setAriaOptions({role:"textbox"}),this.setAriaLabel(),g.addListener(E,"blur",function(J){S||(_.onBlur(J),N=!1,C&&!v&&document.removeEventListener("selectionchange",F))},_),g.addListener(E,"focus",function(J){if(!S){if(N=!0,c.isEdge)try{if(!document.hasFocus())return}catch{}_.onFocus(J),c.isEdge?setTimeout(B):B(),C&&!v&&document.addEventListener("selectionchange",F)}},_),this.$focusScroll=!1,this.focus=function(){if(this.setAriaLabel(),M||o||this.$focusScroll=="browser")return E.focus({preventScroll:!0});var J=E.style.top;E.style.position="fixed",E.style.top="0px";try{var te=E.getBoundingClientRect().top!=0}catch{return}var ie=[];if(te)for(var pe=E.parentElement;pe&&pe.nodeType==1;)ie.push(pe),pe.setAttribute("ace_nocontext",!0),!pe.parentElement&&pe.getRootNode?pe=pe.getRootNode().host:pe=pe.parentElement;E.focus({preventScroll:!0}),te&&ie.forEach(function($e){$e.removeAttribute("ace_nocontext")}),setTimeout(function(){E.style.position="",E.style.top=="0px"&&(E.style.top=J)},0)},this.blur=function(){E.blur()},this.isFocused=function(){return N},_.on("beforeEndOperation",function(){var J=_.curOp,te=J&&J.command&&J.command.name;if(te!="insertstring"){var ie=te&&(J.docChanged||J.selectionChanged);x&&ie&&(q=E.value="",de()),B()}});var B=v?function(J){if(!(!N||O&&!J||w)){J||(J="");var te=` - ab`+J+`cde fg -`;te!=E.value&&(E.value=q=te);var ie=4,pe=4+(J.length||(_.selection.isEmpty()?0:1));(L!=ie||A!=pe)&&E.setSelectionRange(ie,pe),L=ie,A=pe}}:function(){if(!(x||w)&&!(!N&&!j)){x=!0;var J=0,te=0,ie="";if(_.session){var pe=_.selection,$e=pe.getRange(),fe=pe.cursor.row;if(J=$e.start.column,te=$e.end.column,ie=_.session.getLine(fe),$e.start.row!=fe){var K=_.session.getLine(fe-1);J=$e.start.rowfe+1?U.length:te,te+=ie.length+1,ie=ie+` -`+U}else C&&fe>0&&(ie=` -`+ie,te+=1,J+=1);ie.length>s&&(J=q.length&&J.value===q&&q&&J.selectionEnd!==A},V=function(J){x||(O?O=!1:R(E)?(_.selectAll(),B()):C&&E.selectionStart!=L&&B())};function F(J){if((!E||!E.parentNode)&&document.removeEventListener("selectionchange",F),!x&&E.selectionStart===E.selectionEnd){var te=E.selectionStart-L,ie=A-L;te>0?te=Math.max(te-ie,1):te===0&&ie&&(te=-1);for(var pe=Math.abs(te),$e=te>0?f.right:f.left,fe=0;fe0&&q[ee]==J[ee];)ee++,$e--;for(K=K.slice(ee),ee=1;fe>0&&q.length-ee>L-1&&q[q.length-ee]==J[J.length-ee];)ee++,fe--;U-=ee-1,Y-=ee-1;var ue=K.length-ee+1;if(ue<0&&($e=-ue,ue=0),K=K.slice(0,ue),!te&&!K&&!U&&!$e&&!fe&&!Y)return"";w=!0;var he=!1;return c.isAndroid&&K==". "&&(K=" ",he=!0),K&&!$e&&!fe&&!U&&!Y||k?_.onTextInput(K):_.onTextInput(K,{extendLeft:$e,extendRight:fe,restoreStart:U,restoreEnd:Y}),w=!1,q=J,L=ie,A=pe,D=Y,he?` -`:K},W=function(J){if(x)return ae();if(J&&J.inputType){if(J.inputType=="historyUndo")return _.execCommand("undo");if(J.inputType=="historyRedo")return _.execCommand("redo")}var te=E.value,ie=I(te,!0);(te.length>s+100||$.test(ie)||C&&L<1&&L==A)&&B()},H=function(J,te,ie){var pe=J.clipboardData||window.clipboardData;if(!(!pe||t)){var $e=l||ie?"Text":"text/plain";try{return te?pe.setData($e,te)!==!1:pe.getData($e)}catch(fe){if(!ie)return H(fe,te,!0)}}},z=function(J,te){var ie=_.getCopyText();if(!ie)return g.preventDefault(J);H(J,ie)?(v&&(B(ie),O=ie,setTimeout(function(){O=!1},10)),te?_.onCut():_.onCopy(),g.preventDefault(J)):(O=!0,E.value=ie,E.select(),setTimeout(function(){O=!1,B(),te?_.onCut():_.onCopy()}))},G=function(J){z(J,!0)},Z=function(J){z(J,!1)},oe=function(J){var te=H(J);r.pasteCancelled()||(typeof te=="string"?(te&&_.onPaste(te,J),c.isIE&&setTimeout(B),g.preventDefault(J)):(E.value="",T=!0))};g.addCommandKeyListener(E,_.onCommandKey.bind(_),_),g.addListener(E,"select",V,_),g.addListener(E,"input",W,_),g.addListener(E,"cut",G,_),g.addListener(E,"copy",Z,_),g.addListener(E,"paste",oe,_),(!("oncut"in E)||!("oncopy"in E)||!("onpaste"in E))&&g.addListener(y,"keydown",function(J){if(!(c.isMac&&!J.metaKey||!J.ctrlKey))switch(J.keyCode){case 67:Z(J);break;case 86:oe(J);break;case 88:G(J);break}},_);var se=function(J){if(!(x||!_.onCompositionStart||_.$readOnly)&&(x={},!k)){J.data&&(x.useTextareaForIME=!1),setTimeout(ae,0),_._signal("compositionStart"),_.on("mousedown",be);var te=_.getSelectionRange();te.end.row=te.start.row,te.end.column=te.start.column,x.markerRange=te,x.selectionStart=L,_.onCompositionStart(x),x.useTextareaForIME?(q=E.value="",L=0,A=0):(E.msGetInputContext&&(x.context=E.msGetInputContext()),E.getInputContext&&(x.context=E.getInputContext()))}},ae=function(){if(!(!x||!_.onCompositionUpdate||_.$readOnly)){if(k)return be();if(x.useTextareaForIME)_.onCompositionUpdate(E.value);else{var J=E.value;I(J),x.markerRange&&(x.context&&(x.markerRange.start.column=x.selectionStart=x.context.compositionStartOffset),x.markerRange.end.column=x.markerRange.start.column+A-x.selectionStart+D)}}},de=function(J){!_.onCompositionEnd||_.$readOnly||(x=!1,_.onCompositionEnd(),_.off("mousedown",be),J&&W())};function be(){S=!0,E.blur(),E.focus(),S=!1}var ye=u.delayedCall(ae,50).schedule.bind(null,null);function X(J){J.keyCode==27&&E.value.lengthA&&q[Y]==` -`?ee=f.end:UA&&q.slice(0,Y).split(` -`).length>2?ee=f.down:Y>A&&q[Y-1]==" "?(ee=f.right,ue=h.option):(Y>A||Y==A&&A!=L&&U==Y)&&(ee=f.right),U!==Y&&(ue|=h.shift),ee){var he=te.onCommandKey({},ue,ee);if(!he&&te.commands){ee=f.keyCodeToString(ee);var ve=te.commands.findKeyCommand(ue,ee);ve&&te.execCommand(ve)}L=U,A=Y,B("")}}};document.addEventListener("selectionchange",fe),te.on("destroy",function(){document.removeEventListener("selectionchange",fe)})}this.destroy=function(){E.parentElement&&E.parentElement.removeChild(E)}};p.TextInput=b,p.$setUserAgentForTests=function(y,_){C=y,v=_}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(e,p,m){var g=e("../lib/useragent"),a=0,c=550,i=function(){function t(l){l.$clickSelection=null;var o=l.editor;o.setDefaultHandler("mousedown",this.onMouseDown.bind(l)),o.setDefaultHandler("dblclick",this.onDoubleClick.bind(l)),o.setDefaultHandler("tripleclick",this.onTripleClick.bind(l)),o.setDefaultHandler("quadclick",this.onQuadClick.bind(l)),o.setDefaultHandler("mousewheel",this.onMouseWheel.bind(l));var s=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];s.forEach(function(f){l[f]=this[f]},this),l.selectByLines=this.extendSelectionBy.bind(l,"getLineRange"),l.selectByWords=this.extendSelectionBy.bind(l,"getWordRange")}return t.prototype.onMouseDown=function(l){var o=l.inSelection(),s=l.getDocumentPosition();this.mousedownEvent=l;var f=this.editor,h=l.getButton();if(h!==0){var v=f.getSelectionRange(),$=v.isEmpty();($||h==1)&&f.selection.moveToPosition(s),h==2&&(f.textInput.onContextMenu(l.domEvent),g.isMozilla||l.preventDefault());return}if(this.mousedownEvent.time=Date.now(),o&&!f.isFocused()&&(f.focus(),this.$focusTimeout&&!this.$clickSelection&&!f.inMultiSelectMode)){this.setState("focusWait"),this.captureMouse(l);return}return this.captureMouse(l),this.startSelect(s,l.domEvent._clicks>1),l.preventDefault()},t.prototype.startSelect=function(l,o){l=l||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var s=this.editor;!this.mousedownEvent||(this.mousedownEvent.getShiftKey()?s.selection.selectToPosition(l):o||s.selection.moveToPosition(l),o||this.select(),s.setStyle("ace_selecting"),this.setState("select"))},t.prototype.select=function(){var l,o=this.editor,s=o.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var f=this.$clickSelection.comparePoint(s);if(f==-1)l=this.$clickSelection.end;else if(f==1)l=this.$clickSelection.start;else{var h=r(this.$clickSelection,s);s=h.cursor,l=h.anchor}o.selection.setSelectionAnchor(l.row,l.column)}o.selection.selectToPosition(s),o.renderer.scrollCursorIntoView()},t.prototype.extendSelectionBy=function(l){var o,s=this.editor,f=s.renderer.screenToTextCoordinates(this.x,this.y),h=s.selection[l](f.row,f.column);if(this.$clickSelection){var v=this.$clickSelection.comparePoint(h.start),$=this.$clickSelection.comparePoint(h.end);if(v==-1&&$<=0)o=this.$clickSelection.end,(h.end.row!=f.row||h.end.column!=f.column)&&(f=h.start);else if($==1&&v>=0)o=this.$clickSelection.start,(h.start.row!=f.row||h.start.column!=f.column)&&(f=h.end);else if(v==-1&&$==1)f=h.end,o=h.start;else{var C=r(this.$clickSelection,f);f=C.cursor,o=C.anchor}s.selection.setSelectionAnchor(o.row,o.column)}s.selection.selectToPosition(f),s.renderer.scrollCursorIntoView()},t.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},t.prototype.focusWait=function(){var l=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),o=Date.now();(l>a||o-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},t.prototype.onDoubleClick=function(l){var o=l.getDocumentPosition(),s=this.editor,f=s.session,h=f.getBracketRange(o);h?(h.isEmpty()&&(h.start.column--,h.end.column++),this.setState("select")):(h=s.selection.getWordRange(o.row,o.column),this.setState("selectByWords")),this.$clickSelection=h,this.select()},t.prototype.onTripleClick=function(l){var o=l.getDocumentPosition(),s=this.editor;this.setState("selectByLines");var f=s.getSelectionRange();f.isMultiLine()&&f.contains(o.row,o.column)?(this.$clickSelection=s.selection.getLineRange(f.start.row),this.$clickSelection.end=s.selection.getLineRange(f.end.row).end):this.$clickSelection=s.selection.getLineRange(o.row),this.select()},t.prototype.onQuadClick=function(l){var o=this.editor;o.selectAll(),this.$clickSelection=o.getSelectionRange(),this.setState("selectAll")},t.prototype.onMouseWheel=function(l){if(!l.getAccelKey()){l.getShiftKey()&&l.wheelY&&!l.wheelX&&(l.wheelX=l.wheelY,l.wheelY=0);var o=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var s=this.$lastScroll,f=l.domEvent.timeStamp,h=f-s.t,v=h?l.wheelX/h:s.vx,$=h?l.wheelY/h:s.vy;h=1&&o.renderer.isScrollableBy(l.wheelX*l.speed,0)&&(b=!0),C<=1&&o.renderer.isScrollableBy(0,l.wheelY*l.speed)&&(b=!0),b)s.allowed=f;else if(f-s.allowed=s.length&&(s=void 0),{value:s&&s[v++],done:!s}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")},c=e("./lib/dom"),i=e("./range").Range,u="ace_tooltip",r=function(){function s(f){this.isOpen=!1,this.$element=null,this.$parentNode=f}return s.prototype.$init=function(){return this.$element=c.createElement("div"),this.$element.className=u,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},s.prototype.getElement=function(){return this.$element||this.$init()},s.prototype.setText=function(f){this.getElement().textContent=f},s.prototype.setHtml=function(f){this.getElement().innerHTML=f},s.prototype.setPosition=function(f,h){this.getElement().style.left=f+"px",this.getElement().style.top=h+"px"},s.prototype.setClassName=function(f){c.addCssClass(this.getElement(),f)},s.prototype.setTheme=function(f){this.$element.className=u+" "+(f.isDark?"ace_dark ":"")+(f.cssClass||"")},s.prototype.show=function(f,h,v){f!=null&&this.setText(f),h!=null&&v!=null&&this.setPosition(h,v),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},s.prototype.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=u,this.isOpen=!1)},s.prototype.getHeight=function(){return this.getElement().offsetHeight},s.prototype.getWidth=function(){return this.getElement().offsetWidth},s.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},s}(),t=function(){function s(){this.popups=[]}return s.prototype.addPopup=function(f){this.popups.push(f),this.updatePopups()},s.prototype.removePopup=function(f){var h=this.popups.indexOf(f);h!==-1&&(this.popups.splice(h,1),this.updatePopups())},s.prototype.updatePopups=function(){var f,h,v,$;this.popups.sort(function(w,M){return M.priority-w.priority});var C=[];try{for(var b=a(this.popups),y=b.next();!y.done;y=b.next()){var _=y.value,E=!0;try{for(var O=(v=void 0,a(C)),T=O.next();!T.done;T=O.next()){var x=T.value;if(this.doPopupsOverlap(x,_)){E=!1;break}}}catch(w){v={error:w}}finally{try{T&&!T.done&&($=O.return)&&$.call(O)}finally{if(v)throw v.error}}E?C.push(_):_.hide()}}catch(w){f={error:w}}finally{try{y&&!y.done&&(h=b.return)&&h.call(b)}finally{if(f)throw f.error}}},s.prototype.doPopupsOverlap=function(f,h){var v=f.getElement().getBoundingClientRect(),$=h.getElement().getBoundingClientRect();return v.left<$.right&&v.right>$.left&&v.top<$.bottom&&v.bottom>$.top},s}(),l=new t;p.popupManager=l,p.Tooltip=r;var o=function(s){g(f,s);function f(h){h===void 0&&(h=document.body);var v=s.call(this,h)||this;v.timeout=void 0,v.lastT=0,v.idleTime=350,v.lastEvent=void 0,v.onMouseOut=v.onMouseOut.bind(v),v.onMouseMove=v.onMouseMove.bind(v),v.waitForHover=v.waitForHover.bind(v),v.hide=v.hide.bind(v);var $=v.getElement();return $.style.whiteSpace="pre-wrap",$.style.pointerEvents="auto",$.addEventListener("mouseout",v.onMouseOut),$.tabIndex=-1,$.addEventListener("blur",function(){$.contains(document.activeElement)||this.hide()}.bind(v)),v}return f.prototype.addToEditor=function(h){h.on("mousemove",this.onMouseMove),h.on("mousedown",this.hide),h.renderer.getMouseEventTarget().addEventListener("mouseout",this.onMouseOut,!0)},f.prototype.removeFromEditor=function(h){h.off("mousemove",this.onMouseMove),h.off("mousedown",this.hide),h.renderer.getMouseEventTarget().removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},f.prototype.onMouseMove=function(h,v){this.lastEvent=h,this.lastT=Date.now();var $=v.$mouseHandler.isMousePressed;if(this.isOpen){var C=this.lastEvent&&this.lastEvent.getDocumentPosition();(!this.range||!this.range.contains(C.row,C.column)||$||this.isOutsideOfText(this.lastEvent))&&this.hide()}this.timeout||$||(this.lastEvent=h,this.timeout=setTimeout(this.waitForHover,this.idleTime))},f.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var h=Date.now()-this.lastT;if(this.idleTime-h>10){this.timeout=setTimeout(this.waitForHover,this.idleTime-h);return}this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor)},f.prototype.isOutsideOfText=function(h){var v=h.editor,$=h.getDocumentPosition(),C=v.session.getLine($.row);if($.column==C.length){var b=v.renderer.pixelToScreenCoordinates(h.clientX,h.clientY),y=v.session.documentToScreenPosition($.row,$.column);if(y.column!=b.column||y.row!=b.row)return!0}return!1},f.prototype.setDataProvider=function(h){this.$gatherData=h},f.prototype.showForRange=function(h,v,$,C){if(!(C&&C!=this.lastEvent)&&!(this.isOpen&&document.activeElement==this.getElement())){var b=h.renderer;this.isOpen||(l.addPopup(this),this.$registerCloseEvents(),this.setTheme(b.theme)),this.isOpen=!0,this.addMarker(v,h.session),this.range=i.fromPoints(v.start,v.end);var y=this.getElement();y.innerHTML="",y.appendChild($),y.style.display="block";var _=b.textToScreenCoordinates(v.start.row,v.start.column),E=h.getCursorPosition(),O=y.clientHeight,T=b.scroller.getBoundingClientRect(),x=!0;this.row>E.row?x=!0:this.rowT.bottom&&(x=!1),x?_.pageY+=b.lineHeight:_.pageY-=O,y.style.maxWidth=T.width-(_.pageX-T.left)+"px",this.setPosition(_.pageX,_.pageY)}},f.prototype.addMarker=function(h,v){this.marker&&this.$markerSession.removeMarker(this.marker),this.$markerSession=v,this.marker=v&&v.addMarker(h,"ace_highlight-marker","text")},f.prototype.hide=function(h){!h&&document.activeElement==this.getElement()||h&&h.target&&(h.type!="keydown"||h.ctrlKey||h.metaKey)&&this.$element.contains(h.target)||(this.lastEvent=null,this.timeout&&clearTimeout(this.timeout),this.timeout=null,this.addMarker(null),this.isOpen&&(this.$removeCloseEvents(),this.getElement().style.display="none",this.isOpen=!1,l.removePopup(this)))},f.prototype.$registerCloseEvents=function(){window.addEventListener("keydown",this.hide,!0),window.addEventListener("mousewheel",this.hide,!0),window.addEventListener("mousedown",this.hide,!0)},f.prototype.$removeCloseEvents=function(){window.removeEventListener("keydown",this.hide,!0),window.removeEventListener("mousewheel",this.hide,!0),window.removeEventListener("mousedown",this.hide,!0)},f.prototype.onMouseOut=function(h){this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.lastEvent=null,!!this.isOpen&&(!h.relatedTarget||h.relatedTarget==this.getElement()||h&&h.currentTarget.contains(h.relatedTarget)||h.relatedTarget.classList.contains("ace_content")||this.hide())},f}(r);p.HoverTooltip=o}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"],function(e,p,m){var g=this&&this.__extends||function(){var o=function(s,f){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,v){h.__proto__=v}||function(h,v){for(var $ in v)Object.prototype.hasOwnProperty.call(v,$)&&(h[$]=v[$])},o(s,f)};return function(s,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");o(s,f);function h(){this.constructor=s}s.prototype=f===null?Object.create(f):(h.prototype=f.prototype,new h)}}(),a=this&&this.__values||function(o){var s=typeof Symbol=="function"&&Symbol.iterator,f=s&&o[s],h=0;if(f)return f.call(o);if(o&&typeof o.length=="number")return{next:function(){return o&&h>=o.length&&(o=void 0),{value:o&&o[h++],done:!o}}};throw new TypeError(s?"Object is not iterable.":"Symbol.iterator is not defined.")},c=e("../lib/dom"),i=e("../lib/event"),u=e("../tooltip").Tooltip,r=e("../config").nls;function t(o){var s=o.editor,f=s.renderer.$gutterLayer,h=new l(s);o.editor.setDefaultHandler("guttermousedown",function(_){if(!(!s.isFocused()||_.getButton()!=0)){var E=f.getRegion(_);if(E!="foldWidgets"){var O=_.getDocumentPosition().row,T=s.session.selection;if(_.getShiftKey())T.selectTo(O,0);else{if(_.domEvent.detail==2)return s.selectAll(),_.preventDefault();o.$clickSelection=s.selection.getLineRange(O)}return o.setState("selectByLines"),o.captureMouse(_),_.preventDefault()}}});var v,$;function C(){var _=$.getDocumentPosition().row,E=s.session.getLength();if(_==E){var O=s.renderer.pixelToScreenCoordinates(0,$.y).row,T=$.$pos;if(O>s.session.documentToScreenRow(T.row,T.column))return b()}if(h.showTooltip(_),!!h.isOpen)if(s.on("mousewheel",b),o.$tooltipFollowsMouse)y($);else{var x=f.$lines.cells[_].element.querySelector("[class*=ace_icon]"),w=x.getBoundingClientRect(),M=h.getElement().style;M.left=w.right+"px",M.top=w.bottom+"px"}}function b(){v&&(v=clearTimeout(v)),h.isOpen&&(h.hide(),s._signal("hideGutterTooltip",h),s.off("mousewheel",b))}function y(_){h.setPosition(_.x,_.y)}o.editor.setDefaultHandler("guttermousemove",function(_){var E=_.domEvent.target||_.domEvent.srcElement;if(c.hasCssClass(E,"ace_fold-widget"))return b();h.isOpen&&o.$tooltipFollowsMouse&&y(_),$=_,!v&&(v=setTimeout(function(){v=null,$&&!o.isMousePressed?C():b()},50))}),i.addListener(s.renderer.$gutter,"mouseout",function(_){$=null,!(!h.isOpen||v)&&(v=setTimeout(function(){v=null,b()},50))},s),s.on("changeSession",b),s.on("input",b)}p.GutterHandler=t;var l=function(o){g(s,o);function s(f){var h=o.call(this,f.container)||this;return h.editor=f,h}return s.prototype.setPosition=function(f,h){var v=window.innerWidth||document.documentElement.clientWidth,$=window.innerHeight||document.documentElement.clientHeight,C=this.getWidth(),b=this.getHeight();f+=15,h+=15,f+C>v&&(f-=f+C-v),h+b>$&&(h-=20+b),u.prototype.setPosition.call(this,f,h)},Object.defineProperty(s,"annotationLabels",{get:function(){return{error:{singular:r("error"),plural:r("errors")},warning:{singular:r("warning"),plural:r("warnings")},info:{singular:r("information message"),plural:r("information messages")}}},enumerable:!1,configurable:!0}),s.prototype.showTooltip=function(f){var h=this.editor.renderer.$gutterLayer,v=h.$annotations[f],$;v?$={text:Array.from(v.text),type:Array.from(v.type)}:$={text:[],type:[]};var C=h.session.getFoldLine(f);if(C&&h.$showFoldedAnnotations){for(var b={error:[],warning:[],info:[]},y,_=f+1;_<=C.end.row;_++)if(!!h.$annotations[_])for(var E=0;E ").concat($.text[_]);x[$.type[_].replace("_fold","")].push(M)}var k=[].concat(x.error,x.warning,x.info).join("
");this.setHtml(k),this.setClassName("ace_gutter-tooltip"),this.$element.setAttribute("aria-live","polite"),this.isOpen||this.setTheme(this.editor.renderer.theme),this.editor._signal("showGutterTooltip",this),this.show()},s.annotationsToSummaryString=function(f){var h,v,$=[],C=["error","warning","info"];try{for(var b=a(C),y=b.next();!y.done;y=b.next()){var _=y.value;if(!!f[_].length){var E=f[_].length===1?s.annotationLabels[_].singular:s.annotationLabels[_].plural;$.push("".concat(f[_].length," ").concat(E))}}}catch(O){h={error:O}}finally{try{y&&!y.done&&(v=b.return)&&v.call(b)}finally{if(h)throw h.error}}return $.join(", ")},s}(u);p.GutterTooltip=l}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,p,m){var g=e("../lib/event"),a=e("../lib/useragent"),c=function(){function i(u,r){this.domEvent=u,this.editor=r,this.x=this.clientX=u.clientX,this.y=this.clientY=u.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1}return i.prototype.stopPropagation=function(){g.stopPropagation(this.domEvent),this.propagationStopped=!0},i.prototype.preventDefault=function(){g.preventDefault(this.domEvent),this.defaultPrevented=!0},i.prototype.stop=function(){this.stopPropagation(),this.preventDefault()},i.prototype.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},i.prototype.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var u=this.editor,r=u.getSelectionRange();if(r.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=r.contains(t.row,t.column)}return this.$inSelection},i.prototype.getButton=function(){return g.getButton(this.domEvent)},i.prototype.getShiftKey=function(){return this.domEvent.shiftKey},i.prototype.getAccelKey=function(){return a.isMac?this.domEvent.metaKey:this.domEvent.ctrlKey},i}();p.MouseEvent=c}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,p,m){var g=e("../lib/dom"),a=e("../lib/event"),c=e("../lib/useragent"),i=200,u=200,r=5;function t(o){var s=o.editor,f=g.createElement("div");f.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",f.textContent="\xA0";var h=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];h.forEach(function(F){o[F]=this[F]},this),s.on("mousedown",this.onMouseDown.bind(o));var v=s.container,$,C,b,y,_,E,O=0,T,x,w,M,k;this.onDragStart=function(F){if(this.cancelDrag||!v.draggable){var P=this;return setTimeout(function(){P.startSelect(),P.captureMouse(F)},0),F.preventDefault()}_=s.getSelectionRange();var j=F.dataTransfer;j.effectAllowed=s.getReadOnly()?"copy":"copyMove",s.container.appendChild(f),j.setDragImage&&j.setDragImage(f,0,0),setTimeout(function(){s.container.removeChild(f)}),j.clearData(),j.setData("Text",s.session.getTextRange()),x=!0,this.setState("drag")},this.onDragEnd=function(F){if(v.draggable=!1,x=!1,this.setState(null),!s.getReadOnly()){var P=F.dataTransfer.dropEffect;!T&&P=="move"&&s.session.remove(s.getSelectionRange()),s.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(F){if(!(s.getReadOnly()||!R(F.dataTransfer)))return C=F.clientX,b=F.clientY,$||A(),O++,F.dataTransfer.dropEffect=T=V(F),a.preventDefault(F)},this.onDragOver=function(F){if(!(s.getReadOnly()||!R(F.dataTransfer)))return C=F.clientX,b=F.clientY,$||(A(),O++),N!==null&&(N=null),F.dataTransfer.dropEffect=T=V(F),a.preventDefault(F)},this.onDragLeave=function(F){if(O--,O<=0&&$)return D(),T=null,a.preventDefault(F)},this.onDrop=function(F){if(!!E){var P=F.dataTransfer;if(x)switch(T){case"move":_.contains(E.row,E.column)?_={start:E,end:E}:_=s.moveText(_,E);break;case"copy":_=s.moveText(_,E,!0);break}else{var j=P.getData("Text");_={start:E,end:s.session.insert(E,j)},s.focus(),T=null}return D(),a.preventDefault(F)}},a.addListener(v,"dragstart",this.onDragStart.bind(o),s),a.addListener(v,"dragend",this.onDragEnd.bind(o),s),a.addListener(v,"dragenter",this.onDragEnter.bind(o),s),a.addListener(v,"dragover",this.onDragOver.bind(o),s),a.addListener(v,"dragleave",this.onDragLeave.bind(o),s),a.addListener(v,"drop",this.onDrop.bind(o),s);function S(F,P){var j=Date.now(),I=!P||F.row!=P.row,W=!P||F.column!=P.column;if(!M||I||W)s.moveCursorToPosition(F),M=j,k={x:C,y:b};else{var H=l(k.x,k.y,C,b);H>r?M=null:j-M>=u&&(s.renderer.scrollCursorIntoView(),M=null)}}function q(F,P){var j=Date.now(),I=s.renderer.layerConfig.lineHeight,W=s.renderer.layerConfig.characterWidth,H=s.renderer.scroller.getBoundingClientRect(),z={x:{left:C-H.left,right:H.right-C},y:{top:b-H.top,bottom:H.bottom-b}},G=Math.min(z.x.left,z.x.right),Z=Math.min(z.y.top,z.y.bottom),oe={row:F.row,column:F.column};G/W<=2&&(oe.column+=z.x.left=i&&s.renderer.scrollCursorIntoView(oe):w=j:w=null}function L(){var F=E;E=s.renderer.screenToTextCoordinates(C,b),S(E,F),q(E,F)}function A(){_=s.selection.toOrientedRange(),$=s.session.addMarker(_,"ace_selection",s.getSelectionStyle()),s.clearSelection(),s.isFocused()&&s.renderer.$cursorLayer.setBlinking(!1),clearInterval(y),L(),y=setInterval(L,20),O=0,a.addListener(document,"mousemove",B)}function D(){clearInterval(y),s.session.removeMarker($),$=null,s.selection.fromOrientedRange(_),s.isFocused()&&!x&&s.$resetCursorStyle(),_=null,E=null,O=0,w=null,M=null,a.removeListener(document,"mousemove",B)}var N=null;function B(){N==null&&(N=setTimeout(function(){N!=null&&$&&D()},20))}function R(F){var P=F.types;return!P||Array.prototype.some.call(P,function(j){return j=="text/plain"||j=="Text"})}function V(F){var P=["copy","copymove","all","uninitialized"],j=["move","copymove","linkmove","all","uninitialized"],I=c.isMac?F.altKey:F.ctrlKey,W="uninitialized";try{W=F.dataTransfer.effectAllowed.toLowerCase()}catch{}var H="none";return I&&P.indexOf(W)>=0?H="copy":j.indexOf(W)>=0?H="move":P.indexOf(W)>=0&&(H="copy"),H}}(function(){this.dragWait=function(){var o=Date.now()-this.mousedownEvent.time;o>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var o=this.editor.container;o.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(o){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var o=this.editor,s=o.container;s.draggable=!0,o.renderer.$cursorLayer.setBlinking(!1),o.setStyle("ace_dragging");var f=c.isWin?"default":"move";o.renderer.setCursorStyle(f),this.setState("dragReady")},this.onMouseDrag=function(o){var s=this.editor.container;if(c.isIE&&this.state=="dragReady"){var f=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);f>3&&s.dragDrop()}if(this.state==="dragWait"){var f=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);f>0&&(s.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(o){if(!!this.$dragEnabled){this.mousedownEvent=o;var s=this.editor,f=o.inSelection(),h=o.getButton(),v=o.domEvent.detail||1;if(v===1&&h===0&&f){if(o.editor.inMultiSelectMode&&(o.getAccelKey()||o.getShiftKey()))return;this.mousedownEvent.time=Date.now();var $=o.domEvent.target||o.domEvent.srcElement;if("unselectable"in $&&($.unselectable="on"),s.getDragDelay()){if(c.isWebKit){this.cancelDrag=!0;var C=s.container;C.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(o,this.onMouseDrag.bind(this)),o.defaultPrevented=!0}}}}).call(t.prototype);function l(o,s,f,h){return Math.sqrt(Math.pow(f-o,2)+Math.pow(h-s,2))}p.DragdropHandler=t}),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(e,p,m){var g=e("./mouse_event").MouseEvent,a=e("../lib/event"),c=e("../lib/dom");p.addTouchListeners=function(i,u){var r="scroll",t,l,o,s,f,h,v=0,$,C=0,b=0,y=0,_,E;function O(){var S=window.navigator&&window.navigator.clipboard,q=!1,L=function(){var D=u.getCopyText(),N=u.session.getUndoManager().hasUndo();E.replaceChild(c.buildDom(q?["span",!D&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],D&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],D&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],S&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],N&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPallete"},"Palette"]]:["span"]),E.firstChild)},A=function(D){var N=D.target.getAttribute("action");if(N=="more"||!q)return q=!q,L();N=="paste"?S.readText().then(function(B){u.execCommand(N,B)}):N&&((N=="cut"||N=="copy")&&(S?S.writeText(u.getCopyText()):document.execCommand("copy")),u.execCommand(N)),E.firstChild.style.display="none",q=!1,N!="openCommandPallete"&&u.focus()};E=c.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(D){r="menu",D.stopPropagation(),D.preventDefault(),u.textInput.focus()},ontouchend:function(D){D.stopPropagation(),D.preventDefault(),A(D)},onclick:A},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],u.container)}function T(){E||O();var S=u.selection.cursor,q=u.renderer.textToScreenCoordinates(S.row,S.column),L=u.renderer.textToScreenCoordinates(0,0).pageX,A=u.renderer.scrollLeft,D=u.container.getBoundingClientRect();E.style.top=q.pageY-D.top-3+"px",q.pageX-D.left=2?u.selection.getLineRange($.row):u.session.getBracketRange($);S&&!S.isEmpty()?u.selection.setRange(S):u.selection.selectWord(),r="wait"}a.addListener(i,"contextmenu",function(S){if(!!_){var q=u.textInput.getElement();q.focus()}},u),a.addListener(i,"touchstart",function(S){var q=S.touches;if(f||q.length>1){clearTimeout(f),f=null,o=-1,r="zoom";return}_=u.$mouseHandler.isMousePressed=!0;var L=u.renderer.layerConfig.lineHeight,A=u.renderer.layerConfig.lineHeight,D=S.timeStamp;s=D;var N=q[0],B=N.clientX,R=N.clientY;Math.abs(t-B)+Math.abs(l-R)>L&&(o=-1),t=S.clientX=B,l=S.clientY=R,b=y=0;var V=new g(S,u);if($=V.getDocumentPosition(),D-o<500&&q.length==1&&!v)C++,S.preventDefault(),S.button=0,M();else{C=0;var F=u.selection.cursor,P=u.selection.isEmpty()?F:u.selection.anchor,j=u.renderer.$cursorLayer.getPixelPosition(F,!0),I=u.renderer.$cursorLayer.getPixelPosition(P,!0),W=u.renderer.scroller.getBoundingClientRect(),H=u.renderer.layerConfig.offset,z=u.renderer.scrollLeft,G=function(se,ae){return se=se/A,ae=ae/L-.75,se*se+ae*ae};if(S.clientXoe?"cursor":"anchor"),oe<3.5?r="anchor":Z<3.5?r="cursor":r="scroll",f=setTimeout(w,450)}o=D},u),a.addListener(i,"touchend",function(S){_=u.$mouseHandler.isMousePressed=!1,h&&clearInterval(h),r=="zoom"?(r="",v=0):f?(u.selection.moveToPosition($),v=0,T()):r=="scroll"?(k(),x()):T(),clearTimeout(f),f=null},u),a.addListener(i,"touchmove",function(S){f&&(clearTimeout(f),f=null);var q=S.touches;if(!(q.length>1||r=="zoom")){var L=q[0],A=t-L.clientX,D=l-L.clientY;if(r=="wait")if(A*A+D*D>4)r="cursor";else return S.preventDefault();t=L.clientX,l=L.clientY,S.clientX=L.clientX,S.clientY=L.clientY;var N=S.timeStamp,B=N-s;if(s=N,r=="scroll"){var R=new g(S,u);R.speed=1,R.wheelX=A,R.wheelY=D,10*Math.abs(A)0)if(oe==16){for(de=ae;de-1){for(de=ae;de=0&&I[X]==_;X--)P[X]=g}}}function B(F,P,j){if(!(a=F){for(H=W+1;H=F;)H++;for(z=W,G=H-1;z=P.length||(H=j[I-1])!=h&&H!=v||(z=P[I+1])!=h&&z!=v?$:(c&&(z=v),z==H?z:$);case O:return H=I>0?j[I-1]:C,H==h&&I+10&&j[I-1]==h)return h;if(c)return $;for(Z=I+1,G=P.length;Z=1425&&oe<=2303||oe==64286;if(H=P[Z],se&&(H==f||H==y))return f}return I<1||(H=P[I-1])==C?$:j[I-1];case C:return c=!1,i=!0,g;case b:return u=!0,$;case w:case M:case S:case q:case k:c=!1;case L:return $}}function V(F){var P=F.charCodeAt(0),j=P>>8;return j==0?P>191?s:A[P]:j==5?/[\u0591-\u05f4]/.test(F)?f:s:j==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(F)?x:/[\u0660-\u0669\u066b-\u066c]/.test(F)?v:P==1642?T:/[\u06f0-\u06f9]/.test(F)?h:y:j==32&&P<=8287?D[P&255]:j==254&&P>=65136?y:$}p.L=s,p.R=f,p.EN=h,p.ON_R=3,p.AN=4,p.R_H=5,p.B=6,p.RLE=7,p.DOT="\xB7",p.doBidiReorder=function(F,P,j){if(F.length<2)return{};var I=F.split(""),W=new Array(I.length),H=new Array(I.length),z=[];g=j?o:l,N(I,z,I.length,P);for(var G=0;Gy&&P[G]0&&I[G-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(I[G])&&(z[G-1]=z[G]=p.R_H,G++);I[I.length-1]===p.DOT&&(z[I.length-1]=p.B),I[0]==="\u202B"&&(z[0]=p.RLE);for(var G=0;G=0&&(r=this.session.$docRowCache[l])}return r},u.prototype.getSplitIndex=function(){var r=0,t=this.session.$screenRowCache;if(t.length)for(var l,o=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-r>0&&(l=this.session.$getRowCacheIndex(t,this.currentRow-r-1),l===o);)o=l,r++;else r=this.currentRow;return r},u.prototype.updateRowLine=function(r,t){r===void 0&&(r=this.getDocumentRow());var l=r===this.session.getLength()-1,o=l?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(r),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var s=this.session.$wrapData[r];s&&(t===void 0&&(t=this.getSplitIndex()),t>0&&s.length?(this.wrapIndent=s.indent,this.wrapOffset=this.wrapIndent*this.charWidths[g.L],this.line=tt?this.session.getOverwrite()?r:r-1:t,o=g.getVisualFromLogicalIdx(l,this.bidiMap),s=this.bidiMap.bidiLevels,f=0;!this.session.getOverwrite()&&r<=t&&s[o]%2!=0&&o++;for(var h=0;ht&&s[o]%2==0&&(f+=this.charWidths[s[o]]),this.wrapIndent&&(f+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(f+=this.rtlLineOffset),f},u.prototype.getSelections=function(r,t){var l=this.bidiMap,o=l.bidiLevels,s,f=[],h=0,v=Math.min(r,t)-this.wrapIndent,$=Math.max(r,t)-this.wrapIndent,C=!1,b=!1,y=0;this.wrapIndent&&(h+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var _,E=0;E=v&&_<$,C&&!b?y=h:!C&&b&&f.push({left:y,width:h-y}),h+=this.charWidths[s],b=C;if(C&&E===o.length&&f.push({left:y,width:h-y}),this.isRtlDir)for(var O=0;Ol+f/2;){if(l+=f,o===s.length-1){f=0;break}f=this.charWidths[s[++o]]}return o>0&&s[o-1]%2!=0&&s[o]%2==0?(r0&&s[o-1]%2==0&&s[o]%2!=0?t=1+(r>l?this.bidiMap.logicalFromVisual[o]:this.bidiMap.logicalFromVisual[o-1]):this.isRtlDir&&o===s.length-1&&f===0&&s[o-1]%2==0||!this.isRtlDir&&o===0&&s[o]%2!=0?t=1+this.bidiMap.logicalFromVisual[o]:(o>0&&s[o-1]%2!=0&&f!==0&&o--,t=this.bidiMap.logicalFromVisual[o]),t===0&&this.isRtlDir&&t++,t+this.wrapIndent},u}();p.BidiHandler=i}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,p,m){var g=e("./lib/oop"),a=e("./lib/lang"),c=e("./lib/event_emitter").EventEmitter,i=e("./range").Range,u=function(r){this.session=r,this.doc=r.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",function(l){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),!t.$isEmpty&&!t.$silent&&t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&l.old.column!=l.value.column&&(t.$desiredColumn=null)}),this.anchor.on("change",function(){t.$anchorChanged=!0,!t.$isEmpty&&!t.$silent&&t._emit("changeSelection")})};(function(){g.implement(this,c),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setAnchor=function(r,t){this.$isEmpty=!1,this.anchor.setPosition(r,t)},this.setSelectionAnchor=this.setAnchor,this.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionAnchor=this.getAnchor,this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var r=this.anchor,t=this.lead;return r.row>t.row||r.row==t.row&&r.column>t.column},this.getRange=function(){var r=this.anchor,t=this.lead;return this.$isEmpty?i.fromPoints(t,t):this.isBackwards()?i.fromPoints(t,r):i.fromPoints(r,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(r,t){var l=t?r.end:r.start,o=t?r.start:r.end;this.$setSelection(l.row,l.column,o.row,o.column)},this.$setSelection=function(r,t,l,o){if(!this.$silent){var s=this.$isEmpty,f=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(r,t),this.cursor.setPosition(l,o),this.$isEmpty=!i.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||s!=this.$isEmpty||f)&&this._emit("changeSelection")}},this.$moveSelection=function(r){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),r.call(this)},this.selectTo=function(r,t){this.$moveSelection(function(){this.moveCursorTo(r,t)})},this.selectToPosition=function(r){this.$moveSelection(function(){this.moveCursorToPosition(r)})},this.moveTo=function(r,t){this.clearSelection(),this.moveCursorTo(r,t)},this.moveToPosition=function(r){this.clearSelection(),this.moveCursorToPosition(r)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(r,t){if(typeof t=="undefined"){var l=r||this.lead;r=l.row,t=l.column}return this.session.getWordRange(r,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var r=this.getCursor(),t=this.session.getAWordRange(r.row,r.column);this.setSelectionRange(t)},this.getLineRange=function(r,t){var l=typeof r=="number"?r:this.lead.row,o,s=this.session.getFoldLine(l);return s?(l=s.start.row,o=s.end.row):o=l,t===!0?new i(l,0,o,this.session.getLine(o).length):new i(l,0,o+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(r,t,l){var o=r.column,s=r.column+t;return l<0&&(o=r.column-t,s=r.column),this.session.isTabStop(r)&&this.doc.getLine(r.row).slice(o,s).split(" ").length-1==t},this.moveCursorLeft=function(){var r=this.lead.getPosition(),t;if(t=this.session.getFoldAt(r.row,r.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(r.column===0)r.row>0&&this.moveCursorTo(r.row-1,this.doc.getLine(r.row-1).length);else{var l=this.session.getTabSize();this.wouldMoveIntoSoftTab(r,l,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-l):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var r=this.lead.getPosition(),t;if(t=this.session.getFoldAt(r.row,r.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=o)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var r=this.doc.getLength()-1,t=this.doc.getLine(r).length;this.moveCursorTo(r,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var r=this.lead.row,t=this.lead.column,l=this.doc.getLine(r),o=l.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(r,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(this.session.nonTokenRe.exec(o)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,o=l.substring(t)),t>=l.length){this.moveCursorTo(r,l.length),this.moveCursorRight(),r0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(s)&&(t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(r,t)},this.$shortWordEndIndex=function(r){var t=0,l,o=/\s/,s=this.session.tokenRe;if(s.lastIndex=0,this.session.tokenRe.exec(r))t=this.session.tokenRe.lastIndex;else{for(;(l=r[t])&&o.test(l);)t++;if(t<1){for(s.lastIndex=0;(l=r[t])&&!s.test(l);)if(s.lastIndex=0,t++,o.test(l))if(t>2){t--;break}else{for(;(l=r[t])&&o.test(l);)t++;if(t>2)break}}}return s.lastIndex=0,t},this.moveCursorShortWordRight=function(){var r=this.lead.row,t=this.lead.column,l=this.doc.getLine(r),o=l.substring(t),s=this.session.getFoldAt(r,t,1);if(s)return this.moveCursorTo(s.end.row,s.end.column);if(t==l.length){var f=this.doc.getLength();do r++,o=this.doc.getLine(r);while(r0&&/^\s*$/.test(o));t=o.length,/\s+$/.test(o)||(o="")}var s=a.stringReverse(o),f=this.$shortWordEndIndex(s);return this.moveCursorTo(r,t-f)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(r,t){var l=this.session.documentToScreenPosition(this.lead.row,this.lead.column),o;if(t===0&&(r!==0&&(this.session.$bidiHandler.isBidiRow(l.row,this.lead.row)?(o=this.session.$bidiHandler.getPosLeft(l.column),l.column=Math.round(o/this.session.$bidiHandler.charWidths[0])):o=l.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?l.column=this.$desiredColumn:this.$desiredColumn=l.column),r!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var s=this.session.lineWidgets[this.lead.row];r<0?r-=s.rowsAbove||0:r>0&&(r+=s.rowCount-(s.rowsAbove||0))}var f=this.session.screenToDocumentPosition(l.row+r,l.column,o);r!==0&&t===0&&f.row===this.lead.row&&f.column===this.lead.column,this.moveCursorTo(f.row,f.column+t,t===0)},this.moveCursorToPosition=function(r){this.moveCursorTo(r.row,r.column)},this.moveCursorTo=function(r,t,l){var o=this.session.getFoldAt(r,t,1);o&&(r=o.start.row,t=o.start.column),this.$keepDesiredColumnOnChange=!0;var s=this.session.getLine(r);/[\uDC00-\uDFFF]/.test(s.charAt(t))&&s.charAt(t-1)&&(this.lead.row==r&&this.lead.column==t+1?t=t-1:t=t+1),this.lead.setPosition(r,t),this.$keepDesiredColumnOnChange=!1,l||(this.$desiredColumn=null)},this.moveCursorToScreen=function(r,t,l){var o=this.session.screenToDocumentPosition(r,t);this.moveCursorTo(o.row,o.column,l)},this.detach=function(){this.lead.detach(),this.anchor.detach()},this.fromOrientedRange=function(r){this.setSelectionRange(r,r.cursor==r.start),this.$desiredColumn=r.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(r){var t=this.getRange();return r?(r.start.column=t.start.column,r.start.row=t.start.row,r.end.column=t.end.column,r.end.row=t.end.row):r=t,r.cursor=this.isBackwards()?r.start:r.end,r.desiredColumn=this.$desiredColumn,r},this.getRangeOfMovements=function(r){var t=this.getCursor();try{r(this);var l=this.getCursor();return i.fromPoints(t,l)}catch{return i.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var r=this.ranges.map(function(t){var l=t.clone();return l.isBackwards=t.cursor==t.start,l});else{var r=this.getRange();r.isBackwards=this.isBackwards()}return r},this.fromJSON=function(r){if(r.start==null)if(this.rangeList&&r.length>1){this.toSingleRange(r[0]);for(var t=r.length;t--;){var l=i.fromPoints(r[t].start,r[t].end);r[t].isBackwards&&(l.cursor=l.start),this.addRange(l,!0)}return}else r=r[0];this.rangeList&&this.toSingleRange(r),this.setSelectionRange(r,r.isBackwards)},this.isEqual=function(r){if((r.length||this.rangeCount)&&r.length!=this.rangeCount)return!1;if(!r.length||!this.ranges)return this.getRange().isEqual(r);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(r[t]))return!1;return!0}}).call(u.prototype),p.Selection=u}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,p,m){var g=e("./config"),a=2e3,c=function(){function i(u){this.states=u,this.regExps={},this.matchMappings={};for(var r in this.states){for(var t=this.states[r],l=[],o=0,s=this.matchMappings[r]={defaultToken:"text"},f="g",h=[],v=0;v1?$.onMatch=this.$applyToken:$.onMatch=$.token),b>1&&(/\\\d/.test($.regex)?C=$.regex.replace(/\\([0-9]+)/g,function(y,_){return"\\"+(parseInt(_,10)+o+1)}):(b=1,C=this.removeCapturingGroups($.regex)),!$.splitRegex&&typeof $.token!="string"&&h.push($)),s[o]=v,o+=b,l.push(C),$.onMatch||($.onMatch=null)}}l.length||(s[0]=0,l.push("$")),h.forEach(function(y){y.splitRegex=this.createSplitterRegexp(y.regex,f)},this),this.regExps[r]=new RegExp("("+l.join(")|(")+")|($)",f)}}return i.prototype.$setMaxTokenCount=function(u){a=u|0},i.prototype.$applyToken=function(u){var r=this.splitRegex.exec(u).slice(1),t=this.token.apply(this,r);if(typeof t=="string")return[{type:t,value:u}];for(var l=[],o=0,s=t.length;o$){var T=u.substring($,O-E.length);b.type==y?b.value+=T:(b.type&&v.push(b),b={type:y,value:T})}for(var x=0;xa){for(C>2*u.length&&this.reportError("infinite loop with in ace tokenizer",{startState:r,line:u});$1&&t[0]!==l&&t.unshift("#tmp",l),{tokens:v,state:t.length?t:l}},i}();c.prototype.reportError=g.reportError,p.Tokenizer=c}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,p,m){var g=e("../lib/lang"),a=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(u,r){if(!r){for(var t in u)this.$rules[t]=u[t];return}for(var t in u){for(var l=u[t],o=0;o=this.$rowTokens.length;){if(this.$row+=1,i||(i=this.$session.getLength()),this.$row>=i)return this.$row=i-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},c.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},c.prototype.getCurrentTokenRow=function(){return this.$row},c.prototype.getCurrentTokenColumn=function(){var i=this.$rowTokens,u=this.$tokenIndex,r=i[u].start;if(r!==void 0)return r;for(r=0;u>0;)u-=1,r+=i[u].value.length;return r},c.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},c.prototype.getCurrentTokenRange=function(){var i=this.$rowTokens[this.$tokenIndex],u=this.getCurrentTokenColumn();return new g(this.$row,u,this.$row,u+i.value.length)},c}();p.TokenIterator=a}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,p,m){var g=e("../../lib/oop"),a=e("../behaviour").Behaviour,c=e("../../token_iterator").TokenIterator,i=e("../../lib/lang"),u=["text","paren.rparen","rparen","paren","punctuation.operator"],r=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],t,l={},o={'"':'"',"'":"'"},s=function(v){var $=-1;if(v.multiSelect&&($=v.selection.index,l.rangeCount!=v.multiSelect.rangeCount&&(l={rangeCount:v.multiSelect.rangeCount})),l[$])return t=l[$];t=l[$]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},f=function(v,$,C,b){var y=v.end.row-v.start.row;return{text:C+$+b,selection:[0,v.start.column+1,y,v.end.column+(y?0:1)]}},h=function(v){v=v||{},this.add("braces","insertion",function($,C,b,y,_){var E=b.getCursorPosition(),O=y.doc.getLine(E.row);if(_=="{"){s(b);var T=b.getSelectionRange(),x=y.doc.getTextRange(T);if(x!==""&&x!=="{"&&b.getWrapBehavioursEnabled())return f(T,x,"{","}");if(h.isSaneInsertion(b,y))return/[\]\}\)]/.test(O[E.column])||b.inMultiSelectMode||v.braces?(h.recordAutoInsert(b,y,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(b,y,"{"),{text:"{",selection:[1,1]})}else if(_=="}"){s(b);var w=O.substring(E.column,E.column+1);if(w=="}"){var M=y.$findOpeningBracket("}",{column:E.column+1,row:E.row});if(M!==null&&h.isAutoInsertedClosing(E,O,_))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(_==` -`||_==`\r -`){s(b);var k="";h.isMaybeInsertedClosing(E,O)&&(k=i.stringRepeat("}",t.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var w=O.substring(E.column,E.column+1);if(w==="}"){var S=y.findMatchingBracket({row:E.row,column:E.column+1},"}");if(!S)return null;var q=this.$getIndent(y.getLine(S.row))}else if(k)var q=this.$getIndent(O);else{h.clearMaybeInsertedClosing();return}var L=q+y.getTabString();return{text:` -`+L+` -`+q+k,selection:[1,L.length,1,L.length]}}else h.clearMaybeInsertedClosing()}),this.add("braces","deletion",function($,C,b,y,_){var E=y.doc.getTextRange(_);if(!_.isMultiLine()&&E=="{"){s(b);var O=y.doc.getLine(_.start.row),T=O.substring(_.end.column,_.end.column+1);if(T=="}")return _.end.column++,_;t.maybeInsertedBrackets--}}),this.add("parens","insertion",function($,C,b,y,_){if(_=="("){s(b);var E=b.getSelectionRange(),O=y.doc.getTextRange(E);if(O!==""&&b.getWrapBehavioursEnabled())return f(E,O,"(",")");if(h.isSaneInsertion(b,y))return h.recordAutoInsert(b,y,")"),{text:"()",selection:[1,1]}}else if(_==")"){s(b);var T=b.getCursorPosition(),x=y.doc.getLine(T.row),w=x.substring(T.column,T.column+1);if(w==")"){var M=y.$findOpeningBracket(")",{column:T.column+1,row:T.row});if(M!==null&&h.isAutoInsertedClosing(T,x,_))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function($,C,b,y,_){var E=y.doc.getTextRange(_);if(!_.isMultiLine()&&E=="("){s(b);var O=y.doc.getLine(_.start.row),T=O.substring(_.start.column+1,_.start.column+2);if(T==")")return _.end.column++,_}}),this.add("brackets","insertion",function($,C,b,y,_){if(_=="["){s(b);var E=b.getSelectionRange(),O=y.doc.getTextRange(E);if(O!==""&&b.getWrapBehavioursEnabled())return f(E,O,"[","]");if(h.isSaneInsertion(b,y))return h.recordAutoInsert(b,y,"]"),{text:"[]",selection:[1,1]}}else if(_=="]"){s(b);var T=b.getCursorPosition(),x=y.doc.getLine(T.row),w=x.substring(T.column,T.column+1);if(w=="]"){var M=y.$findOpeningBracket("]",{column:T.column+1,row:T.row});if(M!==null&&h.isAutoInsertedClosing(T,x,_))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function($,C,b,y,_){var E=y.doc.getTextRange(_);if(!_.isMultiLine()&&E=="["){s(b);var O=y.doc.getLine(_.start.row),T=O.substring(_.start.column+1,_.start.column+2);if(T=="]")return _.end.column++,_}}),this.add("string_dquotes","insertion",function($,C,b,y,_){var E=y.$mode.$quotes||o;if(_.length==1&&E[_]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(_)!=-1)return;s(b);var O=_,T=b.getSelectionRange(),x=y.doc.getTextRange(T);if(x!==""&&(x.length!=1||!E[x])&&b.getWrapBehavioursEnabled())return f(T,x,O,O);if(!x){var w=b.getCursorPosition(),M=y.doc.getLine(w.row),k=M.substring(w.column-1,w.column),S=M.substring(w.column,w.column+1),q=y.getTokenAt(w.row,w.column),L=y.getTokenAt(w.row,w.column+1);if(k=="\\"&&q&&/escape/.test(q.type))return null;var A=q&&/string|escape/.test(q.type),D=!L||/string|escape/.test(L.type),N;if(S==O)N=A!==D,N&&/string\.end/.test(L.type)&&(N=!1);else{if(A&&!D||A&&D)return null;var B=y.$mode.tokenRe;B.lastIndex=0;var R=B.test(k);B.lastIndex=0;var V=B.test(S),F=y.$mode.$pairQuotesAfter,P=F&&F[O]&&F[O].test(k);if(!P&&R||V||S&&!/[\s;,.})\]\\]/.test(S))return null;var j=M[w.column-2];if(k==O&&(j==O||B.test(j)))return null;N=!0}return{text:N?O+O:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function($,C,b,y,_){var E=y.$mode.$quotes||o,O=y.doc.getTextRange(_);if(!_.isMultiLine()&&E.hasOwnProperty(O)){s(b);var T=y.doc.getLine(_.start.row),x=T.substring(_.start.column+1,_.start.column+2);if(x==O)return _.end.column++,_}}),v.closeDocComment!==!1&&this.add("doc comment end","insertion",function($,C,b,y,_){if($==="doc-start"&&(_===` -`||_===`\r -`)&&b.selection.isEmpty()){var E=b.getCursorPosition(),O=y.doc.getLine(E.row),T=y.doc.getLine(E.row+1),x=this.$getIndent(O);if(/\s*\*/.test(T))return/^\s*\*/.test(O)?{text:_+x+"* ",selection:[1,3+x.length,1,3+x.length]}:{text:_+x+" * ",selection:[1,3+x.length,1,3+x.length]};if(/\/\*\*/.test(O.substring(0,E.column)))return{text:_+x+" * "+_+" "+x+"*/",selection:[1,4+x.length,1,4+x.length]}}})};h.isSaneInsertion=function(v,$){var C=v.getCursorPosition(),b=new c($,C.row,C.column);if(!this.$matchTokenType(b.getCurrentToken()||"text",u)){if(/[)}\]]/.test(v.session.getLine(C.row)[C.column]))return!0;var y=new c($,C.row,C.column+1);if(!this.$matchTokenType(y.getCurrentToken()||"text",u))return!1}return b.stepForward(),b.getCurrentTokenRow()!==C.row||this.$matchTokenType(b.getCurrentToken()||"text",r)},h.$matchTokenType=function(v,$){return $.indexOf(v.type||v)>-1},h.recordAutoInsert=function(v,$,C){var b=v.getCursorPosition(),y=$.doc.getLine(b.row);this.isAutoInsertedClosing(b,y,t.autoInsertedLineEnd[0])||(t.autoInsertedBrackets=0),t.autoInsertedRow=b.row,t.autoInsertedLineEnd=C+y.substr(b.column),t.autoInsertedBrackets++},h.recordMaybeInsert=function(v,$,C){var b=v.getCursorPosition(),y=$.doc.getLine(b.row);this.isMaybeInsertedClosing(b,y)||(t.maybeInsertedBrackets=0),t.maybeInsertedRow=b.row,t.maybeInsertedLineStart=y.substr(0,b.column)+C,t.maybeInsertedLineEnd=y.substr(b.column),t.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(v,$,C){return t.autoInsertedBrackets>0&&v.row===t.autoInsertedRow&&C===t.autoInsertedLineEnd[0]&&$.substr(v.column)===t.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(v,$){return t.maybeInsertedBrackets>0&&v.row===t.maybeInsertedRow&&$.substr(v.column)===t.maybeInsertedLineEnd&&$.substr(0,v.column)==t.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){t.autoInsertedLineEnd=t.autoInsertedLineEnd.substr(1),t.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){t&&(t.maybeInsertedBrackets=0,t.maybeInsertedRow=-1)},g.inherits(h,a),p.CstyleBehaviour=h}),ace.define("ace/unicode",["require","exports","module"],function(e,p,m){for(var g=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],a=0,c=[],i=0;i2?j%_!=_-1:j%_==0}}else{if(!this.blockComment)return!1;var O=this.blockComment.start,T=this.blockComment.end,x=new RegExp("^(\\s*)(?:"+r.escapeRegExp(O)+")"),w=new RegExp("(?:"+r.escapeRegExp(T)+")\\s*$"),M=function(N,B){S(N,B)||(!C||/\S/.test(N))&&($.insertInLine({row:B,column:N.length},T),$.insertInLine({row:B,column:y},O))},k=function(N,B){var R;(R=N.match(w))&&$.removeInLine(B,N.length-R[0].length,N.length),(R=N.match(x))&&$.removeInLine(B,R[1].length,R[0].length)},S=function(N,B){if(x.test(N))return!0;for(var R=f.getTokens(B),V=0;VN.length&&(D=N.length)}),y==1/0&&(y=D,C=!1,b=!1),E&&y%_!=0&&(y=Math.floor(y/_)*_),A(b?k:M)},this.toggleBlockComment=function(s,f,h,v){var $=this.blockComment;if(!!$){!$.start&&$[0]&&($=$[0]);var C=new t(f,v.row,v.column),b=C.getCurrentToken();f.selection;var y=f.selection.toOrientedRange(),_,E;if(b&&/comment/.test(b.type)){for(var O,T;b&&/comment/.test(b.type);){var x=b.value.indexOf($.start);if(x!=-1){var w=C.getCurrentTokenRow(),M=C.getCurrentTokenColumn()+x;O=new l(w,M,w,M+$.start.length);break}b=C.stepBackward()}for(var C=new t(f,v.row,v.column),b=C.getCurrentToken();b&&/comment/.test(b.type);){var x=b.value.indexOf($.end);if(x!=-1){var w=C.getCurrentTokenRow(),M=C.getCurrentTokenColumn()+x;T=new l(w,M,w,M+$.end.length);break}b=C.stepForward()}T&&f.remove(T),O&&(f.remove(O),_=O.start.row,E=-$.start.length)}else E=$.start.length,_=h.start.row,f.insert(h.end,$.end),f.insert(h.start,$.start);y.start.row==_&&(y.start.column+=E),y.end.row==_&&(y.end.column+=E),f.selection.fromOrientedRange(y)}},this.getNextLineIndent=function(s,f,h){return this.$getIndent(f)},this.checkOutdent=function(s,f,h){return!1},this.autoOutdent=function(s,f,h){},this.$getIndent=function(s){return s.match(/^\s*/)[0]},this.createWorker=function(s){return null},this.createModeDelegates=function(s){this.$embeds=[],this.$modes={};for(var f in s)if(s[f]){var h=s[f],v=h.prototype.$id,$=g.$modes[v];$||(g.$modes[v]=$=new h),g.$modes[f]||(g.$modes[f]=$),this.$embeds.push(f),this.$modes[f]=$}for(var C=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],f=0;fthis.row)){var l=u(t,{row:this.row,column:this.column},this.$insertRight);this.setPosition(l.row,l.column,!0)}},r.prototype.setPosition=function(t,l,o){var s;if(o?s={row:t,column:l}:s=this.$clipPositionToDocument(t,l),!(this.row==s.row&&this.column==s.column)){var f={row:this.row,column:this.column};this.row=s.row,this.column=s.column,this._signal("change",{old:f,value:s})}},r.prototype.detach=function(){this.document.off("change",this.$onChange)},r.prototype.attach=function(t){this.document=t||this.document,this.document.on("change",this.$onChange)},r.prototype.$clipPositionToDocument=function(t,l){var o={};return t>=this.document.getLength()?(o.row=Math.max(0,this.document.getLength()-1),o.column=this.document.getLine(o.row).length):t<0?(o.row=0,o.column=0):(o.row=t,o.column=Math.min(this.document.getLine(o.row).length,Math.max(0,l))),l<0&&(o.column=0),o},r}();c.prototype.$insertRight=!1,g.implement(c.prototype,a);function i(r,t,l){var o=l?r.column<=t.column:r.column=s&&(l=s-1,o=void 0);var f=this.getLine(l);return o==null&&(o=f.length),o=Math.min(Math.max(o,0),f.length),{row:l,column:o}},t.prototype.clonePos=function(l){return{row:l.row,column:l.column}},t.prototype.pos=function(l,o){return{row:l,column:o}},t.prototype.$clipPosition=function(l){var o=this.getLength();return l.row>=o?(l.row=Math.max(0,o-1),l.column=this.getLine(o-1).length):(l.row=Math.max(0,l.row),l.column=Math.min(Math.max(l.column,0),this.getLine(l.row).length)),l},t.prototype.insertFullLines=function(l,o){l=Math.min(Math.max(l,0),this.getLength());var s=0;l0,f=o=0&&this.applyDelta({start:this.pos(l,this.getLine(l).length),end:this.pos(l+1,0),action:"remove",lines:["",""]})},t.prototype.replace=function(l,o){if(l instanceof i||(l=i.fromPoints(l.start,l.end)),o.length===0&&l.isEmpty())return l.start;if(o==this.getTextRange(l))return l.end;this.remove(l);var s;return o?s=this.insert(l.start,o):s=l.start,s},t.prototype.applyDeltas=function(l){for(var o=0;o=0;o--)this.revertDelta(l[o])},t.prototype.applyDelta=function(l,o){var s=l.action=="insert";(s?l.lines.length<=1&&!l.lines[0]:!i.comparePoints(l.start,l.end))||(s&&l.lines.length>2e4?this.$splitAndapplyLargeDelta(l,2e4):(a(this.$lines,l,o),this._signal("change",l)))},t.prototype.$safeApplyDelta=function(l){var o=this.$lines.length;(l.action=="remove"&&l.start.row20){t.running=setTimeout(t.$worker,20);break}}t.currentLine=o,s==-1&&(s=o),h<=s&&t.fireUpdateEvent(h,s)}}}return i.prototype.setTokenizer=function(u){this.tokenizer=u,this.lines=[],this.states=[],this.start(0)},i.prototype.setDocument=function(u){this.doc=u,this.lines=[],this.states=[],this.stop()},i.prototype.fireUpdateEvent=function(u,r){var t={first:u,last:r};this._signal("update",{data:t})},i.prototype.start=function(u){this.currentLine=Math.min(u||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},i.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},i.prototype.$updateOnChange=function(u){var r=u.start.row,t=u.end.row-r;if(t===0)this.lines[r]=null;else if(u.action=="remove")this.lines.splice(r,t+1,null),this.states.splice(r,t+1,null);else{var l=Array(t+1);l.unshift(r,1),this.lines.splice.apply(this.lines,l),this.states.splice.apply(this.states,l)}this.currentLine=Math.min(r,this.currentLine,this.doc.getLength()),this.stop()},i.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},i.prototype.getTokens=function(u){return this.lines[u]||this.$tokenizeRow(u)},i.prototype.getState=function(u){return this.currentLine==u&&this.$tokenizeRow(u),this.states[u]||"start"},i.prototype.$tokenizeRow=function(u){var r=this.doc.getLine(u),t=this.states[u-1],l=this.tokenizer.getLineTokens(r,t,u);return this.states[u]+""!=l.state+""?(this.states[u]=l.state,this.lines[u+1]=null,this.currentLine>u+1&&(this.currentLine=u+1)):this.currentLine==u&&(this.currentLine=u+1),this.lines[u]=l.tokens},i.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},i}();g.implement(c.prototype,a),p.BackgroundTokenizer=c}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],function(e,p,m){var g=e("./lib/lang"),a=e("./range").Range,c=function(){function i(u,r,t){t===void 0&&(t="text"),this.setRegexp(u),this.clazz=r,this.type=t}return i.prototype.setRegexp=function(u){this.regExp+""!=u+""&&(this.regExp=u,this.cache=[])},i.prototype.update=function(u,r,t,l){if(!!this.regExp)for(var o=l.firstRow,s=l.lastRow,f={},h=o;h<=s;h++){var v=this.cache[h];v==null&&(v=g.getMatchOffsets(t.getLine(h),this.regExp),v.length>this.MAX_RANGES&&(v=v.slice(0,this.MAX_RANGES)),v=v.map(function(y){return new a(h,y.offset,h,y.offset+y.length)}),this.cache[h]=v.length?v:"");for(var $=v.length;$--;){var C=v[$].toScreenRange(t),b=C.toString();f[b]||(f[b]=!0,r.drawSingleLineMarker(u,C,this.clazz,l))}}},i}();c.prototype.MAX_RANGES=500,p.SearchHighlight=c}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,p,m){var g=e("../range").Range,a=function(){function c(i,u){this.foldData=i,Array.isArray(u)?this.folds=u:u=this.folds=[u];var r=u[u.length-1];this.range=new g(u[0].start.row,u[0].start.column,r.end.row,r.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(t){t.setFoldLine(this)},this)}return c.prototype.shiftRow=function(i){this.start.row+=i,this.end.row+=i,this.folds.forEach(function(u){u.start.row+=i,u.end.row+=i})},c.prototype.addFold=function(i){if(i.sameRow){if(i.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(i),this.folds.sort(function(u,r){return-u.range.compareEnd(r.start.row,r.start.column)}),this.range.compareEnd(i.start.row,i.start.column)>0?(this.end.row=i.end.row,this.end.column=i.end.column):this.range.compareStart(i.end.row,i.end.column)<0&&(this.start.row=i.start.row,this.start.column=i.start.column)}else if(i.start.row==this.end.row)this.folds.push(i),this.end.row=i.end.row,this.end.column=i.end.column;else if(i.end.row==this.start.row)this.folds.unshift(i),this.start.row=i.start.row,this.start.column=i.start.column;else throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");i.foldLine=this},c.prototype.containsRow=function(i){return i>=this.start.row&&i<=this.end.row},c.prototype.walk=function(i,u,r){var t=0,l=this.folds,o,s,f,h=!0;u==null&&(u=this.end.row,r=this.end.column);for(var v=0;v0)){var h=a(u,s.start);return f===0?r&&h!==0?-o-2:o:h>0||h===0&&!r?o:-o-1}}return-o-1},i.prototype.add=function(u){var r=!u.isEmpty(),t=this.pointIndex(u.start,r);t<0&&(t=-t-1);var l=this.pointIndex(u.end,r,t);return l<0?l=-l-1:l++,this.ranges.splice(t,l-t,u)},i.prototype.addList=function(u){for(var r=[],t=u.length;t--;)r.push.apply(r,this.add(u[t]));return r},i.prototype.substractPoint=function(u){var r=this.pointIndex(u);if(r>=0)return this.ranges.splice(r,1)},i.prototype.merge=function(){var u=[],r=this.ranges;r=r.sort(function(f,h){return a(f.start,h.start)});for(var t=r[0],l,o=1;o=0},i.prototype.containsPoint=function(u){return this.pointIndex(u)>=0},i.prototype.rangeAtPoint=function(u){var r=this.pointIndex(u);if(r>=0)return this.ranges[r]},i.prototype.clipRows=function(u,r){var t=this.ranges;if(t[0].start.row>r||t[t.length-1].start.row=l)break}if(u.action=="insert")for(var $=o-l,C=-r.column+t.column;fl)break;if(v.start.row==l&&v.start.column>=r.column&&(v.start.column==r.column&&this.$bias<=0||(v.start.column+=C,v.start.row+=$)),v.end.row==l&&v.end.column>=r.column){if(v.end.column==r.column&&this.$bias<0)continue;v.end.column==r.column&&C>0&&fv.start.column&&v.end.column==s[f+1].start.column&&(v.end.column-=C),v.end.column+=C,v.end.row+=$}}else for(var $=l-o,C=r.column-t.column;fo)break;v.end.rowr.column)&&(v.end.column=r.column,v.end.row=r.row):(v.end.column+=C,v.end.row+=$):v.end.row>o&&(v.end.row+=$),v.start.rowr.column)&&(v.start.column=r.column,v.start.row=r.row):(v.start.column+=C,v.start.row+=$):v.start.row>o&&(v.start.row+=$)}if($!=0&&f=t)return f;if(f.end.row>t)return null}return null},this.getNextFoldLine=function(t,l){var o=this.$foldData,s=0;for(l&&(s=o.indexOf(l)),s==-1&&(s=0),s;s=t)return f}return null},this.getFoldedRowCount=function(t,l){for(var o=this.$foldData,s=l-t+1,f=0;f=l){$=t?s-=l-$:s=0);break}else v>=t&&($>=t?s-=v-$:s-=v-t+1)}return s},this.$addFoldLine=function(t){return this.$foldData.push(t),this.$foldData.sort(function(l,o){return l.start.row-o.start.row}),t},this.addFold=function(t,l){var o=this.$foldData,s=!1,f;t instanceof c?f=t:(f=new c(l,t),f.collapseChildren=l.collapseChildren),this.$clipRangeToDocument(f.range);var h=f.start.row,v=f.start.column,$=f.end.row,C=f.end.column,b=this.getFoldAt(h,v,1),y=this.getFoldAt($,C,-1);if(b&&y==b)return b.addSubFold(f);b&&!b.range.isStart(h,v)&&this.removeFold(b),y&&!y.range.isEnd($,C)&&this.removeFold(y);var _=this.getFoldsInRange(f.range);_.length>0&&(this.removeFolds(_),f.collapseChildren||_.forEach(function(x){f.addSubFold(x)}));for(var E=0;E0&&this.foldAll(t.start.row+1,t.end.row,t.collapseChildren-1),t.subFolds=[]},this.expandFolds=function(t){t.forEach(function(l){this.expandFold(l)},this)},this.unfold=function(t,l){var o,s;if(t==null)o=new g(0,0,this.getLength(),0),l==null&&(l=!0);else if(typeof t=="number")o=new g(t,0,t,this.getLine(t).length);else if("row"in t)o=g.fromPoints(t,t);else{if(Array.isArray(t))return s=[],t.forEach(function(h){s=s.concat(this.unfold(h))},this),s;o=t}s=this.getFoldsInRangeList(o);for(var f=s;s.length==1&&g.comparePoints(s[0].start,o.start)<0&&g.comparePoints(s[0].end,o.end)>0;)this.expandFolds(s),s=this.getFoldsInRangeList(o);if(l!=!1?this.removeFolds(s):this.expandFolds(s),f.length)return f},this.isRowFolded=function(t,l){return!!this.getFoldLine(t,l)},this.getRowFoldEnd=function(t,l){var o=this.getFoldLine(t,l);return o?o.end.row:t},this.getRowFoldStart=function(t,l){var o=this.getFoldLine(t,l);return o?o.start.row:t},this.getFoldDisplayLine=function(t,l,o,s,f){s==null&&(s=t.start.row),f==null&&(f=0),l==null&&(l=t.end.row),o==null&&(o=this.getLine(l).length);var h=this.doc,v="";return t.walk(function($,C,b,y){if(!(CC)break;while(f&&v.test(f.type)&&!/^comment.start/.test(f.type));f=s.stepBackward()}else f=s.getCurrentToken();return $.end.row=s.getCurrentTokenRow(),$.end.column=s.getCurrentTokenColumn(),/^comment.end/.test(f.type)||($.end.column+=f.value.length-2),$}},this.foldAll=function(t,l,o,s){o==null&&(o=1e5);var f=this.foldWidgets;if(!!f){l=l||this.getLength(),t=t||0;for(var h=t;h=t&&(h=v.end.row,v.collapseChildren=o,this.addFold("...",v))}}},this.foldToLevel=function(t){for(this.foldAll();t-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var t=this;this.foldAll(null,null,null,function(l){for(var o=t.getTokens(l),s=0;s=0;){var h=o[s];if(h==null&&(h=o[s]=this.getFoldWidget(s)),h=="start"){var v=this.getFoldWidgetRange(s);if(f||(f=v),v&&v.end.row>=t)break}s--}return{range:s!==-1&&v,firstRange:f}},this.onFoldWidgetClick=function(t,l){l instanceof u&&(l=l.domEvent);var o={children:l.shiftKey,all:l.ctrlKey||l.metaKey,siblings:l.altKey},s=this.$toggleFoldWidget(t,o);if(!s){var f=l.target||l.srcElement;f&&/ace_fold-widget/.test(f.className)&&(f.className+=" ace_invalid")}},this.$toggleFoldWidget=function(t,l){if(!!this.getFoldWidget){var o=this.getFoldWidget(t),s=this.getLine(t),f=o==="end"?-1:1,h=this.getFoldAt(t,f===-1?0:s.length,f);if(h)return l.children||l.all?this.removeFold(h):this.expandFold(h),h;var v=this.getFoldWidgetRange(t,!0);if(v&&!v.isMultiLine()&&(h=this.getFoldAt(v.start.row,v.start.column,1),h&&v.isEqual(h.range)))return this.removeFold(h),h;if(l.siblings){var $=this.getParentFoldRangeData(t);if($.range)var C=$.range.start.row+1,b=$.range.end.row;this.foldAll(C,b,l.all?1e4:0)}else l.children?(b=v?v.end.row:this.getLength(),this.foldAll(t+1,b,l.all?1e4:0)):v&&(l.all&&(v.collapseChildren=1e4),this.addFold("...",v));return v}},this.toggleFoldWidget=function(t){var l=this.selection.getCursor().row;l=this.getRowFoldStart(l);var o=this.$toggleFoldWidget(l,{});if(!o){var s=this.getParentFoldRangeData(l,!0);if(o=s.range||s.firstRange,o){l=o.start.row;var f=this.getFoldAt(l,this.getLine(l).length,1);f?this.removeFold(f):this.addFold("...",o)}}},this.updateFoldWidgets=function(t){var l=t.start.row,o=t.end.row-l;if(o===0)this.foldWidgets[l]=null;else if(t.action=="remove")this.foldWidgets.splice(l,o+1,null);else{var s=Array(o+1);s.unshift(l,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}},this.tokenizerUpdateFoldWidgets=function(t){var l=t.data;l.first!=l.last&&this.foldWidgets.length>l.first&&this.foldWidgets.splice(l.first,this.foldWidgets.length)}}p.Folding=r}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,p,m){var g=e("../token_iterator").TokenIterator,a=e("../range").Range;function c(){this.findMatchingBracket=function(i,u){if(i.column==0)return null;var r=u||this.getLine(i.row).charAt(i.column-1);if(r=="")return null;var t=r.match(/([\(\[\{])|([\)\]\}])/);return t?t[1]?this.$findClosingBracket(t[1],i):this.$findOpeningBracket(t[2],i):null},this.getBracketRange=function(i){var u=this.getLine(i.row),r=!0,t,l=u.charAt(i.column-1),o=l&&l.match(/([\(\[\{])|([\)\]\}])/);if(o||(l=u.charAt(i.column),i={row:i.row,column:i.column+1},o=l&&l.match(/([\(\[\{])|([\)\]\}])/),r=!1),!o)return null;if(o[1]){var s=this.$findClosingBracket(o[1],i);if(!s)return null;t=a.fromPoints(i,s),r||(t.end.column++,t.start.column--),t.cursor=t.end}else{var s=this.$findOpeningBracket(o[2],i);if(!s)return null;t=a.fromPoints(s,i),r||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.getMatchingBracketRanges=function(i,u){var r=this.getLine(i.row),t=/([\(\[\{])|([\)\]\}])/,l=!u&&r.charAt(i.column-1),o=l&&l.match(t);if(o||(l=(u===void 0||u)&&r.charAt(i.column),i={row:i.row,column:i.column+1},o=l&&l.match(t)),!o)return null;var s=new a(i.row,i.column-1,i.row,i.column),f=o[1]?this.$findClosingBracket(o[1],i):this.$findOpeningBracket(o[2],i);if(!f)return[s];var h=new a(f.row,f.column,f.row,f.column+1);return[s,h]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(i,u,r){var t=this.$brackets[i],l=1,o=new g(this,u.row,u.column),s=o.getCurrentToken();if(s||(s=o.stepForward()),!!s){r||(r=new RegExp("(\\.?"+s.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var f=u.column-o.getCurrentTokenColumn()-2,h=s.value;;){for(;f>=0;){var v=h.charAt(f);if(v==t){if(l-=1,l==0)return{row:o.getCurrentTokenRow(),column:f+o.getCurrentTokenColumn()}}else v==i&&(l+=1);f-=1}do s=o.stepBackward();while(s&&!r.test(s.type));if(s==null)break;h=s.value,f=h.length-1}return null}},this.$findClosingBracket=function(i,u,r){var t=this.$brackets[i],l=1,o=new g(this,u.row,u.column),s=o.getCurrentToken();if(s||(s=o.stepForward()),!!s){r||(r=new RegExp("(\\.?"+s.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var f=u.column-o.getCurrentTokenColumn();;){for(var h=s.value,v=h.length;f"?t=!0:u.type.indexOf("tag-name")!==-1&&(r=!0));while(u&&!r);return u},this.$findClosingTag=function(i,u){var r,t=u.value,l=u.value,o=0,s=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);u=i.stepForward();var f=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+u.value.length),h=!1;do if(r=u,u=i.stepForward(),u){if(u.value===">"&&!h){var v=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);h=!0}if(u.type.indexOf("tag-name")!==-1){if(t=u.value,l===t){if(r.value==="<")o++;else if(r.value==="")var b=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);else return}}}else if(l===t&&u.value==="/>"&&(o--,o<0))var $=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+2),C=$,b=C,v=new a(f.end.row,f.end.column,f.end.row,f.end.column+1)}while(u&&o>=0);if(s&&v&&$&&b&&f&&C)return{openTag:new a(s.start.row,s.start.column,v.end.row,v.end.column),closeTag:new a($.start.row,$.start.column,b.end.row,b.end.column),openTagName:f,closeTagName:C}},this.$findOpeningTag=function(i,u){var r=i.getCurrentToken(),t=u.value,l=0,o=i.getCurrentTokenRow(),s=i.getCurrentTokenColumn(),f=s+2,h=new a(o,s,o,f);i.stepForward();var v=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+u.value.length);if(u=i.stepForward(),!(!u||u.value!==">")){var $=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);i.stepBackward(),i.stepBackward();do if(u=r,o=i.getCurrentTokenRow(),s=i.getCurrentTokenColumn(),f=s+u.value.length,r=i.stepBackward(),u){if(u.type.indexOf("tag-name")!==-1){if(t===u.value)if(r.value==="<"){if(l++,l>0){var C=new a(o,s,o,f),b=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);do u=i.stepForward();while(u&&u.value!==">");var y=new a(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1)}}else r.value===""){for(var _=0,E=r;E;){if(E.type.indexOf("tag-name")!==-1&&E.value===t){l--;break}else if(E.value==="<")break;E=i.stepBackward(),_++}for(var O=0;O<_;O++)i.stepForward()}}while(r&&l<=0);if(b&&y&&h&&$&&C&&v)return{openTag:new a(b.start.row,b.start.column,y.end.row,y.end.column),closeTag:new a(h.start.row,h.start.column,$.end.row,$.end.column),openTagName:C,closeTagName:v}}}}p.BracketMatch=c}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,p,m){var g=e("./lib/oop"),a=e("./lib/lang"),c=e("./bidihandler").BidiHandler,i=e("./config"),u=e("./lib/event_emitter").EventEmitter,r=e("./selection").Selection,t=e("./mode/text").Mode,l=e("./range").Range,o=e("./document").Document,s=e("./background_tokenizer").BackgroundTokenizer,f=e("./search_highlight").SearchHighlight,h=function(){function x(w,M){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.id="session"+ ++x.$uid,this.$foldData.toString=function(){return this.join(` -`)},this.bgTokenizer=new s(new t().getTokenizer(),this);var k=this;this.bgTokenizer.on("update",function(S){k._signal("tokenizerUpdate",S)}),this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),(typeof w!="object"||!w.getLine)&&(w=new o(w)),this.setDocument(w),this.selection=new r(this),this.$bidiHandler=new c(this),i.resetOptions(this),this.setMode(M),i._signal("session",this),this.destroyed=!1}return x.prototype.setDocument=function(w){this.doc&&this.doc.off("change",this.$onChange),this.doc=w,w.on("change",this.$onChange,!0),this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},x.prototype.getDocument=function(){return this.doc},x.prototype.$resetRowCache=function(w){if(!w){this.$docRowCache=[],this.$screenRowCache=[];return}var M=this.$docRowCache.length,k=this.$getRowCacheIndex(this.$docRowCache,w)+1;M>k&&(this.$docRowCache.splice(k,M),this.$screenRowCache.splice(k,M))},x.prototype.$getRowCacheIndex=function(w,M){for(var k=0,S=w.length-1;k<=S;){var q=k+S>>1,L=w[q];if(M>L)k=q+1;else if(M=M));L++);return S=k[L],S?(S.index=L,S.start=q-S.value.length,S):null},x.prototype.setUndoManager=function(w){if(this.$undoManager=w,this.$informUndoManager&&this.$informUndoManager.cancel(),w){var M=this;w.addSession(this),this.$syncInformUndoManager=function(){M.$informUndoManager.cancel(),M.mergeUndoDeltas=!1},this.$informUndoManager=a.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},x.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},x.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},x.prototype.getTabString=function(){return this.getUseSoftTabs()?a.stringRepeat(" ",this.getTabSize()):" "},x.prototype.setUseSoftTabs=function(w){this.setOption("useSoftTabs",w)},x.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},x.prototype.setTabSize=function(w){this.setOption("tabSize",w)},x.prototype.getTabSize=function(){return this.$tabSize},x.prototype.isTabStop=function(w){return this.$useSoftTabs&&w.column%this.$tabSize==0},x.prototype.setNavigateWithinSoftTabs=function(w){this.setOption("navigateWithinSoftTabs",w)},x.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},x.prototype.setOverwrite=function(w){this.setOption("overwrite",w)},x.prototype.getOverwrite=function(){return this.$overwrite},x.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},x.prototype.addGutterDecoration=function(w,M){this.$decorations[w]||(this.$decorations[w]=""),this.$decorations[w]+=" "+M,this._signal("changeBreakpoint",{})},x.prototype.removeGutterDecoration=function(w,M){this.$decorations[w]=(this.$decorations[w]||"").replace(" "+M,""),this._signal("changeBreakpoint",{})},x.prototype.getBreakpoints=function(){return this.$breakpoints},x.prototype.setBreakpoints=function(w){this.$breakpoints=[];for(var M=0;M0&&(S=!!k.charAt(M-1).match(this.tokenRe)),S||(S=!!k.charAt(M).match(this.tokenRe)),S)var q=this.tokenRe;else if(/^\s+$/.test(k.slice(M-1,M+1)))var q=/\s/;else var q=this.nonTokenRe;var L=M;if(L>0){do L--;while(L>=0&&k.charAt(L).match(q));L++}for(var A=M;Aw&&(w=M.screenWidth)}),this.lineWidgetWidth=w},x.prototype.$computeWidth=function(w){if(this.$modified||w){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var M=this.doc.getAllLines(),k=this.$rowLengthCache,S=0,q=0,L=this.$foldData[q],A=L?L.start.row:1/0,D=M.length,N=0;NA){if(N=L.end.row+1,N>=D)break;L=this.$foldData[q++],A=L?L.start.row:1/0}k[N]==null&&(k[N]=this.$getStringScreenWidth(M[N])[0]),k[N]>S&&(S=k[N])}this.screenWidth=S}},x.prototype.getLine=function(w){return this.doc.getLine(w)},x.prototype.getLines=function(w,M){return this.doc.getLines(w,M)},x.prototype.getLength=function(){return this.doc.getLength()},x.prototype.getTextRange=function(w){return this.doc.getTextRange(w||this.selection.getRange())},x.prototype.insert=function(w,M){return this.doc.insert(w,M)},x.prototype.remove=function(w){return this.doc.remove(w)},x.prototype.removeFullLines=function(w,M){return this.doc.removeFullLines(w,M)},x.prototype.undoChanges=function(w,M){if(!!w.length){this.$fromUndo=!0;for(var k=w.length-1;k!=-1;k--){var S=w[k];S.action=="insert"||S.action=="remove"?this.doc.revertDelta(S):S.folds&&this.addFolds(S.folds)}!M&&this.$undoSelect&&(w.selectionBefore?this.selection.fromJSON(w.selectionBefore):this.selection.setRange(this.$getUndoSelection(w,!0))),this.$fromUndo=!1}},x.prototype.redoChanges=function(w,M){if(!!w.length){this.$fromUndo=!0;for(var k=0;kw.end.column&&(L.start.column+=D),L.end.row==w.end.row&&L.end.column>w.end.column&&(L.end.column+=D)),A&&L.start.row>=w.end.row&&(L.start.row+=A,L.end.row+=A)}if(L.end=this.insert(L.start,S),q.length){var N=w.start,B=L.start,A=B.row-N.row,D=B.column-N.column;this.addFolds(q.map(function(F){return F=F.clone(),F.start.row==N.row&&(F.start.column+=D),F.end.row==N.row&&(F.end.column+=D),F.start.row+=A,F.end.row+=A,F}))}return L},x.prototype.indentRows=function(w,M,k){k=k.replace(/\t/g,this.getTabString());for(var S=w;S<=M;S++)this.doc.insertInLine({row:S,column:0},k)},x.prototype.outdentRows=function(w){for(var M=w.collapseRows(),k=new l(0,0,0,0),S=this.getTabSize(),q=M.start.row;q<=M.end.row;++q){var L=this.getLine(q);k.start.row=q,k.end.row=q;for(var A=0;A0){var S=this.getRowFoldEnd(M+k);if(S>this.doc.getLength()-1)return 0;var q=S-M}else{w=this.$clipRowToDocument(w),M=this.$clipRowToDocument(M);var q=M-w+1}var L=new l(w,0,M,Number.MAX_VALUE),A=this.getFoldsInRange(L).map(function(N){return N=N.clone(),N.start.row+=q,N.end.row+=q,N}),D=k==0?this.doc.getLines(w,M):this.doc.removeFullLines(w,M);return this.doc.insertFullLines(w+q,D),A.length&&this.addFolds(A),q},x.prototype.moveLinesUp=function(w,M){return this.$moveLines(w,M,-1)},x.prototype.moveLinesDown=function(w,M){return this.$moveLines(w,M,1)},x.prototype.duplicateLines=function(w,M){return this.$moveLines(w,M,0)},x.prototype.$clipRowToDocument=function(w){return Math.max(0,Math.min(w,this.doc.getLength()-1))},x.prototype.$clipColumnToRow=function(w,M){return M<0?0:Math.min(this.doc.getLine(w).length,M)},x.prototype.$clipPositionToDocument=function(w,M){if(M=Math.max(0,M),w<0)w=0,M=0;else{var k=this.doc.getLength();w>=k?(w=k-1,M=this.doc.getLine(k-1).length):M=Math.min(this.doc.getLine(w).length,M)}return{row:w,column:M}},x.prototype.$clipRangeToDocument=function(w){w.start.row<0?(w.start.row=0,w.start.column=0):w.start.column=this.$clipColumnToRow(w.start.row,w.start.column);var M=this.doc.getLength()-1;return w.end.row>M?(w.end.row=M,w.end.column=this.doc.getLine(M).length):w.end.column=this.$clipColumnToRow(w.end.row,w.end.column),w},x.prototype.setUseWrapMode=function(w){if(w!=this.$useWrapMode){if(this.$useWrapMode=w,this.$modified=!0,this.$resetRowCache(0),w){var M=this.getLength();this.$wrapData=Array(M),this.$updateWrapData(0,M-1)}this._signal("changeWrapMode")}},x.prototype.getUseWrapMode=function(){return this.$useWrapMode},x.prototype.setWrapLimitRange=function(w,M){(this.$wrapLimitRange.min!==w||this.$wrapLimitRange.max!==M)&&(this.$wrapLimitRange={min:w,max:M},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},x.prototype.adjustWrapLimit=function(w,M){var k=this.$wrapLimitRange;k.max<0&&(k={min:M,max:M});var S=this.$constrainWrapLimit(w,k.min,k.max);return S!=this.$wrapLimit&&S>1?(this.$wrapLimit=S,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},x.prototype.$constrainWrapLimit=function(w,M,k){return M&&(w=Math.max(M,w)),k&&(w=Math.min(k,w)),w},x.prototype.getWrapLimit=function(){return this.$wrapLimit},x.prototype.setWrapLimit=function(w){this.setWrapLimitRange(w,w)},x.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},x.prototype.$updateInternalDataOnChange=function(w){var M=this.$useWrapMode,k=w.action,S=w.start,q=w.end,L=S.row,A=q.row,D=A-L,N=null;if(this.$updating=!0,D!=0)if(k==="remove"){this[M?"$wrapData":"$rowLengthCache"].splice(L,D);var B=this.$foldData;N=this.getFoldsInRange(w),this.removeFolds(N);var R=this.getFoldLine(q.row),V=0;if(R){R.addRemoveChars(q.row,q.column,S.column-q.column),R.shiftRow(-D);var F=this.getFoldLine(L);F&&F!==R&&(F.merge(R),R=F),V=B.indexOf(R)+1}for(V;V=q.row&&R.shiftRow(-D)}A=L}else{var P=Array(D);P.unshift(L,0);var j=M?this.$wrapData:this.$rowLengthCache;j.splice.apply(j,P);var B=this.$foldData,R=this.getFoldLine(L),V=0;if(R){var I=R.range.compareInside(S.row,S.column);I==0?(R=R.split(S.row,S.column),R&&(R.shiftRow(D),R.addRemoveChars(A,0,q.column-S.column))):I==-1&&(R.addRemoveChars(L,0,q.column-S.column),R.shiftRow(D)),V=B.indexOf(R)+1}for(V;V=L&&R.shiftRow(D)}}else{D=Math.abs(w.start.column-w.end.column),k==="remove"&&(N=this.getFoldsInRange(w),this.removeFolds(N),D=-D);var R=this.getFoldLine(L);R&&R.addRemoveChars(L,S.column,D)}return M&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,M?this.$updateWrapData(L,A):this.$updateRowLengthCache(L,A),N},x.prototype.$updateRowLengthCache=function(w,M,k){this.$rowLengthCache[w]=null,this.$rowLengthCache[M]=null},x.prototype.$updateWrapData=function(w,M){var k=this.doc.getAllLines(),S=this.getTabSize(),q=this.$wrapData,L=this.$wrapLimit,A,D,N=w;for(M=Math.min(M,k.length-1);N<=M;)D=this.getFoldLine(N,D),D?(A=[],D.walk(function(B,R,V,F){var P;if(B!=null){P=this.$getDisplayTokens(B,A.length),P[0]=C;for(var j=1;jM-F;){var P=L+M-F;if(w[P-1]>=_&&w[P]>=_){V(P);continue}if(w[P]==C||w[P]==b){for(P;P!=L-1&&w[P]!=C;P--);if(P>L){V(P);continue}for(P=L+M,P;P>2)),L-1);P>j&&w[P]j&&w[P]j&&w[P]==y;)P--}else for(;P>j&&w[P]<_;)P--;if(P>j){V(++P);continue}P=L+M,w[P]==$&&P--,V(P-F)}return S},x.prototype.$getDisplayTokens=function(w,M){var k=[],S;M=M||0;for(var q=0;q39&&L<48||L>57&&L<64?k.push(y):L>=4352&&T(L)?k.push(v,$):k.push(v)}return k},x.prototype.$getStringScreenWidth=function(w,M,k){if(M==0)return[0,0];M==null&&(M=1/0),k=k||0;var S,q;for(q=0;q=4352&&T(S)?k+=2:k+=1,!(k>M));q++);return[k,q]},x.prototype.getRowLength=function(w){var M=1;return this.lineWidgets&&(M+=this.lineWidgets[w]&&this.lineWidgets[w].rowCount||0),!this.$useWrapMode||!this.$wrapData[w]?M:this.$wrapData[w].length+M},x.prototype.getRowLineCount=function(w){return!this.$useWrapMode||!this.$wrapData[w]?1:this.$wrapData[w].length+1},x.prototype.getRowWrapIndent=function(w){if(this.$useWrapMode){var M=this.screenToDocumentPosition(w,Number.MAX_VALUE),k=this.$wrapData[M.row];return k.length&&k[0]=0)var D=B[R],q=this.$docRowCache[R],F=w>B[V-1];else var F=!V;for(var P=this.getLength()-1,j=this.getNextFoldLine(q),I=j?j.start.row:1/0;D<=w&&(N=this.getRowLength(q),!(D+N>w||q>=P));)D+=N,q++,q>I&&(q=j.end.row+1,j=this.getNextFoldLine(q,j),I=j?j.start.row:1/0),F&&(this.$docRowCache.push(q),this.$screenRowCache.push(D));if(j&&j.start.row<=q)S=this.getFoldDisplayLine(j),q=j.start.row;else{if(D+N<=w||q>P)return{row:P,column:this.getLine(P).length};S=this.getLine(q),j=null}var W=0,H=Math.floor(w-D);if(this.$useWrapMode){var z=this.$wrapData[q];z&&(A=z[H],H>0&&z.length&&(W=z.indent,L=z[H-1]||z[z.length-1],S=S.substring(L)))}return k!==void 0&&this.$bidiHandler.isBidiRow(D+H,q,H)&&(M=this.$bidiHandler.offsetToCol(k)),L+=this.$getStringScreenWidth(S,M-W)[1],this.$useWrapMode&&L>=A&&(L=A-1),j?j.idxToPosition(L):{row:q,column:L}},x.prototype.documentToScreenPosition=function(w,M){if(typeof M=="undefined")var k=this.$clipPositionToDocument(w.row,w.column);else k=this.$clipPositionToDocument(w,M);w=k.row,M=k.column;var S=0,q=null,L=null;L=this.getFoldAt(w,M,1),L&&(w=L.start.row,M=L.start.column);var A,D=0,N=this.$docRowCache,B=this.$getRowCacheIndex(N,w),R=N.length;if(R&&B>=0)var D=N[B],S=this.$screenRowCache[B],V=w>N[R-1];else var V=!R;for(var F=this.getNextFoldLine(D),P=F?F.start.row:1/0;D=P){if(A=F.end.row+1,A>w)break;F=this.getNextFoldLine(A,F),P=F?F.start.row:1/0}else A=D+1;S+=this.getRowLength(D),D=A,V&&(this.$docRowCache.push(D),this.$screenRowCache.push(S))}var j="";F&&D>=P?(j=this.getFoldDisplayLine(F,w,M),q=F.start.row):(j=this.getLine(w).substring(0,M),q=w);var I=0;if(this.$useWrapMode){var W=this.$wrapData[q];if(W){for(var H=0;j.length>=W[H];)S++,H++;j=j.substring(W[H-1]||0,j.length),I=H>0?W.indent:0}}return this.lineWidgets&&this.lineWidgets[D]&&this.lineWidgets[D].rowsAbove&&(S+=this.lineWidgets[D].rowsAbove),{row:S,column:I+this.$getStringScreenWidth(j)[0]}},x.prototype.documentToScreenColumn=function(w,M){return this.documentToScreenPosition(w,M).column},x.prototype.documentToScreenRow=function(w,M){return this.documentToScreenPosition(w,M).row},x.prototype.getScreenLength=function(){var w=0,M=null;if(this.$useWrapMode)for(var q=this.$wrapData.length,L=0,S=0,M=this.$foldData[S++],A=M?M.start.row:1/0;LA&&(L=M.end.row+1,M=this.$foldData[S++],A=M?M.start.row:1/0)}else{w=this.getLength();for(var k=this.$foldData,S=0;Sk));L++);return[S,L]})},x.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection.detach()},x}();h.$uid=0,h.prototype.$modes=i.$modes,h.prototype.getValue=h.prototype.toString,h.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},h.prototype.$overwrite=!1,h.prototype.$mode=null,h.prototype.$modeId=null,h.prototype.$scrollTop=0,h.prototype.$scrollLeft=0,h.prototype.$wrapLimit=80,h.prototype.$useWrapMode=!1,h.prototype.$wrapLimitRange={min:null,max:null},h.prototype.lineWidgets=null,h.prototype.isFullWidth=T,g.implement(h.prototype,u);var v=1,$=2,C=3,b=4,y=9,_=10,E=11,O=12;function T(x){return x<4352?!1:x>=4352&&x<=4447||x>=4515&&x<=4519||x>=4602&&x<=4607||x>=9001&&x<=9002||x>=11904&&x<=11929||x>=11931&&x<=12019||x>=12032&&x<=12245||x>=12272&&x<=12283||x>=12288&&x<=12350||x>=12353&&x<=12438||x>=12441&&x<=12543||x>=12549&&x<=12589||x>=12593&&x<=12686||x>=12688&&x<=12730||x>=12736&&x<=12771||x>=12784&&x<=12830||x>=12832&&x<=12871||x>=12880&&x<=13054||x>=13056&&x<=19903||x>=19968&&x<=42124||x>=42128&&x<=42182||x>=43360&&x<=43388||x>=44032&&x<=55203||x>=55216&&x<=55238||x>=55243&&x<=55291||x>=63744&&x<=64255||x>=65040&&x<=65049||x>=65072&&x<=65106||x>=65108&&x<=65126||x>=65128&&x<=65131||x>=65281&&x<=65376||x>=65504&&x<=65510}e("./edit_session/folding").Folding.call(h.prototype),e("./edit_session/bracket_match").BracketMatch.call(h.prototype),i.defineOptions(h.prototype,"session",{wrap:{set:function(x){if(!x||x=="off"?x=!1:x=="free"?x=!0:x=="printMargin"?x=-1:typeof x=="string"&&(x=parseInt(x,10)||!1),this.$wrap!=x)if(this.$wrap=x,!x)this.setUseWrapMode(!1);else{var w=typeof x=="number"?x:null;this.setWrapLimitRange(w,w),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(x){x=x=="auto"?this.$mode.type!="text":x!="text",x!=this.$wrapAsCode&&(this.$wrapAsCode=x,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(x){this.$useWorker=x,this.$stopWorker(),x&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(x){x=parseInt(x),x>0&&this.$tabSize!==x&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=x,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(x){this.setFoldStyle(x)},handlesSet:!0},overwrite:{set:function(x){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(x){this.doc.setNewLineMode(x)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(x){this.setMode(x)},get:function(){return this.$modeId},handlesSet:!0}}),p.EditSession=h}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,p,m){var g=e("./lib/lang"),a=e("./lib/oop"),c=e("./range").Range,i=function(){function r(){this.$options={}}return r.prototype.set=function(t){return a.mixin(this.$options,t),this},r.prototype.getOptions=function(){return g.copyObject(this.$options)},r.prototype.setOptions=function(t){this.$options=t},r.prototype.find=function(t){var l=this.$options,o=this.$matchIterator(t,l);if(!o)return!1;var s=null;return o.forEach(function(f,h,v,$){return s=new c(f,h,v,$),h==$&&l.start&&l.start.start&&l.skipCurrent!=!1&&s.isEqual(l.start)?(s=null,!1):!0}),s},r.prototype.findAll=function(t){var l=this.$options;if(!l.needle)return[];this.$assembleRegExp(l);var o=l.range,s=o?t.getLines(o.start.row,o.end.row):t.doc.getAllLines(),f=[],h=l.re;if(l.$isMultiLine){var v=h.length,$=s.length-v,C;e:for(var b=h.offset||0;b<=$;b++){for(var y=0;yO||(f.push(C=new c(b,O,b+v-1,T)),v>2&&(b=b+v-2))}}else for(var x=0;xS&&f[y].end.row==q;)y--;for(f=f.slice(x,y+1),x=0,y=f.length;x=$;O--)if(_(O,Number.MAX_VALUE,E))return;if(l.wrap!=!1){for(O=C,$=v.row;O>=$;O--)if(_(O,Number.MAX_VALUE,E))return}}};else var b=function(O){var T=v.row;if(!_(T,v.column,O)){for(T=T+1;T<=C;T++)if(_(T,0,O))return;if(l.wrap!=!1){for(T=$,C=v.row;T<=C;T++)if(_(T,0,O))return}}};if(l.$isMultiLine)var y=o.length,_=function(E,O,T){var x=s?E-y+1:E;if(!(x<0||x+y>t.getLength())){var w=t.getLine(x),M=w.search(o[0]);if(!(!s&&MO)&&T(x,M,x+y-1,S))return!0}}};else if(s)var _=function(O,T,x){var w=t.getLine(O),M=[],k,S=0;for(o.lastIndex=0;k=o.exec(w);){var q=k[0].length;if(S=k.index,!q){if(S>=w.length)break;o.lastIndex=S+=1}if(k.index+q>T)break;M.push(k.index,q)}for(var L=M.length-1;L>=0;L-=2){var A=M[L-1],q=M[L];if(x(O,A,O,A+q))return!0}};else var _=function(O,T,x){var w=t.getLine(O),M,k;for(o.lastIndex=T;k=o.exec(w);){var S=k[0].length;if(M=k.index,x(O,M,O,M+S))return!0;if(!S&&(o.lastIndex=M+=1,M>=w.length))return!1}};return{forEach:b}},r}();function u(r,t){function l(o){return/\w/.test(o)||t.regExp?"\\b":""}return l(r[0])+r+l(r[r.length-1])}p.Search=i}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,p,m){var g=e("../lib/keys"),a=e("../lib/useragent"),c=g.KEY_MODS;function i(r,t){this.platform=t||(a.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(r),this.$singleCommand=!0}function u(r,t){i.call(this,r,t),this.$singleCommand=!1}u.prototype=i.prototype,function(){this.addCommand=function(t){this.commands[t.name]&&this.removeCommand(t),this.commands[t.name]=t,t.bindKey&&this._buildKeyHash(t)},this.removeCommand=function(t,l){var o=t&&(typeof t=="string"?t:t.name);t=this.commands[o],l||delete this.commands[o];var s=this.commandKeyBinding;for(var f in s){var h=s[f];if(h==t)delete s[f];else if(Array.isArray(h)){var v=h.indexOf(t);v!=-1&&(h.splice(v,1),h.length==1&&(s[f]=h[0]))}}},this.bindKey=function(t,l,o){if(typeof t=="object"&&t&&(o==null&&(o=t.position),t=t[this.platform]),!!t){if(typeof l=="function")return this.addCommand({exec:l,bindKey:t,name:l.name||t});t.split("|").forEach(function(s){var f="";if(s.indexOf(" ")!=-1){var h=s.split(/\s+/);s=h.pop(),h.forEach(function(C){var b=this.parseKeys(C),y=c[b.hashId]+b.key;f+=(f?" ":"")+y,this._addCommandToBinding(f,"chainKeys")},this),f+=" "}var v=this.parseKeys(s),$=c[v.hashId]+v.key;this._addCommandToBinding(f+$,l,o)},this)}};function r(t){return typeof t=="object"&&t.bindKey&&t.bindKey.position||(t.isDefault?-100:0)}this._addCommandToBinding=function(t,l,o){var s=this.commandKeyBinding,f;if(!l)delete s[t];else if(!s[t]||this.$singleCommand)s[t]=l;else{Array.isArray(s[t])?(f=s[t].indexOf(l))!=-1&&s[t].splice(f,1):s[t]=[s[t]],typeof o!="number"&&(o=r(l));var h=s[t];for(f=0;fo)break}h.splice(f,0,l)}},this.addCommands=function(t){t&&Object.keys(t).forEach(function(l){var o=t[l];if(!!o){if(typeof o=="string")return this.bindKey(o,l);typeof o=="function"&&(o={exec:o}),typeof o=="object"&&(o.name||(o.name=l),this.addCommand(o))}},this)},this.removeCommands=function(t){Object.keys(t).forEach(function(l){this.removeCommand(t[l])},this)},this.bindKeys=function(t){Object.keys(t).forEach(function(l){this.bindKey(l,t[l])},this)},this._buildKeyHash=function(t){this.bindKey(t.bindKey,t)},this.parseKeys=function(t){var l=t.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function($){return $}),o=l.pop(),s=g[o];if(g.FUNCTION_KEYS[s])o=g.FUNCTION_KEYS[s].toLowerCase();else if(l.length){if(l.length==1&&l[0]=="shift")return{key:o.toUpperCase(),hashId:-1}}else return{key:o,hashId:-1};for(var f=0,h=l.length;h--;){var v=g.KEY_MODS[l[h]];if(v==null)return typeof console!="undefined"&&console.error("invalid modifier "+l[h]+" in "+t),!1;f|=v}return{key:o,hashId:f}},this.findKeyCommand=function(l,o){var s=c[l]+o;return this.commandKeyBinding[s]},this.handleKeyboard=function(t,l,o,s){if(!(s<0)){var f=c[l]+o,h=this.commandKeyBinding[f];return t.$keyChain&&(t.$keyChain+=" "+f,h=this.commandKeyBinding[t.$keyChain]||h),h&&(h=="chainKeys"||h[h.length-1]=="chainKeys")?(t.$keyChain=t.$keyChain||f,{command:"null"}):(t.$keyChain&&((!l||l==4)&&o.length==1?t.$keyChain=t.$keyChain.slice(0,-f.length-1):(l==-1||s>0)&&(t.$keyChain="")),{command:h})}},this.getStatusText=function(t,l){return l.$keyChain||""}}.call(i.prototype),p.HashHandler=i,p.MultiHashHandler=u}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,p,m){var g=this&&this.__extends||function(){var r=function(t,l){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var f in s)Object.prototype.hasOwnProperty.call(s,f)&&(o[f]=s[f])},r(t,l)};return function(t,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");r(t,l);function o(){this.constructor=t}t.prototype=l===null?Object.create(l):(o.prototype=l.prototype,new o)}}(),a=e("../lib/oop"),c=e("../keyboard/hash_handler").MultiHashHandler,i=e("../lib/event_emitter").EventEmitter,u=function(r){g(t,r);function t(l,o){var s=r.call(this,o,l)||this;return s.byName=s.commands,s.setDefaultHandler("exec",function(f){return f.args?f.command.exec(f.editor,f.args,f.event,!1):f.command.exec(f.editor,{},f.event,!0)}),s}return t.prototype.exec=function(l,o,s){if(Array.isArray(l)){for(var f=l.length;f--;)if(this.exec(l[f],o,s))return!0;return!1}if(typeof l=="string"&&(l=this.commands[l]),!l||o&&o.$readOnly&&!l.readOnly||this.$checkCommandState!=!1&&l.isAvailable&&!l.isAvailable(o))return!1;var h={editor:o,command:l,args:s};return h.returnValue=this._emit("exec",h),this._signal("afterExec",h),h.returnValue!==!1},t.prototype.toggleRecording=function(l){if(!this.$inReplay)return l&&l._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(o){this.macro.push([o.command,o.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},t.prototype.replay=function(l){if(!(this.$inReplay||!this.macro)){if(this.recording)return this.toggleRecording(l);try{this.$inReplay=!0,this.macro.forEach(function(o){typeof o=="string"?this.exec(o,l):this.exec(o[0],l,o[1])},this)}finally{this.$inReplay=!1}}},t.prototype.trimMacro=function(l){return l.map(function(o){return typeof o[0]!="string"&&(o[0]=o[0].name),o[1]||(o=o[0]),o})},t}(c);a.implement(u.prototype,i),p.CommandManager=u}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,p,m){var g=e("../lib/lang"),a=e("../config"),c=e("../range").Range;function i(r,t){return{win:r,mac:t}}p.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:i("Ctrl-,","Command-,"),exec:function(r){a.loadModule("ace/ext/settings_menu",function(t){t.init(r),r.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:i("Alt-E","F4"),exec:function(r){a.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(r,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:i("Alt-Shift-E","Shift-F4"),exec:function(r){a.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(r,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:i("Ctrl-A","Command-A"),exec:function(r){r.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:i(null,"Ctrl-L"),exec:function(r){r.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:i("Ctrl-L","Command-L"),exec:function(r,t){typeof t=="number"&&!isNaN(t)&&r.gotoLine(t),r.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:i("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(r){r.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:i("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(r){r.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:i("F2","F2"),exec:function(r){r.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:i("Alt-F2","Alt-F2"),exec:function(r){r.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:i(null,"Ctrl-Command-Option-0"),exec:function(r){r.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:i(null,"Ctrl-Command-Option-0"),exec:function(r){r.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:i("Alt-0","Command-Option-0"),exec:function(r){r.session.foldAll(),r.session.unfold(r.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:i("Alt-Shift-0","Command-Option-Shift-0"),exec:function(r){r.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:i("Ctrl-K","Command-G"),exec:function(r){r.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:i("Ctrl-Shift-K","Command-Shift-G"),exec:function(r){r.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:i("Alt-K","Ctrl-G"),exec:function(r){r.selection.isEmpty()?r.selection.selectWord():r.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:i("Alt-Shift-K","Ctrl-Shift-G"),exec:function(r){r.selection.isEmpty()?r.selection.selectWord():r.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:i("Ctrl-F","Command-F"),exec:function(r){a.loadModule("ace/ext/searchbox",function(t){t.Search(r)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(r){r.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:i("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(r){r.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:i("Ctrl-Home","Command-Home|Command-Up"),exec:function(r){r.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:i("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(r){r.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:i("Up","Up|Ctrl-P"),exec:function(r,t){r.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:i("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(r){r.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:i("Ctrl-End","Command-End|Command-Down"),exec:function(r){r.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:i("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(r){r.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:i("Down","Down|Ctrl-N"),exec:function(r,t){r.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:i("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(r){r.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:i("Ctrl-Left","Option-Left"),exec:function(r){r.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:i("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(r){r.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:i("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(r){r.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:i("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(r){r.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:i("Left","Left|Ctrl-B"),exec:function(r,t){r.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:i("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(r){r.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:i("Ctrl-Right","Option-Right"),exec:function(r){r.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:i("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(r){r.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:i("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(r){r.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:i("Shift-Right","Shift-Right"),exec:function(r){r.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:i("Right","Right|Ctrl-F"),exec:function(r,t){r.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(r){r.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:i(null,"Option-PageDown"),exec:function(r){r.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:i("PageDown","PageDown|Ctrl-V"),exec:function(r){r.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(r){r.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:i(null,"Option-PageUp"),exec:function(r){r.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(r){r.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:i("Ctrl-Up",null),exec:function(r){r.renderer.scrollBy(0,-2*r.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:i("Ctrl-Down",null),exec:function(r){r.renderer.scrollBy(0,2*r.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(r){r.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(r){r.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:i("Ctrl-Alt-E","Command-Option-E"),exec:function(r){r.commands.toggleRecording(r)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:i("Ctrl-Shift-E","Command-Shift-E"),exec:function(r){r.commands.replay(r)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:i("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(r){r.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:i("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(r){r.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:i("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(r){r.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:i(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(r){},readOnly:!0},{name:"cut",description:"Cut",exec:function(r){var t=r.$copyWithEmptySelection&&r.selection.isEmpty(),l=t?r.selection.getLineRange():r.selection.getRange();r._emit("cut",l),l.isEmpty()||r.session.remove(l),r.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(r,t){r.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:i("Ctrl-D","Command-D"),exec:function(r){r.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:i("Ctrl-Shift-D","Command-Shift-D"),exec:function(r){r.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:i("Ctrl-Alt-S","Command-Alt-S"),exec:function(r){r.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:i("Ctrl-/","Command-/"),exec:function(r){r.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:i("Ctrl-Shift-/","Command-Shift-/"),exec:function(r){r.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:i("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(r){r.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:i("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(r){r.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:i("Ctrl-H","Command-Option-F"),exec:function(r){a.loadModule("ace/ext/searchbox",function(t){t.Search(r,!0)})}},{name:"undo",description:"Undo",bindKey:i("Ctrl-Z","Command-Z"),exec:function(r){r.undo()}},{name:"redo",description:"Redo",bindKey:i("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(r){r.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:i("Alt-Shift-Up","Command-Option-Up"),exec:function(r){r.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:i("Alt-Up","Option-Up"),exec:function(r){r.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:i("Alt-Shift-Down","Command-Option-Down"),exec:function(r){r.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:i("Alt-Down","Option-Down"),exec:function(r){r.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:i("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(r){r.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:i("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(r){r.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:i("Shift-Delete",null),exec:function(r){if(r.selection.isEmpty())r.remove("left");else return!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:i("Alt-Backspace","Command-Backspace"),exec:function(r){r.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:i("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(r){r.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:i("Ctrl-Shift-Backspace",null),exec:function(r){var t=r.selection.getRange();t.start.column=0,r.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:i("Ctrl-Shift-Delete",null),exec:function(r){var t=r.selection.getRange();t.end.column=Number.MAX_VALUE,r.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:i("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(r){r.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:i("Ctrl-Delete","Alt-Delete"),exec:function(r){r.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:i("Shift-Tab","Shift-Tab"),exec:function(r){r.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:i("Tab","Tab"),exec:function(r){r.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:i("Ctrl-[","Ctrl-["),exec:function(r){r.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:i("Ctrl-]","Ctrl-]"),exec:function(r){r.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(r,t){r.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(r,t){r.insert(g.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:i(null,"Ctrl-O"),exec:function(r){r.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:i("Alt-Shift-X","Ctrl-T"),exec:function(r){r.transposeLetters()},multiSelectAction:function(r){r.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:i("Ctrl-U","Ctrl-U"),exec:function(r){r.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:i("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(r){r.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:i(null,null),exec:function(r){r.autoIndent()},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:i("Ctrl-Shift-L","Command-Shift-L"),exec:function(r){var t=r.selection.getRange();t.start.column=t.end.column=0,t.end.row++,r.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:i("Ctrl+F3","F3"),exec:function(r){r.openLink()}},{name:"joinlines",description:"Join lines",bindKey:i(null,null),exec:function(r){for(var t=r.selection.isBackwards(),l=t?r.selection.getSelectionLead():r.selection.getSelectionAnchor(),o=t?r.selection.getSelectionAnchor():r.selection.getSelectionLead(),s=r.session.doc.getLine(l.row).length,f=r.session.doc.getTextRange(r.selection.getRange()),h=f.replace(/\n\s*/," ").length,v=r.session.doc.getLine(l.row),$=l.row+1;$<=o.row+1;$++){var C=g.stringTrimLeft(g.stringTrimRight(r.session.doc.getLine($)));C.length!==0&&(C=" "+C),v+=C}o.row+10?(r.selection.moveCursorTo(l.row,l.column),r.selection.selectTo(l.row,l.column+h)):(s=r.session.doc.getLine(l.row).length>s?s+1:s,r.selection.moveCursorTo(l.row,s))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:i(null,null),exec:function(r){var t=r.session.doc.getLength()-1,l=r.session.doc.getLine(t).length,o=r.selection.rangeList.ranges,s=[];o.length<1&&(o=[r.selection.getRange()]);for(var f=0;fu[r].column&&r++,o.unshift(r,0),u.splice.apply(u,o),this.$updateRows()}}},c.prototype.$updateRows=function(){var i=this.session.lineWidgets;if(!!i){var u=!0;i.forEach(function(r,t){if(r)for(u=!1,r.row=t;r.$oldWidget;)r.$oldWidget.row=t,r=r.$oldWidget}),u&&(this.session.lineWidgets=null)}},c.prototype.$registerLineWidget=function(i){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var u=this.session.lineWidgets[i.row];return u&&(i.$oldWidget=u,u.el&&u.el.parentNode&&(u.el.parentNode.removeChild(u.el),u._inDocument=!1)),this.session.lineWidgets[i.row]=i,i},c.prototype.addLineWidget=function(i){if(this.$registerLineWidget(i),i.session=this.session,!this.editor)return i;var u=this.editor.renderer;i.html&&!i.el&&(i.el=g.createElement("div"),i.el.innerHTML=i.html),i.text&&!i.el&&(i.el=g.createElement("div"),i.el.textContent=i.text),i.el&&(g.addCssClass(i.el,"ace_lineWidgetContainer"),i.className&&g.addCssClass(i.el,i.className),i.el.style.position="absolute",i.el.style.zIndex=5,u.container.appendChild(i.el),i._inDocument=!0,i.coverGutter||(i.el.style.zIndex=3),i.pixelHeight==null&&(i.pixelHeight=i.el.offsetHeight)),i.rowCount==null&&(i.rowCount=i.pixelHeight/u.layerConfig.lineHeight);var r=this.session.getFoldAt(i.row,0);if(i.$fold=r,r){var t=this.session.lineWidgets;i.row==r.end.row&&!t[r.start.row]?t[r.start.row]=i:i.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:i.row}}}),this.$updateRows(),this.renderWidgets(null,u),this.onWidgetChanged(i),i},c.prototype.removeLineWidget=function(i){if(i._inDocument=!1,i.session=null,i.el&&i.el.parentNode&&i.el.parentNode.removeChild(i.el),i.editor&&i.editor.destroy)try{i.editor.destroy()}catch{}if(this.session.lineWidgets){var u=this.session.lineWidgets[i.row];if(u==i)this.session.lineWidgets[i.row]=i.$oldWidget,i.$oldWidget&&this.onWidgetChanged(i.$oldWidget);else for(;u;){if(u.$oldWidget==i){u.$oldWidget=i.$oldWidget;break}u=u.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:i.row}}}),this.$updateRows()},c.prototype.getWidgetsAtRow=function(i){for(var u=this.session.lineWidgets,r=u&&u[i],t=[];r;)t.push(r),r=r.$oldWidget;return t},c.prototype.onWidgetChanged=function(i){this.session._changedWidgets.push(i),this.editor&&this.editor.renderer.updateFull()},c.prototype.measureWidgets=function(i,u){var r=this.session._changedWidgets,t=u.layerConfig;if(!(!r||!r.length)){for(var l=1/0,o=0;o0&&!t[l];)l--;this.firstRow=r.firstRow,this.lastRow=r.lastRow,u.$cursorLayer.config=r;for(var s=l;s<=o;s++){var f=t[s];if(!(!f||!f.el)){if(f.hidden){f.el.style.top=-100-(f.pixelHeight||0)+"px";continue}f._inDocument||(f._inDocument=!0,u.container.appendChild(f.el));var h=u.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;f.coverLine||(h+=r.lineHeight*this.session.getRowLineCount(f.row)),f.el.style.top=h-r.offset+"px";var v=f.coverGutter?0:u.gutterWidth;f.fixedWidth||(v-=u.scrollLeft),f.el.style.left=v+"px",f.fullWidth&&f.screenWidth&&(f.el.style.minWidth=r.width+2*r.padding+"px"),f.fixedWidth?f.el.style.right=u.scrollBar.getWidth()+"px":f.el.style.right=""}}}},c}();p.LineWidgets=a}),ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"],function(e,p,m){var g=e("../lib/keys"),a=e("../mouse/default_gutter_handler").GutterTooltip,c=function(){function i(u){this.editor=u,this.gutterLayer=u.renderer.$gutterLayer,this.element=u.renderer.$gutter,this.lines=u.renderer.$gutterLayer.$lines,this.activeRowIndex=null,this.activeLane=null,this.annotationTooltip=new a(this.editor)}return i.prototype.addListener=function(){this.element.addEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.addEventListener("focusout",this.$blurGutter.bind(this)),this.editor.on("mousewheel",this.$blurGutter.bind(this))},i.prototype.removeListener=function(){this.element.removeEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.removeEventListener("focusout",this.$blurGutter.bind(this)),this.editor.off("mousewheel",this.$blurGutter.bind(this))},i.prototype.$onGutterKeyDown=function(u){if(this.annotationTooltip.isOpen){u.preventDefault(),u.keyCode===g.escape&&this.annotationTooltip.hide();return}if(u.target===this.element){if(u.keyCode!=g.enter)return;u.preventDefault();var r=this.editor.getCursorPosition().row;this.editor.isRowVisible(r)||this.editor.scrollToLine(r,!0,!0),setTimeout(function(){var f=this.$rowToRowIndex(this.gutterLayer.$cursorCell.row),h=this.$findNearestFoldWidget(f),v=this.$findNearestAnnotation(f);if(!(h===null&&v===null)){if(h===null&&v!==null){this.activeRowIndex=v,this.activeLane="annotation",this.$focusAnnotation(this.activeRowIndex);return}if(h!==null&&v===null){this.activeRowIndex=h,this.activeLane="fold",this.$focusFoldWidget(this.activeRowIndex);return}if(Math.abs(v-f)0||u+r=0&&this.$isFoldWidgetVisible(u-r))return u-r;if(u+r<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(u+r))return u+r}return null},i.prototype.$findNearestAnnotation=function(u){if(this.$isAnnotationVisible(u))return u;for(var r=0;u-r>0||u+r=0&&this.$isAnnotationVisible(u-r))return u-r;if(u+r<=this.lines.getLength()-1&&this.$isAnnotationVisible(u+r))return u+r}return null},i.prototype.$focusFoldWidget=function(u){if(u!=null){var r=this.$getFoldWidget(u);r.classList.add(this.editor.renderer.keyboardFocusClassName),r.focus()}},i.prototype.$focusAnnotation=function(u){if(u!=null){var r=this.$getAnnotation(u);r.classList.add(this.editor.renderer.keyboardFocusClassName),r.setAttribute("role","button"),r.focus()}},i.prototype.$blurFoldWidget=function(u){var r=this.$getFoldWidget(u);r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.blur()},i.prototype.$blurAnnotation=function(u){var r=this.$getAnnotation(u);r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.removeAttribute("role"),r.blur()},i.prototype.$moveFoldWidgetUp=function(){for(var u=this.activeRowIndex;u>0;)if(u--,this.$isFoldWidgetVisible(u)){this.$blurFoldWidget(this.activeRowIndex),this.activeRowIndex=u,this.$focusFoldWidget(this.activeRowIndex);return}},i.prototype.$moveFoldWidgetDown=function(){for(var u=this.activeRowIndex;u0;)if(u--,this.$isAnnotationVisible(u)){this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=u,this.$focusAnnotation(this.activeRowIndex);return}},i.prototype.$moveAnnotationDown=function(){for(var u=this.activeRowIndex;u=k.length&&(k=void 0),{value:k&&k[L++],done:!k}}};throw new TypeError(S?"Object is not iterable.":"Symbol.iterator is not defined.")},a=e("./lib/oop"),c=e("./lib/dom"),i=e("./lib/lang"),u=e("./lib/useragent"),r=e("./keyboard/textinput").TextInput,t=e("./mouse/mouse_handler").MouseHandler,l=e("./mouse/fold_handler").FoldHandler,o=e("./keyboard/keybinding").KeyBinding,s=e("./edit_session").EditSession,f=e("./search").Search,h=e("./range").Range,v=e("./lib/event_emitter").EventEmitter,$=e("./commands/command_manager").CommandManager,C=e("./commands/default_commands").commands,b=e("./config"),y=e("./token_iterator").TokenIterator,_=e("./line_widgets").LineWidgets,E=e("./keyboard/gutter_handler").GutterKeyboardHandler,O=e("./config").nls,T=e("./clipboard"),x=e("./lib/keys"),w=function(){function k(S,q,L){this.$toDestroy=[];var A=S.getContainerElement();this.container=A,this.renderer=S,this.id="editor"+ ++k.$uid,this.commands=new $(u.isMac?"mac":"win",C),typeof document=="object"&&(this.textInput=new r(S.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new t(this),new l(this)),this.keyBinding=new o(this),this.$search=new f().set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=i.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(D,N){N._$emitInputEvent.schedule(31)}),this.setSession(q||L&&L.session||new s("")),b.resetOptions(this),L&&this.setOptions(L),b._signal("editor",this)}return k.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=i.delayedCall(this.endOperation.bind(this,!0)),this.on("change",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.selectionChanged=!0}.bind(this),!0)},k.prototype.startOperation=function(S){if(this.curOp){if(!S||this.curOp.command)return;this.prevOp=this.curOp}S||(this.previousCommand=null,S={}),this.$opResetTimer.schedule(),this.curOp=this.session.curOp={command:S.command||{},args:S.args,scrollTop:this.renderer.scrollTop},this.curOp.selectionBefore=this.selection.toJSON()},k.prototype.endOperation=function(S){if(this.curOp&&this.session){if(S&&S.returnValue===!1||!this.session)return this.curOp=null;if(S==!0&&this.curOp.command&&this.curOp.command.name=="mouse"||(this._signal("beforeEndOperation"),!this.curOp))return;var q=this.curOp.command,L=q&&q.scrollIntoView;if(L){switch(L){case"center-animate":L="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var A=this.selection.getRange(),D=this.renderer.layerConfig;(A.start.row>=D.lastRow||A.end.row<=D.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break}L=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}var N=this.selection.toJSON();this.curOp.selectionAfter=N,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(N),this.prevOp=this.curOp,this.curOp=null}},k.prototype.$historyTracker=function(S){if(!!this.$mergeUndoDeltas){var q=this.prevOp,L=this.$mergeableCommands,A=q.command&&S.command.name==q.command.name;if(S.command.name=="insertstring"){var D=S.args;this.mergeNextCommand===void 0&&(this.mergeNextCommand=!0),A=A&&this.mergeNextCommand&&(!/\s/.test(D)||/\s/.test(q.args)),this.mergeNextCommand=!0}else A=A&&L.indexOf(S.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(A=!1),A?this.session.mergeUndoDeltas=!0:L.indexOf(S.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},k.prototype.setKeyboardHandler=function(S,q){if(S&&typeof S=="string"&&S!="ace"){this.$keybindingId=S;var L=this;b.loadModule(["keybinding",S],function(A){L.$keybindingId==S&&L.keyBinding.setKeyboardHandler(A&&A.handler),q&&q()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(S),q&&q()},k.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},k.prototype.setSession=function(S){if(this.session!=S){this.curOp&&this.endOperation(),this.curOp={};var q=this.session;if(q){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var L=this.session.getSelection();L.off("changeCursor",this.$onCursorChange),L.off("changeSelection",this.$onSelectionChange)}this.session=S,S?(this.$onDocumentChange=this.onDocumentChange.bind(this),S.on("change",this.$onDocumentChange),this.renderer.setSession(S),this.$onChangeMode=this.onChangeMode.bind(this),S.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),S.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),S.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),S.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),S.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),S.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=S.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(S)),this._signal("changeSession",{session:S,oldSession:q}),this.curOp=null,q&&q._signal("changeEditor",{oldEditor:this}),S&&S._signal("changeEditor",{editor:this}),S&&!S.destroyed&&S.bgTokenizer.scheduleStart()}},k.prototype.getSession=function(){return this.session},k.prototype.setValue=function(S,q){return this.session.doc.setValue(S),q?q==1?this.navigateFileEnd():q==-1&&this.navigateFileStart():this.selectAll(),S},k.prototype.getValue=function(){return this.session.getValue()},k.prototype.getSelection=function(){return this.selection},k.prototype.resize=function(S){this.renderer.onResize(S)},k.prototype.setTheme=function(S,q){this.renderer.setTheme(S,q)},k.prototype.getTheme=function(){return this.renderer.getTheme()},k.prototype.setStyle=function(S){this.renderer.setStyle(S)},k.prototype.unsetStyle=function(S){this.renderer.unsetStyle(S)},k.prototype.getFontSize=function(){return this.getOption("fontSize")||c.computedStyle(this.container).fontSize},k.prototype.setFontSize=function(S){this.setOption("fontSize",S)},k.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var S=this;this.$highlightPending=!0,setTimeout(function(){S.$highlightPending=!1;var q=S.session;if(!(!q||q.destroyed)){q.$bracketHighlight&&(q.$bracketHighlight.markerIds.forEach(function(P){q.removeMarker(P)}),q.$bracketHighlight=null);var L=S.getCursorPosition(),A=S.getKeyboardHandler(),D=A&&A.$getDirectionForHighlight&&A.$getDirectionForHighlight(S),N=q.getMatchingBracketRanges(L,D);if(!N){var B=new y(q,L.row,L.column),R=B.getCurrentToken();if(R&&/\b(?:tag-open|tag-name)/.test(R.type)){var V=q.getMatchingTags(L);V&&(N=[V.openTagName,V.closeTagName])}}if(!N&&q.$mode.getMatching&&(N=q.$mode.getMatching(S.session)),!N){S.getHighlightIndentGuides()&&S.renderer.$textLayer.$highlightIndentGuide();return}var F="ace_bracket";Array.isArray(N)?N.length==1&&(F="ace_error_bracket"):N=[N],N.length==2&&(h.comparePoints(N[0].end,N[1].start)==0?N=[h.fromPoints(N[0].start,N[1].end)]:h.comparePoints(N[0].start,N[1].end)==0&&(N=[h.fromPoints(N[1].start,N[0].end)])),q.$bracketHighlight={ranges:N,markerIds:N.map(function(P){return q.addMarker(P,F,"text")})},S.getHighlightIndentGuides()&&S.renderer.$textLayer.$highlightIndentGuide()}},50)}},k.prototype.focus=function(){this.textInput.focus()},k.prototype.isFocused=function(){return this.textInput.isFocused()},k.prototype.blur=function(){this.textInput.blur()},k.prototype.onFocus=function(S){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",S))},k.prototype.onBlur=function(S){!this.$isFocused||(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",S))},k.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},k.prototype.onDocumentChange=function(S){var q=this.session.$useWrapMode,L=S.start.row==S.end.row?S.end.row:1/0;this.renderer.updateLines(S.start.row,L,q),this._signal("change",S),this.$cursorChange()},k.prototype.onTokenizerUpdate=function(S){var q=S.data;this.renderer.updateLines(q.first,q.last)},k.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},k.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},k.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},k.prototype.$updateHighlightActiveLine=function(){var S=this.getSession(),q;if(this.$highlightActiveLine&&((this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(q=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(q=!1),this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(q=!1)),S.$highlightLineMarker&&!q)S.removeMarker(S.$highlightLineMarker.id),S.$highlightLineMarker=null;else if(!S.$highlightLineMarker&&q){var L=new h(q.row,q.column,q.row,1/0);L.id=S.addMarker(L,"ace_active-line","screenLine"),S.$highlightLineMarker=L}else q&&(S.$highlightLineMarker.start.row=q.row,S.$highlightLineMarker.end.row=q.row,S.$highlightLineMarker.start.column=q.column,S._signal("changeBackMarker"))},k.prototype.onSelectionChange=function(S){var q=this.session;if(q.$selectionMarker&&q.removeMarker(q.$selectionMarker),q.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var L=this.selection.getRange(),A=this.getSelectionStyle();q.$selectionMarker=q.addMarker(L,"ace_selection",A)}var D=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(D),this._signal("changeSelection")},k.prototype.$getSelectionHighLightRegexp=function(){var S=this.session,q=this.getSelectionRange();if(!(q.isEmpty()||q.isMultiLine())){var L=q.start.column,A=q.end.column,D=S.getLine(q.start.row),N=D.substring(L,A);if(!(N.length>5e3||!/[\w\d]/.test(N))){var B=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:N}),R=D.substring(L-1,A+1);if(!!B.test(R))return B}}},k.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},k.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},k.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},k.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},k.prototype.onChangeMode=function(S){this.renderer.updateText(),this._emit("changeMode",S)},k.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},k.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},k.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},k.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},k.prototype.getCopyText=function(){var S=this.getSelectedText(),q=this.session.doc.getNewLineCharacter(),L=!1;if(!S&&this.$copyWithEmptySelection){L=!0;for(var A=this.selection.getAllRanges(),D=0;DP.search(/\S|$/)){var R=P.substr(D.column).search(/\S|$/);L.doc.removeInLine(D.row,D.column,D.column+R)}}this.clearSelection();var V=D.column,F=L.getState(D.row),P=L.getLine(D.row),j=A.checkOutdent(F,P,S);if(L.insert(D,S),N&&N.selection&&(N.selection.length==2?this.selection.setSelectionRange(new h(D.row,V+N.selection[0],D.row,V+N.selection[1])):this.selection.setSelectionRange(new h(D.row+N.selection[0],N.selection[1],D.row+N.selection[2],N.selection[3]))),this.$enableAutoIndent){if(L.getDocument().isNewLine(S)){var I=A.getNextLineIndent(F,P.slice(0,D.column),L.getTabString());L.insert({row:D.row+1,column:0},I)}j&&A.autoOutdent(F,L,D.row)}},k.prototype.autoIndent=function(){var S=this.session,q=S.getMode(),L,A;if(this.selection.isEmpty())L=0,A=S.doc.getLength()-1;else{var D=this.getSelectionRange();L=D.start.row,A=D.end.row}for(var N="",B="",R="",V,F,P,j=S.getTabString(),I=L;I<=A;I++)I>0&&(N=S.getState(I-1),B=S.getLine(I-1),R=q.getNextLineIndent(N,B,j)),V=S.getLine(I),F=q.$getIndent(V),R!==F&&(F.length>0&&(P=new h(I,0,I,F.length),S.remove(P)),R.length>0&&S.insert({row:I,column:0},R)),q.autoOutdent(N,S,I)},k.prototype.onTextInput=function(S,q){if(!q)return this.keyBinding.onTextInput(S);this.startOperation({command:{name:"insertstring"}});var L=this.applyComposition.bind(this,S,q);this.selection.rangeCount?this.forEachSelection(L):L(),this.endOperation()},k.prototype.applyComposition=function(S,q){if(q.extendLeft||q.extendRight){var L=this.selection.getRange();L.start.column-=q.extendLeft,L.end.column+=q.extendRight,L.start.column<0&&(L.start.row--,L.start.column+=this.session.getLine(L.start.row).length+1),this.selection.setRange(L),!S&&!L.isEmpty()&&this.remove()}if((S||!this.selection.isEmpty())&&this.insert(S,!0),q.restoreStart||q.restoreEnd){var L=this.selection.getRange();L.start.column-=q.restoreStart,L.end.column-=q.restoreEnd,this.selection.setRange(L)}},k.prototype.onCommandKey=function(S,q,L){return this.keyBinding.onCommandKey(S,q,L)},k.prototype.setOverwrite=function(S){this.session.setOverwrite(S)},k.prototype.getOverwrite=function(){return this.session.getOverwrite()},k.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},k.prototype.setScrollSpeed=function(S){this.setOption("scrollSpeed",S)},k.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},k.prototype.setDragDelay=function(S){this.setOption("dragDelay",S)},k.prototype.getDragDelay=function(){return this.getOption("dragDelay")},k.prototype.setSelectionStyle=function(S){this.setOption("selectionStyle",S)},k.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},k.prototype.setHighlightActiveLine=function(S){this.setOption("highlightActiveLine",S)},k.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},k.prototype.setHighlightGutterLine=function(S){this.setOption("highlightGutterLine",S)},k.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},k.prototype.setHighlightSelectedWord=function(S){this.setOption("highlightSelectedWord",S)},k.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},k.prototype.setAnimatedScroll=function(S){this.renderer.setAnimatedScroll(S)},k.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},k.prototype.setShowInvisibles=function(S){this.renderer.setShowInvisibles(S)},k.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},k.prototype.setDisplayIndentGuides=function(S){this.renderer.setDisplayIndentGuides(S)},k.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},k.prototype.setHighlightIndentGuides=function(S){this.renderer.setHighlightIndentGuides(S)},k.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},k.prototype.setShowPrintMargin=function(S){this.renderer.setShowPrintMargin(S)},k.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},k.prototype.setPrintMarginColumn=function(S){this.renderer.setPrintMarginColumn(S)},k.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},k.prototype.setReadOnly=function(S){this.setOption("readOnly",S)},k.prototype.getReadOnly=function(){return this.getOption("readOnly")},k.prototype.setBehavioursEnabled=function(S){this.setOption("behavioursEnabled",S)},k.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},k.prototype.setWrapBehavioursEnabled=function(S){this.setOption("wrapBehavioursEnabled",S)},k.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},k.prototype.setShowFoldWidgets=function(S){this.setOption("showFoldWidgets",S)},k.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},k.prototype.setFadeFoldWidgets=function(S){this.setOption("fadeFoldWidgets",S)},k.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},k.prototype.remove=function(S){this.selection.isEmpty()&&(S=="left"?this.selection.selectLeft():this.selection.selectRight());var q=this.getSelectionRange();if(this.getBehavioursEnabled()){var L=this.session,A=L.getState(q.start.row),D=L.getMode().transformAction(A,"deletion",this,L,q);if(q.end.column===0){var N=L.getTextRange(q);if(N[N.length-1]==` -`){var B=L.getLine(q.end.row);/^\s+$/.test(B)&&(q.end.column=B.length)}}D&&(q=D)}this.session.remove(q),this.clearSelection()},k.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},k.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},k.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},k.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var S=this.getSelectionRange();S.start.column==S.end.column&&S.start.row==S.end.row&&(S.end.column=0,S.end.row++),this.session.remove(S),this.clearSelection()},k.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var S=this.getCursorPosition();this.insert(` -`),this.moveCursorToPosition(S)},k.prototype.setGhostText=function(S,q){this.session.widgetManager||(this.session.widgetManager=new _(this.session),this.session.widgetManager.attach(this)),this.renderer.setGhostText(S,q)},k.prototype.removeGhostText=function(){!this.session.widgetManager||this.renderer.removeGhostText()},k.prototype.transposeLetters=function(){if(!!this.selection.isEmpty()){var S=this.getCursorPosition(),q=S.column;if(q!==0){var L=this.session.getLine(S.row),A,D;qR.toLowerCase()?1:0});for(var D=new h(0,0,0,0),A=S.first;A<=S.last;A++){var N=q.getLine(A);D.start.row=A,D.end.row=A,D.end.column=N.length,q.replace(D,L[A-S.first])}},k.prototype.toggleCommentLines=function(){var S=this.session.getState(this.getCursorPosition().row),q=this.$getSelectedRows();this.session.getMode().toggleCommentLines(S,this.session,q.first,q.last)},k.prototype.toggleBlockComment=function(){var S=this.getCursorPosition(),q=this.session.getState(S.row),L=this.getSelectionRange();this.session.getMode().toggleBlockComment(q,this.session,L,S)},k.prototype.getNumberAt=function(S,q){var L=/[\-]?[0-9]+(?:\.[0-9]+)?/g;L.lastIndex=0;for(var A=this.session.getLine(S);L.lastIndex=q){var N={value:D[0],start:D.index,end:D.index+D[0].length};return N}}return null},k.prototype.modifyNumber=function(S){var q=this.selection.getCursor().row,L=this.selection.getCursor().column,A=new h(q,L-1,q,L),D=this.session.getTextRange(A);if(!isNaN(parseFloat(D))&&isFinite(D)){var N=this.getNumberAt(q,L);if(N){var B=N.value.indexOf(".")>=0?N.start+N.value.indexOf(".")+1:N.end,R=N.start+N.value.length-B,V=parseFloat(N.value);V*=Math.pow(10,R),B!==N.end&&L=B&&N<=R&&(L=Z,V.selection.clearSelection(),V.moveCursorTo(S,B+A),V.selection.selectTo(S,R+A)),B=R});for(var F=this.$toggleWordPairs,P,j=0;j=R&&B<=V&&I.match(/((?:https?|ftp):\/\/[\S]+)/)){F=I.replace(/[\s:.,'";}\]]+$/,"");break}R=V}}catch(W){L={error:W}}finally{try{j&&!j.done&&(A=P.return)&&A.call(P)}finally{if(L)throw L.error}}return F},k.prototype.openLink=function(){var S=this.selection.getCursor(),q=this.findLinkAt(S.row,S.column);return q&&window.open(q,"_blank"),q!=null},k.prototype.removeLines=function(){var S=this.$getSelectedRows();this.session.removeFullLines(S.first,S.last),this.clearSelection()},k.prototype.duplicateSelection=function(){var S=this.selection,q=this.session,L=S.getRange(),A=S.isBackwards();if(L.isEmpty()){var D=L.start.row;q.duplicateLines(D,D)}else{var N=A?L.start:L.end,B=q.insert(N,q.getTextRange(L),!1);L.start=N,L.end=B,S.setSelectionRange(L,A)}},k.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},k.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},k.prototype.moveText=function(S,q,L){return this.session.moveText(S,q,L)},k.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},k.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},k.prototype.$moveLines=function(S,q){var L,A,D=this.selection;if(!D.inMultiSelectMode||this.inVirtualSelectionMode){var N=D.toOrientedRange();L=this.$getSelectedRows(N),A=this.session.$moveLines(L.first,L.last,q?0:S),q&&S==-1&&(A=0),N.moveBy(A,0),D.fromOrientedRange(N)}else{var B=D.rangeList.ranges;D.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var R=0,V=0,F=B.length,P=0;PW+1)break;W=H.last}for(P--,R=this.session.$moveLines(I,W,q?0:S),q&&S==-1&&(j=P+1);j<=P;)B[j].moveBy(R,0),j++;q||(R=0),V+=R}D.fromOrientedRange(D.ranges[0]),D.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},k.prototype.$getSelectedRows=function(S){return S=(S||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(S.start.row),last:this.session.getRowFoldEnd(S.end.row)}},k.prototype.onCompositionStart=function(S){this.renderer.showComposition(S)},k.prototype.onCompositionUpdate=function(S){this.renderer.setCompositionText(S)},k.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},k.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},k.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},k.prototype.isRowVisible=function(S){return S>=this.getFirstVisibleRow()&&S<=this.getLastVisibleRow()},k.prototype.isRowFullyVisible=function(S){return S>=this.renderer.getFirstFullyVisibleRow()&&S<=this.renderer.getLastFullyVisibleRow()},k.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},k.prototype.$moveByPage=function(S,q){var L=this.renderer,A=this.renderer.layerConfig,D=S*Math.floor(A.height/A.lineHeight);q===!0?this.selection.$moveSelection(function(){this.moveCursorBy(D,0)}):q===!1&&(this.selection.moveCursorBy(D,0),this.selection.clearSelection());var N=L.scrollTop;L.scrollBy(0,D*A.lineHeight),q!=null&&L.scrollCursorIntoView(null,.5),L.animateScrolling(N)},k.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},k.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},k.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},k.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},k.prototype.scrollPageDown=function(){this.$moveByPage(1)},k.prototype.scrollPageUp=function(){this.$moveByPage(-1)},k.prototype.scrollToRow=function(S){this.renderer.scrollToRow(S)},k.prototype.scrollToLine=function(S,q,L,A){this.renderer.scrollToLine(S,q,L,A)},k.prototype.centerSelection=function(){var S=this.getSelectionRange(),q={row:Math.floor(S.start.row+(S.end.row-S.start.row)/2),column:Math.floor(S.start.column+(S.end.column-S.start.column)/2)};this.renderer.alignCursor(q,.5)},k.prototype.getCursorPosition=function(){return this.selection.getCursor()},k.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},k.prototype.getSelectionRange=function(){return this.selection.getRange()},k.prototype.selectAll=function(){this.selection.selectAll()},k.prototype.clearSelection=function(){this.selection.clearSelection()},k.prototype.moveCursorTo=function(S,q){this.selection.moveCursorTo(S,q)},k.prototype.moveCursorToPosition=function(S){this.selection.moveCursorToPosition(S)},k.prototype.jumpToMatching=function(S,q){var L=this.getCursorPosition(),A=new y(this.session,L.row,L.column),D=A.getCurrentToken(),N=0;D&&D.type.indexOf("tag-name")!==-1&&(D=A.stepBackward());var B=D||A.stepForward();if(!!B){var R,V=!1,F={},P=L.column-B.start,j,I={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(B.value.match(/[{}()\[\]]/g)){for(;P1?F[B.value]++:D.value==="=0;--N)this.$tryReplace(L[N],S)&&A++;return this.selection.setSelectionRange(D),A},k.prototype.$tryReplace=function(S,q){var L=this.session.getTextRange(S);return q=this.$search.replace(L,q),q!==null?(S.end=this.session.replace(S,q),S):null},k.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},k.prototype.find=function(S,q,L){q||(q={}),typeof S=="string"||S instanceof RegExp?q.needle=S:typeof S=="object"&&a.mixin(q,S);var A=this.selection.getRange();q.needle==null&&(S=this.session.getTextRange(A)||this.$search.$options.needle,S||(A=this.session.getWordRange(A.start.row,A.start.column),S=this.session.getTextRange(A)),this.$search.set({needle:S})),this.$search.set(q),q.start||this.$search.set({start:A});var D=this.$search.find(this.session);if(q.preventScroll)return D;if(D)return this.revealRange(D,L),D;q.backwards?A.start=A.end:A.end=A.start,this.selection.setRange(A)},k.prototype.findNext=function(S,q){this.find({skipCurrent:!0,backwards:!1},S,q)},k.prototype.findPrevious=function(S,q){this.find(S,{skipCurrent:!0,backwards:!0},q)},k.prototype.revealRange=function(S,q){this.session.unfold(S),this.selection.setSelectionRange(S);var L=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(S.start,S.end,.5),q!==!1&&this.renderer.animateScrolling(L)},k.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},k.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},k.prototype.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach(function(S){S.destroy()}),this.$toDestroy=null),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},k.prototype.setAutoScrollEditorIntoView=function(S){if(!!S){var q,L=this,A=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var D=this.$scrollAnchor;D.style.cssText="position:absolute",this.container.insertBefore(D,this.container.firstChild);var N=this.on("changeSelection",function(){A=!0}),B=this.renderer.on("beforeRender",function(){A&&(q=L.renderer.container.getBoundingClientRect())}),R=this.renderer.on("afterRender",function(){if(A&&q&&(L.isFocused()||L.searchBox&&L.searchBox.isFocused())){var V=L.renderer,F=V.$cursorLayer.$pixelPos,P=V.layerConfig,j=F.top-P.offset;F.top>=0&&j+q.top<0?A=!0:F.topwindow.innerHeight?A=!1:A=null,A!=null&&(D.style.top=j+"px",D.style.left=F.left+"px",D.style.height=P.lineHeight+"px",D.scrollIntoView(A)),A=q=null}});this.setAutoScrollEditorIntoView=function(V){V||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",N),this.renderer.off("afterRender",R),this.renderer.off("beforeRender",B))}}},k.prototype.$resetCursorStyle=function(){var S=this.$cursorStyle||"ace",q=this.renderer.$cursorLayer;!q||(q.setSmoothBlinking(/smooth/.test(S)),q.isBlinking=!this.$readOnly&&S!="wide",c.setCssClass(q.element,"ace_slim-cursors",/slim/.test(S)))},k.prototype.prompt=function(S,q,L){var A=this;b.loadModule("ace/ext/prompt",function(D){D.prompt(A,S,q,L)})},k}();w.$uid=0,w.prototype.curOp=null,w.prototype.prevOp={},w.prototype.$mergeableCommands=["backspace","del","insertstring"],w.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],a.implement(w.prototype,v),b.defineOptions(w.prototype,"editor",{selectionStyle:{set:function(k){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:k})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(k){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(k){this.textInput.setReadOnly(k),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(k){this.textInput.setCopyWithEmptySelection(k)},initialValue:!1},cursorStyle:{set:function(k){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(k){this.setAutoScrollEditorIntoView(k)}},keyboardHandler:{set:function(k){this.setKeyboardHandler(k)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(k){this.session.setValue(k)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(k){this.setSession(k)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(k){this.renderer.$gutterLayer.setShowLineNumbers(k),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),k&&this.$relativeLineNumbers?M.attach(this):M.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(k){this.$showLineNumbers&&k?M.attach(this):M.detach(this)}},placeholder:{set:function(k){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var S=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(S&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),c.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!S&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),c.addCssClass(this.container,"ace_hasPlaceholder");var q=c.createElement("div");q.className="ace_placeholder",q.textContent=this.$placeholder||"",this.renderer.placeholderNode=q,this.renderer.content.appendChild(this.renderer.placeholderNode)}else!S&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"")}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(k){var S={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(A){A.blur(),A.renderer.scroller.focus()},readOnly:!0},q=function(A){if(A.target==this.renderer.scroller&&A.keyCode===x.enter){A.preventDefault();var D=this.getCursorPosition().row;this.isRowVisible(D)||this.scrollToLine(D,!0,!0),this.focus()}},L;k?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",O("editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",O("Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",q.bind(this)),this.commands.addCommand(S),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",O("editor")),this.renderer.$gutter.setAttribute("aria-label",O("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),L||(L=new E(this)),L.addListener()):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",q.bind(this)),this.commands.removeCommand(S),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),L&&L.removeListener())},initialValue:!1},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var M={getText:function(k,S){return(Math.abs(k.selection.lead.row-S)||S+1+(S<9?"\xB7":""))+""},getWidth:function(k,S,q){return Math.max(S.toString().length,(q.lastRow+1).toString().length,2)*q.characterWidth},update:function(k,S){S.renderer.$loop.schedule(S.renderer.CHANGE_GUTTER)},attach:function(k){k.renderer.$gutterLayer.$renderer=this,k.on("changeSelection",this.update),this.update(null,k)},detach:function(k){k.renderer.$gutterLayer.$renderer==this&&(k.renderer.$gutterLayer.$renderer=null),k.off("changeSelection",this.update),this.update(null,k)}};p.Editor=w}),ace.define("ace/undomanager",["require","exports","module","ace/range"],function(e,p,m){var g=function(){function y(){this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return y.prototype.addSession=function(_){this.$session=_},y.prototype.add=function(_,E,O){if(!this.$fromUndo&&_!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),E===!1||!this.lastDeltas){this.lastDeltas=[];var T=this.$undoStack.length;T>this.$undoDepth-1&&this.$undoStack.splice(0,T-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),_.id=this.$rev=++this.$maxRev}(_.action=="remove"||_.action=="insert")&&(this.$lastDelta=_),this.lastDeltas.push(_)}},y.prototype.addSelection=function(_,E){this.selections.push({value:_,rev:E||this.$rev})},y.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},y.prototype.markIgnored=function(_,E){E==null&&(E=this.$rev+1);for(var O=this.$undoStack,T=O.length;T--;){var x=O[T][0];if(x.id<=_)break;x.id0},y.prototype.canRedo=function(){return this.$redoStack.length>0},y.prototype.bookmark=function(_){_==null&&(_=this.$rev),this.mark=_},y.prototype.isAtBookmark=function(){return this.$rev===this.mark},y.prototype.toJSON=function(){},y.prototype.fromJSON=function(){},y.prototype.$prettyPrint=function(_){return _?t(_):t(this.$undoStack)+` ---- -`+t(this.$redoStack)},y}();g.prototype.hasUndo=g.prototype.canUndo,g.prototype.hasRedo=g.prototype.canRedo,g.prototype.isClean=g.prototype.isAtBookmark,g.prototype.markClean=g.prototype.bookmark;function a(y,_){for(var E=_;E--;){var O=y[E];if(O&&!O[0].ignore){for(;E<_-1;){var T=s(y[E],y[E+1]);y[E]=T[0],y[E+1]=T[1],E++}return!0}}}var c=e("./range").Range,i=c.comparePoints;c.comparePoints;function u(y){return{row:y.row,column:y.column}}function r(y){return{start:u(y.start),end:u(y.end),action:y.action,lines:y.lines.slice()}}function t(y){if(y=y||this,Array.isArray(y))return y.map(t).join(` -`);var _="";return y.action?(_=y.action=="insert"?"+":"-",_+="["+y.lines+"]"):y.value&&(Array.isArray(y.value)?_=y.value.map(l).join(` -`):_=l(y.value)),y.start&&(_+=l(y)),(y.id||y.rev)&&(_+=" ("+(y.id||y.rev)+")"),_}function l(y){return y.start.row+":"+y.start.column+"=>"+y.end.row+":"+y.end.column}function o(y,_){var E=y.action=="insert",O=_.action=="insert";if(E&&O)if(i(_.start,y.end)>=0)h(_,y,-1);else if(i(_.start,y.start)<=0)h(y,_,1);else return null;else if(E&&!O)if(i(_.start,y.end)>=0)h(_,y,-1);else if(i(_.end,y.start)<=0)h(y,_,-1);else return null;else if(!E&&O)if(i(_.start,y.start)>=0)h(_,y,1);else if(i(_.start,y.start)<=0)h(y,_,1);else return null;else if(!E&&!O)if(i(_.start,y.start)>=0)h(_,y,1);else if(i(_.end,y.start)<=0)h(y,_,-1);else return null;return[_,y]}function s(y,_){for(var E=y.length;E--;)for(var O=0;O<_.length;O++)if(!o(y[E],_[O])){for(;E=0?h(y,_,-1):(i(y.start,_.start)<=0||h(y,c.fromPoints(_.start,y.start),-1),h(_,y,1));else if(!E&&O)i(_.start,y.end)>=0?h(_,y,-1):(i(_.start,y.start)<=0||h(_,c.fromPoints(y.start,_.start),-1),h(y,_,1));else if(!E&&!O)if(i(_.start,y.end)>=0)h(_,y,-1);else if(i(_.end,y.start)<=0)h(y,_,-1);else{var T,x;return i(y.start,_.start)<0&&(T=y,y=$(y,_.start)),i(y.end,_.end)>0&&(x=$(y,_.end)),v(_.end,y.start,y.end,-1),x&&!T&&(y.lines=x.lines,y.start=x.start,y.end=x.end,x=y),[_,T,x].filter(Boolean)}return[_,y]}function h(y,_,E){v(y.start,_.start,_.end,E),v(y.end,_.start,_.end,E)}function v(y,_,E,O){y.row==(O==1?_:E).row&&(y.column+=O*(E.column-_.column)),y.row+=O*(E.row-_.row)}function $(y,_){var E=y.lines,O=y.end;y.end=u(_);var T=y.end.row-y.start.row,x=E.splice(T,E.length),w=T?_.column:_.column-y.start.column;E.push(x[0].substring(0,w)),x[0]=x[0].substr(w);var M={start:u(_),end:O,lines:x,action:y.action};return M}function C(y,_){_=r(_);for(var E=y.length;E--;){for(var O=y[E],T=0;TC&&(_=$.end.row+1,$=f.getNextFoldLine(_,$),C=$?$.start.row:1/0),_>v){for(;this.$lines.getLength()>y+1;)this.$lines.pop();break}b=this.$lines.get(++y),b?b.row=_:(b=this.$lines.createCell(_,s,this.session,l),this.$lines.push(b)),this.$renderCell(b,s,$,_),_++}this._signal("afterRender"),this.$updateGutterWidth(s)},o.prototype.$updateGutterWidth=function(s){var f=this.session,h=f.gutterRenderer||this.$renderer,v=f.$firstLineNumber,$=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||f.$useWrapMode)&&($=f.getLength()+v-1);var C=h?h.getWidth(f,$,s):$.toString().length*s.characterWidth,b=this.$padding||this.$computePadding();C+=b.left+b.right,C!==this.gutterWidth&&!isNaN(C)&&(this.gutterWidth=C,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",C))},o.prototype.$updateCursorRow=function(){if(!!this.$highlightGutterLine){var s=this.session.selection.getCursor();this.$cursorRow!==s.row&&(this.$cursorRow=s.row)}},o.prototype.updateLineHighlight=function(){if(!!this.$highlightGutterLine){var s=this.session.selection.cursor.row;if(this.$cursorRow=s,!(this.$cursorCell&&this.$cursorCell.row==s)){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var f=this.$lines.cells;this.$cursorCell=null;for(var h=0;h=this.$cursorRow){if(v.row>this.$cursorRow){var $=this.session.getFoldLine(this.$cursorRow);if(h>0&&$&&$.start.row==f[h-1].row)v=f[h-1];else break}v.element.className="ace_gutter-active-line "+v.element.className,this.$cursorCell=v;break}}}}},o.prototype.scrollLines=function(s){var f=this.config;if(this.config=s,this.$updateCursorRow(),this.$lines.pageChanged(f,s))return this.update(s);this.$lines.moveContainer(s);var h=Math.min(s.lastRow+s.gutterOffset,this.session.getLength()-1),v=this.oldLastRow;if(this.oldLastRow=h,!f||v0;$--)this.$lines.shift();if(v>h)for(var $=this.session.getFoldedRowCount(h+1,v);$>0;$--)this.$lines.pop();s.firstRowv&&this.$lines.push(this.$renderLines(s,v+1,h)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(s)},o.prototype.$renderLines=function(s,f,h){for(var v=[],$=f,C=this.session.getNextFoldLine($),b=C?C.start.row:1/0;$>b&&($=C.end.row+1,C=this.session.getNextFoldLine($,C),b=C?C.start.row:1/0),!($>h);){var y=this.$lines.createCell($,s,this.session,l);this.$renderCell(y,s,C,$),v.push(y),$++}return v},o.prototype.$renderCell=function(s,f,h,v){var $=s.element,C=this.session,b=$.childNodes[0],y=$.childNodes[1],_=$.childNodes[2],E=_.firstChild,O=C.$firstLineNumber,T=C.$breakpoints,x=C.$decorations,w=C.gutterRenderer||this.$renderer,M=this.$showFoldWidgets&&C.foldWidgets,k=h?h.start.row:Number.MAX_VALUE,S=f.lineHeight+"px",q=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",L=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",A=(w?w.getText(C,v):v+O).toString();if(this.$highlightGutterLine&&(v==this.$cursorRow||h&&v=k&&this.$cursorRow<=h.end.row)&&(q+="ace_gutter-active-line ",this.$cursorCell!=s&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=s)),T[v]&&(q+=T[v]),x[v]&&(q+=x[v]),this.$annotations[v]&&v!==k&&(q+=this.$annotations[v].className),$.className!=q&&($.className=q),M){var D=M[v];D==null&&(D=M[v]=C.getFoldWidget(v))}if(D){var q="ace_fold-widget ace_"+D;if(D=="start"&&v==k&&vh.right-f.right)return"foldWidgets"},o}();t.prototype.$fixedWidth=!1,t.prototype.$highlightGutterLine=!0,t.prototype.$renderer="",t.prototype.$showLineNumbers=!0,t.prototype.$showFoldWidgets=!0,a.implement(t.prototype,i);function l(o){var s=document.createTextNode("");o.appendChild(s);var f=g.createElement("span");o.appendChild(f);var h=g.createElement("span");o.appendChild(h);var v=g.createElement("span");return h.appendChild(v),o}p.Gutter=t}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,p,m){var g=e("../range").Range,a=e("../lib/dom"),c=function(){function u(r){this.element=a.createElement("div"),this.element.className="ace_layer ace_marker-layer",r.appendChild(this.element)}return u.prototype.setPadding=function(r){this.$padding=r},u.prototype.setSession=function(r){this.session=r},u.prototype.setMarkers=function(r){this.markers=r},u.prototype.elt=function(r,t){var l=this.i!=-1&&this.element.childNodes[this.i];l?this.i++:(l=document.createElement("div"),this.element.appendChild(l),this.i=-1),l.style.cssText=t,l.className=r},u.prototype.update=function(r){if(!!r){this.config=r,this.i=0;var t;for(var l in this.markers){var o=this.markers[l];if(!o.range){o.update(t,this,this.session,r);continue}var s=o.range.clipRows(r.firstRow,r.lastRow);if(!s.isEmpty())if(s=s.toScreenRange(this.session),o.renderer){var f=this.$getTop(s.start.row,r),h=this.$padding+s.start.column*r.characterWidth;o.renderer(t,s,h,f,r)}else o.type=="fullLine"?this.drawFullLineMarker(t,s,o.clazz,r):o.type=="screenLine"?this.drawScreenLineMarker(t,s,o.clazz,r):s.isMultiLine()?o.type=="text"?this.drawTextMarker(t,s,o.clazz,r):this.drawMultiLineMarker(t,s,o.clazz,r):this.drawSingleLineMarker(t,s,o.clazz+" ace_start ace_br15",r)}if(this.i!=-1)for(;this.iy,$==v),o,$==v?0:1,s)},u.prototype.drawMultiLineMarker=function(r,t,l,o,s){var f=this.$padding,h=o.lineHeight,v=this.$getTop(t.start.row,o),$=f+t.start.column*o.characterWidth;if(s=s||"",this.session.$bidiHandler.isBidiRow(t.start.row)){var C=t.clone();C.end.row=C.start.row,C.end.column=this.session.getLine(C.start.row).length,this.drawBidiSingleLineMarker(r,C,l+" ace_br1 ace_start",o,null,s)}else this.elt(l+" ace_br1 ace_start","height:"+h+"px;right:0;top:"+v+"px;left:"+$+"px;"+(s||""));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var C=t.clone();C.start.row=C.end.row,C.start.column=0,this.drawBidiSingleLineMarker(r,C,l+" ace_br12",o,null,s)}else{v=this.$getTop(t.end.row,o);var b=t.end.column*o.characterWidth;this.elt(l+" ace_br12","height:"+h+"px;width:"+b+"px;top:"+v+"px;left:"+f+"px;"+(s||""))}if(h=(t.end.row-t.start.row-1)*o.lineHeight,!(h<=0)){v=this.$getTop(t.start.row+1,o);var y=(t.start.column?1:0)|(t.end.column?0:8);this.elt(l+(y?" ace_br"+y:""),"height:"+h+"px;right:0;top:"+v+"px;left:"+f+"px;"+(s||""))}},u.prototype.drawSingleLineMarker=function(r,t,l,o,s,f){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(r,t,l,o,s,f);var h=o.lineHeight,v=(t.end.column+(s||0)-t.start.column)*o.characterWidth,$=this.$getTop(t.start.row,o),C=this.$padding+t.start.column*o.characterWidth;this.elt(l,"height:"+h+"px;width:"+v+"px;top:"+$+"px;left:"+C+"px;"+(f||""))},u.prototype.drawBidiSingleLineMarker=function(r,t,l,o,s,f){var h=o.lineHeight,v=this.$getTop(t.start.row,o),$=this.$padding,C=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);C.forEach(function(b){this.elt(l,"height:"+h+"px;width:"+(b.width+(s||0))+"px;top:"+v+"px;left:"+($+b.left)+"px;"+(f||""))},this)},u.prototype.drawFullLineMarker=function(r,t,l,o,s){var f=this.$getTop(t.start.row,o),h=o.lineHeight;t.start.row!=t.end.row&&(h+=this.$getTop(t.end.row,o)-f),this.elt(l,"height:"+h+"px;top:"+f+"px;left:0;right:0;"+(s||""))},u.prototype.drawScreenLineMarker=function(r,t,l,o,s){var f=this.$getTop(t.start.row,o),h=o.lineHeight;this.elt(l,"height:"+h+"px;top:"+f+"px;left:0;right:0;"+(s||""))},u}();c.prototype.$padding=0;function i(u,r,t,l){return(u?1:0)|(r?2:0)|(t?4:0)|(l?8:0)}p.Marker=c}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config"],function(e,p,m){var g=e("../lib/oop"),a=e("../lib/dom"),c=e("../lib/lang"),i=e("./lines").Lines,u=e("../lib/event_emitter").EventEmitter,r=e("../config").nls,t=function(){function l(o){this.dom=a,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",o.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new i(this.element)}return l.prototype.$updateEolChar=function(){var o=this.session.doc,s=o.getNewLineCharacter()==` -`&&o.getNewLineMode()!="windows",f=s?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=f)return this.EOL_CHAR=f,!0},l.prototype.setPadding=function(o){this.$padding=o,this.element.style.margin="0 "+o+"px"},l.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},l.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},l.prototype.$setFontMetrics=function(o){this.$fontMetrics=o,this.$fontMetrics.on("changeCharacterSize",function(s){this._signal("changeCharacterSize",s)}.bind(this)),this.$pollSizeChanges()},l.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},l.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},l.prototype.setSession=function(o){this.session=o,o&&this.$computeTabString()},l.prototype.setShowInvisibles=function(o){return this.showInvisibles==o?!1:(this.showInvisibles=o,typeof o=="string"?(this.showSpaces=/tab/i.test(o),this.showTabs=/space/i.test(o),this.showEOL=/eol/i.test(o)):this.showSpaces=this.showTabs=this.showEOL=o,this.$computeTabString(),!0)},l.prototype.setDisplayIndentGuides=function(o){return this.displayIndentGuides==o?!1:(this.displayIndentGuides=o,this.$computeTabString(),!0)},l.prototype.setHighlightIndentGuides=function(o){return this.$highlightIndentGuides===o?!1:(this.$highlightIndentGuides=o,o)},l.prototype.$computeTabString=function(){var o=this.session.getTabSize();this.tabSize=o;for(var s=this.$tabStrings=[0],f=1;fE&&(y=_.end.row+1,_=this.session.getNextFoldLine(y,_),E=_?_.start.row:1/0),!(y>v);){var O=$[C++];if(O){this.dom.removeChildren(O),this.$renderLine(O,y,y==E?_:!1),b&&(O.style.top=this.$lines.computeLineTop(y,o,this.session)+"px");var T=o.lineHeight*this.session.getRowLength(y)+"px";O.style.height!=T&&(b=!0,O.style.height=T)}y++}if(b)for(;C0;v--)this.$lines.shift();if(s.lastRow>o.lastRow)for(var v=this.session.getFoldedRowCount(o.lastRow+1,s.lastRow);v>0;v--)this.$lines.pop();o.firstRows.lastRow&&this.$lines.push(this.$renderLinesFragment(o,s.lastRow+1,o.lastRow)),this.$highlightIndentGuide()},l.prototype.$renderLinesFragment=function(o,s,f){for(var h=[],v=s,$=this.session.getNextFoldLine(v),C=$?$.start.row:1/0;v>C&&(v=$.end.row+1,$=this.session.getNextFoldLine(v,$),C=$?$.start.row:1/0),!(v>f);){var b=this.$lines.createCell(v,o,this.session),y=b.element;this.dom.removeChildren(y),a.setStyle(y.style,"height",this.$lines.computeLineHeight(v,o,this.session)+"px"),a.setStyle(y.style,"top",this.$lines.computeLineTop(v,o,this.session)+"px"),this.$renderLine(y,v,v==C?$:!1),this.$useLineGroups()?y.className="ace_line_group":y.className="ace_line",h.push(b),v++}return h},l.prototype.update=function(o){this.$lines.moveContainer(o),this.config=o;for(var s=o.firstRow,f=o.lastRow,h=this.$lines;h.getLength();)h.pop();h.push(this.$renderLinesFragment(o,s,f))},l.prototype.$renderToken=function(o,s,f,h){for(var v=this,$=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,C=this.dom.createFragment(this.element),b,y=0;b=$.exec(h);){var _=b[1],E=b[2],O=b[3],T=b[4],x=b[5];if(!(!v.showSpaces&&E)){var w=y!=b.index?h.slice(y,b.index):"";if(y=b.index+b[0].length,w&&C.appendChild(this.dom.createTextNode(w,this.element)),_){var M=v.session.getScreenTabSize(s+b.index);C.appendChild(v.$tabStrings[M].cloneNode(!0)),s+=M-1}else if(E)if(v.showSpaces){var k=this.dom.createElement("span");k.className="ace_invisible ace_invisible_space",k.textContent=c.stringRepeat(v.SPACE_CHAR,E.length),C.appendChild(k)}else C.appendChild(this.com.createTextNode(E,this.element));else if(O){var k=this.dom.createElement("span");k.className="ace_invisible ace_invisible_space ace_invalid",k.textContent=c.stringRepeat(v.SPACE_CHAR,O.length),C.appendChild(k)}else if(T){s+=1;var k=this.dom.createElement("span");k.style.width=v.config.characterWidth*2+"px",k.className=v.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",k.textContent=v.showSpaces?v.SPACE_CHAR:T,C.appendChild(k)}else if(x){s+=1;var k=this.dom.createElement("span");k.style.width=v.config.characterWidth*2+"px",k.className="ace_cjk",k.textContent=x,C.appendChild(k)}}}if(C.appendChild(this.dom.createTextNode(y?h.slice(y):h,this.element)),this.$textToken[f.type])o.appendChild(C);else{var S="ace_"+f.type.replace(/\./g," ace_"),k=this.dom.createElement("span");f.type=="fold"&&(k.style.width=f.value.length*this.config.characterWidth+"px",k.setAttribute("title",r("Unfold code"))),k.className=S,k.appendChild(C),o.appendChild(k)}return s+h.length},l.prototype.renderIndentGuide=function(o,s,f){var h=s.search(this.$indentGuideRe);if(h<=0||h>=f)return s;if(s[0]==" "){h-=h%this.tabSize;for(var v=h/this.tabSize,$=0;$$[C].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&o[s.row]!==""&&s.column===o[s.row].length){this.$highlightIndentGuideMarker.dir=1;for(var C=s.row+1;C0){for(var v=0;v=this.$highlightIndentGuideMarker.start+1){if(h.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(h,s)}}else for(var f=o.length-1;f>=0;f--){var h=o[f];if(this.$highlightIndentGuideMarker.end&&h.row=$;)C=this.$renderToken(b,C,_,E.substring(0,$-h)),E=E.substring($-h),h=$,b=this.$createLineElement(),o.appendChild(b),b.appendChild(this.dom.createTextNode(c.stringRepeat("\xA0",f.indent),this.element)),v++,C=0,$=f[v]||Number.MAX_VALUE;E.length!=0&&(h+=E.length,C=this.$renderToken(b,C,_,E))}}f[f.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(b,C,null,"",!0)},l.prototype.$renderSimpleLine=function(o,s){for(var f=0,h=0;hthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(o,f,v,$);f=this.$renderToken(o,f,v,$)}}},l.prototype.$renderOverflowMessage=function(o,s,f,h,v){f&&this.$renderToken(o,s,f,h.slice(0,this.MAX_LINE_LENGTH-s));var $=this.dom.createElement("span");$.className="ace_inline_button ace_keyword ace_toggle_wrap",$.textContent=v?"":"",o.appendChild($)},l.prototype.$renderLine=function(o,s,f){if(!f&&f!=!1&&(f=this.session.getFoldLine(s)),f)var h=this.$getFoldLineTokens(s,f);else var h=this.session.getTokens(s);var v=o;if(h.length){var $=this.session.getRowSplitData(s);if($&&$.length){this.$renderWrappedLine(o,h,$);var v=o.lastChild}else{var v=o;this.$useLineGroups()&&(v=this.$createLineElement(),o.appendChild(v)),this.$renderSimpleLine(v,h)}}else this.$useLineGroups()&&(v=this.$createLineElement(),o.appendChild(v));if(this.showEOL&&v){f&&(s=f.end.row);var C=this.dom.createElement("span");C.className="ace_invisible ace_invisible_eol",C.textContent=s==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,v.appendChild(C)}},l.prototype.$getFoldLineTokens=function(o,s){var f=this.session,h=[];function v(C,b,y){for(var _=0,E=0;E+C[_].value.lengthy-b&&(O=O.substring(0,y-b)),h.push({type:C[_].type,value:O}),E=b+O.length,_+=1}for(;Ey?h.push({type:C[_].type,value:O.substring(0,y-E)}):h.push(C[_]),E+=O.length,_+=1}}var $=f.getTokens(o);return s.walk(function(C,b,y,_,E){C!=null?h.push({type:"fold",value:C}):(E&&($=f.getTokens(b)),$.length&&v($,_,y))},s.end.row,this.session.getLine(s.end.row).length),h},l.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},l}();t.prototype.$textToken={text:!0,rparen:!0,lparen:!0},t.prototype.EOF_CHAR="\xB6",t.prototype.EOL_CHAR_LF="\xAC",t.prototype.EOL_CHAR_CRLF="\xA4",t.prototype.EOL_CHAR=t.prototype.EOL_CHAR_LF,t.prototype.TAB_CHAR="\u2014",t.prototype.SPACE_CHAR="\xB7",t.prototype.$padding=0,t.prototype.MAX_LINE_LENGTH=1e4,t.prototype.showInvisibles=!1,t.prototype.showSpaces=!1,t.prototype.showTabs=!1,t.prototype.showEOL=!1,t.prototype.displayIndentGuides=!0,t.prototype.$highlightIndentGuides=!0,t.prototype.$tabStrings=[],t.prototype.destroy={},t.prototype.onChangeTabSize=t.prototype.$computeTabString,g.implement(t.prototype,u),p.Text=t}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,p,m){var g=e("../lib/dom"),a=function(){function c(i){this.element=g.createElement("div"),this.element.className="ace_layer ace_cursor-layer",i.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),g.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return c.prototype.$updateOpacity=function(i){for(var u=this.cursors,r=u.length;r--;)g.setStyle(u[r].style,"opacity",i?"":"0")},c.prototype.$startCssAnimation=function(){for(var i=this.cursors,u=i.length;u--;)i[u].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&g.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},c.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,g.removeCssClass(this.element,"ace_animate-blinking")},c.prototype.setPadding=function(i){this.$padding=i},c.prototype.setSession=function(i){this.session=i},c.prototype.setBlinking=function(i){i!=this.isBlinking&&(this.isBlinking=i,this.restartTimer())},c.prototype.setBlinkInterval=function(i){i!=this.blinkInterval&&(this.blinkInterval=i,this.restartTimer())},c.prototype.setSmoothBlinking=function(i){i!=this.smoothBlinking&&(this.smoothBlinking=i,g.setCssClass(this.element,"ace_smooth-blinking",i),this.$updateCursors(!0),this.restartTimer())},c.prototype.addCursor=function(){var i=g.createElement("div");return i.className="ace_cursor",this.element.appendChild(i),this.cursors.push(i),i},c.prototype.removeCursor=function(){if(this.cursors.length>1){var i=this.cursors.pop();return i.parentNode.removeChild(i),i}},c.prototype.hideCursor=function(){this.isVisible=!1,g.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},c.prototype.showCursor=function(){this.isVisible=!0,g.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},c.prototype.restartTimer=function(){var i=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,g.removeCssClass(this.element,"ace_smooth-blinking")),i(!0),!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&g.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),g.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var u=function(){this.timeoutId=setTimeout(function(){i(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){i(!0),u()},this.blinkInterval),u()}},c.prototype.getPixelPosition=function(i,u){if(!this.config||!this.session)return{left:0,top:0};i||(i=this.session.selection.getCursor());var r=this.session.documentToScreenPosition(i),t=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,i.row)?this.session.$bidiHandler.getPosLeft(r.column):r.column*this.config.characterWidth),l=(r.row-(u?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:t,top:l}},c.prototype.isCursorInView=function(i,u){return i.top>=0&&i.topi.height+i.offset||o.top<0)&&r>1)){var s=this.cursors[t++]||this.addCursor(),f=s.style;this.drawCursor?this.drawCursor(s,o,i,u[r],this.session):this.isCursorInView(o,i)?(g.setStyle(f,"display","block"),g.translate(s,o.left,o.top),g.setStyle(f,"width",Math.round(i.characterWidth)+"px"),g.setStyle(f,"height",i.lineHeight+"px")):g.setStyle(f,"display","none")}}for(;this.cursors.length>t;)this.removeCursor();var h=this.session.getOverwrite();this.$setOverwrite(h),this.$pixelPos=o,this.restartTimer()},c.prototype.$setOverwrite=function(i){i!=this.overwrite&&(this.overwrite=i,i?g.addCssClass(this.element,"ace_overwrite-cursors"):g.removeCssClass(this.element,"ace_overwrite-cursors"))},c.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},c}();a.prototype.$padding=0,a.prototype.drawCursor=null,p.Cursor=a}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,p,m){var g=this&&this.__extends||function(){var s=function(f,h){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,$){v.__proto__=$}||function(v,$){for(var C in $)Object.prototype.hasOwnProperty.call($,C)&&(v[C]=$[C])},s(f,h)};return function(f,h){if(typeof h!="function"&&h!==null)throw new TypeError("Class extends value "+String(h)+" is not a constructor or null");s(f,h);function v(){this.constructor=f}f.prototype=h===null?Object.create(h):(v.prototype=h.prototype,new v)}}(),a=e("./lib/oop"),c=e("./lib/dom"),i=e("./lib/event"),u=e("./lib/event_emitter").EventEmitter,r=32768,t=function(){function s(f,h){this.element=c.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+h,this.inner=c.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent="\xA0",this.element.appendChild(this.inner),f.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,i.addListener(this.element,"scroll",this.onScroll.bind(this)),i.addListener(this.element,"mousedown",i.preventDefault)}return s.prototype.setVisible=function(f){this.element.style.display=f?"":"none",this.isVisible=f,this.coeff=1},s}();a.implement(t.prototype,u);var l=function(s){g(f,s);function f(h,v){var $=s.call(this,h,"-v")||this;return $.scrollTop=0,$.scrollHeight=0,v.$scrollbarWidth=$.width=c.scrollbarWidth(h.ownerDocument),$.inner.style.width=$.element.style.width=($.width||15)+5+"px",$.$minWidth=0,$}return f.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,this.coeff!=1){var h=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-h)/(this.coeff-h)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},f.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},f.prototype.setHeight=function(h){this.element.style.height=h+"px"},f.prototype.setScrollHeight=function(h){this.scrollHeight=h,h>r?(this.coeff=r/h,h=r):this.coeff!=1&&(this.coeff=1),this.inner.style.height=h+"px"},f.prototype.setScrollTop=function(h){this.scrollTop!=h&&(this.skipEvent=!0,this.scrollTop=h,this.element.scrollTop=h*this.coeff)},f}(t);l.prototype.setInnerHeight=l.prototype.setScrollHeight;var o=function(s){g(f,s);function f(h,v){var $=s.call(this,h,"-h")||this;return $.scrollLeft=0,$.height=v.$scrollbarWidth,$.inner.style.height=$.element.style.height=($.height||15)+5+"px",$}return f.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},f.prototype.getHeight=function(){return this.isVisible?this.height:0},f.prototype.setWidth=function(h){this.element.style.width=h+"px"},f.prototype.setInnerWidth=function(h){this.inner.style.width=h+"px"},f.prototype.setScrollWidth=function(h){this.inner.style.width=h+"px"},f.prototype.setScrollLeft=function(h){this.scrollLeft!=h&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=h)},f}(t);p.ScrollBar=l,p.ScrollBarV=l,p.ScrollBarH=o,p.VScrollBar=l,p.HScrollBar=o}),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,p,m){var g=this&&this.__extends||function(){var o=function(s,f){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,v){h.__proto__=v}||function(h,v){for(var $ in v)Object.prototype.hasOwnProperty.call(v,$)&&(h[$]=v[$])},o(s,f)};return function(s,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");o(s,f);function h(){this.constructor=s}s.prototype=f===null?Object.create(f):(h.prototype=f.prototype,new h)}}(),a=e("./lib/oop"),c=e("./lib/dom"),i=e("./lib/event"),u=e("./lib/event_emitter").EventEmitter;c.importCssString(`.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{ - position: absolute; - background: rgba(128, 128, 128, 0.6); - -moz-box-sizing: border-box; - box-sizing: border-box; - border: 1px solid #bbb; - border-radius: 2px; - z-index: 8; -} -.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h { - position: absolute; - z-index: 6; - background: none; - overflow: hidden!important; -} -.ace_editor>.ace_sb-v { - z-index: 6; - right: 0; - top: 0; - width: 12px; -} -.ace_editor>.ace_sb-v div { - z-index: 8; - right: 0; - width: 100%; -} -.ace_editor>.ace_sb-h { - bottom: 0; - left: 0; - height: 12px; -} -.ace_editor>.ace_sb-h div { - bottom: 0; - height: 100%; -} -.ace_editor>.ace_sb_grabbed { - z-index: 8; - background: #000; -}`,"ace_scrollbar.css",!1);var r=function(){function o(s,f){this.element=c.createElement("div"),this.element.className="ace_sb"+f,this.inner=c.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,s.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,i.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return o.prototype.setVisible=function(s){this.element.style.display=s?"":"none",this.isVisible=s,this.coeff=1},o}();a.implement(r.prototype,u);var t=function(o){g(s,o);function s(f,h){var v=o.call(this,f,"-v")||this;return v.scrollTop=0,v.scrollHeight=0,v.parent=f,v.width=v.VScrollWidth,v.renderer=h,v.inner.style.width=v.element.style.width=(v.width||15)+"px",v.$minWidth=0,v}return s.prototype.onMouseDown=function(f,h){if(f==="mousedown"&&!(i.getButton(h)!==0||h.detail===2)){if(h.target===this.inner){var v=this,$=h.clientY,C=function(x){$=x.clientY},b=function(){clearInterval(O)},y=h.clientY,_=this.thumbTop,E=function(){if($!==void 0){var x=v.scrollTopFromThumbTop(_+$-y);x!==v.scrollTop&&v._emit("scroll",{data:x})}};i.capture(this.inner,C,b);var O=setInterval(E,20);return i.preventDefault(h)}var T=h.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(T)}),i.preventDefault(h)}},s.prototype.getHeight=function(){return this.height},s.prototype.scrollTopFromThumbTop=function(f){var h=f*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return h=h>>0,h<0?h=0:h>this.pageHeight-this.viewHeight&&(h=this.pageHeight-this.viewHeight),h},s.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},s.prototype.setHeight=function(f){this.height=Math.max(0,f),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},s.prototype.setScrollHeight=function(f,h){this.pageHeight===f&&!h||(this.pageHeight=f,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},s.prototype.setScrollTop=function(f){this.scrollTop=f,f<0&&(f=0),this.thumbTop=f*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},s}(r);t.prototype.setInnerHeight=t.prototype.setScrollHeight;var l=function(o){g(s,o);function s(f,h){var v=o.call(this,f,"-h")||this;return v.scrollLeft=0,v.scrollWidth=0,v.height=v.HScrollHeight,v.inner.style.height=v.element.style.height=(v.height||12)+"px",v.renderer=h,v}return s.prototype.onMouseDown=function(f,h){if(f==="mousedown"&&!(i.getButton(h)!==0||h.detail===2)){if(h.target===this.inner){var v=this,$=h.clientX,C=function(x){$=x.clientX},b=function(){clearInterval(O)},y=h.clientX,_=this.thumbLeft,E=function(){if($!==void 0){var x=v.scrollLeftFromThumbLeft(_+$-y);x!==v.scrollLeft&&v._emit("scroll",{data:x})}};i.capture(this.inner,C,b);var O=setInterval(E,20);return i.preventDefault(h)}var T=h.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(T)}),i.preventDefault(h)}},s.prototype.getHeight=function(){return this.isVisible?this.height:0},s.prototype.scrollLeftFromThumbLeft=function(f){var h=f*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return h=h>>0,h<0?h=0:h>this.pageWidth-this.viewWidth&&(h=this.pageWidth-this.viewWidth),h},s.prototype.setWidth=function(f){this.width=Math.max(0,f),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},s.prototype.setScrollWidth=function(f,h){this.pageWidth===f&&!h||(this.pageWidth=f,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},s.prototype.setScrollLeft=function(f){this.scrollLeft=f,f<0&&(f=0),this.thumbLeft=f*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},s}(r);l.prototype.setInnerWidth=l.prototype.setScrollWidth,p.ScrollBar=t,p.ScrollBarV=t,p.ScrollBarH=l,p.VScrollBar=t,p.HScrollBar=l}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,p,m){var g=e("./lib/event"),a=function(){function c(i,u){this.onRender=i,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=u||window;var r=this;this._flush=function(t){r.pending=!1;var l=r.changes;if(l&&(g.blockIdle(100),r.changes=0,r.onRender(l)),r.changes){if(r.$recursionLimit--<0)return;r.schedule()}else r.$recursionLimit=2}}return c.prototype.schedule=function(i){this.changes=this.changes|i,this.changes&&!this.pending&&(g.nextFrame(this._flush),this.pending=!0)},c.prototype.clear=function(i){var u=this.changes;return this.changes=0,u},c}();p.RenderLoop=a}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,p,m){var g=e("../lib/oop"),a=e("../lib/dom"),c=e("../lib/lang"),i=e("../lib/event"),u=e("../lib/useragent"),r=e("../lib/event_emitter").EventEmitter,t=512,l=typeof ResizeObserver=="function",o=200,s=function(){function f(h){this.el=a.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=a.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=a.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),h.appendChild(this.el),this.$measureNode.textContent=c.stringRepeat("X",t),this.$characterSize={width:0,height:0},l?this.$addObserver():this.checkForSizeChanges()}return f.prototype.$setMeasureNodeStyles=function(h,v){h.width=h.height="auto",h.left=h.top="0px",h.visibility="hidden",h.position="absolute",h.whiteSpace="pre",u.isIE<8?h["font-family"]="inherit":h.font="inherit",h.overflow=v?"hidden":"visible"},f.prototype.checkForSizeChanges=function(h){if(h===void 0&&(h=this.$measureSizes()),h&&(this.$characterSize.width!==h.width||this.$characterSize.height!==h.height)){this.$measureNode.style.fontWeight="bold";var v=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=h,this.charSizes=Object.create(null),this.allowBoldFonts=v&&v.width===h.width&&v.height===h.height,this._emit("changeCharacterSize",{data:h})}},f.prototype.$addObserver=function(){var h=this;this.$observer=new window.ResizeObserver(function(v){h.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},f.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var h=this;return this.$pollSizeChangesTimer=i.onIdle(function v(){h.checkForSizeChanges(),i.onIdle(v,500)},500)},f.prototype.setPolling=function(h){h?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},f.prototype.$measureSizes=function(h){var v={height:(h||this.$measureNode).clientHeight,width:(h||this.$measureNode).clientWidth/t};return v.width===0||v.height===0?null:v},f.prototype.$measureCharWidth=function(h){this.$main.textContent=c.stringRepeat(h,t);var v=this.$main.getBoundingClientRect();return v.width/t},f.prototype.getCharacterWidth=function(h){var v=this.charSizes[h];return v===void 0&&(v=this.charSizes[h]=this.$measureCharWidth(h)/this.$characterSize.width),v},f.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},f.prototype.$getZoom=function(h){return!h||!h.parentElement?1:(window.getComputedStyle(h).zoom||1)*this.$getZoom(h.parentElement)},f.prototype.$initTransformMeasureNodes=function(){var h=function(v,$){return["div",{style:"position: absolute;top:"+v+"px;left:"+$+"px;"}]};this.els=a.buildDom([h(0,0),h(o,0),h(0,o),h(o,o)],this.el)},f.prototype.transformCoordinates=function(h,v){if(h){var $=this.$getZoom(this.el);h=_(1/$,h)}function C(B,R,V){var F=B[1]*R[0]-B[0]*R[1];return[(-R[1]*V[0]+R[0]*V[1])/F,(+B[1]*V[0]-B[0]*V[1])/F]}function b(B,R){return[B[0]-R[0],B[1]-R[1]]}function y(B,R){return[B[0]+R[0],B[1]+R[1]]}function _(B,R){return[B*R[0],B*R[1]]}this.els||this.$initTransformMeasureNodes();function E(B){var R=B.getBoundingClientRect();return[R.left,R.top]}var O=E(this.els[0]),T=E(this.els[1]),x=E(this.els[2]),w=E(this.els[3]),M=C(b(w,T),b(w,x),b(y(T,x),y(w,O))),k=_(1+M[0],b(T,O)),S=_(1+M[1],b(x,O));if(v){var q=v,L=M[0]*q[0]/o+M[1]*q[1]/o+1,A=y(_(q[0],k),_(q[1],S));return y(_(1/L/o,A),O)}var D=b(h,O),N=C(b(k,_(M[0],D)),b(S,_(M[1],D)),D);return _(o,N)},f}();s.prototype.$characterSize={width:0,height:0},g.implement(s.prototype,r),p.FontMetrics=s}),ace.define("ace/css/editor.css",["require","exports","module"],function(e,p,m){m.exports=` -.ace_br1 {border-top-left-radius : 3px;} -.ace_br2 {border-top-right-radius : 3px;} -.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} -.ace_br4 {border-bottom-right-radius: 3px;} -.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} -.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} -.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} -.ace_br8 {border-bottom-left-radius : 3px;} -.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} -.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} -.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} - - -.ace_editor { - position: relative; - overflow: hidden; - padding: 0; - font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace; - direction: ltr; - text-align: left; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -.ace_scroller { - position: absolute; - overflow: hidden; - top: 0; - bottom: 0; - background-color: inherit; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - cursor: text; -} - -.ace_content { - position: absolute; - box-sizing: border-box; - min-width: 100%; - contain: style size layout; - font-variant-ligatures: no-common-ligatures; -} - -.ace_keyboard-focus:focus { - box-shadow: inset 0 0 0 2px #5E9ED6; - outline: none; -} - -.ace_dragging .ace_scroller:before{ - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - content: ''; - background: rgba(250, 250, 250, 0.01); - z-index: 1000; -} -.ace_dragging.ace_dark .ace_scroller:before{ - background: rgba(0, 0, 0, 0.01); -} - -.ace_gutter { - position: absolute; - overflow : hidden; - width: auto; - top: 0; - bottom: 0; - left: 0; - cursor: default; - z-index: 4; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - contain: style size layout; -} - -.ace_gutter-active-line { - position: absolute; - left: 0; - right: 0; -} - -.ace_scroller.ace_scroll-left:after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; - pointer-events: none; -} - -.ace_gutter-cell, .ace_gutter-cell_svg-icons { - position: absolute; - top: 0; - left: 0; - right: 0; - padding-left: 19px; - padding-right: 6px; - background-repeat: no-repeat; -} - -.ace_gutter-cell_svg-icons .ace_gutter_annotation { - margin-left: -14px; - float: left; -} - -.ace_gutter-cell .ace_gutter_annotation { - margin-left: -19px; - float: left; -} - -.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: 2px center; -} - -.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: 2px center; -} - -.ace_gutter-cell.ace_info, .ace_icon.ace_info { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); - background-repeat: no-repeat; - background-position: 2px center; -} -.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); -} - -.ace_icon_svg.ace_error { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+"); - background-color: crimson; -} -.ace_icon_svg.ace_warning { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg=="); - background-color: darkorange; -} -.ace_icon_svg.ace_info { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg=="); - background-color: royalblue; -} - -.ace_icon_svg.ace_error_fold { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4="); - background-color: crimson; -} -.ace_icon_svg.ace_warning_fold { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4="); - background-color: darkorange; -} - -.ace_scrollbar { - contain: strict; - position: absolute; - right: 0; - bottom: 0; - z-index: 6; -} - -.ace_scrollbar-inner { - position: absolute; - cursor: text; - left: 0; - top: 0; -} - -.ace_scrollbar-v{ - overflow-x: hidden; - overflow-y: scroll; - top: 0; -} - -.ace_scrollbar-h { - overflow-x: scroll; - overflow-y: hidden; - left: 0; -} - -.ace_print-margin { - position: absolute; - height: 100%; -} - -.ace_text-input { - position: absolute; - z-index: 0; - width: 0.5em; - height: 1em; - opacity: 0; - background: transparent; - -moz-appearance: none; - appearance: none; - border: none; - resize: none; - outline: none; - overflow: hidden; - font: inherit; - padding: 0 1px; - margin: 0 -1px; - contain: strict; - -ms-user-select: text; - -moz-user-select: text; - -webkit-user-select: text; - user-select: text; - /*with \`pre-line\` chrome inserts   instead of space*/ - white-space: pre!important; -} -.ace_text-input.ace_composition { - background: transparent; - color: inherit; - z-index: 1000; - opacity: 1; -} -.ace_composition_placeholder { color: transparent } -.ace_composition_marker { - border-bottom: 1px solid; - position: absolute; - border-radius: 0; - margin-top: 1px; -} - -[ace_nocontext=true] { - transform: none!important; - filter: none!important; - clip-path: none!important; - mask : none!important; - contain: none!important; - perspective: none!important; - mix-blend-mode: initial!important; - z-index: auto; -} - -.ace_layer { - z-index: 1; - position: absolute; - overflow: hidden; - /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/ - word-wrap: normal; - white-space: pre; - height: 100%; - width: 100%; - box-sizing: border-box; - /* setting pointer-events: auto; on node under the mouse, which changes - during scroll, will break mouse wheel scrolling in Safari */ - pointer-events: none; -} - -.ace_gutter-layer { - position: relative; - width: auto; - text-align: right; - pointer-events: auto; - height: 1000000px; - contain: style size layout; -} - -.ace_text-layer { - font: inherit !important; - position: absolute; - height: 1000000px; - width: 1000000px; - contain: style size layout; -} - -.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group { - contain: style size layout; - position: absolute; - top: 0; - left: 0; - right: 0; -} - -.ace_hidpi .ace_text-layer, -.ace_hidpi .ace_gutter-layer, -.ace_hidpi .ace_content, -.ace_hidpi .ace_gutter { - contain: strict; -} -.ace_hidpi .ace_text-layer > .ace_line, -.ace_hidpi .ace_text-layer > .ace_line_group { - contain: strict; -} - -.ace_cjk { - display: inline-block; - text-align: center; -} - -.ace_cursor-layer { - z-index: 4; -} - -.ace_cursor { - z-index: 4; - position: absolute; - box-sizing: border-box; - border-left: 2px solid; - /* workaround for smooth cursor repaintng whole screen in chrome */ - transform: translatez(0); -} - -.ace_multiselect .ace_cursor { - border-left-width: 1px; -} - -.ace_slim-cursors .ace_cursor { - border-left-width: 1px; -} - -.ace_overwrite-cursors .ace_cursor { - border-left-width: 0; - border-bottom: 1px solid; -} - -.ace_hidden-cursors .ace_cursor { - opacity: 0.2; -} - -.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor { - opacity: 0; -} - -.ace_smooth-blinking .ace_cursor { - transition: opacity 0.18s; -} - -.ace_animate-blinking .ace_cursor { - animation-duration: 1000ms; - animation-timing-function: step-end; - animation-name: blink-ace-animate; - animation-iteration-count: infinite; -} - -.ace_animate-blinking.ace_smooth-blinking .ace_cursor { - animation-duration: 1000ms; - animation-timing-function: ease-in-out; - animation-name: blink-ace-animate-smooth; -} - -@keyframes blink-ace-animate { - from, to { opacity: 1; } - 60% { opacity: 0; } -} - -@keyframes blink-ace-animate-smooth { - from, to { opacity: 1; } - 45% { opacity: 1; } - 60% { opacity: 0; } - 85% { opacity: 0; } -} - -.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { - position: absolute; - z-index: 3; -} - -.ace_marker-layer .ace_selection { - position: absolute; - z-index: 5; -} - -.ace_marker-layer .ace_bracket { - position: absolute; - z-index: 6; -} - -.ace_marker-layer .ace_error_bracket { - position: absolute; - border-bottom: 1px solid #DE5555; - border-radius: 0; -} - -.ace_marker-layer .ace_active-line { - position: absolute; - z-index: 2; -} - -.ace_marker-layer .ace_selected-word { - position: absolute; - z-index: 4; - box-sizing: border-box; -} - -.ace_line .ace_fold { - box-sizing: border-box; - - display: inline-block; - height: 11px; - margin-top: -2px; - vertical-align: middle; - - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); - background-repeat: no-repeat, repeat-x; - background-position: center center, top left; - color: transparent; - - border: 1px solid black; - border-radius: 2px; - - cursor: pointer; - pointer-events: auto; -} - -.ace_dark .ace_fold { -} - -.ace_fold:hover{ - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); -} - -.ace_tooltip { - background-color: #f5f5f5; - border: 1px solid gray; - border-radius: 1px; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); - color: black; - max-width: 100%; - padding: 3px 4px; - position: fixed; - z-index: 999999; - box-sizing: border-box; - cursor: default; - white-space: pre; - word-wrap: break-word; - line-height: normal; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - pointer-events: none; -} - -.ace_tooltip.ace_dark { - background-color: #636363; - color: #fff; -} - -.ace_tooltip:focus { - outline: 1px solid #5E9ED6; -} - -.ace_icon { - display: inline-block; - width: 18px; - vertical-align: top; -} - -.ace_icon_svg { - display: inline-block; - width: 12px; - vertical-align: top; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: 12px; - -webkit-mask-position: center; -} - -.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons { - padding-right: 13px; -} - -.ace_fold-widget { - box-sizing: border-box; - - margin: 0 -12px 0 1px; - display: none; - width: 11px; - vertical-align: top; - - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: center; - - border-radius: 3px; - - border: 1px solid transparent; - cursor: pointer; -} - -.ace_folding-enabled .ace_fold-widget { - display: inline-block; -} - -.ace_fold-widget.ace_end { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); -} - -.ace_fold-widget.ace_closed { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); -} - -.ace_fold-widget:hover { - border: 1px solid rgba(0, 0, 0, 0.3); - background-color: rgba(255, 255, 255, 0.2); - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); -} - -.ace_fold-widget:active { - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); -} -/** - * Dark version for fold widgets - */ -.ace_dark .ace_fold-widget { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); -} -.ace_dark .ace_fold-widget.ace_end { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); -} -.ace_dark .ace_fold-widget.ace_closed { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); -} -.ace_dark .ace_fold-widget:hover { - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); - background-color: rgba(255, 255, 255, 0.1); -} -.ace_dark .ace_fold-widget:active { - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); -} - -.ace_inline_button { - border: 1px solid lightgray; - display: inline-block; - margin: -1px 8px; - padding: 0 5px; - pointer-events: auto; - cursor: pointer; -} -.ace_inline_button:hover { - border-color: gray; - background: rgba(200,200,200,0.2); - display: inline-block; - pointer-events: auto; -} - -.ace_fold-widget.ace_invalid { - background-color: #FFB4B4; - border-color: #DE5555; -} - -.ace_fade-fold-widgets .ace_fold-widget { - transition: opacity 0.4s ease 0.05s; - opacity: 0; -} - -.ace_fade-fold-widgets:hover .ace_fold-widget { - transition: opacity 0.05s ease 0.05s; - opacity:1; -} - -.ace_underline { - text-decoration: underline; -} - -.ace_bold { - font-weight: bold; -} - -.ace_nobold .ace_bold { - font-weight: normal; -} - -.ace_italic { - font-style: italic; -} - - -.ace_error-marker { - background-color: rgba(255, 0, 0,0.2); - position: absolute; - z-index: 9; -} - -.ace_highlight-marker { - background-color: rgba(255, 255, 0,0.2); - position: absolute; - z-index: 8; -} - -.ace_mobile-menu { - position: absolute; - line-height: 1.5; - border-radius: 4px; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - background: white; - box-shadow: 1px 3px 2px grey; - border: 1px solid #dcdcdc; - color: black; -} -.ace_dark > .ace_mobile-menu { - background: #333; - color: #ccc; - box-shadow: 1px 3px 2px grey; - border: 1px solid #444; - -} -.ace_mobile-button { - padding: 2px; - cursor: pointer; - overflow: hidden; -} -.ace_mobile-button:hover { - background-color: #eee; - opacity:1; -} -.ace_mobile-button:active { - background-color: #ddd; -} - -.ace_placeholder { - font-family: arial; - transform: scale(0.9); - transform-origin: left; - white-space: pre; - opacity: 0.7; - margin: 0 10px; -} - -.ace_ghost_text { - opacity: 0.5; - font-style: italic; - white-space: pre; -}`}),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(e,p,m){var g=e("../lib/dom"),a=e("../lib/oop"),c=e("../lib/event_emitter").EventEmitter,i=function(){function u(r,t){this.canvas=g.createElement("canvas"),this.renderer=t,this.pixelRatio=1,this.maxHeight=t.layerConfig.maxHeight,this.lineHeight=t.layerConfig.lineHeight,this.canvasHeight=r.parent.scrollHeight,this.heightRatio=this.canvasHeight/this.maxHeight,this.canvasWidth=r.width,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.canvas.style.top=0+"px",this.canvas.style.right=0+"px",this.canvas.style.zIndex=7+"px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},r.element.appendChild(this.canvas)}return u.prototype.$updateDecorators=function(r){var t=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;if(r){this.maxHeight=r.maxHeight,this.lineHeight=r.lineHeight,this.canvasHeight=r.height;var l=(r.lastRow+1)*this.lineHeight;lM.priority?1:0}var f=this.renderer.session.$annotations;if(o.clearRect(0,0,this.canvas.width,this.canvas.height),f){var h={info:1,warning:2,error:3};f.forEach(function(w){w.priority=h[w.type]||null}),f=f.sort(s);for(var v=this.renderer.session.$foldData,$=0;$this.canvasHeight&&(T=this.canvasHeight-this.halfMinDecorationHeight),_=Math.round(T-this.halfMinDecorationHeight),E=Math.round(T+this.halfMinDecorationHeight)}o.fillStyle=t[f[$].type]||null,o.fillRect(0,y,this.canvasWidth,E-_)}}var x=this.renderer.session.selection.getCursor();if(x){var b=this.compensateFoldRows(x.row,v),y=Math.round((x.row-b)*this.lineHeight*this.heightRatio);o.fillStyle="rgba(0, 0, 0, 0.5)",o.fillRect(0,y,this.canvasWidth,2)}},u.prototype.compensateFoldRows=function(r,t){var l=0;if(t&&t.length>0)for(var o=0;ot[o].start.row&&r=t[o].end.row&&(l+=t[o].end.row-t[o].start.row);return l},u}();a.implement(i.prototype,c),p.Decorator=i}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor.css","ace/layer/decorators","ace/lib/useragent"],function(e,p,m){var g=e("./lib/oop"),a=e("./lib/dom"),c=e("./lib/lang"),i=e("./config"),u=e("./layer/gutter").Gutter,r=e("./layer/marker").Marker,t=e("./layer/text").Text,l=e("./layer/cursor").Cursor,o=e("./scrollbar").HScrollBar,s=e("./scrollbar").VScrollBar,f=e("./scrollbar_custom").HScrollBar,h=e("./scrollbar_custom").VScrollBar,v=e("./renderloop").RenderLoop,$=e("./layer/font_metrics").FontMetrics,C=e("./lib/event_emitter").EventEmitter,b=e("./css/editor.css"),y=e("./layer/decorators").Decorator,_=e("./lib/useragent");a.importCssString(b,"ace_editor.css",!1);var E=function(){function O(T,x){var w=this;this.container=T||a.createElement("div"),a.addCssClass(this.container,"ace_editor"),a.HI_DPI&&a.addCssClass(this.container,"ace_hidpi"),this.setTheme(x),i.get("useStrictCSP")==null&&i.set("useStrictCSP",!1),this.$gutter=a.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=a.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=a.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new r(this.content);var M=this.$textLayer=new t(this.content);this.canvas=M.element,this.$markerFront=new r(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new s(this.container,this),this.scrollBarH=new o(this.container,this),this.scrollBarV.on("scroll",function(k){w.$scrollAnimation||w.session.setScrollTop(k.data-w.scrollMargin.top)}),this.scrollBarH.on("scroll",function(k){w.$scrollAnimation||w.session.setScrollLeft(k.data-w.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new $(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.on("changeCharacterSize",function(k){w.updateCharacterSize(),w.onResize(!0,w.gutterWidth,w.$size.width,w.$size.height),w._signal("changeCharacterSize",k)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!_.isIOS,this.$loop=new v(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),this.$addResizeObserver(),i.resetOptions(this),i._signal("renderer",this)}return O.prototype.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),a.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},O.prototype.setSession=function(T){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=T,T&&this.scrollMargin.top&&T.getScrollTop()<=0&&T.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(T),this.$markerBack.setSession(T),this.$markerFront.setSession(T),this.$gutterLayer.setSession(T),this.$textLayer.setSession(T),!!T&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},O.prototype.updateLines=function(T,x,w){if(x===void 0&&(x=1/0),this.$changedLines?(this.$changedLines.firstRow>T&&(this.$changedLines.firstRow=T),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},O.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},O.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},O.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},O.prototype.updateFull=function(T){T?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},O.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},O.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},O.prototype.onResize=function(T,x,w,M){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=T?1:0;var k=this.container;M||(M=k.clientHeight||k.scrollHeight),w||(w=k.clientWidth||k.scrollWidth);var S=this.$updateCachedSize(T,x,w,M);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!w&&!M)return this.resizing=0;T&&(this.$gutterLayer.$padding=null),T?this.$renderChanges(S|this.$changes,!0):this.$loop.schedule(S|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},O.prototype.$updateCachedSize=function(T,x,w,M){M-=this.$extraHeight||0;var k=0,S=this.$size,q={width:S.width,height:S.height,scrollerHeight:S.scrollerHeight,scrollerWidth:S.scrollerWidth};if(M&&(T||S.height!=M)&&(S.height=M,k|=this.CHANGE_SIZE,S.scrollerHeight=S.height,this.$horizScroll&&(S.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(S.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",k=k|this.CHANGE_SCROLL),w&&(T||S.width!=w)){k|=this.CHANGE_SIZE,S.width=w,x==null&&(x=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=x,a.setStyle(this.scrollBarH.element.style,"left",x+"px"),a.setStyle(this.scroller.style,"left",x+this.margin.left+"px"),S.scrollerWidth=Math.max(0,w-x-this.scrollBarV.getWidth()-this.margin.h),a.setStyle(this.$gutter.style,"left",this.margin.left+"px");var L=this.scrollBarV.getWidth()+"px";a.setStyle(this.scrollBarH.element.style,"right",L),a.setStyle(this.scroller.style,"right",L),a.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(S.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||T)&&(k|=this.CHANGE_FULL)}return S.$dirty=!w||!M,k&&this._signal("resize",q),k},O.prototype.onGutterResize=function(T){var x=this.$showGutter?T:0;x!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,x,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},O.prototype.adjustWrapLimit=function(){var T=this.$size.scrollerWidth-this.$padding*2,x=Math.floor(T/this.characterWidth);return this.session.adjustWrapLimit(x,this.$showPrintMargin&&this.$printMarginColumn)},O.prototype.setAnimatedScroll=function(T){this.setOption("animatedScroll",T)},O.prototype.getAnimatedScroll=function(){return this.$animatedScroll},O.prototype.setShowInvisibles=function(T){this.setOption("showInvisibles",T),this.session.$bidiHandler.setShowInvisibles(T)},O.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},O.prototype.getDisplayIndentGuide=function(){return this.getOption("displayIndentGuides")},O.prototype.setDisplayIndentGuides=function(T){this.setOption("displayIndentGuides",T)},O.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},O.prototype.setHighlightIndentGuides=function(T){this.setOption("highlightIndentGuides",T)},O.prototype.setShowPrintMargin=function(T){this.setOption("showPrintMargin",T)},O.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},O.prototype.setPrintMarginColumn=function(T){this.setOption("printMarginColumn",T)},O.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},O.prototype.getShowGutter=function(){return this.getOption("showGutter")},O.prototype.setShowGutter=function(T){return this.setOption("showGutter",T)},O.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},O.prototype.setFadeFoldWidgets=function(T){this.setOption("fadeFoldWidgets",T)},O.prototype.setHighlightGutterLine=function(T){this.setOption("highlightGutterLine",T)},O.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},O.prototype.$updatePrintMargin=function(){if(!(!this.$showPrintMargin&&!this.$printMarginEl)){if(!this.$printMarginEl){var T=a.createElement("div");T.className="ace_layer ace_print-margin-layer",this.$printMarginEl=a.createElement("div"),this.$printMarginEl.className="ace_print-margin",T.appendChild(this.$printMarginEl),this.content.insertBefore(T,this.content.firstChild)}var x=this.$printMarginEl.style;x.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",x.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},O.prototype.getContainerElement=function(){return this.container},O.prototype.getMouseEventTarget=function(){return this.scroller},O.prototype.getTextAreaContainer=function(){return this.container},O.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var T=this.textarea.style,x=this.$composition;if(!this.$keepTextAreaAtCursor&&!x){a.translate(this.textarea,-100,0);return}var w=this.$cursorLayer.$pixelPos;if(!!w){x&&x.markerRange&&(w=this.$cursorLayer.getPixelPosition(x.markerRange.start,!0));var M=this.layerConfig,k=w.top,S=w.left;k-=M.offset;var q=x&&x.useTextareaForIME||_.isMobile?this.lineHeight:1;if(k<0||k>M.height-q){a.translate(this.textarea,0,0);return}var L=1,A=this.$size.height-q;if(!x)k+=this.lineHeight;else if(x.useTextareaForIME){var D=this.textarea.value;L=this.characterWidth*this.session.$getStringScreenWidth(D)[0]}else k+=this.lineHeight+2;S-=this.scrollLeft,S>this.$size.scrollerWidth-L&&(S=this.$size.scrollerWidth-L),S+=this.gutterWidth+this.margin.left,a.setStyle(T,"height",q+"px"),a.setStyle(T,"width",L+"px"),a.translate(this.textarea,Math.min(S,this.$size.scrollerWidth-L),Math.min(k,A))}}},O.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},O.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},O.prototype.getLastFullyVisibleRow=function(){var T=this.layerConfig,x=T.lastRow,w=this.session.documentToScreenRow(x,0)*T.lineHeight;return w-this.session.getScrollTop()>T.height-T.lineHeight?x-1:x},O.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},O.prototype.setPadding=function(T){this.$padding=T,this.$textLayer.setPadding(T),this.$cursorLayer.setPadding(T),this.$markerFront.setPadding(T),this.$markerBack.setPadding(T),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},O.prototype.setScrollMargin=function(T,x,w,M){var k=this.scrollMargin;k.top=T|0,k.bottom=x|0,k.right=M|0,k.left=w|0,k.v=k.top+k.bottom,k.h=k.left+k.right,k.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-k.top),this.updateFull()},O.prototype.setMargin=function(T,x,w,M){var k=this.margin;k.top=T|0,k.bottom=x|0,k.right=M|0,k.left=w|0,k.v=k.top+k.bottom,k.h=k.left+k.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},O.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},O.prototype.setHScrollBarAlwaysVisible=function(T){this.setOption("hScrollBarAlwaysVisible",T)},O.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},O.prototype.setVScrollBarAlwaysVisible=function(T){this.setOption("vScrollBarAlwaysVisible",T)},O.prototype.$updateScrollBarV=function(){var T=this.layerConfig.maxHeight,x=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(T-=(x-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>T-x&&(T=this.scrollTop+x,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(T+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},O.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},O.prototype.freeze=function(){this.$frozen=!0},O.prototype.unfreeze=function(){this.$frozen=!1},O.prototype.$renderChanges=function(T,x){if(this.$changes&&(T|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!T&&!x){this.$changes|=T;return}if(this.$size.$dirty)return this.$changes|=T,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",T),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var w=this.layerConfig;if(T&this.CHANGE_FULL||T&this.CHANGE_SIZE||T&this.CHANGE_TEXT||T&this.CHANGE_LINES||T&this.CHANGE_SCROLL||T&this.CHANGE_H_SCROLL){if(T|=this.$computeLayerConfig()|this.$loop.clear(),w.firstRow!=this.layerConfig.firstRow&&w.firstRowScreen==this.layerConfig.firstRowScreen){var M=this.scrollTop+(w.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;M>0&&(this.scrollTop=M,T=T|this.CHANGE_SCROLL,T|=this.$computeLayerConfig()|this.$loop.clear())}w=this.layerConfig,this.$updateScrollBarV(),T&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),a.translate(this.content,-this.scrollLeft,-w.offset);var k=w.width+2*this.$padding+"px",S=w.minHeight+"px";a.setStyle(this.content.style,"width",k),a.setStyle(this.content.style,"height",S)}if(T&this.CHANGE_H_SCROLL&&(a.translate(this.content,-this.scrollLeft,-w.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),T&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(w),this.$showGutter&&this.$gutterLayer.update(w),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(w),this.$markerBack.update(w),this.$markerFront.update(w),this.$cursorLayer.update(w),this.$moveTextAreaToCursor(),this._signal("afterRender",T);return}if(T&this.CHANGE_SCROLL){this.$changedLines=null,T&this.CHANGE_TEXT||T&this.CHANGE_LINES?this.$textLayer.update(w):this.$textLayer.scrollLines(w),this.$showGutter&&(T&this.CHANGE_GUTTER||T&this.CHANGE_LINES?this.$gutterLayer.update(w):this.$gutterLayer.scrollLines(w)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(w),this.$markerBack.update(w),this.$markerFront.update(w),this.$cursorLayer.update(w),this.$moveTextAreaToCursor(),this._signal("afterRender",T);return}T&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(w),this.$showGutter&&this.$gutterLayer.update(w),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(w)):T&this.CHANGE_LINES?((this.$updateLines()||T&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(w),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(w)):T&this.CHANGE_TEXT||T&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(w),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(w)):T&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(w),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(w)),T&this.CHANGE_CURSOR&&(this.$cursorLayer.update(w),this.$moveTextAreaToCursor()),T&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(w),T&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(w),this._signal("afterRender",T)},O.prototype.$autosize=function(){var T=this.session.getScreenLength()*this.lineHeight,x=this.$maxLines*this.lineHeight,w=Math.min(x,Math.max((this.$minLines||1)*this.lineHeight,T))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(w+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&w>this.$maxPixelHeight&&(w=this.$maxPixelHeight);var M=w<=2*this.lineHeight,k=!M&&T>x;if(w!=this.desiredHeight||this.$size.height!=this.desiredHeight||k!=this.$vScroll){k!=this.$vScroll&&(this.$vScroll=k,this.scrollBarV.setVisible(k));var S=this.container.clientWidth;this.container.style.height=w+"px",this.$updateCachedSize(!0,this.$gutterWidth,S,w),this.desiredHeight=w,this._signal("autosize")}},O.prototype.$computeLayerConfig=function(){var T=this.session,x=this.$size,w=x.height<=2*this.lineHeight,M=this.session.getScreenLength(),k=M*this.lineHeight,S=this.$getLongestLine(),q=!w&&(this.$hScrollBarAlwaysVisible||x.scrollerWidth-S-2*this.$padding<0),L=this.$horizScroll!==q;L&&(this.$horizScroll=q,this.scrollBarH.setVisible(q));var A=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var D=x.scrollerHeight+this.lineHeight,N=!this.$maxLines&&this.$scrollPastEnd?(x.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;k+=N;var B=this.scrollMargin;this.session.setScrollTop(Math.max(-B.top,Math.min(this.scrollTop,k-x.scrollerHeight+B.bottom))),this.session.setScrollLeft(Math.max(-B.left,Math.min(this.scrollLeft,S+2*this.$padding-x.scrollerWidth+B.right)));var R=!w&&(this.$vScrollBarAlwaysVisible||x.scrollerHeight-k+N<0||this.scrollTop>B.top),V=A!==R;V&&(this.$vScroll=R,this.scrollBarV.setVisible(R));var F=this.scrollTop%this.lineHeight,P=Math.ceil(D/this.lineHeight)-1,j=Math.max(0,Math.round((this.scrollTop-F)/this.lineHeight)),I=j+P,W,H,z=this.lineHeight;j=T.screenToDocumentRow(j,0);var G=T.getFoldLine(j);G&&(j=G.start.row),W=T.documentToScreenRow(j,0),H=T.getRowLength(j)*z,I=Math.min(T.screenToDocumentRow(I,0),T.getLength()-1),D=x.scrollerHeight+T.getRowLength(I)*z+H,F=this.scrollTop-W*z;var Z=0;return(this.layerConfig.width!=S||L)&&(Z=this.CHANGE_H_SCROLL),(L||V)&&(Z|=this.$updateCachedSize(!0,this.gutterWidth,x.width,x.height),this._signal("scrollbarVisibilityChanged"),V&&(S=this.$getLongestLine())),this.layerConfig={width:S,padding:this.$padding,firstRow:j,firstRowScreen:W,lastRow:I,lineHeight:z,characterWidth:this.characterWidth,minHeight:D,maxHeight:k,offset:F,gutterOffset:z?Math.max(0,Math.ceil((F+x.height-x.scrollerHeight)/z)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(S-this.$padding),Z},O.prototype.$updateLines=function(){if(!!this.$changedLines){var T=this.$changedLines.firstRow,x=this.$changedLines.lastRow;this.$changedLines=null;var w=this.layerConfig;if(!(T>w.lastRow+1)&&!(xthis.$textLayer.MAX_LINE_LENGTH&&(T=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(T*this.characterWidth))},O.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},O.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},O.prototype.addGutterDecoration=function(T,x){this.$gutterLayer.addGutterDecoration(T,x)},O.prototype.removeGutterDecoration=function(T,x){this.$gutterLayer.removeGutterDecoration(T,x)},O.prototype.updateBreakpoints=function(T){this.$loop.schedule(this.CHANGE_GUTTER)},O.prototype.setAnnotations=function(T){this.$gutterLayer.setAnnotations(T),this.$loop.schedule(this.CHANGE_GUTTER)},O.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},O.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},O.prototype.showCursor=function(){this.$cursorLayer.showCursor()},O.prototype.scrollSelectionIntoView=function(T,x,w){this.scrollCursorIntoView(T,w),this.scrollCursorIntoView(x,w)},O.prototype.scrollCursorIntoView=function(T,x,w){if(this.$size.scrollerHeight!==0){var M=this.$cursorLayer.getPixelPosition(T),k=M.left,S=M.top,q=w&&w.top||0,L=w&&w.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var A=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;A+q>S?(x&&A+q>S+this.lineHeight&&(S-=x*this.$size.scrollerHeight),S===0&&(S=-this.scrollMargin.top),this.session.setScrollTop(S)):A+this.$size.scrollerHeight-L=1-this.scrollMargin.top||x>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||T<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||T>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},O.prototype.pixelToScreenCoordinates=function(T,x){var w;if(this.$hasCssTransforms){w={top:0,left:0};var M=this.$fontMetrics.transformCoordinates([T,x]);T=M[1]-this.gutterWidth-this.margin.left,x=M[0]}else w=this.scroller.getBoundingClientRect();var k=T+this.scrollLeft-w.left-this.$padding,S=k/this.characterWidth,q=Math.floor((x+this.scrollTop-w.top)/this.lineHeight),L=this.$blockCursor?Math.floor(S):Math.round(S);return{row:q,column:L,side:S-L>0?1:-1,offsetX:k}},O.prototype.screenToTextCoordinates=function(T,x){var w;if(this.$hasCssTransforms){w={top:0,left:0};var M=this.$fontMetrics.transformCoordinates([T,x]);T=M[1]-this.gutterWidth-this.margin.left,x=M[0]}else w=this.scroller.getBoundingClientRect();var k=T+this.scrollLeft-w.left-this.$padding,S=k/this.characterWidth,q=this.$blockCursor?Math.floor(S):Math.round(S),L=Math.floor((x+this.scrollTop-w.top)/this.lineHeight);return this.session.screenToDocumentPosition(L,Math.max(q,0),k)},O.prototype.textToScreenCoordinates=function(T,x){var w=this.scroller.getBoundingClientRect(),M=this.session.documentToScreenPosition(T,x),k=this.$padding+(this.session.$bidiHandler.isBidiRow(M.row,T)?this.session.$bidiHandler.getPosLeft(M.column):Math.round(M.column*this.characterWidth)),S=M.row*this.lineHeight;return{pageX:w.left+k-this.scrollLeft,pageY:w.top+S-this.scrollTop}},O.prototype.visualizeFocus=function(){a.addCssClass(this.container,"ace_focus")},O.prototype.visualizeBlur=function(){a.removeCssClass(this.container,"ace_focus")},O.prototype.showComposition=function(T){this.$composition=T,T.cssText||(T.cssText=this.textarea.style.cssText),T.useTextareaForIME==null&&(T.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(a.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):T.markerId=this.session.addMarker(T.markerRange,"ace_composition_marker","text")},O.prototype.setCompositionText=function(T){var x=this.session.selection.cursor;this.addToken(T,"composition_placeholder",x.row,x.column),this.$moveTextAreaToCursor()},O.prototype.hideComposition=function(){if(!!this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),a.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var T=this.session.selection.cursor;this.removeExtraToken(T.row,T.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},O.prototype.setGhostText=function(T,x){var w=this.session.selection.cursor,M=x||{row:w.row,column:w.column};this.removeGhostText();var k=T.split(` -`);this.addToken(k[0],"ghost_text",M.row,M.column),this.$ghostText={text:T,position:{row:M.row,column:M.column}},k.length>1&&(this.$ghostTextWidget={text:k.slice(1).join(` -`),row:M.row,column:M.column,className:"ace_ghost_text"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget))},O.prototype.removeGhostText=function(){if(!!this.$ghostText){var T=this.$ghostText.position;this.removeExtraToken(T.row,T.column),this.$ghostTextWidget&&(this.session.widgetManager.removeLineWidget(this.$ghostTextWidget),this.$ghostTextWidget=null),this.$ghostText=null}},O.prototype.addToken=function(T,x,w,M){var k=this.session;k.bgTokenizer.lines[w]=null;var S={type:x,value:T},q=k.getTokens(w);if(M==null||!q.length)q.push(S);else for(var L=0,A=0;A1||Math.abs(T.$size.height-M)>1?T.$resizeTimer.delay():T.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)}},O}();E.prototype.CHANGE_CURSOR=1,E.prototype.CHANGE_MARKER=2,E.prototype.CHANGE_GUTTER=4,E.prototype.CHANGE_SCROLL=8,E.prototype.CHANGE_LINES=16,E.prototype.CHANGE_TEXT=32,E.prototype.CHANGE_SIZE=64,E.prototype.CHANGE_MARKER_BACK=128,E.prototype.CHANGE_MARKER_FRONT=256,E.prototype.CHANGE_FULL=512,E.prototype.CHANGE_H_SCROLL=1024,E.prototype.$changes=0,E.prototype.$padding=null,E.prototype.$frozen=!1,E.prototype.STEPS=8,g.implement(E.prototype,C),i.defineOptions(E.prototype,"renderer",{useResizeObserver:{set:function(O){!O&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):O&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(O){this.$textLayer.setShowInvisibles(O)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(O){typeof O=="number"&&(this.$printMarginColumn=O),this.$showPrintMargin=!!O,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(O){this.$gutter.style.display=O?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(O){this.$gutterLayer.$useSvgGutterIcons=O},initialValue:!1},showFoldedAnnotations:{set:function(O){this.$gutterLayer.$showFoldedAnnotations=O},initialValue:!1},fadeFoldWidgets:{set:function(O){a.setCssClass(this.$gutter,"ace_fade-fold-widgets",O)},initialValue:!1},showFoldWidgets:{set:function(O){this.$gutterLayer.setShowFoldWidgets(O),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(O){this.$textLayer.setDisplayIndentGuides(O)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(O){this.$textLayer.setHighlightIndentGuides(O)==!0?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(O){this.$gutterLayer.setHighlightGutterLine(O),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(O){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(O){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(O){typeof O=="number"&&(O=O+"px"),this.container.style.fontSize=O,this.updateFontSize()},initialValue:12},fontFamily:{set:function(O){this.container.style.fontFamily=O,this.updateFontSize()}},maxLines:{set:function(O){this.updateFull()}},minLines:{set:function(O){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(O){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(O){O=+O||0,this.$scrollPastEnd!=O&&(this.$scrollPastEnd=O,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(O){this.$gutterLayer.$fixedWidth=!!O,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(O){this.$updateCustomScrollbar(O)},initialValue:!1},theme:{set:function(O){this.setTheme(O)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!_.isMobile&&!_.isIE}}),p.VirtualRenderer=E}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,p,m){var g=e("../lib/oop"),a=e("../lib/net"),c=e("../lib/event_emitter").EventEmitter,i=e("../config");function u(o){var s="importScripts('"+a.qualifyURL(o)+"');";try{return new Blob([s],{type:"application/javascript"})}catch{var f=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,h=new f;return h.append(s),h.getBlob("application/javascript")}}function r(o){if(typeof Worker=="undefined")return{postMessage:function(){},terminate:function(){}};if(i.get("loadWorkerFromBlob")){var s=u(o),f=window.URL||window.webkitURL,h=f.createObjectURL(s);return new Worker(h)}return new Worker(o)}var t=function(o){o.postMessage||(o=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=o,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){g.implement(this,c),this.$createWorkerFromOldConfig=function(o,s,f,h,v){if(e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),i.get("packaged")||!e.toUrl)h=h||i.moduleUrl(s,"worker");else{var $=this.$normalizePath;h=h||$(e.toUrl("ace/worker/worker.js",null,"_"));var C={};o.forEach(function(b){C[b]=$(e.toUrl(b,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=r(h),v&&this.send("importScripts",v),this.$worker.postMessage({init:!0,tlns:C,module:s,classname:f}),this.$worker},this.onMessage=function(o){var s=o.data;switch(s.type){case"event":this._signal(s.name,{data:s.data});break;case"call":var f=this.callbacks[s.id];f&&(f(s.data),delete this.callbacks[s.id]);break;case"error":this.reportError(s.data);break;case"log":window.console&&console.log&&console.log.apply(console,s.data);break}},this.reportError=function(o){window.console&&console.error&&console.error(o)},this.$normalizePath=function(o){return a.qualifyURL(o)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(o,s){this.$worker.postMessage({command:o,args:s})},this.call=function(o,s,f){if(f){var h=this.callbackId++;this.callbacks[h]=f,s.push(h)}this.send(o,s)},this.emit=function(o,s){try{s.data&&s.data.err&&(s.data.err={message:s.data.err.message,stack:s.data.err.stack,code:s.data.err.code}),this.$worker&&this.$worker.postMessage({event:o,data:{data:s.data}})}catch(f){console.error(f.stack)}},this.attachToDocument=function(o){this.$doc&&this.terminate(),this.$doc=o,this.call("setValue",[o.getValue()]),o.on("change",this.changeListener,!0)},this.changeListener=function(o){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),o.action=="insert"?this.deltaQueue.push(o.start,o.lines):this.deltaQueue.push(o.start,o.end)},this.$sendDeltaQueue=function(){var o=this.deltaQueue;!o||(this.deltaQueue=null,o.length>50&&o.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:o}))}}).call(t.prototype);var l=function(o,s,f){var h=null,v=!1,$=Object.create(c),C=[],b=new t({messageBuffer:C,terminate:function(){},postMessage:function(_){C.push(_),!!h&&(v?setTimeout(y):y())}});b.setEmitSync=function(_){v=_};var y=function(){var _=C.shift();_.command?h[_.command].apply(h,_.args):_.event&&$._signal(_.event,_.data)};return $.postMessage=function(_){b.onMessage({data:_})},$.callback=function(_,E){this.postMessage({type:"call",id:E,data:_})},$.emit=function(_,E){this.postMessage({type:"event",name:_,data:E})},i.loadModule(["worker",s],function(_){for(h=new _[f]($);C.length;)y()}),b};p.UIWorkerClient=l,p.WorkerClient=t,p.createWorker=r}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,p,m){var g=e("./range").Range,a=e("./lib/event_emitter").EventEmitter,c=e("./lib/oop"),i=function(){function u(r,t,l,o,s,f){var h=this;this.length=t,this.session=r,this.doc=r.getDocument(),this.mainClass=s,this.othersClass=f,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=o,this.$onCursorChange=function(){setTimeout(function(){h.onCursorChange()})},this.$pos=l;var v=r.getUndoManager().$undoStack||r.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=v.length,this.setup(),r.selection.on("changeCursor",this.$onCursorChange)}return u.prototype.setup=function(){var r=this,t=this.doc,l=this.session;this.selectionBefore=l.selection.toJSON(),l.selection.inMultiSelectMode&&l.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var o=this.pos;o.$insertRight=!0,o.detach(),o.markerId=l.addMarker(new g(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(s){var f=t.createAnchor(s.row,s.column);f.$insertRight=!0,f.detach(),r.others.push(f)}),l.setUndoSelect(!1)},u.prototype.showOtherMarkers=function(){if(!this.othersActive){var r=this.session,t=this;this.othersActive=!0,this.others.forEach(function(l){l.markerId=r.addMarker(new g(l.row,l.column,l.row,l.column+t.length),t.othersClass,null,!1)})}},u.prototype.hideOtherMarkers=function(){if(!!this.othersActive){this.othersActive=!1;for(var r=0;r=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;if(this.updateAnchors(r),o&&(this.length+=l),o&&!this.session.$fromUndo){if(r.action==="insert")for(var f=this.others.length-1;f>=0;f--){var h=this.others[f],v={row:h.row,column:h.column+s};this.doc.insertMergedLines(v,r.lines)}else if(r.action==="remove")for(var f=this.others.length-1;f>=0;f--){var h=this.others[f],v={row:h.row,column:h.column+s};this.doc.remove(new g(v.row,v.column,v.row,v.column-l))}}this.$updating=!1,this.updateMarkers()}},u.prototype.updateAnchors=function(r){this.pos.onChange(r);for(var t=this.others.length;t--;)this.others[t].onChange(r);this.updateMarkers()},u.prototype.updateMarkers=function(){if(!this.$updating){var r=this,t=this.session,l=function(s,f){t.removeMarker(s.markerId),s.markerId=t.addMarker(new g(s.row,s.column,s.row,s.column+r.length),f,null,!1)};l(this.pos,this.mainClass);for(var o=this.others.length;o--;)l(this.others[o],this.othersClass)}},u.prototype.onCursorChange=function(r){if(!(this.$updating||!this.session)){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",r)):(this.hideOtherMarkers(),this._emit("cursorLeave",r))}},u.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},u.prototype.cancel=function(){if(this.$undoStackDepth!==-1){for(var r=this.session.getUndoManager(),t=(r.$undoStack||r.$undostack).length-this.$undoStackDepth,l=0;l1?a.multiSelect.joinSelections():a.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(a){a.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(a){a.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(a){a.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],p.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(a){a.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(a){return a&&a.inMultiSelectMode}}];var g=e("../keyboard/hash_handler").HashHandler;p.keyboardHandler=new g(p.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,p,m){var g=e("./range_list").RangeList,a=e("./range").Range,c=e("./selection").Selection,i=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),r=e("./lib/lang"),t=e("./commands/multi_select_commands");p.commands=t.defaultCommands.concat(t.multiSelectCommands);var l=e("./search").Search,o=new l;function s(b,y,_){return o.$options.wrap=!0,o.$options.needle=y,o.$options.backwards=_==-1,o.find(b)}var f=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(f.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(b,y){if(!!b){if(!this.inMultiSelectMode&&this.rangeCount===0){var _=this.toOrientedRange();if(this.rangeList.add(_),this.rangeList.add(b),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),y||this.fromOrientedRange(b);this.rangeList.removeAll(),this.rangeList.add(_),this.$onAddRange(_)}b.cursor||(b.cursor=b.end);var E=this.rangeList.add(b);return this.$onAddRange(b),E.length&&this.$onRemoveRange(E),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),y||this.fromOrientedRange(b)}},this.toSingleRange=function(b){b=b||this.ranges[0];var y=this.rangeList.removeAll();y.length&&this.$onRemoveRange(y),b&&this.fromOrientedRange(b)},this.substractPoint=function(b){var y=this.rangeList.substractPoint(b);if(y)return this.$onRemoveRange(y),y[0]},this.mergeOverlappingRanges=function(){var b=this.rangeList.merge();b.length&&this.$onRemoveRange(b)},this.$onAddRange=function(b){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(b),this._signal("addRange",{range:b})},this.$onRemoveRange=function(b){if(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode){var y=this.rangeList.ranges.pop();b.push(y),this.rangeCount=0}for(var _=b.length;_--;){var E=this.ranges.indexOf(b[_]);this.ranges.splice(E,1)}this._signal("removeRange",{ranges:b}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),y=y||this.ranges[0],y&&!y.isEqual(this.getRange())&&this.fromOrientedRange(y)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new g,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var b=this.ranges.length?this.ranges:[this.getRange()],y=[],_=0;_1){var b=this.rangeList.ranges,y=b[b.length-1],_=a.fromPoints(b[0].start,y.end);this.toSingleRange(),this.setSelectionRange(_,y.cursor==y.start)}else{var E=this.session.documentToScreenPosition(this.cursor),O=this.session.documentToScreenPosition(this.anchor),T=this.rectangularRangeBlock(E,O);T.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(b,y,_){var E=[],O=b.column0;)N--;if(N>0)for(var B=0;E[B].isEmpty();)B++;for(var R=N;R>=B;R--)E[R].isEmpty()&&E.splice(R,1)}return E}}.call(c.prototype);var h=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(b){b.cursor||(b.cursor=b.end);var y=this.getSelectionStyle();return b.marker=this.session.addMarker(b,"ace_selection",y),this.session.$selectionMarkers.push(b),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,b},this.removeSelectionMarker=function(b){if(!!b.marker){this.session.removeMarker(b.marker);var y=this.session.$selectionMarkers.indexOf(b);y!=-1&&this.session.$selectionMarkers.splice(y,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(b){for(var y=this.session.$selectionMarkers,_=b.length;_--;){var E=b[_];if(!!E.marker){this.session.removeMarker(E.marker);var O=y.indexOf(E);O!=-1&&y.splice(O,1)}}this.session.selectionMarkerCount=y.length},this.$onAddRange=function(b){this.addSelectionMarker(b.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(b){this.removeSelectionMarkers(b.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(b){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(t.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(b){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(t.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(b){var y=b.command,_=b.editor;if(!!_.multiSelect){if(y.multiSelectAction)y.multiSelectAction=="forEach"?E=_.forEachSelection(y,b.args):y.multiSelectAction=="forEachLine"?E=_.forEachSelection(y,b.args,!0):y.multiSelectAction=="single"?(_.exitMultiSelectMode(),E=y.exec(_,b.args||{})):E=y.multiSelectAction(_,b.args||{});else{var E=y.exec(_,b.args||{});_.multiSelect.addRange(_.multiSelect.toOrientedRange()),_.multiSelect.mergeOverlappingRanges()}return E}},this.forEachSelection=function(b,y,_){if(!this.inVirtualSelectionMode){var E=_&&_.keepOrder,O=_==!0||_&&_.$byLines,T=this.session,x=this.selection,w=x.rangeList,M=(E?x:w).ranges,k;if(!M.length)return b.exec?b.exec(this,y||{}):b(this,y||{});var S=x._eventRegistry;x._eventRegistry={};var q=new c(T);this.inVirtualSelectionMode=!0;for(var L=M.length;L--;){if(O)for(;L>0&&M[L].start.row==M[L-1].end.row;)L--;q.fromOrientedRange(M[L]),q.index=L,this.selection=T.selection=q;var A=b.exec?b.exec(this,y||{}):b(this,y||{});!k&&A!==void 0&&(k=A),q.toOrientedRange(M[L])}q.detach(),this.selection=T.selection=x,this.inVirtualSelectionMode=!1,x._eventRegistry=S,x.mergeOverlappingRanges(),x.ranges[0]&&x.fromOrientedRange(x.ranges[0]);var D=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),D&&D.from==D.to&&this.renderer.animateScrolling(D.from),k}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var b="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var y=this.multiSelect.rangeList.ranges,_=[],E=0;E0);x<0&&(x=0),w>=k&&(w=k-1)}var q=this.session.removeFullLines(x,w);q=this.$reAlignText(q,M),this.session.insert({row:x,column:0},q.join(` -`)+` -`),M||(T.start.column=0,T.end.column=q[q.length-1].length),this.selection.setRange(T)}else{O.forEach(function(N){y.substractPoint(N.cursor)});var L=0,A=1/0,D=_.map(function(N){var B=N.cursor,R=b.getLine(B.row),V=R.substr(B.column).search(/\S/g);return V==-1&&(V=0),B.column>L&&(L=B.column),VF?b.insert(R,r.stringRepeat(" ",V-F)):b.remove(new a(R.row,R.column,R.row,R.column-V+F)),N.start.column=N.end.column=L,N.start.row=N.end.row=R.row,N.cursor=N.end}),y.fromOrientedRange(_[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(b,y){var _=!0,E=!0,O,T,x;return b.map(function(q){var L=q.match(/(\s*)(.*?)(\s*)([=:].*)/);return L?O==null?(O=L[1].length,T=L[2].length,x=L[3].length,L):(O+T+x!=L[1].length+L[2].length+L[3].length&&(E=!1),O!=L[1].length&&(_=!1),O>L[1].length&&(O=L[1].length),TL[3].length&&(x=L[3].length),L):[q]}).map(y?M:_?E?k:M:S);function w(q){return r.stringRepeat(" ",q)}function M(q){return q[2]?w(O)+q[2]+w(T-q[2].length+x)+q[4].replace(/^([=:])\s+/,"$1 "):q[0]}function k(q){return q[2]?w(O+T-q[2].length)+q[2]+w(x)+q[4].replace(/^([=:])\s+/,"$1 "):q[0]}function S(q){return q[2]?w(O)+q[2]+w(x)+q[4].replace(/^([=:])\s+/,"$1 "):q[0]}}}).call(h.prototype);function v(b,y){return b.row==y.row&&b.column==y.column}p.onSessionChange=function(b){var y=b.session;y&&!y.multiSelect&&(y.$selectionMarkers=[],y.selection.$initRangeList(),y.multiSelect=y.selection),this.multiSelect=y&&y.multiSelect;var _=b.oldSession;_&&(_.multiSelect.off("addRange",this.$onAddRange),_.multiSelect.off("removeRange",this.$onRemoveRange),_.multiSelect.off("multiSelect",this.$onMultiSelect),_.multiSelect.off("singleSelect",this.$onSingleSelect),_.multiSelect.lead.off("change",this.$checkMultiselectChange),_.multiSelect.anchor.off("change",this.$checkMultiselectChange)),y&&(y.multiSelect.on("addRange",this.$onAddRange),y.multiSelect.on("removeRange",this.$onRemoveRange),y.multiSelect.on("multiSelect",this.$onMultiSelect),y.multiSelect.on("singleSelect",this.$onSingleSelect),y.multiSelect.lead.on("change",this.$checkMultiselectChange),y.multiSelect.anchor.on("change",this.$checkMultiselectChange)),y&&this.inMultiSelectMode!=y.selection.inMultiSelectMode&&(y.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};function $(b){b.$multiselectOnSessionChange||(b.$onAddRange=b.$onAddRange.bind(b),b.$onRemoveRange=b.$onRemoveRange.bind(b),b.$onMultiSelect=b.$onMultiSelect.bind(b),b.$onSingleSelect=b.$onSingleSelect.bind(b),b.$multiselectOnSessionChange=p.onSessionChange.bind(b),b.$checkMultiselectChange=b.$checkMultiselectChange.bind(b),b.$multiselectOnSessionChange(b),b.on("changeSession",b.$multiselectOnSessionChange),b.on("mousedown",i),b.commands.addCommands(t.defaultCommands),C(b))}function C(b){if(!b.textInput)return;var y=b.textInput.getElement(),_=!1;u.addListener(y,"keydown",function(O){var T=O.keyCode==18&&!(O.ctrlKey||O.shiftKey||O.metaKey);b.$blockSelectEnabled&&T?_||(b.renderer.setMouseCursor("crosshair"),_=!0):_&&E()},b),u.addListener(y,"keyup",E,b),u.addListener(y,"blur",E,b);function E(O){_&&(b.renderer.setMouseCursor(""),_=!1)}}p.MultiSelect=$,e("./config").defineOptions(h.prototype,"editor",{enableMultiselect:{set:function(b){$(this),b?this.on("mousedown",i):this.off("mousedown",i)},value:!0},enableBlockSelect:{set:function(b){this.$blockSelectEnabled=b},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,p,m){var g=e("../../range").Range,a=p.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(c,i,u){var r=c.getLine(u);return this.foldingStartMarker.test(r)?"start":i=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(c,i,u){return null},this.indentationBlock=function(c,i,u){var r=/\S/,t=c.getLine(i),l=t.search(r);if(l!=-1){for(var o=u||t.length,s=c.getLength(),f=i,h=i;++if){var C=c.getLine(h).length;return new g(f,o,h,C)}}},this.openingBracketBlock=function(c,i,u,r,t){var l={row:u,column:r+1},o=c.$findClosingBracket(i,l,t);if(!!o){var s=c.foldWidgets[o.row];return s==null&&(s=c.getFoldWidget(o.row)),s=="start"&&o.row>l.row&&(o.row--,o.column=c.getLine(o.row).length),g.fromPoints(l,o)}},this.closingBracketBlock=function(c,i,u,r,t){var l={row:u,column:r},o=c.$findOpeningBracket(i,l);if(!!o)return o.column++,l.column--,g.fromPoints(o,l)}}).call(a.prototype)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"],function(e,p,m){var g=e("../line_widgets").LineWidgets,a=e("../lib/dom"),c=e("../range").Range,i=e("../config").nls;function u(t,l,o){for(var s=0,f=t.length-1;s<=f;){var h=s+f>>1,v=o(l,t[h]);if(v>0)s=h+1;else if(v<0)f=h-1;else return h}return-(s+1)}function r(t,l,o){var s=t.getAnnotations().sort(c.comparePoints);if(!!s.length){var f=u(s,{row:l,column:-1},c.comparePoints);f<0&&(f=-f-1),f>=s.length?f=o>0?0:s.length-1:f===0&&o<0&&(f=s.length-1);var h=s[f];if(!(!h||!o)){if(h.row===l){do h=s[f+=o];while(h&&h.row===l);if(!h)return s.slice()}var v=[];l=h.row;do v[o<0?"unshift":"push"](h),h=s[f+=o];while(h&&h.row==l);return v.length&&v}}}p.showErrorMarker=function(t,l){var o=t.session;o.widgetManager||(o.widgetManager=new g(o),o.widgetManager.attach(t));var s=t.getCursorPosition(),f=s.row,h=o.widgetManager.getWidgetsAtRow(f).filter(function(T){return T.type=="errorMarker"})[0];h?h.destroy():f-=l;var v=r(o,f,l),$;if(v){var C=v[0];s.column=(C.pos&&typeof C.column!="number"?C.pos.sc:C.column)||0,s.row=C.row,$=t.renderer.$gutterLayer.$annotations[s.row]}else{if(h)return;$={text:[i("Looks good!")],className:"ace_ok"}}t.session.unfold(s.row),t.selection.moveToPosition(s);var b={row:s.row,fixedWidth:!0,coverGutter:!0,el:a.createElement("div"),type:"errorMarker"},y=b.el.appendChild(a.createElement("div")),_=b.el.appendChild(a.createElement("div"));_.className="error_widget_arrow "+$.className;var E=t.renderer.$cursorLayer.getPixelPosition(s).left;_.style.left=E+t.renderer.gutterWidth-5+"px",b.el.className="error_widget_wrapper",y.className="error_widget "+$.className,y.innerHTML=$.text.join("
"),y.appendChild(a.createElement("div"));var O=function(T,x,w){if(x===0&&(w==="esc"||w==="return"))return b.destroy(),{command:"null"}};b.destroy=function(){t.$mouseHandler.isMousePressed||(t.keyBinding.removeKeyboardHandler(O),o.widgetManager.removeLineWidget(b),t.off("changeSelection",b.destroy),t.off("changeSession",b.destroy),t.off("mouseup",b.destroy),t.off("change",b.destroy))},t.keyBinding.addKeyboardHandler(O),t.on("changeSelection",b.destroy),t.on("changeSession",b.destroy),t.on("mouseup",b.destroy),t.on("change",b.destroy),t.session.widgetManager.addLineWidget(b),b.el.onmousedown=t.focus.bind(t),t.renderer.scrollCursorIntoView(null,.5,{bottom:b.el.offsetHeight})},a.importCssString(` - .error_widget_wrapper { - background: inherit; - color: inherit; - border:none - } - .error_widget { - border-top: solid 2px; - border-bottom: solid 2px; - margin: 5px 0; - padding: 10px 40px; - white-space: pre-wrap; - } - .error_widget.ace_error, .error_widget_arrow.ace_error{ - border-color: #ff5a5a - } - .error_widget.ace_warning, .error_widget_arrow.ace_warning{ - border-color: #F1D817 - } - .error_widget.ace_info, .error_widget_arrow.ace_info{ - border-color: #5a5a5a - } - .error_widget.ace_ok, .error_widget_arrow.ace_ok{ - border-color: #5aaa5a - } - .error_widget_arrow { - position: absolute; - border: solid 5px; - border-top-color: transparent!important; - border-right-color: transparent!important; - border-left-color: transparent!important; - top: -5px; - } -`,"error_marker.css",!1)}),ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"],function(e,p,m){e("./loader_build")(p);var g=e("./lib/dom"),a=e("./range").Range,c=e("./editor").Editor,i=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,r=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),p.config=e("./config"),p.edit=function(t,l){if(typeof t=="string"){var o=t;if(t=document.getElementById(o),!t)throw new Error("ace.edit can't find div #"+o)}if(t&&t.env&&t.env.editor instanceof c)return t.env.editor;var s="";if(t&&/input|textarea/i.test(t.tagName)){var f=t;s=f.value,t=g.createElement("pre"),f.parentNode.replaceChild(t,f)}else t&&(s=t.textContent,t.innerHTML="");var h=p.createEditSession(s),v=new c(new r(t),h,l),$={document:h,editor:v,onResize:v.resize.bind(v,null)};return f&&($.textarea=f),v.on("destroy",function(){$.editor.container.env=null}),v.container.env=v.env=$,v},p.createEditSession=function(t,l){var o=new i(t,l);return o.setUndoManager(new u),o},p.Range=a,p.Editor=c,p.EditSession=i,p.UndoManager=u,p.VirtualRenderer=r,p.version=p.config.version}),function(){ace.require(["ace/ace"],function(e){e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e);for(var p in e)e.hasOwnProperty(p)&&(window.ace[p]=e[p]);window.ace.default=window.ace,n&&(n.exports=window.ace)})}()})(ace$2);var ace$1=ace$2.exports,themeSqlserver={exports:{}};(function(n,d){ace.define("ace/theme/sqlserver.css",["require","exports","module"],function(e,p,m){m.exports=`.ace-sqlserver .ace_gutter { - background: #ebebeb; - color: #333; - overflow: hidden; -} - -.ace-sqlserver .ace_print-margin { - width: 1px; - background: #e8e8e8; -} - -.ace-sqlserver { - background-color: #FFFFFF; - color: black; -} - -.ace-sqlserver .ace_identifier { - color: black; -} - -.ace-sqlserver .ace_keyword { - color: #0000FF; -} - -.ace-sqlserver .ace_numeric { - color: black; -} - -.ace-sqlserver .ace_storage { - color: #11B7BE; -} - -.ace-sqlserver .ace_keyword.ace_operator, -.ace-sqlserver .ace_lparen, -.ace-sqlserver .ace_rparen, -.ace-sqlserver .ace_punctuation { - color: #808080; -} - -.ace-sqlserver .ace_set.ace_statement { - color: #0000FF; - text-decoration: underline; -} - -.ace-sqlserver .ace_cursor { - color: black; -} - -.ace-sqlserver .ace_invisible { - color: rgb(191, 191, 191); -} - -.ace-sqlserver .ace_constant.ace_buildin { - color: rgb(88, 72, 246); -} - -.ace-sqlserver .ace_constant.ace_language { - color: #979797; -} - -.ace-sqlserver .ace_constant.ace_library { - color: rgb(6, 150, 14); -} - -.ace-sqlserver .ace_invalid { - background-color: rgb(153, 0, 0); - color: white; -} - -.ace-sqlserver .ace_support.ace_function { - color: #FF00FF; -} - -.ace-sqlserver .ace_support.ace_constant { - color: rgb(6, 150, 14); -} - -.ace-sqlserver .ace_class { - color: #008080; -} - -.ace-sqlserver .ace_support.ace_other { - color: #6D79DE; -} - -.ace-sqlserver .ace_variable.ace_parameter { - font-style: italic; - color: #FD971F; -} - -.ace-sqlserver .ace_comment { - color: #008000; -} - -.ace-sqlserver .ace_constant.ace_numeric { - color: black; -} - -.ace-sqlserver .ace_variable { - color: rgb(49, 132, 149); -} - -.ace-sqlserver .ace_xml-pe { - color: rgb(104, 104, 91); -} - -.ace-sqlserver .ace_support.ace_storedprocedure { - color: #800000; -} - -.ace-sqlserver .ace_heading { - color: rgb(12, 7, 255); -} - -.ace-sqlserver .ace_list { - color: rgb(185, 6, 144); -} - -.ace-sqlserver .ace_marker-layer .ace_selection { - background: rgb(181, 213, 255); -} - -.ace-sqlserver .ace_marker-layer .ace_step { - background: rgb(252, 255, 0); -} - -.ace-sqlserver .ace_marker-layer .ace_stack { - background: rgb(164, 229, 101); -} - -.ace-sqlserver .ace_marker-layer .ace_bracket { - margin: -1px 0 0 -1px; - border: 1px solid rgb(192, 192, 192); -} - -.ace-sqlserver .ace_marker-layer .ace_active-line { - background: rgba(0, 0, 0, 0.07); -} - -.ace-sqlserver .ace_gutter-active-line { - background-color: #dcdcdc; -} - -.ace-sqlserver .ace_marker-layer .ace_selected-word { - background: rgb(250, 250, 255); - border: 1px solid rgb(200, 200, 250); -} - -.ace-sqlserver .ace_meta.ace_tag { - color: #0000FF; -} - -.ace-sqlserver .ace_string.ace_regex { - color: #FF0000; -} - -.ace-sqlserver .ace_string { - color: #FF0000; -} - -.ace-sqlserver .ace_entity.ace_other.ace_attribute-name { - color: #994409; -} - -.ace-sqlserver .ace_indent-guide { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; -} - -.ace-sqlserver .ace_indent-guide-active { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y; -} -`}),ace.define("ace/theme/sqlserver",["require","exports","module","ace/theme/sqlserver.css","ace/lib/dom"],function(e,p,m){p.isDark=!1,p.cssClass="ace-sqlserver",p.cssText=e("./sqlserver.css");var g=e("../lib/dom");g.importCssString(p.cssText,p.cssClass,!1)}),function(){ace.require(["ace/theme/sqlserver"],function(e){n&&(n.exports=e)})}()})(themeSqlserver);var modeJavascript={exports:{}};(function(n,d){ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,p,m){var g=e("../lib/oop"),a=e("./text_highlight_rules").TextHighlightRules,c=function(){this.$rules={start:[{token:["comment.doc.tag","text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text"}]},{token:["comment.doc.tag","text","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text"}]},{token:["comment.doc.tag","text","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},c.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};g.inherits(c,a),c.getTagRule=function(i){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},c.getStartRule=function(i){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:i}},c.getEndRule=function(i){return{token:"comment.doc",regex:"\\*\\/",next:i}},p.JsDocCommentHighlightRules=c}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,p,m){function g(){var l=r.replace("\\d","\\d\\-"),o={onMatch:function(f,h,v){var $=f.charAt(1)=="/"?2:1;return $==1?(h!=this.nextState?v.unshift(this.next,this.nextState,0):v.unshift(this.next),v[2]++):$==2&&h==this.nextState&&(v[1]--,(!v[1]||v[1]<0)&&(v.shift(),v.shift())),[{type:"meta.tag.punctuation."+($==1?"":"end-")+"tag-open.xml",value:f.slice(0,$)},{type:"meta.tag.tag-name.xml",value:f.substr($)}]},regex:"",onMatch:function(f,h,v){return h==v[0]&&v.shift(),f.length==2&&(v[0]==this.nextState&&v[1]--,(!v[1]||v[1]<0)&&v.splice(0,2)),this.next=v[0]||"start",[{type:this.token,value:f}]},nextState:"jsx"},s,a("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:l},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},o],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function a(l){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:l||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:l||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var c=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,u=e("./text_highlight_rules").TextHighlightRules,r="[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",t=function(l){var o=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),s="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",f="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),a("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function\\*?)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:`from(?=\\s*('|"))`},{token:"keyword",regex:"(?:"+s+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:o,regex:r},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:r},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),a("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[a("function_arguments"),{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:f},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:f},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!l||!l.noES6)&&(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(h,v,$){if(this.next=h=="{"?this.nextState:"",h=="{"&&$.length)$.unshift("start",v);else if(h=="}"&&$.length&&($.shift(),this.next=$.shift(),this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1))return"paren.quasi.end";return h=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:f},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+r+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=.+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!l||l.jsx!=0)&&g.call(this)),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};c.inherits(t,u),p.JavaScriptHighlightRules=t}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,p,m){var g=e("../range").Range,a=function(){};(function(){this.checkOutdent=function(c,i){return/^\s+$/.test(c)?/^\s*\}/.test(i):!1},this.autoOutdent=function(c,i){var u=c.getLine(i),r=u.match(/^(\s*\})/);if(!r)return 0;var t=r[1].length,l=c.findMatchingBracket({row:i,column:t});if(!l||l.row==i)return 0;var o=this.$getIndent(c.getLine(l.row));c.replace(new g(i,0,i,t-1),o)},this.$getIndent=function(c){return c.match(/^\s*/)[0]}}).call(a.prototype),p.MatchingBraceOutdent=a}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,p,m){var g=e("../../lib/oop"),a=e("../../range").Range,c=e("./fold_mode").FoldMode,i=p.FoldMode=function(u){u&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+u.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+u.end)))};g.inherits(i,c),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(u,r,t){var l=u.getLine(t);if(this.singleLineBlockCommentRe.test(l)&&!this.startRegionRe.test(l)&&!this.tripleStarBlockCommentRe.test(l))return"";var o=this._getFoldWidgetBase(u,r,t);return!o&&this.startRegionRe.test(l)?"start":o},this.getFoldWidgetRange=function(u,r,t,l){var o=u.getLine(t);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(u,o,t);var s=o.match(this.foldingStartMarker);if(s){var f=s.index;if(s[1])return this.openingBracketBlock(u,s[1],t,f);var h=u.getCommentFoldRange(t,f+s[0].length,1);return h&&!h.isMultiLine()&&(l?h=this.getSectionRange(u,t):r!="all"&&(h=null)),h}if(r!=="markbegin"){var s=o.match(this.foldingStopMarker);if(s){var f=s.index+s[0].length;return s[1]?this.closingBracketBlock(u,s[1],t,f):u.getCommentFoldRange(t,f,-1)}}},this.getSectionRange=function(u,r){var t=u.getLine(r),l=t.search(/\S/),o=r,s=t.length;r+=1;for(var f=r,h=u.getLength();++rv)break;var $=this.getFoldWidgetRange(u,"all",r);if($){if($.start.row<=o)break;if($.isMultiLine())r=$.end.row;else if(l==v)break}f=r}}return new a(o,s,f,u.getLine(f).length)},this.getCommentRegionBlock=function(u,r,t){for(var l=r.search(/\s*$/),o=u.getLength(),s=t,f=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,h=1;++ts)return new a(s,l,$,r.length)}}.call(i.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,p,m){var g=e("../lib/oop"),a=e("./text").Mode,c=e("./javascript_highlight_rules").JavaScriptHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,r=e("./behaviour/cstyle").CstyleBehaviour,t=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=c,this.$outdent=new i,this.$behaviour=new r,this.foldingRules=new t};g.inherits(l,a),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(o,s,f){var h=this.$getIndent(s),v=this.getTokenizer().getLineTokens(s,o),$=v.tokens,C=v.state;if($.length&&$[$.length-1].type=="comment")return h;if(o=="start"||o=="no_regex"){var b=s.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);b&&(h+=f)}else if(o=="doc-start"){if(C=="start"||C=="no_regex")return"";var b=s.match(/^\s*(\/?)\*/);b&&(b[1]&&(h+=" "),h+="* ")}return h},this.checkOutdent=function(o,s,f){return this.$outdent.checkOutdent(s,f)},this.autoOutdent=function(o,s,f){this.$outdent.autoOutdent(s,f)},this.createWorker=function(o){var s=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return s.attachToDocument(o.getDocument()),s.on("annotate",function(f){o.setAnnotations(f.data)}),s.on("terminate",function(){o.clearAnnotations()}),s},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),p.Mode=l}),function(){ace.require(["ace/mode/javascript"],function(e){n&&(n.exports=e)})}()})(modeJavascript);var modeJson={exports:{}};(function(n,d){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,p,m){var g=e("../lib/oop"),a=e("./text_highlight_rules").TextHighlightRules,c=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};g.inherits(c,a),p.JsonHighlightRules=c}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,p,m){var g=e("../range").Range,a=function(){};(function(){this.checkOutdent=function(c,i){return/^\s+$/.test(c)?/^\s*\}/.test(i):!1},this.autoOutdent=function(c,i){var u=c.getLine(i),r=u.match(/^(\s*\})/);if(!r)return 0;var t=r[1].length,l=c.findMatchingBracket({row:i,column:t});if(!l||l.row==i)return 0;var o=this.$getIndent(c.getLine(l.row));c.replace(new g(i,0,i,t-1),o)},this.$getIndent=function(c){return c.match(/^\s*/)[0]}}).call(a.prototype),p.MatchingBraceOutdent=a}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,p,m){var g=e("../../lib/oop"),a=e("../../range").Range,c=e("./fold_mode").FoldMode,i=p.FoldMode=function(u){u&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+u.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+u.end)))};g.inherits(i,c),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(u,r,t){var l=u.getLine(t);if(this.singleLineBlockCommentRe.test(l)&&!this.startRegionRe.test(l)&&!this.tripleStarBlockCommentRe.test(l))return"";var o=this._getFoldWidgetBase(u,r,t);return!o&&this.startRegionRe.test(l)?"start":o},this.getFoldWidgetRange=function(u,r,t,l){var o=u.getLine(t);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(u,o,t);var s=o.match(this.foldingStartMarker);if(s){var f=s.index;if(s[1])return this.openingBracketBlock(u,s[1],t,f);var h=u.getCommentFoldRange(t,f+s[0].length,1);return h&&!h.isMultiLine()&&(l?h=this.getSectionRange(u,t):r!="all"&&(h=null)),h}if(r!=="markbegin"){var s=o.match(this.foldingStopMarker);if(s){var f=s.index+s[0].length;return s[1]?this.closingBracketBlock(u,s[1],t,f):u.getCommentFoldRange(t,f,-1)}}},this.getSectionRange=function(u,r){var t=u.getLine(r),l=t.search(/\S/),o=r,s=t.length;r+=1;for(var f=r,h=u.getLength();++rv)break;var $=this.getFoldWidgetRange(u,"all",r);if($){if($.start.row<=o)break;if($.isMultiLine())r=$.end.row;else if(l==v)break}f=r}}return new a(o,s,f,u.getLine(f).length)},this.getCommentRegionBlock=function(u,r,t){for(var l=r.search(/\s*$/),o=u.getLength(),s=t,f=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,h=1;++ts)return new a(s,l,$,r.length)}}.call(i.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,p,m){var g=e("../lib/oop"),a=e("./text").Mode,c=e("./json_highlight_rules").JsonHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,r=e("../worker/worker_client").WorkerClient,t=function(){this.HighlightRules=c,this.$outdent=new i,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};g.inherits(t,a),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(l,o,s){var f=this.$getIndent(o);if(l=="start"){var h=o.match(/^.*[\{\(\[]\s*$/);h&&(f+=s)}return f},this.checkOutdent=function(l,o,s){return this.$outdent.checkOutdent(o,s)},this.autoOutdent=function(l,o,s){this.$outdent.autoOutdent(o,s)},this.createWorker=function(l){var o=new r(["ace"],"ace/mode/json_worker","JsonWorker");return o.attachToDocument(l.getDocument()),o.on("annotate",function(s){l.setAnnotations(s.data)}),o.on("terminate",function(){l.clearAnnotations()}),o},this.$id="ace/mode/json"}.call(t.prototype),p.Mode=t}),function(){ace.require(["ace/mode/json"],function(e){n&&(n.exports=e)})}()})(modeJson);var modeCss={exports:{}};(function(n,d){ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,p,m){var g=e("../lib/oop");e("../lib/lang");var a=e("./text_highlight_rules").TextHighlightRules,c=p.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",i=p.supportFunction="rgb|rgba|url|attr|counter|counters",u=p.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",r=p.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",t=p.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",l=p.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",o=p.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",s=p.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",f=function(){var h=this.createKeywordMapper({"support.function":i,"support.constant":u,"support.type":c,"support.constant.color":r,"support.constant.fonts":t},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:l},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+l+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:l},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:o},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:s},{include:"url"},{token:h,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};g.inherits(f,a),p.CssHighlightRules=f}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,p,m){var g=e("../range").Range,a=function(){};(function(){this.checkOutdent=function(c,i){return/^\s+$/.test(c)?/^\s*\}/.test(i):!1},this.autoOutdent=function(c,i){var u=c.getLine(i),r=u.match(/^(\s*\})/);if(!r)return 0;var t=r[1].length,l=c.findMatchingBracket({row:i,column:t});if(!l||l.row==i)return 0;var o=this.$getIndent(c.getLine(l.row));c.replace(new g(i,0,i,t-1),o)},this.$getIndent=function(c){return c.match(/^\s*/)[0]}}).call(a.prototype),p.MatchingBraceOutdent=a}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,p,m){var g={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,double:2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{default:1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},float:{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,static:1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},a=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var c=document.createElement("c").style;for(var i in c)if(typeof c[i]=="string"){var u=i.replace(/[A-Z]/g,function(r){return"-"+r.toLowerCase()});g.hasOwnProperty(u)||(g[u]=1)}}this.completionsDefined=!0},this.getCompletions=function(c,i,u,r){if(this.completionsDefined||this.defineCompletions(),c==="ruleset"||i.$mode.$id=="ace/mode/scss"){var t=i.getLine(u.row).substr(0,u.column),l=/\([^)]*$/.test(t);return l&&(t=t.substr(t.lastIndexOf("(")+1)),/:[^;]+$/.test(t)?(/([\w\-]+):[^:]*$/.test(t),this.getPropertyValueCompletions(c,i,u,r)):this.getPropertyCompletions(c,i,u,r,l)}return[]},this.getPropertyCompletions=function(c,i,u,r,t){t=t||!1;var l=Object.keys(g);return l.map(function(o){return{caption:o,snippet:o+": $0"+(t?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(c,i,u,r){var t=i.getLine(u.row).substr(0,u.column),l=(/([\w\-]+):[^:]*$/.exec(t)||{})[1];if(!l)return[];var o=[];return l in g&&typeof g[l]=="object"&&(o=Object.keys(g[l])),o.map(function(s){return{caption:s,snippet:s,meta:"property value",score:1e6}})}}).call(a.prototype),p.CssCompletions=a}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,p,m){var g=e("../../lib/oop");e("../behaviour").Behaviour;var a=e("./cstyle").CstyleBehaviour,c=e("../../token_iterator").TokenIterator,i=function(){this.inherit(a),this.add("colon","insertion",function(u,r,t,l,o){if(o===":"&&t.selection.isEmpty()){var s=t.getCursorPosition(),f=new c(l,s.row,s.column),h=f.getCurrentToken();if(h&&h.value.match(/\s+/)&&(h=f.stepBackward()),h&&h.type==="support.type"){var v=l.doc.getLine(s.row),$=v.substring(s.column,s.column+1);if($===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(v.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(u,r,t,l,o){var s=l.doc.getTextRange(o);if(!o.isMultiLine()&&s===":"){var f=t.getCursorPosition(),h=new c(l,f.row,f.column),v=h.getCurrentToken();if(v&&v.value.match(/\s+/)&&(v=h.stepBackward()),v&&v.type==="support.type"){var $=l.doc.getLine(o.start.row),C=$.substring(o.end.column,o.end.column+1);if(C===";")return o.end.column++,o}}}),this.add("semicolon","insertion",function(u,r,t,l,o){if(o===";"&&t.selection.isEmpty()){var s=t.getCursorPosition(),f=l.doc.getLine(s.row),h=f.substring(s.column,s.column+1);if(h===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(u,r,t,l,o){if(o==="!"&&t.selection.isEmpty()){var s=t.getCursorPosition(),f=l.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(f.substring(s.column)))return{text:"!important",selection:[10,10]}}})};g.inherits(i,a),p.CssBehaviour=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,p,m){var g=e("../../lib/oop"),a=e("../../range").Range,c=e("./fold_mode").FoldMode,i=p.FoldMode=function(u){u&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+u.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+u.end)))};g.inherits(i,c),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(u,r,t){var l=u.getLine(t);if(this.singleLineBlockCommentRe.test(l)&&!this.startRegionRe.test(l)&&!this.tripleStarBlockCommentRe.test(l))return"";var o=this._getFoldWidgetBase(u,r,t);return!o&&this.startRegionRe.test(l)?"start":o},this.getFoldWidgetRange=function(u,r,t,l){var o=u.getLine(t);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(u,o,t);var s=o.match(this.foldingStartMarker);if(s){var f=s.index;if(s[1])return this.openingBracketBlock(u,s[1],t,f);var h=u.getCommentFoldRange(t,f+s[0].length,1);return h&&!h.isMultiLine()&&(l?h=this.getSectionRange(u,t):r!="all"&&(h=null)),h}if(r!=="markbegin"){var s=o.match(this.foldingStopMarker);if(s){var f=s.index+s[0].length;return s[1]?this.closingBracketBlock(u,s[1],t,f):u.getCommentFoldRange(t,f,-1)}}},this.getSectionRange=function(u,r){var t=u.getLine(r),l=t.search(/\S/),o=r,s=t.length;r+=1;for(var f=r,h=u.getLength();++rv)break;var $=this.getFoldWidgetRange(u,"all",r);if($){if($.start.row<=o)break;if($.isMultiLine())r=$.end.row;else if(l==v)break}f=r}}return new a(o,s,f,u.getLine(f).length)},this.getCommentRegionBlock=function(u,r,t){for(var l=r.search(/\s*$/),o=u.getLength(),s=t,f=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,h=1;++ts)return new a(s,l,$,r.length)}}.call(i.prototype)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,p,m){var g=e("../lib/oop"),a=e("./text").Mode,c=e("./css_highlight_rules").CssHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,r=e("./css_completions").CssCompletions,t=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,o=function(){this.HighlightRules=c,this.$outdent=new i,this.$behaviour=new t,this.$completer=new r,this.foldingRules=new l};g.inherits(o,a),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(s,f,h){var v=this.$getIndent(f),$=this.getTokenizer().getLineTokens(f,s).tokens;if($.length&&$[$.length-1].type=="comment")return v;var C=f.match(/^.*\{\s*$/);return C&&(v+=h),v},this.checkOutdent=function(s,f,h){return this.$outdent.checkOutdent(f,h)},this.autoOutdent=function(s,f,h){this.$outdent.autoOutdent(f,h)},this.getCompletions=function(s,f,h,v){return this.$completer.getCompletions(s,f,h,v)},this.createWorker=function(s){var f=new u(["ace"],"ace/mode/css_worker","Worker");return f.attachToDocument(s.getDocument()),f.on("annotate",function(h){s.setAnnotations(h.data)}),f.on("terminate",function(){s.clearAnnotations()}),f},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(o.prototype),p.Mode=o}),function(){ace.require(["ace/mode/css"],function(e){n&&(n.exports=e)})}()})(modeCss);var extLanguage_tools={exports:{}};(function(n,d){ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],function(e,p,m){function g(y){var _=new Date().toLocaleString("en-us",y);return _.length==1?"0"+_:_}var a=e("./lib/dom"),c=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,u=e("./lib/lang"),r=e("./range").Range,t=e("./range_list").RangeList,l=e("./keyboard/hash_handler").HashHandler,o=e("./tokenizer").Tokenizer,s=e("./clipboard"),f={CURRENT_WORD:function(y){return y.session.getTextRange(y.session.getWordRange())},SELECTION:function(y,_,E){var O=y.session.getTextRange();return E?O.replace(/\n\r?([ \t]*\S)/g,` -`+E+"$1"):O},CURRENT_LINE:function(y){return y.session.getLine(y.getCursorPosition().row)},PREV_LINE:function(y){return y.session.getLine(y.getCursorPosition().row-1)},LINE_INDEX:function(y){return y.getCursorPosition().row},LINE_NUMBER:function(y){return y.getCursorPosition().row+1},SOFT_TABS:function(y){return y.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(y){return y.session.getTabSize()},CLIPBOARD:function(y){return s.getText&&s.getText()},FILENAME:function(y){return/[^/\\]*$/.exec(this.FILEPATH(y))[0]},FILENAME_BASE:function(y){return/[^/\\]*$/.exec(this.FILEPATH(y))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(y){return this.FILEPATH(y).replace(/[^/\\]*$/,"")},FILEPATH:function(y){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(y){var _=y.session.$mode||{};return _.blockComment&&_.blockComment.start||""},BLOCK_COMMENT_END:function(y){var _=y.session.$mode||{};return _.blockComment&&_.blockComment.end||""},LINE_COMMENT:function(y){var _=y.session.$mode||{};return _.lineCommentStart||""},CURRENT_YEAR:g.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:g.bind(null,{year:"2-digit"}),CURRENT_MONTH:g.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:g.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:g.bind(null,{month:"short"}),CURRENT_DATE:g.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:g.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:g.bind(null,{weekday:"short"}),CURRENT_HOUR:g.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:g.bind(null,{minute:"2-digit"}),CURRENT_SECOND:g.bind(null,{second:"2-digit"})};f.SELECTED_TEXT=f.SELECTION;var h=function(){this.snippetMap={},this.snippetNameMap={}};(function(){c.implement(this,i),this.getTokenizer=function(){return h.$tokenizer||this.createTokenizer()},this.createTokenizer=function(){function _(T){return T=T.substr(1),/^\d+$/.test(T)?[{tabstopId:parseInt(T,10)}]:[{text:T}]}function E(T){return"(?:[^\\\\"+T+"]|\\\\.)"}var O={regex:"/("+E("/")+"+)/",onMatch:function(T,x,w){var M=w[0];return M.fmtString=!0,M.guard=T.slice(1,-1),M.flag="",""},next:"formatString"};return h.$tokenizer=new o({start:[{regex:/\\./,onMatch:function(T,x,w){var M=T[1];return(M=="}"&&w.length||"`$\\".indexOf(M)!=-1)&&(T=M),[T]}},{regex:/}/,onMatch:function(T,x,w){return[w.length?w.shift():T]}},{regex:/\$(?:\d+|\w+)/,onMatch:_},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(T,x,w){var M=_(T.substr(1));return w.unshift(M[0]),M},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+E("\\|")+"*\\|",onMatch:function(T,x,w){var M=T.slice(1,-1).replace(/\\[,|\\]|,/g,function(k){return k.length==2?k[1]:"\0"}).split("\0").map(function(k){return{value:k}});return w[0].choices=M,[M[0]]},next:"start"},O,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(T,x,w){return w.length&&w[0].expectElse?(w[0].expectElse=!1,w[0].ifEnd={elseEnd:w[0]},[w[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(T,x,w){var M=T[1];return M=="}"&&w.length||"`$\\".indexOf(M)!=-1?T=M:M=="n"?T=` -`:M=="t"?T=" ":"ulULE".indexOf(M)!=-1&&(T={changeCase:M,local:M>"a"}),[T]}},{regex:"/\\w*}",onMatch:function(T,x,w){var M=w.shift();return M&&(M.flag=T.slice(1,-1)),this.next=M&&M.tabstopId?"start":"",[M||T]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(T,x,w){return[{text:T.slice(1)}]}},{regex:/\${\w+/,onMatch:function(T,x,w){var M={text:T.slice(2)};return w.unshift(M),[M]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(T,x,w){var M=w.shift();return this.next=M&&M.tabstopId?"start":"",[M||T]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(T,x,w){var M=w[0];return M.formatFunction=T.slice(2,-1),[w.shift()]},next:"formatString"},O,{regex:/:[\?\-+]?/,onMatch:function(T,x,w){T[1]=="+"&&(w[0].ifEnd=w[0]),T[1]=="?"&&(w[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),h.$tokenizer},this.tokenizeTmSnippet=function(_,E){return this.getTokenizer().getLineTokens(_,E).tokens.map(function(O){return O.value||O})},this.getVariableValue=function(_,E,O){if(/^\d+$/.test(E))return(this.variables.__||{})[E]||"";if(/^[A-Z]\d+$/.test(E))return(this.variables[E[0]+"__"]||{})[E.substr(1)]||"";if(E=E.replace(/^TM_/,""),!this.variables.hasOwnProperty(E))return"";var T=this.variables[E];return typeof T=="function"&&(T=this.variables[E](_,E,O)),T==null?"":T},this.variables=f,this.tmStrFormat=function(_,E,O){if(!E.fmt)return _;var T=E.flag||"",x=E.guard;x=new RegExp(x,T.replace(/[^gim]/g,""));var w=typeof E.fmt=="string"?this.tokenizeTmSnippet(E.fmt,"formatString"):E.fmt,M=this,k=_.replace(x,function(){var S=M.variables.__;M.variables.__=[].slice.call(arguments);for(var q=M.resolveVariables(w,O),L="E",A=0;A1?(P=W[W.length-1].length,F+=W.length-1):P+=I.length,j+=I}else I&&(I.start?I.end={row:F,column:P}:I.start={row:F,column:P})}),{text:j,tabstops:q,tokens:S}};this.getDisplayTextForSnippet=function(_,E){var O=y.call(this,_,E);return O.text},this.insertSnippetForSelection=function(_,E,O){O===void 0&&(O={});var T=y.call(this,_,E,O),x=_.getSelectionRange();O.range&&O.range.compareRange(x)===0&&(x=O.range);var w=_.session.replace(x,T.text),M=new v(_),k=_.inVirtualSelectionMode&&_.selection.index;M.addTabstops(T.tabstops,x.start,w,k)},this.insertSnippet=function(_,E,O){O===void 0&&(O={});var T=this;if(O.range&&!(O.range instanceof r)&&(O.range=r.fromPoints(O.range.start,O.range.end)),_.inVirtualSelectionMode)return T.insertSnippetForSelection(_,E,O);_.forEachSelection(function(){T.insertSnippetForSelection(_,E,O)},null,{keepOrder:!0}),_.tabstopManager&&_.tabstopManager.tabNext()},this.$getScope=function(_){var E=_.session.$mode.$id||"";if(E=E.split("/").pop(),E==="html"||E==="php"){E==="php"&&!_.session.$mode.inlinePhp&&(E="html");var O=_.getCursorPosition(),T=_.session.getState(O.row);typeof T=="object"&&(T=T[0]),T.substring&&(T.substring(0,3)=="js-"?E="javascript":T.substring(0,4)=="css-"?E="css":T.substring(0,4)=="php-"&&(E="php"))}return E},this.getActiveScopes=function(_){var E=this.$getScope(_),O=[E],T=this.snippetMap;return T[E]&&T[E].includeScopes&&O.push.apply(O,T[E].includeScopes),O.push("_"),O},this.expandWithTab=function(_,E){var O=this,T=_.forEachSelection(function(){return O.expandSnippetForSelection(_,E)},null,{keepOrder:!0});return T&&_.tabstopManager&&_.tabstopManager.tabNext(),T},this.expandSnippetForSelection=function(_,E){var O=_.getCursorPosition(),T=_.session.getLine(O.row),x=T.substring(0,O.column),w=T.substr(O.column),M=this.snippetMap,k;return this.getActiveScopes(_).some(function(S){var q=M[S];return q&&(k=this.findMatchingSnippet(q,x,w)),!!k},this),k?(E&&E.dryRun||(_.session.doc.removeInLine(O.row,O.column-k.replaceBefore.length,O.column+k.replaceAfter.length),this.variables.M__=k.matchBefore,this.variables.T__=k.matchAfter,this.insertSnippetForSelection(_,k.content),this.variables.M__=this.variables.T__=null),!0):!1},this.findMatchingSnippet=function(_,E,O){for(var T=_.length;T--;){var x=_[T];if(!(x.startRe&&!x.startRe.test(E))&&!(x.endRe&&!x.endRe.test(O))&&!(!x.startRe&&!x.endRe))return x.matchBefore=x.startRe?x.startRe.exec(E):[""],x.matchAfter=x.endRe?x.endRe.exec(O):[""],x.replaceBefore=x.triggerRe?x.triggerRe.exec(E)[0]:"",x.replaceAfter=x.endTriggerRe?x.endTriggerRe.exec(O)[0]:"",x}},this.snippetMap={},this.snippetNameMap={},this.register=function(_,E){function O(S){return S&&!/^\^?\(.*\)\$?$|^\\b$/.test(S)&&(S="(?:"+S+")"),S||""}function T(S,q,L){return S=O(S),q=O(q),L?(S=q+S,S&&S[S.length-1]!="$"&&(S+="$")):(S+=q,S&&S[0]!="^"&&(S="^"+S)),new RegExp(S)}function x(S){S.scope||(S.scope=E||"_"),E=S.scope,w[E]||(w[E]=[],M[E]={});var q=M[E];if(S.name){var L=q[S.name];L&&k.unregister(L),q[S.name]=S}w[E].push(S),S.prefix&&(S.tabTrigger=S.prefix),!S.content&&S.body&&(S.content=Array.isArray(S.body)?S.body.join(` -`):S.body),S.tabTrigger&&!S.trigger&&(!S.guard&&/^\w/.test(S.tabTrigger)&&(S.guard="\\b"),S.trigger=u.escapeRegExp(S.tabTrigger)),!(!S.trigger&&!S.guard&&!S.endTrigger&&!S.endGuard)&&(S.startRe=T(S.trigger,S.guard,!0),S.triggerRe=new RegExp(S.trigger),S.endRe=T(S.endTrigger,S.endGuard,!0),S.endTriggerRe=new RegExp(S.endTrigger))}var w=this.snippetMap,M=this.snippetNameMap,k=this;_||(_=[]),Array.isArray(_)?_.forEach(x):Object.keys(_).forEach(function(S){x(_[S])}),this._signal("registerSnippets",{scope:E})},this.unregister=function(_,E){function O(w){var M=x[w.scope||E];if(M&&M[w.name]){delete M[w.name];var k=T[w.scope||E],S=k&&k.indexOf(w);S>=0&&k.splice(S,1)}}var T=this.snippetMap,x=this.snippetNameMap;_.content?O(_):Array.isArray(_)&&_.forEach(O)},this.parseSnippetFile=function(_){_=_.replace(/\r/g,"");for(var E=[],O={},T=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,x;x=T.exec(_);){if(x[1])try{O=JSON.parse(x[1]),E.push(O)}catch{}if(x[4])O.content=x[4].replace(/^\t/gm,""),E.push(O),O={};else{var w=x[2],M=x[3];if(w=="regex"){var k=/\/((?:[^\/\\]|\\.)*)|$/g;O.guard=k.exec(M)[1],O.trigger=k.exec(M)[1],O.endTrigger=k.exec(M)[1],O.endGuard=k.exec(M)[1]}else w=="snippet"?(O.tabTrigger=M.match(/^\S*/)[0],O.name||(O.name=M)):w&&(O[w]=M)}}return E},this.getSnippetByName=function(_,E){var O=this.snippetNameMap,T;return this.getActiveScopes(E).some(function(x){var w=O[x];return w&&(T=w[_]),!!T},this),T}}).call(h.prototype);var v=function(y){if(y.tabstopManager)return y.tabstopManager;y.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=u.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(y)};(function(){this.attach=function(y){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=y,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(y){for(var _=y.action[0]=="r",E=this.selectedTabstop||{},O=E.parents||{},T=(this.tabstops||[]).slice(),x=0;x2&&(this.tabstops.length&&w.push(w.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,w))},this.addTabstopMarkers=function(y){var _=this.editor.session;y.forEach(function(E){E.markerId||(E.markerId=_.addMarker(E,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(y){var _=this.editor.session;y.forEach(function(E){_.removeMarker(E.markerId),E.markerId=null})},this.removeRange=function(y){var _=y.tabstop.indexOf(y);_!=-1&&y.tabstop.splice(_,1),_=this.ranges.indexOf(y),_!=-1&&this.ranges.splice(_,1),_=y.tabstop.rangeList.ranges.indexOf(y),_!=-1&&y.tabstop.splice(_,1),this.editor.session.removeMarker(y.markerId),y.tabstop.length||(_=this.tabstops.indexOf(y.tabstop),_!=-1&&this.tabstops.splice(_,1),this.tabstops.length||this.detach())},this.keyboardHandler=new l,this.keyboardHandler.bindKeys({Tab:function(y){p.snippetManager&&p.snippetManager.expandWithTab(y)||(y.tabstopManager.tabNext(1),y.renderer.scrollCursorIntoView())},"Shift-Tab":function(y){y.tabstopManager.tabNext(-1),y.renderer.scrollCursorIntoView()},Esc:function(y){y.tabstopManager.detach()}})}).call(v.prototype);var $=function(y,_){y.row==0&&(y.column+=_.column),y.row+=_.row},C=function(y,_){y.row==_.row&&(y.column-=_.column),y.row-=_.row};a.importCssString(` -.ace_snippet-marker { - -moz-box-sizing: border-box; - box-sizing: border-box; - background: rgba(194, 193, 208, 0.09); - border: 1px dotted rgba(211, 208, 235, 0.62); - position: absolute; -}`,"snippets.css",!1),p.snippetManager=new h;var b=e("./editor").Editor;(function(){this.insertSnippet=function(y,_){return p.snippetManager.insertSnippet(this,y,_)},this.expandSnippet=function(y){return p.snippetManager.expandWithTab(this,y)}}).call(b.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config"],function(e,p,m){var g=e("../virtual_renderer").VirtualRenderer,a=e("../editor").Editor,c=e("../range").Range,i=e("../lib/event"),u=e("../lib/lang"),r=e("../lib/dom"),t=e("../config").nls,l=function(f){return"suggest-aria-id:".concat(f)},o=function(f){var h=new g(f);h.$maxLines=4;var v=new a(h);return v.setHighlightActiveLine(!1),v.setShowPrintMargin(!1),v.renderer.setShowGutter(!1),v.renderer.setHighlightGutterLine(!1),v.$mouseHandler.$focusTimeout=0,v.$highlightTagPending=!0,v},s=function(){function f(h){var v=r.createElement("div"),$=new o(v);h&&h.appendChild(v),v.style.display="none",$.renderer.content.style.cursor="default",$.renderer.setStyle("ace_autocomplete"),$.renderer.container.setAttribute("role","listbox"),$.renderer.container.setAttribute("aria-label",t("Autocomplete suggestions")),$.setOption("displayIndentGuides",!1),$.setOption("dragDelay",150);var C=function(){};$.focus=C,$.$isFocused=!0,$.renderer.$cursorLayer.restartTimer=C,$.renderer.$cursorLayer.element.style.opacity=0,$.renderer.$maxLines=8,$.renderer.$keepTextAreaAtCursor=!1,$.setHighlightActiveLine(!1),$.session.highlight(""),$.session.$searchHighlight.clazz="ace_highlight-marker",$.on("mousedown",function(x){var w=x.getDocumentPosition();$.selection.moveToPosition(w),_.start.row=_.end.row=w.row,x.stop()});var b,y=new c(-1,0,-1,1/0),_=new c(-1,0,-1,1/0);_.id=$.session.addMarker(_,"ace_active-line","fullLine"),$.setSelectOnHover=function(x){x?y.id&&($.session.removeMarker(y.id),y.id=null):y.id=$.session.addMarker(y,"ace_line-hover","fullLine")},$.setSelectOnHover(!1),$.on("mousemove",function(x){if(!b){b=x;return}if(!(b.x==x.x&&b.y==x.y)){b=x,b.scrollTop=$.renderer.scrollTop;var w=b.getDocumentPosition().row;y.start.row!=w&&(y.id||$.setRow(w),O(w))}}),$.renderer.on("beforeRender",function(){if(b&&y.start.row!=-1){b.$pos=null;var x=b.getDocumentPosition().row;y.id||$.setRow(x),O(x,!0)}}),$.renderer.on("afterRender",function(){var x=$.getRow(),w=$.renderer.$textLayer,M=w.element.childNodes[x-w.config.firstRow],k=document.activeElement;if(M!==w.selectedNode&&w.selectedNode&&(r.removeCssClass(w.selectedNode,"ace_selected"),k.removeAttribute("aria-activedescendant"),w.selectedNode.removeAttribute("id")),w.selectedNode=M,M){r.addCssClass(M,"ace_selected");var S=l(x);M.id=S,$.renderer.container.setAttribute("aria-activedescendant",S),k.setAttribute("aria-activedescendant",S),M.setAttribute("role","option"),M.setAttribute("aria-label",$.getData(x).value),M.setAttribute("aria-setsize",$.data.length),M.setAttribute("aria-posinset",x)}});var E=function(){O(-1)},O=function(x,w){x!==y.start.row&&(y.start.row=y.end.row=x,w||$.session._emit("changeBackMarker"),$._emit("changeHoverMarker"))};$.getHoveredRow=function(){return y.start.row},i.addListener($.container,"mouseout",E),$.on("hide",E),$.on("changeSelection",E),$.session.doc.getLength=function(){return $.data.length},$.session.doc.getLine=function(x){var w=$.data[x];return typeof w=="string"?w:w&&w.value||""};var T=$.session.bgTokenizer;return T.$tokenizeRow=function(x){function w(V,F){V&&k.push({type:(M.className||"")+(F||""),value:V})}var M=$.data[x],k=[];if(!M)return k;typeof M=="string"&&(M={value:M});for(var S=M.caption||M.value||M.name,q=S.toLowerCase(),L=($.filterText||"").toLowerCase(),A=0,D=0,N=0;N<=L.length;N++)if(N!=D&&(M.matchMask&1<=D?M="bottom":M="top"),M==="top"?(N.bottom=x.top-this.$borderSize,N.top=N.bottom-D):M==="bottom"&&(N.top=x.top+w+this.$borderSize,N.bottom=N.top+D);var V=N.top>=0&&N.bottom<=q;if(!k&&!V)return!1;V?A.$maxPixelHeight=null:M==="top"?A.$maxPixelHeight=R:A.$maxPixelHeight=B,M==="top"?(S.style.top="",S.style.bottom=q-N.bottom+"px",$.isTopdown=!1):(S.style.top=N.top+"px",S.style.bottom="",$.isTopdown=!0),S.style.display="";var F=x.left;return F+S.offsetWidth>L&&(F=L-S.offsetWidth),S.style.left=F+"px",S.style.right="",$.isOpen||($.isOpen=!0,this._signal("show"),b=null),$.anchorPos=x,$.anchor=M,!0},$.show=function(x,w,M){this.tryShow(x,w,M?"bottom":void 0,!0)},$.goTo=function(x){var w=this.getRow(),M=this.session.getLength()-1;switch(x){case"up":w=w<=0?M:w-1;break;case"down":w=w>=M?-1:w+1;break;case"start":w=0;break;case"end":w=M}this.setRow(w)},$.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},$.$imageSize=0,$.$borderSize=1,$}return f}();r.importCssString(` -.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { - background-color: #CAD6FA; - z-index: 1; -} -.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { - background-color: #3a674e; -} -.ace_editor.ace_autocomplete .ace_line-hover { - border: 1px solid #abbffe; - margin-top: -1px; - background: rgba(233,233,253,0.4); - position: absolute; - z-index: 2; -} -.ace_dark.ace_editor.ace_autocomplete .ace_line-hover { - border: 1px solid rgba(109, 150, 13, 0.8); - background: rgba(58, 103, 78, 0.62); -} -.ace_completion-meta { - opacity: 0.5; - margin: 0 0.9em; -} -.ace_completion-message { - color: blue; -} -.ace_editor.ace_autocomplete .ace_completion-highlight{ - color: #2d69c7; -} -.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{ - color: #93ca12; -} -.ace_editor.ace_autocomplete { - width: 300px; - z-index: 200000; - border: 1px lightgray solid; - position: fixed; - box-shadow: 2px 3px 5px rgba(0,0,0,.2); - line-height: 1.4; - background: #fefefe; - color: #111; -} -.ace_dark.ace_editor.ace_autocomplete { - border: 1px #484747 solid; - box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51); - line-height: 1.4; - background: #25282c; - color: #c1c1c1; -} -.ace_autocomplete_right .ace_text-layer { - width: calc(100% - 8px); -} -.ace_autocomplete_right .ace_line { - display: flex; -} -.ace_autocomplete_right .ace_completion-spacer { - flex: 1; -} -`,"autocompletion.css",!1),p.AcePopup=s,p.$singleLineEditor=o,p.getAriaId=l}),ace.define("ace/autocomplete/inline",["require","exports","module","ace/snippets"],function(e,p,m){var g=e("../snippets").snippetManager,a=function(){function c(){this.editor=null}return c.prototype.show=function(i,u,r){if(r=r||"",i&&this.editor&&this.editor!==i&&(this.hide(),this.editor=null),!i||!u)return!1;var t=u.snippet?g.getDisplayTextForSnippet(i,u.snippet):u.value;return!t||!t.startsWith(r)?!1:(this.editor=i,t=t.slice(r.length),t===""?i.removeGhostText():i.setGhostText(t),!0)},c.prototype.isOpen=function(){return this.editor?!!this.editor.renderer.$ghostText:!1},c.prototype.hide=function(){return this.editor?(this.editor.removeGhostText(),!0):!1},c.prototype.destroy=function(){this.hide(),this.editor=null},c}();p.AceInline=a}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,p,m){p.parForEach=function(a,c,i){var u=0,r=a.length;r===0&&i();for(var t=0;t=0&&i.test(a[r]);r--)u.push(a[r]);return u.reverse().join("")},p.retrieveFollowingIdentifier=function(a,c,i){i=i||g;for(var u=[],r=c;rthis.filterText&&C.lastIndexOf(this.filterText,0)===0)var b=this.filtered;else var b=this.all;this.filterText=C,b=this.filterCompletions(b,this.filterText),b=b.sort(function(_,E){return E.exactMatch-_.exactMatch||E.$score-_.$score||(_.caption||_.value).localeCompare(E.caption||E.value)});var y=null;b=b.filter(function(_){var E=_.snippet||_.caption||_.value;return E===y?!1:(y=E,!0)}),this.filtered=b},$.prototype.filterCompletions=function(C,b){var y=[],_=b.toUpperCase(),E=b.toLowerCase();e:for(var O=0,T;T=C[O];O++){var x=!this.ignoreCaption&&T.caption||T.value||T.snippet;if(!!x){var w=-1,M=0,k=0,S,q;if(this.exactMatch){if(b!==x.substr(0,b.length))continue e}else{var L=x.toLowerCase().indexOf(E);if(L>-1)k=L;else for(var A=0;A=0&&(N<0||D0&&(w===-1&&(k+=10),k+=q,M|=1<",i.escapeHTML(y.caption),"","
",i.escapeHTML(l(y.snippet))].join(""))},id:"snippetCompleter"},s=[o,r,t];p.setCompleters=function(y){s.length=0,y&&s.push.apply(s,y)},p.addCompleter=function(y){s.push(y)},p.textCompleter=r,p.keyWordCompleter=t,p.snippetCompleter=o;var f={name:"expandSnippet",exec:function(y){return g.expandWithTab(y)},bindKey:"Tab"},h=function(y,_){v(_.session.$mode)},v=function(y){typeof y=="string"&&(y=c.$modes[y]),!!y&&(g.files||(g.files={}),$(y.$id,y.snippetFileId),y.modes&&y.modes.forEach(v))},$=function(y,_){!_||!y||g.files[y]||(g.files[y]={},c.loadModule(_,function(E){!E||(g.files[y]=E,!E.snippets&&E.snippetText&&(E.snippets=g.parseSnippetFile(E.snippetText)),g.register(E.snippets||[],E.scope),E.includeScopes&&(g.snippetMap[E.scope].includeScopes=E.includeScopes,E.includeScopes.forEach(function(O){v("ace/mode/"+O)})))}))},C=function(y){var _=y.editor,E=_.completer&&_.completer.activated;if(y.command.name==="backspace")E&&!u.getCompletionPrefix(_)&&_.completer.detach();else if(y.command.name==="insertstring"){var O=u.getCompletionPrefix(_),T=u.triggerAutocomplete(_);if((O||T)&&!E){var x=a.for(_);x.autoShown=!0,x.showPopup(_)}}},b=e("../editor").Editor;e("../config").defineOptions(b.prototype,"editor",{enableBasicAutocompletion:{set:function(y){y?(this.completers||(this.completers=Array.isArray(y)?y:s),this.commands.addCommand(a.startCommand)):this.commands.removeCommand(a.startCommand)},value:!1},enableLiveAutocompletion:{set:function(y){y?(this.completers||(this.completers=Array.isArray(y)?y:s),this.commands.on("afterExec",C)):this.commands.removeListener("afterExec",C)},value:!1},enableSnippets:{set:function(y){y?(this.commands.addCommand(f),this.on("changeMode",h),h(null,this)):(this.commands.removeCommand(f),this.off("changeMode",h))},value:!1}})}),function(){ace.require(["ace/ext/language_tools"],function(e){n&&(n.exports=e)})}()})(extLanguage_tools);const VARIANT_FORM_VERSION="3.0.10",MOCK_CASE_URL="https://ks3-cn-beijing.ksyuncs.com/vform-static/vcase/",ACE_BASE_PATH="https://ks3-cn-beijing.ksyun.com/vform2021/ace-mini",BEAUTIFIER_PATH="https://ks3-cn-beijing.ksyun.com/vform2021/js-beautify/1.14.0/beautifier.min.js";var index_vue_vue_type_style_index_0_scoped_true_lang$4="";const _sfc_main$2B={name:"CodeEditor",props:{modelValue:{type:String},readonly:{type:Boolean,default:!1},mode:{type:String,default:"javascript"},userWorker:{type:Boolean,default:!0}},emits:["update:modelValue"],mounted(){ace$1.config.set("basePath",ACE_BASE_PATH),this.addAutoCompletion(ace$1),this.aceEditor=ace$1.edit(this.$refs.ace,{maxLines:20,minLines:5,fontSize:12,theme:this.themePath,mode:this.modePath,tabSize:2,readOnly:this.readonly,highlightActiveLine:!0,value:this.codeValue}),this.aceEditor.setOptions({enableBasicAutocompletion:!0,enableSnippets:!0,enableLiveAutocompletion:!0}),this.mode==="json"?this.setJsonMode():this.mode==="css"&&this.setCssMode(),this.userWorker||this.aceEditor.getSession().setUseWorker(!1),this.aceEditor.getSession().on("change",n=>{this.$emit("update:modelValue",this.aceEditor.getValue())})},data(){return{aceEditor:null,themePath:"ace/theme/sqlserver",modePath:"ace/mode/javascript",codeValue:this.modelValue}},watch:{},methods:{addAutoCompletion(n){let d=[{meta:"VForm API",caption:"getWidgetRef",value:"getWidgetRef()",score:1},{meta:"VForm API",caption:"getFormRef",value:"getFormRef()",score:1}];n.require("ace/ext/language_tools").addCompleter({getCompletions:function(p,m,g,a,c){return a.length===0?c(null,[]):c(null,d)}})},setJsonMode(){this.aceEditor.getSession().setMode("ace/mode/json")},setCssMode(){this.aceEditor.getSession().setMode("ace/mode/css")},getEditorAnnotations(){return this.aceEditor.getSession().getAnnotations()},setValue(n){this.aceEditor.getSession().setValue(n)}}},_hoisted_1$s={class:"ace-container"},_hoisted_2$k={class:"ace-editor",ref:"ace"};function _sfc_render$2B(n,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$s,[require$$0$1.createElementVNode("div",_hoisted_2$k,null,512)])}var CodeEditor=_export_sfc$1(_sfc_main$2B,[["render",_sfc_render$2B],["__scopeId","data-v-35f2b510"]]);const generateCode=function(n,d="vue"){let e=JSON.stringify(n);return d==="html"?` - - - - - VForm Demo - - - - - - -
- - - Submit -
- - diff --git a/yanzhu-ui-vue3/src/package/designer/index.js b/yanzhu-ui-vue3/src/package/designer/index.js deleted file mode 100644 index 333d1bce..00000000 --- a/yanzhu-ui-vue3/src/package/designer/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import MyProcessDesigner from './ProcessDesigner.vue'; - -MyProcessDesigner.install = function(Vue) { - Vue.component(MyProcessDesigner.name, MyProcessDesigner); -}; - -export default MyProcessDesigner; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/content-pad/index.js b/yanzhu-ui-vue3/src/package/designer/plugins/content-pad/index.js deleted file mode 100644 index ad826f14..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/content-pad/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import CustomContextPadProvider from './contentPadProvider'; - -export default { - __init__: ['contextPadProvider'], - contextPadProvider: ['type', CustomContextPadProvider] -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/defaultEmpty.js b/yanzhu-ui-vue3/src/package/designer/plugins/defaultEmpty.js deleted file mode 100644 index 46dd4c1f..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/defaultEmpty.js +++ /dev/null @@ -1,24 +0,0 @@ -export default (key, name, type) => { - if (!type) type = 'camunda'; - const TYPE_TARGET = { - activiti: 'http://activiti.org/bpmn', - camunda: 'http://bpmn.io/schema/bpmn', - flowable: 'http://flowable.org/bpmn' - }; - return ` - - - - - - - -`; -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/descriptor/activitiDescriptor.json b/yanzhu-ui-vue3/src/package/designer/plugins/descriptor/activitiDescriptor.json deleted file mode 100644 index 9daed508..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/descriptor/activitiDescriptor.json +++ /dev/null @@ -1,1071 +0,0 @@ -{ - "name": "Activiti", - "uri": "http://activiti.org/bpmn", - "prefix": "activiti", - "xml": { - "tagAlias": "lowerCase" - }, - "associations": [], - "types": [ - { - "name": "Definitions", - "isAbstract": true, - "extends": [ - "bpmn:Definitions" - ], - "properties": [ - { - "name": "diagramRelationId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "InOutBinding", - "superClass": [ - "Element" - ], - "isAbstract": true, - "properties": [ - { - "name": "source", - "isAttr": true, - "type": "String" - }, - { - "name": "sourceExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "target", - "isAttr": true, - "type": "String" - }, - { - "name": "businessKey", - "isAttr": true, - "type": "String" - }, - { - "name": "local", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "variables", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "In", - "superClass": [ - "InOutBinding" - ], - "meta": { - "allowedIn": [ - "bpmn:CallActivity" - ] - } - }, - { - "name": "Out", - "superClass": [ - "InOutBinding" - ], - "meta": { - "allowedIn": [ - "bpmn:CallActivity" - ] - } - }, - { - "name": "AsyncCapable", - "isAbstract": true, - "extends": [ - "bpmn:Activity", - "bpmn:Gateway", - "bpmn:Event" - ], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncBefore", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncAfter", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "exclusive", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "JobPriorized", - "isAbstract": true, - "extends": [ - "bpmn:Process", - "activiti:AsyncCapable" - ], - "properties": [ - { - "name": "jobPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "SignalEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:SignalEventDefinition" - ], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - } - ] - }, - { - "name": "ErrorEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:ErrorEventDefinition" - ], - "properties": [ - { - "name": "errorCodeVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "errorMessageVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Error", - "isAbstract": true, - "extends": [ - "bpmn:Error" - ], - "properties": [ - { - "name": "activiti:errorMessage", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "PotentialStarter", - "superClass": [ - "Element" - ], - "properties": [ - { - "name": "resourceAssignmentExpression", - "type": "bpmn:ResourceAssignmentExpression" - } - ] - }, - { - "name": "FormSupported", - "isAbstract": true, - "extends": [ - "bpmn:StartEvent", - "bpmn:UserTask" - ], - "properties": [ - { - "name": "formHandlerClass", - "isAttr": true, - "type": "String" - }, - { - "name": "formKey", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TemplateSupported", - "isAbstract": true, - "extends": [ - "bpmn:Process", - "bpmn:FlowElement" - ], - "properties": [ - { - "name": "modelerTemplate", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Initiator", - "isAbstract": true, - "extends": [ "bpmn:StartEvent" ], - "properties": [ - { - "name": "initiator", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ScriptTask", - "isAbstract": true, - "extends": [ - "bpmn:ScriptTask" - ], - "properties": [ - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Process", - "isAbstract": true, - "extends": [ - "bpmn:Process" - ], - "properties": [ - { - "name": "candidateStarterGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateStarterUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "versionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "historyTimeToLive", - "isAttr": true, - "type": "String" - }, - { - "name": "isStartableInTasklist", - "isAttr": true, - "type": "Boolean", - "default": true - }, - { - "name":"executionListener", - "isAbstract": true, - "type":"Expression" - } - ] - }, - { - "name": "EscalationEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:EscalationEventDefinition" - ], - "properties": [ - { - "name": "escalationCodeVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FormalExpression", - "isAbstract": true, - "extends": [ - "bpmn:FormalExpression" - ], - "properties": [ - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "multiinstance_type", - "superClass":[ - "Element" - ] - }, - { - "name": "multiinstance_condition", - "superClass":[ - "Element" - ] - }, - { - "name": "Assignable", - "extends": [ "bpmn:UserTask" ], - "properties": [ - { - "name": "assignee", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "dueDate", - "isAttr": true, - "type": "String" - }, - { - "name": "followUpDate", - "isAttr": true, - "type": "String" - }, - { - "name": "priority", - "isAttr": true, - "type": "String" - }, - { - "name": "multiinstance_condition", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "CallActivity", - "extends": [ "bpmn:CallActivity" ], - "properties": [ - { - "name": "calledElementBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "calledElementVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementVersionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "caseRef", - "isAttr": true, - "type": "String" - }, - { - "name": "caseBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "caseVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "caseTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingClass", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingDelegateExpression", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ServiceTaskLike", - "extends": [ - "bpmn:ServiceTask", - "bpmn:BusinessRuleTask", - "bpmn:SendTask", - "bpmn:MessageEventDefinition" - ], - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "DmnCapable", - "extends": [ - "bpmn:BusinessRuleTask" - ], - "properties": [ - { - "name": "decisionRef", - "isAttr": true, - "type": "String" - }, - { - "name": "decisionRefBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "decisionRefVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "mapDecisionResult", - "isAttr": true, - "type": "String", - "default": "resultList" - }, - { - "name": "decisionRefTenantId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ExternalCapable", - "extends": [ - "activiti:ServiceTaskLike" - ], - "properties": [ - { - "name": "type", - "isAttr": true, - "type": "String" - }, - { - "name": "topic", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TaskPriorized", - "extends": [ - "bpmn:Process", - "activiti:ExternalCapable" - ], - "properties": [ - { - "name": "taskPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Properties", - "superClass": [ - "Element" - ], - "meta": { - "allowedIn": [ "*" ] - }, - "properties": [ - { - "name": "values", - "type": "Property", - "isMany": true - } - ] - }, - { - "name": "Property", - "superClass": [ - "Element" - ], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "value", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "Connector", - "superClass": [ - "Element" - ], - "meta": { - "allowedIn": [ - "activiti:ServiceTaskLike" - ] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - } - ] - }, - { - "name": "InputOutput", - "superClass": [ - "Element" - ], - "meta": { - "allowedIn": [ - "bpmn:FlowNode", - "activiti:Connector" - ] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - }, - { - "name": "inputParameters", - "isMany": true, - "type": "InputParameter" - }, - { - "name": "outputParameters", - "isMany": true, - "type": "OutputParameter" - } - ] - }, - { - "name": "InputOutputParameter", - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "InputOutputParameterDefinition", - "isAbstract": true - }, - { - "name": "List", - "superClass": [ "InputOutputParameterDefinition" ], - "properties": [ - { - "name": "items", - "isMany": true, - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Map", - "superClass": [ "InputOutputParameterDefinition" ], - "properties": [ - { - "name": "entries", - "isMany": true, - "type": "Entry" - } - ] - }, - { - "name": "Entry", - "properties": [ - { - "name": "key", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Value", - "superClass": [ - "InputOutputParameterDefinition" - ], - "properties": [ - { - "name": "id", - "isAttr": true, - "type": "String" - }, - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Script", - "superClass": [ "InputOutputParameterDefinition" ], - "properties": [ - { - "name": "scriptFormat", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Field", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "activiti:ServiceTaskLike", - "activiti:ExecutionListener", - "activiti:TaskListener" - ] - }, - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "expression", - "type": "String" - }, - { - "name": "stringValue", - "isAttr": true, - "type": "String" - }, - { - "name": "string", - "type": "String" - } - ] - }, - { - "name": "InputParameter", - "superClass": [ "InputOutputParameter" ] - }, - { - "name": "OutputParameter", - "superClass": [ "InputOutputParameter" ] - }, - { - "name": "Collectable", - "isAbstract": true, - "extends": [ "bpmn:MultiInstanceLoopCharacteristics" ], - "superClass": [ "activiti:AsyncCapable" ], - "properties": [ - { - "name": "collection", - "isAttr": true, - "type": "String" - }, - { - "name": "elementVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FailedJobRetryTimeCycle", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "activiti:AsyncCapable", - "bpmn:MultiInstanceLoopCharacteristics" - ] - }, - "properties": [ - { - "name": "body", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "ExecutionListener", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "bpmn:Task", - "bpmn:ServiceTask", - "bpmn:UserTask", - "bpmn:BusinessRuleTask", - "bpmn:ScriptTask", - "bpmn:ReceiveTask", - "bpmn:ManualTask", - "bpmn:ExclusiveGateway", - "bpmn:SequenceFlow", - "bpmn:ParallelGateway", - "bpmn:InclusiveGateway", - "bpmn:EventBasedGateway", - "bpmn:StartEvent", - "bpmn:IntermediateCatchEvent", - "bpmn:IntermediateThrowEvent", - "bpmn:EndEvent", - "bpmn:BoundaryEvent", - "bpmn:CallActivity", - "bpmn:SubProcess", - "bpmn:Process" - ] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "TaskListener", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "bpmn:UserTask" - ] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "FormProperty", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "bpmn:StartEvent", - "bpmn:UserTask" - ] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "required", - "type": "String", - "isAttr": true - }, - { - "name": "readable", - "type": "String", - "isAttr": true - }, - { - "name": "writable", - "type": "String", - "isAttr": true - }, - { - "name": "variable", - "type": "String", - "isAttr": true - }, - { - "name": "expression", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "default", - "type": "String", - "isAttr": true - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "FormProperty", - "superClass": [ "Element" ], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "label", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "defaultValue", - "type": "String", - "isAttr": true - }, - { - "name": "properties", - "type": "Properties" - }, - { - "name": "validation", - "type": "Validation" - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "Validation", - "superClass": [ "Element" ], - "properties": [ - { - "name": "constraints", - "type": "Constraint", - "isMany": true - } - ] - }, - { - "name": "Constraint", - "superClass": [ "Element" ], - "properties": [ - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "config", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "ConditionalEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:ConditionalEventDefinition" - ], - "properties": [ - { - "name": "variableName", - "isAttr": true, - "type": "String" - }, - { - "name": "variableEvent", - "isAttr": true, - "type": "String" - } - ] - } - ], - "emumerations": [ ] -} diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/descriptor/camundaDescriptor.json b/yanzhu-ui-vue3/src/package/designer/plugins/descriptor/camundaDescriptor.json deleted file mode 100644 index a57dbe63..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/descriptor/camundaDescriptor.json +++ /dev/null @@ -1,1087 +0,0 @@ -{ - "name": "Camunda", - "uri": "http://camunda.org/schema/1.0/bpmn", - "prefix": "camunda", - "xml": { - "tagAlias": "lowerCase" - }, - "associations": [], - "types": [ - { - "name": "Definitions", - "isAbstract": true, - "extends": [ - "bpmn:Definitions" - ], - "properties": [ - { - "name": "diagramRelationId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "InOutBinding", - "superClass": [ - "Element" - ], - "isAbstract": true, - "properties": [ - { - "name": "source", - "isAttr": true, - "type": "String" - }, - { - "name": "sourceExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "target", - "isAttr": true, - "type": "String" - }, - { - "name": "businessKey", - "isAttr": true, - "type": "String" - }, - { - "name": "local", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "variables", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "In", - "superClass": [ - "InOutBinding" - ], - "meta": { - "allowedIn": [ - "bpmn:CallActivity", - "bpmn:SignalEventDefinition" - ] - } - }, - { - "name": "Out", - "superClass": [ - "InOutBinding" - ], - "meta": { - "allowedIn": [ - "bpmn:CallActivity" - ] - } - }, - { - "name": "AsyncCapable", - "isAbstract": true, - "extends": [ - "bpmn:Activity", - "bpmn:Gateway", - "bpmn:Event" - ], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncBefore", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncAfter", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "exclusive", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "JobPriorized", - "isAbstract": true, - "extends": [ - "bpmn:Process", - "camunda:AsyncCapable" - ], - "properties": [ - { - "name": "jobPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "SignalEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:SignalEventDefinition" - ], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - } - ] - }, - { - "name": "ErrorEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:ErrorEventDefinition" - ], - "properties": [ - { - "name": "errorCodeVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "errorMessageVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Error", - "isAbstract": true, - "extends": [ - "bpmn:Error" - ], - "properties": [ - { - "name": "camunda:errorMessage", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "PotentialStarter", - "superClass": [ - "Element" - ], - "properties": [ - { - "name": "resourceAssignmentExpression", - "type": "bpmn:ResourceAssignmentExpression" - } - ] - }, - { - "name": "FormSupported", - "isAbstract": true, - "extends": [ - "bpmn:StartEvent", - "bpmn:UserTask" - ], - "properties": [ - { - "name": "formHandlerClass", - "isAttr": true, - "type": "String" - }, - { - "name": "formKey", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TemplateSupported", - "isAbstract": true, - "extends": [ - "bpmn:Process", - "bpmn:FlowElement" - ], - "properties": [ - { - "name": "modelerTemplate", - "isAttr": true, - "type": "String" - }, - { - "name": "modelerTemplateVersion", - "isAttr": true, - "type": "Integer" - } - ] - }, - { - "name": "Initiator", - "isAbstract": true, - "extends": [ "bpmn:StartEvent" ], - "properties": [ - { - "name": "initiator", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ScriptTask", - "isAbstract": true, - "extends": [ - "bpmn:ScriptTask" - ], - "properties": [ - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Process", - "isAbstract": true, - "extends": [ - "bpmn:Process" - ], - "properties": [ - { - "name": "candidateStarterGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateStarterUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "versionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "historyTimeToLive", - "isAttr": true, - "type": "String" - }, - { - "name": "isStartableInTasklist", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "EscalationEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:EscalationEventDefinition" - ], - "properties": [ - { - "name": "escalationCodeVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FormalExpression", - "isAbstract": true, - "extends": [ - "bpmn:FormalExpression" - ], - "properties": [ - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Assignable", - "extends": [ "bpmn:UserTask" ], - "properties": [ - { - "name": "assignee", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "dueDate", - "isAttr": true, - "type": "String" - }, - { - "name": "followUpDate", - "isAttr": true, - "type": "String" - }, - { - "name": "priority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "CallActivity", - "extends": [ "bpmn:CallActivity" ], - "properties": [ - { - "name": "calledElementBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "calledElementVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementVersionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "caseRef", - "isAttr": true, - "type": "String" - }, - { - "name": "caseBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "caseVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "caseTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingClass", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingDelegateExpression", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ServiceTaskLike", - "extends": [ - "bpmn:ServiceTask", - "bpmn:BusinessRuleTask", - "bpmn:SendTask", - "bpmn:MessageEventDefinition" - ], - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "DmnCapable", - "extends": [ - "bpmn:BusinessRuleTask" - ], - "properties": [ - { - "name": "decisionRef", - "isAttr": true, - "type": "String" - }, - { - "name": "decisionRefBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "decisionRefVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "mapDecisionResult", - "isAttr": true, - "type": "String", - "default": "resultList" - }, - { - "name": "decisionRefTenantId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ExternalCapable", - "extends": [ - "camunda:ServiceTaskLike" - ], - "properties": [ - { - "name": "type", - "isAttr": true, - "type": "String" - }, - { - "name": "topic", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TaskPriorized", - "extends": [ - "bpmn:Process", - "camunda:ExternalCapable" - ], - "properties": [ - { - "name": "taskPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Properties", - "superClass": [ - "Element" - ], - "meta": { - "allowedIn": [ "*" ] - }, - "properties": [ - { - "name": "values", - "type": "Property", - "isMany": true - } - ] - }, - { - "name": "Property", - "superClass": [ - "Element" - ], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "value", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "Connector", - "superClass": [ - "Element" - ], - "meta": { - "allowedIn": [ - "camunda:ServiceTaskLike" - ] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - } - ] - }, - { - "name": "InputOutput", - "superClass": [ - "Element" - ], - "meta": { - "allowedIn": [ - "bpmn:FlowNode", - "camunda:Connector" - ] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - }, - { - "name": "inputParameters", - "isMany": true, - "type": "InputParameter" - }, - { - "name": "outputParameters", - "isMany": true, - "type": "OutputParameter" - } - ] - }, - { - "name": "InputOutputParameter", - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "InputOutputParameterDefinition", - "isAbstract": true - }, - { - "name": "List", - "superClass": [ "InputOutputParameterDefinition" ], - "properties": [ - { - "name": "items", - "isMany": true, - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Map", - "superClass": [ "InputOutputParameterDefinition" ], - "properties": [ - { - "name": "entries", - "isMany": true, - "type": "Entry" - } - ] - }, - { - "name": "Entry", - "properties": [ - { - "name": "key", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Value", - "superClass": [ - "InputOutputParameterDefinition" - ], - "properties": [ - { - "name": "id", - "isAttr": true, - "type": "String" - }, - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Script", - "superClass": [ "InputOutputParameterDefinition" ], - "properties": [ - { - "name": "scriptFormat", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Field", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "camunda:ServiceTaskLike", - "camunda:ExecutionListener", - "camunda:TaskListener" - ] - }, - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "expression", - "type": "String" - }, - { - "name": "stringValue", - "isAttr": true, - "type": "String" - }, - { - "name": "string", - "type": "String" - } - ] - }, - { - "name": "InputParameter", - "superClass": [ "InputOutputParameter" ] - }, - { - "name": "OutputParameter", - "superClass": [ "InputOutputParameter" ] - }, - { - "name": "Collectable", - "isAbstract": true, - "extends": [ "bpmn:MultiInstanceLoopCharacteristics" ], - "superClass": [ "camunda:AsyncCapable" ], - "properties": [ - { - "name": "collection", - "isAttr": true, - "type": "String" - }, - { - "name": "elementVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FailedJobRetryTimeCycle", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "camunda:AsyncCapable", - "bpmn:MultiInstanceLoopCharacteristics" - ] - }, - "properties": [ - { - "name": "body", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "ExecutionListener", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "bpmn:Task", - "bpmn:ServiceTask", - "bpmn:UserTask", - "bpmn:BusinessRuleTask", - "bpmn:ScriptTask", - "bpmn:ReceiveTask", - "bpmn:ManualTask", - "bpmn:ExclusiveGateway", - "bpmn:SequenceFlow", - "bpmn:ParallelGateway", - "bpmn:InclusiveGateway", - "bpmn:EventBasedGateway", - "bpmn:StartEvent", - "bpmn:IntermediateCatchEvent", - "bpmn:IntermediateThrowEvent", - "bpmn:EndEvent", - "bpmn:BoundaryEvent", - "bpmn:CallActivity", - "bpmn:SubProcess", - "bpmn:Process" - ] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "TaskListener", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "bpmn:UserTask" - ] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - }, - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "eventDefinitions", - "type": "bpmn:TimerEventDefinition", - "isMany": true - } - ] - }, - { - "name": "FormProperty", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "bpmn:StartEvent", - "bpmn:UserTask" - ] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "required", - "type": "String", - "isAttr": true - }, - { - "name": "readable", - "type": "String", - "isAttr": true - }, - { - "name": "writable", - "type": "String", - "isAttr": true - }, - { - "name": "variable", - "type": "String", - "isAttr": true - }, - { - "name": "expression", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "default", - "type": "String", - "isAttr": true - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "FormData", - "superClass": [ "Element" ], - "meta": { - "allowedIn": [ - "bpmn:StartEvent", - "bpmn:UserTask" - ] - }, - "properties": [ - { - "name": "fields", - "type": "FormField", - "isMany": true - }, - { - "name": "businessKey", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "FormField", - "superClass": [ "Element" ], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "label", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "defaultValue", - "type": "String", - "isAttr": true - }, - { - "name": "properties", - "type": "Properties" - }, - { - "name": "validation", - "type": "Validation" - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "Validation", - "superClass": [ "Element" ], - "properties": [ - { - "name": "constraints", - "type": "Constraint", - "isMany": true - } - ] - }, - { - "name": "Constraint", - "superClass": [ "Element" ], - "properties": [ - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "config", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "ConditionalEventDefinition", - "isAbstract": true, - "extends": [ - "bpmn:ConditionalEventDefinition" - ], - "properties": [ - { - "name": "variableName", - "isAttr": true, - "type": "String" - }, - { - "name": "variableEvents", - "isAttr": true, - "type": "String" - } - ] - } - ], - "emumerations": [ ] -} diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/activitiExtension.js b/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/activitiExtension.js deleted file mode 100644 index d8c4ec5c..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/activitiExtension.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -import { some } from '@/utils/min-dash.js'; - -var ALLOWED_TYPES = { - FailedJobRetryTimeCycle: ['bpmn:StartEvent', 'bpmn:BoundaryEvent', 'bpmn:IntermediateCatchEvent', 'bpmn:Activity'], - Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], - Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] -}; - -function is(element, type) { - return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type); -} - -function exists(element) { - return element && element.length; -} - -function includesType(collection, type) { - return ( - exists(collection) && - some(collection, function(element) { - return is(element, type); - }) - ); -} - -function anyType(element, types) { - return some(types, function(type) { - return is(element, type); - }); -} - -function isAllowed(propName, propDescriptor, newElement) { - var name = propDescriptor.name; - var types = ALLOWED_TYPES[name.replace(/activiti:/, '')]; - - return name === propName && anyType(newElement, types); -} - -export default function ActivitiModdleExtension(eventBus) { - eventBus.on( - 'property.clone', - function(context) { - var newElement = context.newElement; - var propDescriptor = context.propertyDescriptor; - - this.canCloneProperty(newElement, propDescriptor); - }, - this - ); -} - -ActivitiModdleExtension.$inject = ['eventBus']; - -ActivitiModdleExtension.prototype.canCloneProperty = function(newElement, propDescriptor) { - if (isAllowed('activiti:FailedJobRetryTimeCycle', propDescriptor, newElement)) { - return ( - includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || - includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || - is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') - ); - } - - if (isAllowed('activiti:Connector', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition'); - } - - if (isAllowed('activiti:Field', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition'); - } -}; - diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/index.js b/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/index.js deleted file mode 100644 index 9132e5a1..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/activiti/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * @author igdianov - * address https://github.com/igdianov/activiti-bpmn-moddle - * */ - -import ActivitiModdleExtension from './activitiExtension.js' -export default { - __init__: ['ActivitiModdleExtension'], - ActivitiModdleExtension: ['type', ActivitiModdleExtension] -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/extension.js b/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/extension.js deleted file mode 100644 index ea006757..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/extension.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -import { some, isObject, isFunction } from '@/utils/min-dash.js'; - -var WILDCARD = '*'; - -export default function CamundaModdleExtension(eventBus) { - var self = this; - - eventBus.on('moddleCopy.canCopyProperty', function(context) { - var property = context.property; - var parent = context.parent; - - return self.canCopyProperty(property, parent); - }); -} - -CamundaModdleExtension.$inject = ['eventBus']; - -/** - * Check wether to disallow copying property. - */ -CamundaModdleExtension.prototype.canCopyProperty = function(property, parent) { - // (1) check wether property is allowed in parent - if (isObject(property) && !isAllowedInParent(property, parent)) { - return false; - } - - // (2) check more complex scenarios - - if (is(property, 'camunda:InputOutput') && !this.canHostInputOutput(parent)) { - return false; - } - - if (isAny(property, ['camunda:Connector', 'camunda:Field']) && !this.canHostConnector(parent)) { - return false; - } - - if (is(property, 'camunda:In') && !this.canHostIn(parent)) { - return false; - } -}; - -CamundaModdleExtension.prototype.canHostInputOutput = function(parent) { - // allowed in camunda:Connector - var connector = getParent(parent, 'camunda:Connector'); - - if (connector) { - return true; - } - - // special rules inside bpmn:FlowNode - var flowNode = getParent(parent, 'bpmn:FlowNode'); - - if (!flowNode) { - return false; - } - - if (isAny(flowNode, ['bpmn:StartEvent', 'bpmn:Gateway', 'bpmn:BoundaryEvent'])) { - return false; - } - - if (is(flowNode, 'bpmn:SubProcess') && flowNode.get('triggeredByEvent')) { - return false; - } - - return true; -}; - -CamundaModdleExtension.prototype.canHostConnector = function(parent) { - var serviceTaskLike = getParent(parent, 'camunda:ServiceTaskLike'); - - if (is(serviceTaskLike, 'bpmn:MessageEventDefinition')) { - // only allow on throw and end events - return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent'); - } - - return true; -}; - -CamundaModdleExtension.prototype.canHostIn = function(parent) { - var callActivity = getParent(parent, 'bpmn:CallActivity'); - - if (callActivity) { - return true; - } - - var signalEventDefinition = getParent(parent, 'bpmn:SignalEventDefinition'); - - if (signalEventDefinition) { - // only allow on throw and end events - return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent'); - } - - return true; -}; - -// helpers ////////// - -function is(element, type) { - return element && isFunction(element.$instanceOf) && element.$instanceOf(type); -} - -function isAny(element, types) { - return some(types, function(t) { - return is(element, t); - }); -} - -function getParent(element, type) { - if (!type) { - return element.$parent; - } - - if (is(element, type)) { - return element; - } - - if (!element.$parent) { - return; - } - - return getParent(element.$parent, type); -} - -function isAllowedInParent(property, parent) { - // (1) find property descriptor - var descriptor = property.$type && property.$model.getTypeDescriptor(property.$type); - - var allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn; - - if (!allowedIn || isWildcard(allowedIn)) { - return true; - } - - // (2) check wether property has parent of allowed type - return some(allowedIn, function(type) { - return getParent(parent, type); - }); -} - -function isWildcard(allowedIn) { - return allowedIn.indexOf(WILDCARD) !== -1; -} diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/index.js b/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/index.js deleted file mode 100644 index 007c1f4d..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/camunda/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -import CamundaModdleExtension from './extension.js'; -export default { - __init__: ['CamundaModdleExtension'], - CamundaModdleExtension: ['type', CamundaModdleExtension] -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/flowableExtension.js b/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/flowableExtension.js deleted file mode 100644 index 652bfb82..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/flowableExtension.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -import { some } from '@/utils/min-dash.js'; - -var ALLOWED_TYPES = { - FailedJobRetryTimeCycle: ['bpmn:StartEvent', 'bpmn:BoundaryEvent', 'bpmn:IntermediateCatchEvent', 'bpmn:Activity'], - Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], - Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] -}; - -function is(element, type) { - return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type); -} - -function exists(element) { - return element && element.length; -} - -function includesType(collection, type) { - return ( - exists(collection) && - some(collection, function(element) { - return is(element, type); - }) - ); -} - -function anyType(element, types) { - return some(types, function(type) { - return is(element, type); - }); -} - -function isAllowed(propName, propDescriptor, newElement) { - var name = propDescriptor.name; - var types = ALLOWED_TYPES[name.replace(/flowable:/, '')]; - - return name === propName && anyType(newElement, types); -} - -export default function FlowableModdleExtension(eventBus) { - eventBus.on( - 'property.clone', - function(context) { - var newElement = context.newElement; - var propDescriptor = context.propertyDescriptor; - - this.canCloneProperty(newElement, propDescriptor); - }, - this - ); -} - -FlowableModdleExtension.$inject = ['eventBus']; - -FlowableModdleExtension.prototype.canCloneProperty = function(newElement, propDescriptor) { - if (isAllowed('flowable:FailedJobRetryTimeCycle', propDescriptor, newElement)) { - return ( - includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || - includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || - is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') - ); - } - - if (isAllowed('flowable:Connector', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition'); - } - - if (isAllowed('flowable:Field', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition'); - } -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/index.js b/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/index.js deleted file mode 100644 index c0c39684..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/extension-moddle/flowable/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * @author igdianov - * address https://github.com/igdianov/activiti-bpmn-moddle - * */ - -import FlowableModdleExtension from './flowableExtension.js' -export default { - __init__: ['FlowableModdleExtension'], - FlowableModdleExtension: ['type', FlowableModdleExtension] -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/palette/CustomPalette.js b/yanzhu-ui-vue3/src/package/designer/plugins/palette/CustomPalette.js deleted file mode 100644 index b7ea83f6..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/palette/CustomPalette.js +++ /dev/null @@ -1,156 +0,0 @@ -import PaletteProvider from 'bpmn-js/lib/features/palette/PaletteProvider'; -import { assign } from '@/utils/min-dash.js'; - -export default function CustomPalette(palette, create, elementFactory, spaceTool, lassoTool, handTool, globalConnect, translate) { - PaletteProvider.call(this, palette, create, elementFactory, spaceTool, lassoTool, handTool, globalConnect, translate, 2000); -} - -const F = function() {}; // 核心,利用空对象作为中介; -F.prototype = PaletteProvider.prototype; // 核心,将父类的原型赋值给空对象F; - -// 利用中介函数重写原型链方法 -F.prototype.getPaletteEntries = function() { - var actions = {}; - var create = this._create; - var elementFactory = this._elementFactory; - var spaceTool = this._spaceTool; - var lassoTool = this._lassoTool; - var handTool = this._handTool; - var globalConnect = this._globalConnect; - var translate = this._translate; - - function createAction(type, group, className, title, options) { - function createListener(event) { - var shape = elementFactory.createShape(assign({ type: type }, options)); - - if (options) { - shape.businessObject.di.isExpanded = options.isExpanded; - } - - create.start(event, shape); - } - - var shortType = type.replace(/^bpmn:/, ''); - - return { - group: group, - className: className, - title: title || translate('Create {type}', { type: shortType }), - action: { - dragstart: createListener, - click: createListener - } - }; - } - - function createSubprocess(event) { - var subProcess = elementFactory.createShape({ - type: 'bpmn:SubProcess', - x: 0, - y: 0, - isExpanded: true - }); - - var startEvent = elementFactory.createShape({ - type: 'bpmn:StartEvent', - x: 40, - y: 82, - parent: subProcess - }); - - create.start(event, [subProcess, startEvent], { - hints: { - autoSelect: [startEvent] - } - }); - } - - function createParticipant(event) { - create.start(event, elementFactory.createParticipantShape()); - } - - assign(actions, { - 'hand-tool': { - group: 'tools', - className: 'bpmn-icon-hand-tool', - title: translate('Activate the hand tool'), - action: { - click: function(event) { - handTool.activateHand(event); - } - } - }, - 'lasso-tool': { - group: 'tools', - className: 'bpmn-icon-lasso-tool', - title: translate('Activate the lasso tool'), - action: { - click: function(event) { - lassoTool.activateSelection(event); - } - } - }, - 'space-tool': { - group: 'tools', - className: 'bpmn-icon-space-tool', - title: translate('Activate the create/remove space tool'), - action: { - click: function(event) { - spaceTool.activateSelection(event); - } - } - }, - 'global-connect-tool': { - group: 'tools', - className: 'bpmn-icon-connection-multi', - title: translate('Activate the global connect tool'), - action: { - click: function(event) { - globalConnect.toggle(event); - } - } - }, - 'tool-separator': { - group: 'tools', - separator: true - }, - 'create.start-event': createAction('bpmn:StartEvent', 'event', 'bpmn-icon-start-event-none', translate('Create StartEvent')), - 'create.intermediate-event': createAction( - 'bpmn:IntermediateThrowEvent', - 'event', - 'bpmn-icon-intermediate-event-none', - translate('Create Intermediate/Boundary Event') - ), - 'create.end-event': createAction('bpmn:EndEvent', 'event', 'bpmn-icon-end-event-none', translate('Create EndEvent')), - 'create.exclusive-gateway': createAction('bpmn:ExclusiveGateway', 'gateway', 'bpmn-icon-gateway-none', translate('Create Gateway')), - 'create.user-task': createAction('bpmn:UserTask', 'activity', 'bpmn-icon-user-task', translate('Create User Task')), - 'create.data-object': createAction('bpmn:DataObjectReference', 'data-object', 'bpmn-icon-data-object', translate('Create DataObjectReference')), - 'create.data-store': createAction('bpmn:DataStoreReference', 'data-store', 'bpmn-icon-data-store', translate('Create DataStoreReference')), - 'create.subprocess-expanded': { - group: 'activity', - className: 'bpmn-icon-subprocess-expanded', - title: translate('Create expanded SubProcess'), - action: { - dragstart: createSubprocess, - click: createSubprocess - } - }, - 'create.participant-expanded': { - group: 'collaboration', - className: 'bpmn-icon-participant', - title: translate('Create Pool/Participant'), - action: { - dragstart: createParticipant, - click: createParticipant - } - }, - 'create.group': createAction('bpmn:Group', 'artifact', 'bpmn-icon-group', translate('Create Group')) - }); - - return actions; -}; - -CustomPalette.$inject = ['palette', 'create', 'elementFactory', 'spaceTool', 'lassoTool', 'handTool', 'globalConnect', 'translate']; - -CustomPalette.prototype = new F(); // 核心,将 F的实例赋值给子类; -CustomPalette.prototype.constructor = CustomPalette; // 修复子类CustomPalette的构造器指向,防止原型链的混乱; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/palette/index.js b/yanzhu-ui-vue3/src/package/designer/plugins/palette/index.js deleted file mode 100644 index 8d5f03fe..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/palette/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import CustomPalette from './CustomPalette'; - -export default { - __init__: ['customPalette'], - customPalette: ['type', CustomPalette] -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/palette/paletteProvider.js b/yanzhu-ui-vue3/src/package/designer/plugins/palette/paletteProvider.js deleted file mode 100644 index 8fa00ff7..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/palette/paletteProvider.js +++ /dev/null @@ -1,160 +0,0 @@ -import { assign } from '@/utils/min-dash.js'; - -/** - * A palette provider for BPMN 2.0 elements. - */ -export default function PaletteProvider(palette, create, elementFactory, spaceTool, lassoTool, handTool, globalConnect, translate) { - this._palette = palette; - this._create = create; - this._elementFactory = elementFactory; - this._spaceTool = spaceTool; - this._lassoTool = lassoTool; - this._handTool = handTool; - this._globalConnect = globalConnect; - this._translate = translate; - - palette.registerProvider(this); -} - -PaletteProvider.$inject = ['palette', 'create', 'elementFactory', 'spaceTool', 'lassoTool', 'handTool', 'globalConnect', 'translate']; - -PaletteProvider.prototype.getPaletteEntries = function() { - var actions = {}; - var create = this._create; - var elementFactory = this._elementFactory; - var spaceTool = this._spaceTool; - var lassoTool = this._lassoTool; - var handTool = this._handTool; - var globalConnect = this._globalConnect; - var translate = this._translate; - - function createAction(type, group, className, title, options) { - function createListener(event) { - var shape = elementFactory.createShape(assign({ type: type }, options)); - - if (options) { - shape.businessObject.di.isExpanded = options.isExpanded; - } - - create.start(event, shape); - } - - var shortType = type.replace(/^bpmn:/, ''); - - return { - group: group, - className: className, - title: title || translate('Create {type}', { type: shortType }), - action: { - dragstart: createListener, - click: createListener - } - }; - } - - function createSubprocess(event) { - var subProcess = elementFactory.createShape({ - type: 'bpmn:SubProcess', - x: 0, - y: 0, - isExpanded: true - }); - - var startEvent = elementFactory.createShape({ - type: 'bpmn:StartEvent', - x: 40, - y: 82, - parent: subProcess - }); - - create.start(event, [subProcess, startEvent], { - hints: { - autoSelect: [startEvent] - } - }); - } - - function createParticipant(event) { - create.start(event, elementFactory.createParticipantShape()); - } - - assign(actions, { - 'hand-tool': { - group: 'tools', - className: 'bpmn-icon-hand-tool', - title: translate('Activate the hand tool'), - action: { - click: function(event) { - handTool.activateHand(event); - } - } - }, - 'lasso-tool': { - group: 'tools', - className: 'bpmn-icon-lasso-tool', - title: translate('Activate the lasso tool'), - action: { - click: function(event) { - lassoTool.activateSelection(event); - } - } - }, - 'space-tool': { - group: 'tools', - className: 'bpmn-icon-space-tool', - title: translate('Activate the create/remove space tool'), - action: { - click: function(event) { - spaceTool.activateSelection(event); - } - } - }, - 'global-connect-tool': { - group: 'tools', - className: 'bpmn-icon-connection-multi', - title: translate('Activate the global connect tool'), - action: { - click: function(event) { - globalConnect.toggle(event); - } - } - }, - 'tool-separator': { - group: 'tools', - separator: true - }, - 'create.start-event': createAction('bpmn:StartEvent', 'event', 'bpmn-icon-start-event-none', translate('Create StartEvent')), - 'create.intermediate-event': createAction( - 'bpmn:IntermediateThrowEvent', - 'event', - 'bpmn-icon-intermediate-event-none', - translate('Create Intermediate/Boundary Event') - ), - 'create.end-event': createAction('bpmn:EndEvent', 'event', 'bpmn-icon-end-event-none', translate('Create EndEvent')), - 'create.exclusive-gateway': createAction('bpmn:ExclusiveGateway', 'gateway', 'bpmn-icon-gateway-none', translate('Create Gateway')), - 'create.user-task': createAction('bpmn:UserTask', 'activity', 'bpmn-icon-user-task', translate('Create User Task')), - 'create.data-object': createAction('bpmn:DataObjectReference', 'data-object', 'bpmn-icon-data-object', translate('Create DataObjectReference')), - 'create.data-store': createAction('bpmn:DataStoreReference', 'data-store', 'bpmn-icon-data-store', translate('Create DataStoreReference')), - 'create.subprocess-expanded': { - group: 'activity', - className: 'bpmn-icon-subprocess-expanded', - title: translate('Create expanded SubProcess'), - action: { - dragstart: createSubprocess, - click: createSubprocess - } - }, - 'create.participant-expanded': { - group: 'collaboration', - className: 'bpmn-icon-participant', - title: translate('Create Pool/Participant'), - action: { - dragstart: createParticipant, - click: createParticipant - } - }, - 'create.group': createAction('bpmn:Group', 'artifact', 'bpmn-icon-group', translate('Create Group')) - }); - - return actions; -}; diff --git a/yanzhu-ui-vue3/src/package/designer/plugins/translate/customTranslate.js b/yanzhu-ui-vue3/src/package/designer/plugins/translate/customTranslate.js deleted file mode 100644 index 12cae81e..00000000 --- a/yanzhu-ui-vue3/src/package/designer/plugins/translate/customTranslate.js +++ /dev/null @@ -1,41 +0,0 @@ -// import translations from "./zh"; -// -// export default function customTranslate(template, replacements) { -// replacements = replacements || {}; -// -// // Translate -// template = translations[template] || template; -// -// // Replace -// return template.replace(/{([^}]+)}/g, function(_, key) { -// let str = replacements[key]; -// if ( -// translations[replacements[key]] !== null && -// translations[replacements[key]] !== "undefined" -// ) { -// // eslint-disable-next-line no-mixed-spaces-and-tabs -// str = translations[replacements[key]]; -// // eslint-disable-next-line no-mixed-spaces-and-tabs -// } -// return str || "{" + key + "}"; -// }); -// } - -export default function customTranslate(translations) { - return function(template, replacements) { - replacements = replacements || {}; - // Translate - template = translations[template] || template; - - // Replace - return template.replace(/{([^}]+)}/g, function(_, key) { - let str = replacements[key]; - if (translations[replacements[key]] !== null && translations[replacements[key]] !== undefined) { - // eslint-disable-next-line no-mixed-spaces-and-tabs - str = translations[replacements[key]]; - // eslint-disable-next-line no-mixed-spaces-and-tabs - } - return str || '{' + key + '}'; - }); - }; -} diff --git a/yanzhu-ui-vue3/src/package/index.js b/yanzhu-ui-vue3/src/package/index.js deleted file mode 100644 index 62532f50..00000000 --- a/yanzhu-ui-vue3/src/package/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import MyProcessDesigner from './designer'; -import MyProcessPalette from './palette'; -import MyProcessPenal from './penal'; - -const components = [MyProcessDesigner, MyProcessPenal, MyProcessPalette]; - -const install = function(Vue) { - components.forEach(component => { - Vue.component(component.name, component); - }); -}; - -if (typeof window !== 'undefined' && window.Vue) { - install(window.Vue); -} - -export default { - version: '0.0.1', - install, - ...components -}; diff --git a/yanzhu-ui-vue3/src/package/palette/ProcessPalette.vue b/yanzhu-ui-vue3/src/package/palette/ProcessPalette.vue deleted file mode 100644 index 5fa14153..00000000 --- a/yanzhu-ui-vue3/src/package/palette/ProcessPalette.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - diff --git a/yanzhu-ui-vue3/src/package/palette/index.js b/yanzhu-ui-vue3/src/package/palette/index.js deleted file mode 100644 index 1e94b22d..00000000 --- a/yanzhu-ui-vue3/src/package/palette/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import MyPropertiesPalette from './ProcessPalette.vue'; - -MyPropertiesPalette.install = function(Vue) { - Vue.component(MyPropertiesPalette.name, MyPropertiesPalette); -}; - -export default MyPropertiesPalette; diff --git a/yanzhu-ui-vue3/src/package/penal/PropertiesPanel.vue b/yanzhu-ui-vue3/src/package/penal/PropertiesPanel.vue deleted file mode 100644 index 0af0dcfb..00000000 --- a/yanzhu-ui-vue3/src/package/penal/PropertiesPanel.vue +++ /dev/null @@ -1,213 +0,0 @@ - - diff --git a/yanzhu-ui-vue3/src/package/penal/base/ElementBaseInfo.vue b/yanzhu-ui-vue3/src/package/penal/base/ElementBaseInfo.vue deleted file mode 100644 index a6d1f9a0..00000000 --- a/yanzhu-ui-vue3/src/package/penal/base/ElementBaseInfo.vue +++ /dev/null @@ -1,80 +0,0 @@ - - diff --git a/yanzhu-ui-vue3/src/package/penal/flow-condition/FlowCondition.vue b/yanzhu-ui-vue3/src/package/penal/flow-condition/FlowCondition.vue deleted file mode 100644 index d06eeb66..00000000 --- a/yanzhu-ui-vue3/src/package/penal/flow-condition/FlowCondition.vue +++ /dev/null @@ -1,142 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/form/ElementForm.vue b/yanzhu-ui-vue3/src/package/penal/form/ElementForm.vue deleted file mode 100644 index 8eec129a..00000000 --- a/yanzhu-ui-vue3/src/package/penal/form/ElementForm.vue +++ /dev/null @@ -1,372 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/index.js b/yanzhu-ui-vue3/src/package/penal/index.js deleted file mode 100644 index 873d5556..00000000 --- a/yanzhu-ui-vue3/src/package/penal/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import MyPropertiesPanel from './PropertiesPanel.vue'; - -MyPropertiesPanel.install = function(Vue) { - Vue.component(MyPropertiesPanel.name, MyPropertiesPanel); -}; - -export default MyPropertiesPanel; diff --git a/yanzhu-ui-vue3/src/package/penal/listeners/ElementListeners.vue b/yanzhu-ui-vue3/src/package/penal/listeners/ElementListeners.vue deleted file mode 100644 index f0c86ec5..00000000 --- a/yanzhu-ui-vue3/src/package/penal/listeners/ElementListeners.vue +++ /dev/null @@ -1,303 +0,0 @@ - - diff --git a/yanzhu-ui-vue3/src/package/penal/listeners/UserTaskListeners.vue b/yanzhu-ui-vue3/src/package/penal/listeners/UserTaskListeners.vue deleted file mode 100644 index 56649090..00000000 --- a/yanzhu-ui-vue3/src/package/penal/listeners/UserTaskListeners.vue +++ /dev/null @@ -1,322 +0,0 @@ - - diff --git a/yanzhu-ui-vue3/src/package/penal/listeners/template.js b/yanzhu-ui-vue3/src/package/penal/listeners/template.js deleted file mode 100644 index 2839c1f7..00000000 --- a/yanzhu-ui-vue3/src/package/penal/listeners/template.js +++ /dev/null @@ -1,178 +0,0 @@ -export const template = isTaskListener => { - return ` -
- - - - - - - - -
- 添加监听器 -
- - - - - - - - - - - - - - - - - - - - - - - - - - ${ - isTaskListener - ? "" + - "" + - "" + - "" + - "" + - "" + - '' + - '' + - "" + - "" + - '' - : '' -} - - -

-

注入字段: - 添加字段 -

- - - - - - - - - - -
- 取 消 - 保 存 -
- - - - - - - - - - - - - - - - - - - - - - -
- `; -}; diff --git a/yanzhu-ui-vue3/src/package/penal/listeners/utilSelf.js b/yanzhu-ui-vue3/src/package/penal/listeners/utilSelf.js deleted file mode 100644 index efd13ec0..00000000 --- a/yanzhu-ui-vue3/src/package/penal/listeners/utilSelf.js +++ /dev/null @@ -1,62 +0,0 @@ -// 初始化表单数据 -export function initListenerForm(listener) { - let self = { - ...listener - }; - if (listener.script) { - self = { - ...listener, - ...listener.script, - scriptType: listener.script.resource ? "externalScript" : "inlineScript" - }; - } - if (listener.event === "timeout" && listener.eventDefinitions) { - if (listener.eventDefinitions.length) { - let k = ""; - for (let key in listener.eventDefinitions[0]) { - console.log(listener.eventDefinitions, key); - if (key.indexOf("time") !== -1) { - k = key; - self.eventDefinitionType = key.replace("time", "").toLowerCase(); - } - } - console.log(k); - self.eventTimeDefinitions = listener.eventDefinitions[0][k].body; - } - } - return self; -} - -export function initListenerType(listener) { - let listenerType; - if (listener.class) listenerType = "classListener"; - if (listener.expression) listenerType = "expressionListener"; - if (listener.delegateExpression) listenerType = "delegateExpressionListener"; - if (listener.script) listenerType = "scriptListener"; - return { - ...JSON.parse(JSON.stringify(listener)), - ...(listener.script ?? {}), - listenerType: listenerType - }; -} - -export const listenerType = { - classListener: "Java 类", - expressionListener: "表达式", - delegateExpressionListener: "代理表达式", - scriptListener: "脚本" -}; - -export const eventType = { - create: "创建", - assignment: "指派", - complete: "完成", - delete: "删除", - update: "更新", - timeout: "超时" -}; - -export const fieldType = { - string: "字符串", - expression: "表达式" -}; diff --git a/yanzhu-ui-vue3/src/package/penal/multi-instance/ElementMultiInstance.vue b/yanzhu-ui-vue3/src/package/penal/multi-instance/ElementMultiInstance.vue deleted file mode 100644 index a7599f91..00000000 --- a/yanzhu-ui-vue3/src/package/penal/multi-instance/ElementMultiInstance.vue +++ /dev/null @@ -1,200 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/other/ElementOtherConfig.vue b/yanzhu-ui-vue3/src/package/penal/other/ElementOtherConfig.vue deleted file mode 100644 index 7016a06a..00000000 --- a/yanzhu-ui-vue3/src/package/penal/other/ElementOtherConfig.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/properties/ElementProperties.vue b/yanzhu-ui-vue3/src/package/penal/properties/ElementProperties.vue deleted file mode 100644 index a8715b8a..00000000 --- a/yanzhu-ui-vue3/src/package/penal/properties/ElementProperties.vue +++ /dev/null @@ -1,141 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/signal-message/SignalAndMessage.vue b/yanzhu-ui-vue3/src/package/penal/signal-message/SignalAndMessage.vue deleted file mode 100644 index 663788e2..00000000 --- a/yanzhu-ui-vue3/src/package/penal/signal-message/SignalAndMessage.vue +++ /dev/null @@ -1,110 +0,0 @@ - - diff --git a/yanzhu-ui-vue3/src/package/penal/task/ElementTask.vue b/yanzhu-ui-vue3/src/package/penal/task/ElementTask.vue deleted file mode 100644 index 379e9735..00000000 --- a/yanzhu-ui-vue3/src/package/penal/task/ElementTask.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/task/task-components/ReceiveTask.vue b/yanzhu-ui-vue3/src/package/penal/task/task-components/ReceiveTask.vue deleted file mode 100644 index 51a1208f..00000000 --- a/yanzhu-ui-vue3/src/package/penal/task/task-components/ReceiveTask.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/task/task-components/ScriptTask.vue b/yanzhu-ui-vue3/src/package/penal/task/task-components/ScriptTask.vue deleted file mode 100644 index 22392199..00000000 --- a/yanzhu-ui-vue3/src/package/penal/task/task-components/ScriptTask.vue +++ /dev/null @@ -1,85 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/penal/task/task-components/UserTask.vue b/yanzhu-ui-vue3/src/package/penal/task/task-components/UserTask.vue deleted file mode 100644 index 3b92f036..00000000 --- a/yanzhu-ui-vue3/src/package/penal/task/task-components/UserTask.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/package/theme/element-variables.scss b/yanzhu-ui-vue3/src/package/theme/element-variables.scss deleted file mode 100644 index 02f74f09..00000000 --- a/yanzhu-ui-vue3/src/package/theme/element-variables.scss +++ /dev/null @@ -1,70 +0,0 @@ -/* 改变主题色变量 */ -$--color-primary: #1890ff; -$--color-danger: #ff4d4f; - -/* 改变 icon 字体路径变量,必需 */ -// $--font-path: '~element-ui/lib/theme-chalk/fonts'; - -// @import "~element-ui/packages/theme-chalk/src/index"; - -.el-table td, -.el-table th { - color: #333; -} -.el-drawer__header { - padding: 16px 16px 8px 16px; - margin: 0; - line-height: 24px; - font-size: 18px; - color: #303133; - box-sizing: border-box; - border-bottom: 1px solid #e8e8e8; -} -div[class^="el-drawer"]:focus, -span:focus { - outline: none; -} -.el-drawer__body { - box-sizing: border-box; - padding: 16px; - width: 100%; - overflow-y: auto; -} - -.el-dialog { - margin-top: 50vh !important; - transform: translateY(-50%); - overflow: hidden; -} -.el-dialog__wrapper { - overflow: hidden; - max-height: 100vh; -} -.el-dialog__header { - padding: 16px 16px 8px 16px; - box-sizing: border-box; - border-bottom: 1px solid #e8e8e8; -} -.el-dialog__body { - padding: 16px; - max-height: 80vh; - box-sizing: border-box; - overflow-y: auto; -} -.el-dialog__footer { - padding: 16px; - box-sizing: border-box; - border-top: 1px solid #e8e8e8; -} -.el-dialog__close { - font-weight: 600; -} -.el-select { - width: 100%; -} -.el-divider:not(.el-divider--horizontal) { - margin: 0 8px ; -} -.el-divider.el-divider--horizontal { - margin: 16px 0; -} diff --git a/yanzhu-ui-vue3/src/package/theme/index.scss b/yanzhu-ui-vue3/src/package/theme/index.scss deleted file mode 100644 index ed00ca38..00000000 --- a/yanzhu-ui-vue3/src/package/theme/index.scss +++ /dev/null @@ -1,170 +0,0 @@ -@import "bpmn-js-token-simulation/assets/css/bpmn-js-token-simulation.css"; -@import "bpmn-js-token-simulation/assets/css/font-awesome.min.css"; -@import "bpmn-js-token-simulation/assets/css/normalize.css"; -@import "bpmn-js/dist/assets/diagram-js.css"; -@import "bpmn-js/dist/assets/bpmn-font/css/bpmn.css"; -@import "bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css"; -@import "./process-designer.scss"; -@import "./process-panel.scss"; - -$success-color: #4eb819; -$primary-color: #409EFF; -$warning-color: #E6A23C; -$danger-color: #F56C6C; -$cancel-color: #909399; - -.process-viewer { - position: relative; - border: 1px solid #EFEFEF; - background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') repeat!important; - - .success-arrow { - fill: $success-color; - stroke: $success-color; - } - - .success-conditional { - fill: white; - stroke: $success-color; - } - - .fail-arrow { - fill: $warning-color; - stroke: $warning-color; - } - - .fail-conditional { - fill: white; - stroke: $warning-color; - } - - .success.djs-connection { - .djs-visual path { - stroke: $success-color!important; - marker-end: url(#sequenceflow-end-white-success)!important; - } - } - - .success.djs-connection.condition-expression { - .djs-visual path { - marker-start: url(#conditional-flow-marker-white-success)!important; - } - } - - .success.djs-shape { - .djs-visual rect { - stroke: $success-color!important; - fill: $success-color!important; - fill-opacity: 0.15!important; - } - - .djs-visual polygon { - stroke: $success-color!important; - } - - .djs-visual path:nth-child(2) { - stroke: $success-color!important; - fill: $success-color!important; - } - - .djs-visual circle { - stroke: $success-color!important; - fill: $success-color!important; - fill-opacity: 0.15!important; - } - } - - .primary.djs-shape { - .djs-visual rect { - stroke: $primary-color!important; - fill: $primary-color!important; - fill-opacity: 0.15!important; - } - - .djs-visual polygon { - stroke: $primary-color!important; - } - - .djs-visual circle { - stroke: $primary-color!important; - fill: $primary-color!important; - fill-opacity: 0.15!important; - } - } - - .warning.djs-connection { - .djs-visual path { - stroke: $warning-color!important; - marker-end: url(#sequenceflow-end-white-fail)!important; - } - } - - .warning.djs-connection.condition-expression { - .djs-visual path { - marker-start: url(#conditional-flow-marker-white-fail)!important; - } - } - - .warning.djs-shape { - .djs-visual rect { - stroke: $warning-color!important; - fill: $warning-color!important; - fill-opacity: 0.15!important; - } - - .djs-visual polygon { - stroke: $warning-color!important; - } - - .djs-visual path:nth-child(2) { - stroke: $warning-color!important; - fill: $warning-color!important; - } - - .djs-visual circle { - stroke: $warning-color!important; - fill: $warning-color!important; - fill-opacity: 0.15!important; - } - } - - .danger.djs-shape { - .djs-visual rect { - stroke: $danger-color!important; - fill: $danger-color!important; - fill-opacity: 0.15!important; - } - - .djs-visual polygon { - stroke: $danger-color!important; - } - - .djs-visual circle { - stroke: $danger-color!important; - fill: $danger-color!important; - fill-opacity: 0.15!important; - } - } - - .cancel.djs-shape { - .djs-visual rect { - stroke: $cancel-color!important; - fill: $cancel-color!important; - fill-opacity: 0.15!important; - } - - .djs-visual polygon { - stroke: $cancel-color!important; - } - - .djs-visual circle { - stroke: $cancel-color!important; - fill: $cancel-color!important; - fill-opacity: 0.15!important; - } - } -} - -.process-viewer .djs-tooltip-container, .process-viewer .djs-overlay-container, .process-viewer .djs-palette { - display: none; -} diff --git a/yanzhu-ui-vue3/src/package/theme/process-designer.scss b/yanzhu-ui-vue3/src/package/theme/process-designer.scss deleted file mode 100644 index 5d8a7b8d..00000000 --- a/yanzhu-ui-vue3/src/package/theme/process-designer.scss +++ /dev/null @@ -1,157 +0,0 @@ -@import "bpmn-js-token-simulation/assets/css/bpmn-js-token-simulation.css"; -@import "bpmn-js-token-simulation/assets/css/font-awesome.min.css"; -@import "bpmn-js-token-simulation/assets/css/normalize.css"; -@import "diagram-js-minimap/assets/diagram-js-minimap.css"; - -// 边框被 token-simulation 样式覆盖了 -.djs-palette { - background: var(--palette-background-color); - border: solid 1px var(--palette-border-color) !important; - border-radius: 2px; -} - -.my-process-designer { - display: flex; - flex-direction: column; - width: 100%; - height: 100%; - box-sizing: border-box; - .my-process-designer__header { - width: 100%; - min-height: 36px; - .el-button { - text-align: center; - } - .el-button-group { - margin: 4px; - } - .el-tooltip__popper { - .el-button { - width: 100%; - text-align: left; - padding-left: 8px; - padding-right: 8px; - } - .el-button:hover { - background: rgba(64, 158, 255, 0.8); - color: #ffffff; - } - } - .align { - position: relative; - i { - &:after { - content: "|"; - position: absolute; - transform: rotate(90deg) translate(200%, -10%); - } - } - } - .align.align-left i { - transform: rotate(90deg); - } - .align.align-right i { - transform: rotate(-90deg); - } - .align.align-top i { - transform: rotate(180deg); - } - .align.align-bottom i { - transform: rotate(0deg); - } - .align.align-center i { - transform: rotate(90deg); - &:after { - transform: rotate(90deg) translate(0, -10%); - } - } - .align.align-middle i { - transform: rotate(0deg); - &:after { - transform: rotate(90deg) translate(0, -10%); - } - } - } - .my-process-designer__container { - display: inline-flex; - width: 100%; - flex: 1; - .my-process-designer__canvas { - flex: 1; - height: 100%; - position: relative; - background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+") - repeat !important; - div.toggle-mode { - display: none; - } - } - .my-process-designer__property-panel { - height: 100%; - overflow: scroll; - overflow-y: auto; - z-index: 10; - * { - box-sizing: border-box; - } - } - svg { - width: 100%; - height: 100%; - min-height: 100%; - overflow: hidden; - } - } -} - -//侧边栏配置 -.djs-palette.open { - .djs-palette-entries { - div[class^="bpmn-icon-"]:before, - div[class*="bpmn-icon-"]:before { - line-height: unset; - } - div.entry { - position: relative; - } - div.entry:hover { - &::after { - width: max-content; - content: attr(title); - vertical-align: text-bottom; - position: absolute; - right: -10px; - top: 0; - bottom: 0; - overflow: hidden; - transform: translateX(100%); - font-size: 0.5em; - display: inline-block; - text-decoration: inherit; - font-variant: normal; - text-transform: none; - background: #fafafa; - box-shadow: 0 0 6px #eeeeee; - border: 1px solid #cccccc; - box-sizing: border-box; - padding: 0 16px; - border-radius: 4px; - z-index: 100; - } - } - } -} -pre { - margin: 0; - height: 100%; - overflow: hidden; - max-height: calc(80vh - 32px); - overflow-y: auto; -} -.hljs { - word-break: break-word; - white-space: pre-wrap; -} -.hljs * { - font-family: Consolas, Monaco, monospace; -} diff --git a/yanzhu-ui-vue3/src/package/utils.js b/yanzhu-ui-vue3/src/package/utils.js deleted file mode 100644 index bd61ef69..00000000 --- a/yanzhu-ui-vue3/src/package/utils.js +++ /dev/null @@ -1,71 +0,0 @@ -// 创建监听器实例 -export function createListenerObject(options, isTask, prefix) { - const listenerObj = Object.create(null); - listenerObj.event = options.event; - isTask && (listenerObj.id = options.id); // 任务监听器特有的 id 字段 - switch (options.listenerType) { - case 'scriptListener': - listenerObj.script = createScriptObject(options, prefix); - break; - case 'expressionListener': - listenerObj.expression = options.expression; - break; - case 'delegateExpressionListener': - listenerObj.delegateExpression = options.delegateExpression; - break; - default: - listenerObj.class = options.class; - } - // 注入字段 - if (options.fields) { - listenerObj.fields = options.fields.map(field => { - return createFieldObject(field, prefix); - }); - } - // 任务监听器的 定时器 设置 - if (isTask && options.event === 'timeout' && !!options.eventDefinitionType) { - const timeDefinition = window.bpmnInstances.moddle.create('bpmn:FormalExpression', { - body: options.eventTimeDefinitions - }); - const TimerEventDefinition = window.bpmnInstances.moddle.create('bpmn:TimerEventDefinition', { - id: `TimerEventDefinition_${uuid(8)}`, - [`time${options.eventDefinitionType.replace(/^\S/, s => s.toUpperCase())}`]: timeDefinition - }); - listenerObj.eventDefinitions = [TimerEventDefinition]; - } - return window.bpmnInstances.moddle.create(`${prefix}:${isTask ? 'TaskListener' : 'ExecutionListener'}`, listenerObj); -} - -// 创建 监听器的注入字段 实例 -export function createFieldObject(option, prefix) { - const { name, fieldType, string, expression } = option; - const fieldConfig = fieldType === 'string' ? { name, string } : { name, expression }; - return window.bpmnInstances.moddle.create(`${prefix}:Field`, fieldConfig); -} - -// 创建脚本实例 -export function createScriptObject(options, prefix) { - const { scriptType, scriptFormat, value, resource } = options; - const scriptConfig = scriptType === 'inlineScript' ? { scriptFormat, value } : { scriptFormat, resource }; - return window.bpmnInstances.moddle.create(`${prefix}:Script`, scriptConfig); -} - -// 更新元素扩展属性 -export function updateElementExtensions(element, extensionList) { - const extensions = window.bpmnInstances.moddle.create('bpmn:ExtensionElements', { - values: extensionList - }); - window.bpmnInstances.modeling.updateProperties(element, { - extensionElements: extensions - }); -} - -// 创建一个id -export function uuid(length = 8, chars) { - let result = ''; - const charsString = chars || '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - for (let i = length; i > 0; --i) { - result += charsString[Math.floor(Math.random() * charsString.length)]; - } - return result; -} diff --git a/yanzhu-ui-vue3/src/plugins/tab.js b/yanzhu-ui-vue3/src/plugins/tab.js index 59e7006b..71d99e32 100644 --- a/yanzhu-ui-vue3/src/plugins/tab.js +++ b/yanzhu-ui-vue3/src/plugins/tab.js @@ -32,8 +32,12 @@ export default { // 关闭指定tab页签 closePage(obj) { if (obj === undefined) { - return useTagsViewStore().delView(router.currentRoute.value).then(({ lastPath }) => { - return router.push(lastPath || '/index'); + return useTagsViewStore().delView(router.currentRoute.value).then(({ visitedViews }) => { + const latestView = visitedViews.slice(-1)[0] + if (latestView) { + return router.push(latestView.fullPath) + } + return router.push('/'); }); } return useTagsViewStore().delView(obj); diff --git a/yanzhu-ui-vue3/src/router/index.js b/yanzhu-ui-vue3/src/router/index.js index df4a0a82..6e31c730 100644 --- a/yanzhu-ui-vue3/src/router/index.js +++ b/yanzhu-ui-vue3/src/router/index.js @@ -83,7 +83,85 @@ export const constantRoutes = [ meta: { title: '个人中心', icon: 'user' } } ] - } + }, + { + path: '/flowable', + component: Layout, + hidden: true, + children: [ + { + path: 'definition/model', + component: () => import('@/views/flowable/definition/model'), + name: 'FlowModel', + meta: { title: '流程设计', icon: ''} + } + ] + }, + { + path: '/flowable', + component: Layout, + hidden: true, + children: [ + { + path: 'task/finished/detail/index', + component: () => import('@/views/flowable/task/finished/detail/index'), + name: 'FinishedDetail', + meta: { title: '已办任务', icon: '' } + } + ] + }, + { + path: '/flowable', + component: Layout, + hidden: true, + children: [ + { + path: 'task/myProcess/detail/index', + component: () => import('@/views/flowable/task/myProcess/detail/index'), + name: 'ProcessDetail', + meta: { title: '已发任务', icon: '' } + } + ] + }, + { + path: '/flowable', + component: Layout, + hidden: true, + children: [ + { + path: 'task/myProcess/send/index', + component: () => import('@/views/flowable/task/myProcess/send/index'), + name: 'ProcessSend', + meta: { title: '流程发起', icon: '' } + } + ] + }, + { + path: '/flowable', + component: Layout, + hidden: true, + children: [ + { + path: 'task/todo/detail/index', + component: () => import('@/views/flowable/task/todo/detail/index'), + name: 'TodoDetail', + meta: { title: '流程处理', icon: '' } + } + ] + }, + { + path: '/flowable', + component: Layout, + hidden: true, + children: [ + { + path: 'task/flowForm/index', + component: () => import('@/views/flowable/task/flowForm/index'), + name: 'FlowForm', + meta: { title: '流程表单', icon: '' } + } + ] + }, ] // 动态路由,基于用户权限动态去加载 diff --git a/yanzhu-ui-vue3/src/store/modules/modeler.js b/yanzhu-ui-vue3/src/store/modules/modeler.js new file mode 100644 index 00000000..85938236 --- /dev/null +++ b/yanzhu-ui-vue3/src/store/modules/modeler.js @@ -0,0 +1,42 @@ +const useModelerStore = defineStore('modelerStore', { + state: () => ({ + bpmnElement: undefined, + activeElementId: undefined, + modeler: null, + moddle: null, + modeling: null, + canvas: null, + elementRegistry: null, + userList: [], + roleList: [], + expList: [], + }), + getters: { + getBpmnElement: (state) => state.bpmnElement, + getActiveId: (state) => state.activeElementId, + getModeler: (state) => state.modeler, + getModdle: (state) => state.moddle, + getModeling: (state) => state.modeling, + getCanvas: (state) => state.canvas, + getElRegistry: (state) => state.elementRegistry, + getUserList: (state) => state.userList, + getRoleList: (state) => state.roleList, + getExpList: (state) => state.expList + }, + actions: { + setDataList(key, data) { + this[key] = data + }, + setModeler(modeler) { + this.modeler = modeler + }, + setElement(element, id) { + this.bpmnElement = element + this.activeElementId = id + }, + setModules(key, module) { + this[key] = module + }, + }, +}) +export default useModelerStore diff --git a/yanzhu-ui-vue3/src/utils/StrUtil.js b/yanzhu-ui-vue3/src/utils/StrUtil.js new file mode 100644 index 00000000..ec041b90 --- /dev/null +++ b/yanzhu-ui-vue3/src/utils/StrUtil.js @@ -0,0 +1,553 @@ +/** + * 字符串工具类 + **/ +export const StrUtil = { + /** + * 字符串是否为空白 空白的定义如下:
+ * 1、为null
+ * 2、为不可见字符(如空格)
+ * 3、""
+ * + * @param str 被检测的字符串 + * @return boolean 是否为空 + */ + isBlank: function (str) { + return str === undefined || str == null || this.trim(str) === ""; + + }, + /** + * 字符串是否为非空白 空白的定义如下:
+ * 1、不为null
+ * 2、不为不可见字符(如空格)
+ * 3、不为""
+ * + * @param str 被检测的字符串 + * @return boolean 是否为非空 + */ + isNotBlank: function (str) { + // == 代表相同,=== 代表严格相同 + return false === StrUtil.isBlank(str); + }, + /** + * 字符串是否为空,空的定义如下:
+ * 1、为null
+ * 2、为""
+ * + * @param str 被检测的字符串 + * @return boolean 是否为空 + */ + isEmpty: function (str) { + return str == null || str === ""; + + }, + /** + * 字符串是否为非空白 空白的定义如下:
+ * 1、不为null
+ * 2、不为""
+ * + * @param str 被检测的字符串 + * @return boolean 是否为非空 + */ + isNotEmpty: function (str) { + return !StrUtil.isEmpty(str); + }, + /** + * 空对象转字符串 + * + * @param str 被检查的字符串 + * @return string 原字符串或者空串 + */ + nullToStr: function (str) { + if (StrUtil.isEmpty(str)) { + return ""; + } + return str; + }, + /** + * 空格截取 + * + * @param str 截取的字符串 + * @return string + */ + trim: function (str) { + if (str == null) { + return ""; + } + return str.toString().replace(/(^\s*)|(\s*$)|\r|\n/g, ""); + }, + /** + * 比较两个字符串(大小写敏感) + * + * @param str 字符串 + * @param that 比较的字符串 + * @return boolean + */ + equals: function (str, that) { + return str === that; + }, + /** + * 比较两个字符串(大小写不敏感) + * + * @param str 字符串 + * @param that 比较的字符串 + * @return boolean + */ + equalsIgnoreCase: function (str, that) { + return String(str).toUpperCase() === String(that).toUpperCase(); + }, + /** + * 将字符串按指定字符分割 + * + * @param str 字符串 + * @param sep 比较的字符串 + * @param maxLen 最大长度 + * @return string[] 分割后的数组 + */ + split: function (str, sep, maxLen) { + if (StrUtil.isEmpty(str)) { + return null; + } + const value = String(str).split(sep); + return maxLen ? value.slice(0, maxLen - 1) : value; + }, + /** + * 字符串格式化(%s ) + * + * @param str 字符串 + * @return 格式化后的字符串 + */ + sprintf: function (str) { + let args = arguments, flag = true, i = 1; + str = str.replace(/%s/g, function () { + const arg = args[i++]; + if (typeof arg === 'undefined') { + flag = false; + return ''; + } + return arg; + }); + return flag ? str : ''; + }, + /** + * 判断字符串是否是以start开头 + * + * @param str 字符串 + * @param start 开始的字符串 + * @return boolean + */ + startWith: function (str, start) { + const reg = new RegExp("^" + start); + return reg.test(str); + }, + /** + * 判断字符串是否是以end结尾 + * + * @param str 字符串 + * @param end 结尾的字符串 + * @return boolean + */ + endWith: function (str, end) { + const reg = new RegExp(end + "$"); + return reg.test(str); + }, + containsWhitespace: function (input) { + return this.contains(input, ' '); + }, + //生成指定个数的字符 + repeat: function (ch, repeatTimes) { + let result = ""; + for (let i = 0; i < repeatTimes; i++) { + result += ch; + } + return result; + }, + deleteWhitespace: function (input) { + return input.replace(/\s+/g, ''); + }, + rightPad: function (input, size, padStr) { + return input + this.repeat(padStr, size); + }, + leftPad: function (input, size, padStr) { + return this.repeat(padStr, size) + input; + }, + //首小写字母转大写 + capitalize: function (input) { + let strLen = 0; + if (input == null || (strLen = input.length) === 0) { + return input; + } + return input.replace(/^[a-z]/, function (matchStr) { + return matchStr.toLocaleUpperCase(); + }); + }, + //首大写字母转小写 + uncapitalize: function (input) { + let strLen = 0; + if (input == null || (strLen = input.length) === 0) { + return input; + } + return input.replace(/^[A-Z]/, function (matchStr) { + return matchStr.toLocaleLowerCase(); + }); + }, + //大写转小写,小写转大写 + swapCase: function (input) { + return input.replace(/[a-z]/ig, function (matchStr) { + if (matchStr >= 'A' && matchStr <= 'Z') { + return matchStr.toLocaleLowerCase(); + } else if (matchStr >= 'a' && matchStr <= 'z') { + return matchStr.toLocaleUpperCase(); + } + }); + }, + //统计含有的子字符串的个数 + countMatches: function (input, sub) { + if (this.isEmpty(input) || this.isEmpty(sub)) { + return 0; + } + let count = 0; + let index = 0; + while ((index = input.indexOf(sub, index)) !== -1) { + index += sub.length; + count++; + } + return count; + }, + //只包含字母 + isAlpha: function (input) { + return /^[a-z]+$/i.test(input); + }, + //只包含字母、空格 + isAlphaSpace: function (input) { + return /^[a-z\s]*$/i.test(input); + }, + //只包含字母、数字 + isAlphanumeric: function (input) { + return /^[a-z0-9]+$/i.test(input); + }, + //只包含字母、数字和空格 + isAlphanumericSpace: function (input) { + return /^[a-z0-9\s]*$/i.test(input); + }, + //数字 + isNumeric: function (input) { + return /^(?:[1-9]\d*|0)(?:\.\d+)?$/.test(input); + }, + //小数 + isDecimal: function (input) { + return /^[-+]?(?:0|[1-9]\d*)\.\d+$/.test(input); + }, + //负小数 + isNegativeDecimal: function (input) { + return /^\-?(?:0|[1-9]\d*)\.\d+$/.test(input); + }, + //正小数 + isPositiveDecimal: function (input) { + return /^\+?(?:0|[1-9]\d*)\.\d+$/.test(input); + }, + //整数 + isInteger: function (input) { + return /^[-+]?(?:0|[1-9]\d*)$/.test(input); + }, + //正整数 + isPositiveInteger: function (input) { + return /^\+?(?:0|[1-9]\d*)$/.test(input); + }, + //负整数 + isNegativeInteger: function (input) { + return /^\-?(?:0|[1-9]\d*)$/.test(input); + }, + //只包含数字和空格 + isNumericSpace: function (input) { + return /^[\d\s]*$/.test(input); + }, + isWhitespace: function (input) { + return /^\s*$/.test(input); + }, + isAllLowerCase: function (input) { + return /^[a-z]+$/.test(input); + }, + isAllUpperCase: function (input) { + return /^[A-Z]+$/.test(input); + }, + defaultString: function (input, defaultStr) { + return input == null ? defaultStr : input; + }, + defaultIfBlank: function (input, defaultStr) { + return this.isBlank(input) ? defaultStr : input; + }, + defaultIfEmpty: function (input, defaultStr) { + return this.isEmpty(input) ? defaultStr : input; + }, + //字符串反转 + reverse: function (input) { + if (this.isBlank(input)) { + input; + } + return input.split("").reverse().join(""); + }, + //删掉特殊字符(英文状态下) + removeSpecialCharacter: function (input) { + return input.replace(/[!-/:-@\[-`{-~]/g, ""); + }, + //只包含特殊字符、数字和字母(不包括空格,若想包括空格,改为[ -~]) + isSpecialCharacterAlphanumeric: function (input) { + return /^[!-~]+$/.test(input); + }, + /** + * 校验时排除某些字符串,即不能包含某些字符串 + * @param {Object} conditions:里面有多个属性,如下: + * + * @param {String} matcherFlag 匹配标识 + * 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文; + * 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文; + * 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文; + * 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文; + * 100:所有字符; + * @param {Array} excludeStrArr 排除的字符串,数组格式 + * @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5 + * @param {Boolean} ignoreCase 是否忽略大小写 + * conditions={matcherFlag:"0",excludeStrArr:[],length:"",ignoreCase:true} + */ + isPatternMustExcludeSomeStr: function (input, conditions) { + //参数 + const matcherFlag = conditions.matcherFlag; + const excludeStrArr = conditions.excludeStrArr; + const length = conditions.length; + const ignoreCase = conditions.ignoreCase; + //拼正则 + const size = excludeStrArr.length; + let regex = (size === 0) ? "^" : "^(?!.*(?:{0}))"; + let subPattern = ""; + for (let i = 0; i < size; i++) { + excludeStrArr[i] = Bee.StringUtils.escapeMetacharacterOfStr(excludeStrArr[i]); + subPattern += excludeStrArr[i]; + if (i !== size - 1) { + subPattern += "|"; + } + } + regex = this.format(regex, [subPattern]); + switch (matcherFlag) { + case '0': + regex += "\\d"; + break; + case '1': + regex += "[a-zA-Z]"; + break; + case '2': + regex += "[a-z]"; + break; + case '3': + regex += "[A-Z]"; + break; + case '4': + regex += "[!-/:-@\[-`{-~]"; + break; + case '5': + regex += "[\u4E00-\u9FA5]"; + break; + case '6': + regex += "[a-zA-Z0-9]"; + break; + case '7': + regex += "[a-z0-9]"; + break; + case '8': + regex += "[A-Z0-9]"; + break; + case '9': + regex += "[!-~]"; + break; + case '10': + regex += "[0-9\u4E00-\u9FA5]"; + break; + case '11': + regex += "[a-z!-/:-@\[-`{-~]"; + break; + case '12': + regex += "[A-Z!-/:-@\[-`{-~]"; + break; + case '13': + regex += "[a-zA-Z!-/:-@\[-`{-~]"; + break; + case '14': + regex += "[a-z\u4E00-\u9FA5]"; + break; + case '15': + regex += "[A-Z\u4E00-\u9FA5]"; + break; + case '16': + regex += "[a-zA-Z\u4E00-\u9FA5]"; + break; + case '17': + regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '18': + regex += "[\u4E00-\u9FA5!-~]"; + break; + case '19': + regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '20': + regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '100': + regex += "[\s\S]"; + break; + default: + alert(matcherFlag + ":This type is not supported!"); + } + regex += this.isNotBlank(length) ? "{" + length + "}" : "+"; + regex += "$"; + const pattern = new RegExp(regex, ignoreCase ? "i" : ""); + return pattern.test(input); + }, + /** + * @param {String} message + * @param {Array} arr + * 消息格式化 + */ + format: function (message, arr) { + return message.replace(/{(\d+)}/g, function (matchStr, group1) { + return arr[group1]; + }); + }, + /** + * 把连续出现多次的字母字符串进行压缩。如输入:aaabbbbcccccd 输出:3a4b5cd + * @param {String} input + * @param {Boolean} ignoreCase : true or false + */ + compressRepeatedStr: function (input, ignoreCase) { + const pattern = new RegExp("([a-z])\\1+", ignoreCase ? "ig" : "g"); + return input.replace(pattern, function (matchStr, group1) { + return matchStr.length + group1; + }); + }, + /** + * 校验必须同时包含某些字符串 + * @param {String} input + * @param {Object} conditions:里面有多个属性,如下: + * + * @param {String} matcherFlag 匹配标识 + * 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文; + * 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文; + * 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文; + * 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文; + * 100:所有字符; + * @param {Array} excludeStrArr 排除的字符串,数组格式 + * @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5 + * @param {Boolean} ignoreCase 是否忽略大小写 + * conditions={matcherFlag:"0",containStrArr:[],length:"",ignoreCase:true} + * + */ + isPatternMustContainSomeStr: function (input, conditions) { + //参数 + const matcherFlag = conditions.matcherFlag; + const containStrArr = conditions.containStrArr; + const length = conditions.length; + const ignoreCase = conditions.ignoreCase; + //创建正则 + const size = containStrArr.length; + let regex = "^"; + let subPattern = ""; + for (let i = 0; i < size; i++) { + containStrArr[i] = Bee.StringUtils.escapeMetacharacterOfStr(containStrArr[i]); + subPattern += "(?=.*" + containStrArr[i] + ")"; + } + regex += subPattern; + switch (matcherFlag) { + case '0': + regex += "\\d"; + break; + case '1': + regex += "[a-zA-Z]"; + break; + case '2': + regex += "[a-z]"; + break; + case '3': + regex += "[A-Z]"; + break; + case '4': + regex += "[!-/:-@\[-`{-~]"; + break; + case '5': + regex += "[\u4E00-\u9FA5]"; + break; + case '6': + regex += "[a-zA-Z0-9]"; + break; + case '7': + regex += "[a-z0-9]"; + break; + case '8': + regex += "[A-Z0-9]"; + break; + case '9': + regex += "[!-~]"; + break; + case '10': + regex += "[0-9\u4E00-\u9FA5]"; + break; + case '11': + regex += "[a-z!-/:-@\[-`{-~]"; + break; + case '12': + regex += "[A-Z!-/:-@\[-`{-~]"; + break; + case '13': + regex += "[a-zA-Z!-/:-@\[-`{-~]"; + break; + case '14': + regex += "[a-z\u4E00-\u9FA5]"; + break; + case '15': + regex += "[A-Z\u4E00-\u9FA5]"; + break; + case '16': + regex += "[a-zA-Z\u4E00-\u9FA5]"; + break; + case '17': + regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '18': + regex += "[\u4E00-\u9FA5!-~]"; + break; + case '19': + regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '20': + regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '100': + regex += "[\s\S]"; + break; + default: + alert(matcherFlag + ":This type is not supported!"); + } + regex += this.isNotBlank(length) ? "{" + length + "}" : "+"; + regex += "$"; + const pattern = new RegExp(regex, ignoreCase ? "i" : ""); + return pattern.test(input); + }, + //中文校验 + isChinese: function (input) { + return /^[\u4E00-\u9FA5]+$/.test(input); + }, + //去掉中文字符 + removeChinese: function (input) { + return input.replace(/[\u4E00-\u9FA5]+/gm, ""); + }, + //转义元字符 + escapeMetacharacter: function (input) { + const metacharacter = "^$()*+.[]|\\-?{}|"; + if (metacharacter.indexOf(input) >= 0) { + input = "\\" + input; + } + return input; + }, + //转义字符串中的元字符 + escapeMetacharacterOfStr: function (input) { + return input.replace(/[\^\$\*\+\.\|\\\-\?\{\}\|]/gm, "\\$&"); + } +}; diff --git a/yanzhu-ui-vue3/src/utils/min-dash.js b/yanzhu-ui-vue3/src/utils/min-dash.js deleted file mode 100644 index ab8b4e06..00000000 --- a/yanzhu-ui-vue3/src/utils/min-dash.js +++ /dev/null @@ -1,694 +0,0 @@ -/* eslint-disable no-func-assign */ -/** - * Flatten array, one level deep. - * - * @param {Array} arr - * - * @return {Array} - */ -function flatten(arr) { - return Array.prototype.concat.apply([], arr); -} - -var nativeToString = Object.prototype.toString; -var nativeHasOwnProperty = Object.prototype.hasOwnProperty; -function isUndefined(obj) { - return obj === undefined; -} -function isDefined(obj) { - return obj !== undefined; -} -function isNil(obj) { - return obj == null; -} -function isArray(obj) { - return nativeToString.call(obj) === '[object Array]'; -} -function isObject(obj) { - return nativeToString.call(obj) === '[object Object]'; -} -function isNumber(obj) { - return nativeToString.call(obj) === '[object Number]'; -} -function isFunction(obj) { - var tag = nativeToString.call(obj); - return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object AsyncGeneratorFunction]' || tag === '[object Proxy]'; -} -function isString(obj) { - return nativeToString.call(obj) === '[object String]'; -} -/** - * Ensure collection is an array. - * - * @param {Object} obj - */ - -function ensureArray(obj) { - if (isArray(obj)) { - return; - } - - throw new Error('must supply array'); -} -/** - * Return true, if target owns a property with the given key. - * - * @param {Object} target - * @param {String} key - * - * @return {Boolean} - */ - -function has(target, key) { - return nativeHasOwnProperty.call(target, key); -} - -/** - * Find element in collection. - * - * @param {Array|Object} collection - * @param {Function|Object} matcher - * - * @return {Object} - */ - -function find(collection, matcher) { - matcher = toMatcher(matcher); - var match; - forEach(collection, function(val, key) { - if (matcher(val, key)) { - match = val; - return false; - } - }); - return match; -} -/** - * Find element index in collection. - * - * @param {Array|Object} collection - * @param {Function} matcher - * - * @return {Object} - */ - -function findIndex(collection, matcher) { - matcher = toMatcher(matcher); - var idx = isArray(collection) ? -1 : undefined; - forEach(collection, function(val, key) { - if (matcher(val, key)) { - idx = key; - return false; - } - }); - return idx; -} -/** - * Find element in collection. - * - * @param {Array|Object} collection - * @param {Function} matcher - * - * @return {Array} result - */ - -function filter(collection, matcher) { - var result = []; - forEach(collection, function(val, key) { - if (matcher(val, key)) { - result.push(val); - } - }); - return result; -} -/** - * Iterate over collection; returning something - * (non-undefined) will stop iteration. - * - * @param {Array|Object} collection - * @param {Function} iterator - * - * @return {Object} return result that stopped the iteration - */ - -function forEach(collection, iterator) { - var val, result; - - if (isUndefined(collection)) { - return; - } - - var convertKey = isArray(collection) ? toNum : identity; - - for (var key in collection) { - if (has(collection, key)) { - val = collection[key]; - result = iterator(val, convertKey(key)); - - if (result === false) { - return val; - } - } - } -} -/** - * Return collection without element. - * - * @param {Array} arr - * @param {Function} matcher - * - * @return {Array} - */ - -function without(arr, matcher) { - if (isUndefined(arr)) { - return []; - } - - ensureArray(arr); - matcher = toMatcher(matcher); - return arr.filter(function(el, idx) { - return !matcher(el, idx); - }); -} -/** - * Reduce collection, returning a single result. - * - * @param {Object|Array} collection - * @param {Function} iterator - * @param {Any} result - * - * @return {Any} result returned from last iterator - */ - -function reduce(collection, iterator, result) { - forEach(collection, function(value, idx) { - result = iterator(result, value, idx); - }); - return result; -} -/** - * Return true if every element in the collection - * matches the criteria. - * - * @param {Object|Array} collection - * @param {Function} matcher - * - * @return {Boolean} - */ - -function every(collection, matcher) { - return !!reduce(collection, function(matches, val, key) { - return matches && matcher(val, key); - }, true); -} -/** - * Return true if some elements in the collection - * match the criteria. - * - * @param {Object|Array} collection - * @param {Function} matcher - * - * @return {Boolean} - */ - -function some(collection, matcher) { - return !!find(collection, matcher); -} -/** - * Transform a collection into another collection - * by piping each member through the given fn. - * - * @param {Object|Array} collection - * @param {Function} fn - * - * @return {Array} transformed collection - */ - -function map(collection, fn) { - var result = []; - forEach(collection, function(val, key) { - result.push(fn(val, key)); - }); - return result; -} -/** - * Get the collections keys. - * - * @param {Object|Array} collection - * - * @return {Array} - */ - -function keys(collection) { - return collection && Object.keys(collection) || []; -} -/** - * Shorthand for `keys(o).length`. - * - * @param {Object|Array} collection - * - * @return {Number} - */ - -function size(collection) { - return keys(collection).length; -} -/** - * Get the values in the collection. - * - * @param {Object|Array} collection - * - * @return {Array} - */ - -function values(collection) { - return map(collection, function(val) { - return val; - }); -} -/** - * Group collection members by attribute. - * - * @param {Object|Array} collection - * @param {Function} extractor - * - * @return {Object} map with { attrValue => [ a, b, c ] } - */ - -function groupBy(collection, extractor) { - var grouped = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - extractor = toExtractor(extractor); - forEach(collection, function(val) { - var discriminator = extractor(val) || '_'; - var group = grouped[discriminator]; - - if (!group) { - group = grouped[discriminator] = []; - } - - group.push(val); - }); - return grouped; -} -function uniqueBy(extractor) { - extractor = toExtractor(extractor); - var grouped = {}; - - for (var _len = arguments.length, collections = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - collections[_key - 1] = arguments[_key]; - } - - forEach(collections, function(c) { - return groupBy(c, extractor, grouped); - }); - var result = map(grouped, function(val, key) { - return val[0]; - }); - return result; -} -var unionBy = uniqueBy; -/** - * Sort collection by criteria. - * - * @param {Object|Array} collection - * @param {String|Function} extractor - * - * @return {Array} - */ - -function sortBy(collection, extractor) { - extractor = toExtractor(extractor); - var sorted = []; - forEach(collection, function(value, key) { - var disc = extractor(value, key); - var entry = { - d: disc, - v: value - }; - - for (var idx = 0; idx < sorted.length; idx++) { - var d = sorted[idx].d; - - if (disc < d) { - sorted.splice(idx, 0, entry); - return; - } - } // not inserted, append (!) - - sorted.push(entry); - }); - return map(sorted, function(e) { - return e.v; - }); -} -/** - * Create an object pattern matcher. - * - * @example - * - * const matcher = matchPattern({ id: 1 }); - * - * let element = find(elements, matcher); - * - * @param {Object} pattern - * - * @return {Function} matcherFn - */ - -function matchPattern(pattern) { - return function(el) { - return every(pattern, function(val, key) { - return el[key] === val; - }); - }; -} - -function toExtractor(extractor) { - return isFunction(extractor) ? extractor : function(e) { - return e[extractor]; - }; -} - -function toMatcher(matcher) { - return isFunction(matcher) ? matcher : function(e) { - return e === matcher; - }; -} - -function identity(arg) { - return arg; -} - -function toNum(arg) { - return Number(arg); -} - -/** - * Debounce fn, calling it only once if the given time - * elapsed between calls. - * - * Lodash-style the function exposes methods to `#clear` - * and `#flush` to control internal behavior. - * - * @param {Function} fn - * @param {Number} timeout - * - * @return {Function} debounced function - */ -function debounce(fn, timeout) { - var timer; - var lastArgs; - var lastThis; - var lastNow; - - function fire(force) { - var now = Date.now(); - var scheduledDiff = force ? 0 : lastNow + timeout - now; - - if (scheduledDiff > 0) { - return schedule(scheduledDiff); - } - - fn.apply(lastThis, lastArgs); - clear(); - } - - function schedule(timeout) { - timer = setTimeout(fire, timeout); - } - - function clear() { - if (timer) { - clearTimeout(timer); - } - - timer = lastNow = lastArgs = lastThis = undefined; - } - - function flush() { - if (timer) { - fire(true); - } - - clear(); - } - - function callback() { - lastNow = Date.now(); - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - lastArgs = args; - lastThis = this; // ensure an execution is scheduled - - if (!timer) { - schedule(timeout); - } - } - - callback.flush = flush; - callback.cancel = clear; - return callback; -} -/** - * Throttle fn, calling at most once - * in the given interval. - * - * @param {Function} fn - * @param {Number} interval - * - * @return {Function} throttled function - */ - -function throttle(fn, interval) { - var throttling = false; - return function() { - if (throttling) { - return; - } - - fn.apply(void 0, arguments); - throttling = true; - setTimeout(function() { - throttling = false; - }, interval); - }; -} -/** - * Bind function against target . - * - * @param {Function} fn - * @param {Object} target - * - * @return {Function} bound function - */ - -function bind(fn, target) { - return fn.bind(target); -} - -function _typeof(obj) { - '@babel/helpers - typeof'; - - if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') { - _typeof = function(obj) { - return typeof obj; - }; - } else { - _typeof = function(obj) { - return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj; - }; - } - - return _typeof(obj); -} - -function _extends() { - _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -/** - * Convenience wrapper for `Object.assign`. - * - * @param {Object} target - * @param {...Object} others - * - * @return {Object} the target - */ - -function assign(target) { - for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - others[_key - 1] = arguments[_key]; - } - - return _extends.apply(void 0, [target].concat(others)); -} -/** - * Sets a nested property of a given object to the specified value. - * - * This mutates the object and returns it. - * - * @param {Object} target The target of the set operation. - * @param {(string|number)[]} path The path to the nested value. - * @param {any} value The value to set. - */ - -function set(target, path, value) { - var currentTarget = target; - forEach(path, function(key, idx) { - if (typeof key !== 'number' && typeof key !== 'string') { - throw new Error('illegal key type: ' + _typeof(key) + '. Key should be of type number or string.'); - } - - if (key === 'constructor') { - throw new Error('illegal key: constructor'); - } - - if (key === '__proto__') { - throw new Error('illegal key: __proto__'); - } - - var nextKey = path[idx + 1]; - var nextTarget = currentTarget[key]; - - if (isDefined(nextKey) && isNil(nextTarget)) { - nextTarget = currentTarget[key] = isNaN(+nextKey) ? {} : []; - } - - if (isUndefined(nextKey)) { - if (isUndefined(value)) { - delete currentTarget[key]; - } else { - currentTarget[key] = value; - } - } else { - currentTarget = nextTarget; - } - }); - return target; -} -/** - * Gets a nested property of a given object. - * - * @param {Object} target The target of the get operation. - * @param {(string|number)[]} path The path to the nested value. - * @param {any} [defaultValue] The value to return if no value exists. - */ - -function get(target, path, defaultValue) { - var currentTarget = target; - forEach(path, function(key) { - // accessing nil property yields - if (isNil(currentTarget)) { - currentTarget = undefined; - return false; - } - - currentTarget = currentTarget[key]; - }); - return isUndefined(currentTarget) ? defaultValue : currentTarget; -} -/** - * Pick given properties from the target object. - * - * @param {Object} target - * @param {Array} properties - * - * @return {Object} target - */ - -function pick(target, properties) { - var result = {}; - var obj = Object(target); - forEach(properties, function(prop) { - if (prop in obj) { - result[prop] = target[prop]; - } - }); - return result; -} -/** - * Pick all target properties, excluding the given ones. - * - * @param {Object} target - * @param {Array} properties - * - * @return {Object} target - */ - -function omit(target, properties) { - var result = {}; - var obj = Object(target); - forEach(obj, function(prop, key) { - if (properties.indexOf(key) === -1) { - result[key] = prop; - } - }); - return result; -} -/** - * Recursively merge `...sources` into given target. - * - * Does support merging objects; does not support merging arrays. - * - * @param {Object} target - * @param {...Object} sources - * - * @return {Object} the target - */ - -function merge(target) { - for (var _len2 = arguments.length, sources = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - sources[_key2 - 1] = arguments[_key2]; - } - - if (!sources.length) { - return target; - } - - forEach(sources, function(source) { - // skip non-obj sources, i.e. null - if (!source || !isObject(source)) { - return; - } - - forEach(source, function(sourceVal, key) { - if (key === '__proto__') { - return; - } - - var targetVal = target[key]; - - if (isObject(sourceVal)) { - if (!isObject(targetVal)) { - // override target[key] with object - targetVal = {}; - } - - target[key] = merge(targetVal, sourceVal); - } else { - target[key] = sourceVal; - } - }); - }); - return target; -} - -export { assign, bind, debounce, ensureArray, every, filter, find, findIndex, flatten, forEach, get, groupBy, has, isArray, isDefined, isFunction, isNil, isNumber, isObject, isString, isUndefined, keys, map, matchPattern, merge, omit, pick, reduce, set, size, some, sortBy, throttle, unionBy, uniqueBy, values, without }; diff --git a/yanzhu-ui-vue3/src/views/flowable/def/index.vue b/yanzhu-ui-vue3/src/views/flowable/def/index.vue deleted file mode 100644 index ed1f630a..00000000 --- a/yanzhu-ui-vue3/src/views/flowable/def/index.vue +++ /dev/null @@ -1,305 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/views/flowable/definition/index.vue b/yanzhu-ui-vue3/src/views/flowable/definition/index.vue new file mode 100644 index 00000000..ce5bb3d3 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/definition/index.vue @@ -0,0 +1,355 @@ + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/definition/model.vue b/yanzhu-ui-vue3/src/views/flowable/definition/model.vue new file mode 100644 index 00000000..a9d8b5ef --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/definition/model.vue @@ -0,0 +1,138 @@ + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/deploy/index.vue b/yanzhu-ui-vue3/src/views/flowable/deploy/index.vue deleted file mode 100644 index c044828e..00000000 --- a/yanzhu-ui-vue3/src/views/flowable/deploy/index.vue +++ /dev/null @@ -1,436 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/views/flowable/category/index.vue b/yanzhu-ui-vue3/src/views/flowable/expression/index.vue similarity index 56% rename from yanzhu-ui-vue3/src/views/flowable/category/index.vue rename to yanzhu-ui-vue3/src/views/flowable/expression/index.vue index f1848e11..c718cc67 100644 --- a/yanzhu-ui-vue3/src/views/flowable/category/index.vue +++ b/yanzhu-ui-vue3/src/views/flowable/expression/index.vue @@ -1,20 +1,12 @@ - diff --git a/yanzhu-ui-vue3/src/views/flowable/model/fieldmaintenance.vue b/yanzhu-ui-vue3/src/views/flowable/model/fieldmaintenance.vue deleted file mode 100644 index 507c9afb..00000000 --- a/yanzhu-ui-vue3/src/views/flowable/model/fieldmaintenance.vue +++ /dev/null @@ -1,281 +0,0 @@ - - - - - diff --git a/yanzhu-ui-vue3/src/views/flowable/model/index.vue b/yanzhu-ui-vue3/src/views/flowable/model/index.vue deleted file mode 100644 index 667d8629..00000000 --- a/yanzhu-ui-vue3/src/views/flowable/model/index.vue +++ /dev/null @@ -1,538 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/views/flowable/ref/index.vue b/yanzhu-ui-vue3/src/views/flowable/ref/index.vue deleted file mode 100644 index efdf5492..00000000 --- a/yanzhu-ui-vue3/src/views/flowable/ref/index.vue +++ /dev/null @@ -1,280 +0,0 @@ - - - diff --git a/yanzhu-ui-vue3/src/views/flowable/task/finished/detail/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/finished/detail/index.vue new file mode 100644 index 00000000..85b422d5 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/finished/detail/index.vue @@ -0,0 +1,256 @@ + + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/finished/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/finished/index.vue new file mode 100644 index 00000000..0c634f7a --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/finished/index.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/flowForm/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/flowForm/index.vue new file mode 100644 index 00000000..b507fe74 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/flowForm/index.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/form/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/form/index.vue new file mode 100644 index 00000000..c5692526 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/form/index.vue @@ -0,0 +1,260 @@ + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/index.vue new file mode 100644 index 00000000..15d02ae9 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/index.vue @@ -0,0 +1,253 @@ + + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/myProcess/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/index.vue new file mode 100644 index 00000000..ff549a93 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/index.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/myProcess/send/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/send/index.vue new file mode 100644 index 00000000..028e9c1e --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/send/index.vue @@ -0,0 +1,269 @@ + + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/todo/detail/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/todo/detail/index.vue new file mode 100644 index 00000000..33f58a23 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/todo/detail/index.vue @@ -0,0 +1,558 @@ + + + + + + diff --git a/yanzhu-ui-vue3/src/views/flowable/task/todo/index.vue b/yanzhu-ui-vue3/src/views/flowable/task/todo/index.vue new file mode 100644 index 00000000..67581642 --- /dev/null +++ b/yanzhu-ui-vue3/src/views/flowable/task/todo/index.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/yanzhu-ui-vue3/src/views/index.vue b/yanzhu-ui-vue3/src/views/index.vue index 8c1bf417..21e1e6b8 100644 --- a/yanzhu-ui-vue3/src/views/index.vue +++ b/yanzhu-ui-vue3/src/views/index.vue @@ -118,10 +118,12 @@ >

@@ -148,6 +150,44 @@ + +

    +
  1. 支持登录IP黑名单限制
  2. +
  3. 操作日志新增消耗时间属性
  4. +
  5. 屏蔽定时任务bean违规的字符
  6. +
  7. 日志管理使用索引提升查询性能
  8. +
  9. 日志注解支持排除指定的请求参数
  10. +
  11. 支持自定义隐藏属性列过滤子对象
  12. +
  13. 升级spring-boot到最新版本2.7.13
  14. +
  15. 升级spring-cloud到最新版2021.0.8
  16. +
  17. 升级spring-cloud-alibaba到最新版2021.0.5.0
  18. +
  19. 升级druid到最新版本1.2.16
  20. +
  21. 升级fastjson到最新版2.0.34
  22. +
  23. 升级pagehelper到最新版1.4.7
  24. +
  25. 升级transmittable-thread-local到最新版本2.14.3
  26. +
  27. 升级element-ui到最新版本2.15.13
  28. +
  29. 移除apache/commons-fileupload依赖
  30. +
  31. 修复页面切换时布局错乱的问题
  32. +
  33. 修复用户多角色数据权限可能出现权限抬升的情况
  34. +
  35. 修复导入用户时无法更新存在用户数据的问题
  36. +
  37. 修复开启TopNav后一级菜单路由参数设置无效问题
  38. +
  39. 优化文件下载出现的异常
  40. +
  41. 优化选择图标组件高亮回显
  42. +
  43. 优化修改密码日志存储明文问题
  44. +
  45. 优化排序属性orderBy参数限制长度
  46. +
  47. 优化页签栏关闭其他出现的异常问题
  48. +
  49. 优化页签关闭左侧选项排除首页选项
  50. +
  51. 优化关闭当前tab页跳转最右侧tab页
  52. +
  53. 优化文件上传服务关闭InputStream
  54. +
  55. 优化页签在Firefox浏览器被遮挡的问题
  56. +
  57. 优化侧边栏的平台标题与VUE_APP_TITLE保持同步
  58. +
  59. 优化DictTag组件value没有匹配的值时则展示value
  60. +
  61. 优化去除@EnableCustomSwagger注解后会启动失败问题
  62. +
  63. 优化upload接口在文件过大和文件名过长的情况返回提示信息
  64. +
  65. 优化异步保存日志发生报错不进RemoteLogFallbackFactory问题
  66. +
  67. 其他细节优化
  68. +
+
  1. 重置时取消部门选中
  2. @@ -823,7 +863,7 @@
    donate @@ -838,7 +878,7 @@ diff --git a/yanzhu-ui-vue3/src/views/system/menu/index.vue b/yanzhu-ui-vue3/src/views/system/menu/index.vue index cf53ac90..6193c9bc 100644 --- a/yanzhu-ui-vue3/src/views/system/menu/index.vue +++ b/yanzhu-ui-vue3/src/views/system/menu/index.vue @@ -130,7 +130,7 @@ - + diff --git a/yanzhu-ui-vue3/vite.config.js b/yanzhu-ui-vue3/vite.config.js index 47ed47c4..fed40228 100644 --- a/yanzhu-ui-vue3/vite.config.js +++ b/yanzhu-ui-vue3/vite.config.js @@ -54,17 +54,8 @@ export default defineConfig(({ mode, command }) => { ] } }, - // 预编译 optimizeDeps: { - include: [ - 'pinia', - '@/lib/vform/designer.umd.js', - ] + include: ['@/components/vform/designer.umd.js'] //此处路径必须跟main.js中import路径完全一致! }, - build: { - commonjsOptions: { - include: /node_modules|lib/ //这里记得把lib目录加进来,否则生产打包会报错!! - } - } } }) diff --git a/yanzhu-ui-vue3/vite/plugins/compression.ts b/yanzhu-ui-vue3/vite/plugins/compression.ts deleted file mode 100644 index 123ff3a5..00000000 --- a/yanzhu-ui-vue3/vite/plugins/compression.ts +++ /dev/null @@ -1,28 +0,0 @@ -import compression from 'vite-plugin-compression'; - -export default function createCompression(env: any) { - const { VITE_BUILD_COMPRESS } = env; - const plugin: any[] = []; - if (VITE_BUILD_COMPRESS) { - const compressList = VITE_BUILD_COMPRESS.split(','); - if (compressList.includes('gzip')) { - // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 - plugin.push( - compression({ - ext: '.gz', - deleteOriginFile: false - }) - ); - } - if (compressList.includes('brotli')) { - plugin.push( - compression({ - ext: '.br', - algorithm: 'brotliCompress', - deleteOriginFile: false - }) - ); - } - } - return plugin; -} diff --git a/yanzhu-ui-vue3/vite/plugins/icons.ts b/yanzhu-ui-vue3/vite/plugins/icons.ts deleted file mode 100644 index 883f2307..00000000 --- a/yanzhu-ui-vue3/vite/plugins/icons.ts +++ /dev/null @@ -1,8 +0,0 @@ -import Icons from 'unplugin-icons/vite'; - -export default () => { - return Icons({ - // 自动安装图标库 - autoInstall: true - }); -}; diff --git a/yanzhu-ui-vue3/vite/plugins/unocss.ts b/yanzhu-ui-vue3/vite/plugins/unocss.ts deleted file mode 100644 index 997335af..00000000 --- a/yanzhu-ui-vue3/vite/plugins/unocss.ts +++ /dev/null @@ -1,13 +0,0 @@ -import UnoCss from 'unocss/vite'; -import { presetUno, presetAttributify, presetIcons } from 'unocss'; - -export default () => { - return UnoCss({ - presets: [presetUno(), presetAttributify(), presetIcons()], - // rules: [['search', {}]], - shortcuts: { - 'panel-title': - 'pb-[5px] font-sans leading-[1.1] font-medium text-base text-[#6379bb] border-b border-b-solid border-[var(--el-border-color-light)] mb-5 mt-0' - } - }); -};

- QQ群:满42799195 满170157040 - 满130643120 满225920371 满201705537 满236543183 - 满213618602 148794840 - 118752664 QQ群:满42799195 + 满170157040 满130643120 满225920371 + 满201705537 满236543183 满213618602 + 满148794840 满118752664 + 101038945