@eqproject/eqp-dynamic-module 2.8.8 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/eqproject-eqp-dynamic-module.mjs +4 -4
- package/esm2022/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +531 -0
- package/esm2022/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +1245 -0
- package/esm2022/lib/components/private/add-form-field/add-form-field.component.mjs +1264 -0
- package/esm2022/lib/components/private/add-formula-field/add-formula-field.component.mjs +200 -0
- package/esm2022/lib/components/private/dbgetter/dbgetter.component.mjs +233 -0
- package/esm2022/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +280 -0
- package/esm2022/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.mjs +143 -0
- package/esm2022/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.mjs +75 -0
- package/esm2022/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +106 -0
- package/esm2022/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.mjs +107 -0
- package/esm2022/lib/components/private/field-templates/image-field-template/image-field-template.component.mjs +265 -0
- package/esm2022/lib/components/private/field-templates/image-with-markers-field-template/image-with-markers-field-template.component.mjs +261 -0
- package/esm2022/lib/components/private/field-templates/label-field-template/label-field-template.component.mjs +82 -0
- package/esm2022/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +176 -0
- package/esm2022/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +129 -0
- package/esm2022/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +103 -0
- package/esm2022/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +78 -0
- package/esm2022/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +837 -0
- package/esm2022/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +408 -0
- package/esm2022/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +651 -0
- package/esm2022/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.mjs +82 -0
- package/esm2022/lib/components/private/form-records/repair-form-fields/repair-form-fields.component.mjs +59 -0
- package/esm2022/lib/components/private/form-records/view-form-record/view-form-record.component.mjs +131 -0
- package/esm2022/lib/components/private/form-statistics/dynamic-module-filter-fix/dynamic-module-filter-fix.component.mjs +89 -0
- package/esm2022/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +460 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/attachment-filter-template/attachment-filter-template.component.mjs +58 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component.mjs +110 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.mjs +108 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/image-filter-template/image-filter-template.component.mjs +58 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.mjs +135 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/list-form-record-filter-template/list-form-record-filter-template.component.mjs +58 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.mjs +141 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.mjs +126 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +111 -0
- package/esm2022/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +111 -0
- package/esm2022/lib/components/private/graphs/graph/graph.component.mjs +186 -0
- package/esm2022/lib/components/private/graphs/graphs.component.mjs +175 -0
- package/esm2022/lib/components/private/spinner/spinner.component.mjs +21 -0
- package/{esm2020 → esm2022}/lib/components/private/tmw-image-drawer/i18n.mjs +62 -62
- package/esm2022/lib/components/private/tmw-image-drawer/tmw-image-drawer.component.mjs +413 -0
- package/esm2022/lib/components/private/tmw-image-marker/tmw-image-marker.component.mjs +348 -0
- package/esm2022/lib/components/private/trigger-creator/dynamic-module-trigger-fix/dynamic-module-trigger-fix.component.mjs +81 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-creator.component.mjs +199 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component.mjs +91 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component.mjs +88 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-templates/list-form-record-trigger-template/list-form-record-trigger-template.component.mjs +61 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component.mjs +69 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component.mjs +107 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.mjs +92 -0
- package/esm2022/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.mjs +92 -0
- package/esm2022/lib/directives/dynamic-loader/dynamic-loader.directive.mjs +63 -0
- package/esm2022/lib/directives/speech-to-text/speech-to-text.directive.mjs +192 -0
- package/esm2022/lib/eqp-dynamic-module.module.mjs +253 -0
- package/{esm2020 → esm2022}/lib/interfaces/iBaseFieldComponent.interface.mjs +1 -1
- package/{esm2020 → esm2022}/lib/interfaces/iRootObject.interface.mjs +1 -1
- package/esm2022/lib/models/baseField.model.mjs +133 -0
- package/esm2022/lib/models/baseObj.model.mjs +10 -0
- package/{esm2020 → esm2022}/lib/models/context.model.mjs +10 -8
- package/esm2022/lib/models/dynAttachment.mjs +52 -0
- package/esm2022/lib/models/dynamicModuleCompileConfig.model.mjs +45 -0
- package/esm2022/lib/models/dynamicModuleConfig.model.mjs +13 -0
- package/esm2022/lib/models/dynamicModuleConfiguratorConfig.model.mjs +11 -0
- package/esm2022/lib/models/dynamicModuleConfiguratorSpecificConfig.model.mjs +16 -0
- package/{esm2020 → esm2022}/lib/models/dynamicModuleFilterResultViewModeEnum.model.mjs +6 -6
- package/esm2022/lib/models/dynamicModuleGeneralConfig.model.mjs +36 -0
- package/esm2022/lib/models/dynamicModuleListConfig.model.mjs +48 -0
- package/esm2022/lib/models/dynamicModuleListFormRecordActionsDefault.mjs +35 -0
- package/{esm2020 → esm2022}/lib/models/dynamicModuleRepairConfig.model.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/dynamicModuleViewModeEnum.mjs +11 -11
- package/esm2022/lib/models/endPointConfiguration.model.mjs +211 -0
- package/{esm2020 → esm2022}/lib/models/entity.model.mjs +10 -7
- package/esm2022/lib/models/fields/attachmentField.model.mjs +28 -0
- package/esm2022/lib/models/fields/booleanField.model.mjs +15 -0
- package/esm2022/lib/models/fields/dateField.model.mjs +15 -0
- package/esm2022/lib/models/fields/imageField.model.mjs +14 -0
- package/esm2022/lib/models/fields/imageSelectorField.model.mjs +10 -0
- package/esm2022/lib/models/fields/imageWithMarkersField.model.mjs +7 -0
- package/{esm2020 → esm2022}/lib/models/fields/labelField.model.mjs +5 -4
- package/esm2022/lib/models/fields/listValueField.model.mjs +24 -0
- package/esm2022/lib/models/fields/lookupField.model.mjs +11 -0
- package/esm2022/lib/models/fields/numericField.model.mjs +13 -0
- package/esm2022/lib/models/fields/textField.model.mjs +18 -0
- package/esm2022/lib/models/fields/textareaField.model.mjs +9 -0
- package/esm2022/lib/models/form.model.mjs +63 -0
- package/esm2022/lib/models/getter.model.mjs +6 -0
- package/esm2022/lib/models/graph.model.mjs +19 -0
- package/{esm2020 → esm2022}/lib/models/logicOperator.model.mjs +55 -55
- package/esm2022/lib/models/record.model.mjs +39 -0
- package/esm2022/lib/models/statistic.model.mjs +12 -0
- package/esm2022/lib/models/trigger.model.mjs +63 -0
- package/esm2022/lib/modules/formula.model.mjs +266 -0
- package/{esm2020 → esm2022}/lib/modules/material.module.mjs +231 -231
- package/{esm2020 → esm2022}/lib/services/custom-form-validators.service.mjs +18 -18
- package/esm2022/lib/services/db-date.service.mjs +178 -0
- package/esm2022/lib/services/eqp-dynamic-module-dialog.service.mjs +114 -0
- package/esm2022/lib/services/global.service.mjs +43 -0
- package/esm2022/lib/services/spinner.service.mjs +41 -0
- package/esm2022/lib/services/utilityHelper.services.mjs +601 -0
- package/{esm2020 → esm2022}/public-api.mjs +56 -56
- package/fesm2022/eqproject-eqp-dynamic-module.mjs +13507 -0
- package/fesm2022/eqproject-eqp-dynamic-module.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +162 -162
- package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +308 -308
- package/lib/components/private/add-form-field/add-form-field.component.d.ts +263 -263
- package/lib/components/private/add-formula-field/add-formula-field.component.d.ts +45 -45
- package/lib/components/private/dbgetter/dbgetter.component.d.ts +51 -51
- package/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.d.ts +84 -84
- package/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.d.ts +57 -57
- package/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.d.ts +27 -27
- package/lib/components/private/field-templates/date-field-template/date-field-template.component.d.ts +36 -36
- package/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.d.ts +33 -33
- package/lib/components/private/field-templates/image-field-template/image-field-template.component.d.ts +80 -80
- package/lib/components/private/field-templates/image-with-markers-field-template/image-with-markers-field-template.component.d.ts +78 -78
- package/lib/components/private/field-templates/label-field-template/label-field-template.component.d.ts +33 -33
- package/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.d.ts +59 -59
- package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +40 -40
- package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +35 -35
- package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +31 -31
- package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +104 -104
- package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +83 -83
- package/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.d.ts +151 -151
- package/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.d.ts +39 -39
- package/lib/components/private/form-records/repair-form-fields/repair-form-fields.component.d.ts +20 -20
- package/lib/components/private/form-records/view-form-record/view-form-record.component.d.ts +36 -36
- package/lib/components/private/form-statistics/dynamic-module-filter-fix/dynamic-module-filter-fix.component.d.ts +42 -42
- package/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.d.ts +109 -109
- package/lib/components/private/form-statistics/filter-templates/attachment-filter-template/attachment-filter-template.component.d.ts +21 -21
- package/lib/components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component.d.ts +37 -37
- package/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.d.ts +37 -37
- package/lib/components/private/form-statistics/filter-templates/image-filter-template/image-filter-template.component.d.ts +21 -21
- package/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.d.ts +47 -47
- package/lib/components/private/form-statistics/filter-templates/list-form-record-filter-template/list-form-record-filter-template.component.d.ts +21 -21
- package/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.d.ts +47 -47
- package/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.d.ts +40 -40
- package/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.d.ts +38 -38
- package/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.d.ts +38 -38
- package/lib/components/private/graphs/graph/graph.component.d.ts +25 -25
- package/lib/components/private/graphs/graphs.component.d.ts +47 -47
- package/lib/components/private/spinner/spinner.component.d.ts +12 -12
- package/lib/components/private/tmw-image-drawer/i18n.d.ts +27 -27
- package/lib/components/private/tmw-image-drawer/tmw-image-drawer.component.d.ts +70 -70
- package/lib/components/private/tmw-image-marker/tmw-image-marker.component.d.ts +62 -62
- package/lib/components/private/trigger-creator/dynamic-module-trigger-fix/dynamic-module-trigger-fix.component.d.ts +42 -42
- package/lib/components/private/trigger-creator/trigger-creator.component.d.ts +42 -42
- package/lib/components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component.d.ts +34 -34
- package/lib/components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component.d.ts +34 -34
- package/lib/components/private/trigger-creator/trigger-templates/list-form-record-trigger-template/list-form-record-trigger-template.component.d.ts +24 -24
- package/lib/components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component.d.ts +34 -34
- package/lib/components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component.d.ts +37 -37
- package/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.d.ts +36 -36
- package/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.d.ts +36 -36
- package/lib/directives/dynamic-loader/dynamic-loader.directive.d.ts +26 -26
- package/lib/directives/speech-to-text/speech-to-text.directive.d.ts +31 -31
- package/lib/eqp-dynamic-module.module.d.ts +85 -85
- package/lib/interfaces/iBaseFieldComponent.interface.d.ts +8 -8
- package/lib/interfaces/iRootObject.interface.d.ts +11 -11
- package/lib/models/baseField.model.d.ts +126 -126
- package/lib/models/baseObj.model.d.ts +9 -9
- package/lib/models/context.model.d.ts +9 -9
- package/lib/models/dynAttachment.d.ts +49 -49
- package/lib/models/dynamicModuleCompileConfig.model.d.ts +35 -35
- package/lib/models/dynamicModuleConfig.model.d.ts +11 -11
- package/lib/models/dynamicModuleConfiguratorConfig.model.d.ts +7 -7
- package/lib/models/dynamicModuleConfiguratorSpecificConfig.model.d.ts +11 -11
- package/lib/models/dynamicModuleFilterResultViewModeEnum.model.d.ts +5 -5
- package/lib/models/dynamicModuleGeneralConfig.model.d.ts +29 -29
- package/lib/models/dynamicModuleListConfig.model.d.ts +39 -39
- package/lib/models/dynamicModuleListFormRecordActionsDefault.d.ts +9 -9
- package/lib/models/dynamicModuleRepairConfig.model.d.ts +4 -4
- package/lib/models/dynamicModuleViewModeEnum.d.ts +10 -10
- package/lib/models/endPointConfiguration.model.d.ts +46 -46
- package/lib/models/entity.model.d.ts +11 -11
- package/lib/models/fields/attachmentField.model.d.ts +17 -17
- package/lib/models/fields/booleanField.model.d.ts +11 -11
- package/lib/models/fields/dateField.model.d.ts +13 -13
- package/lib/models/fields/imageField.model.d.ts +13 -13
- package/lib/models/fields/imageSelectorField.model.d.ts +12 -12
- package/lib/models/fields/imageWithMarkersField.model.d.ts +7 -7
- package/lib/models/fields/labelField.model.d.ts +4 -4
- package/lib/models/fields/listValueField.model.d.ts +24 -24
- package/lib/models/fields/lookupField.model.d.ts +10 -10
- package/lib/models/fields/numericField.model.d.ts +12 -12
- package/lib/models/fields/textField.model.d.ts +16 -16
- package/lib/models/fields/textareaField.model.d.ts +8 -8
- package/lib/models/form.model.d.ts +61 -61
- package/lib/models/getter.model.d.ts +5 -5
- package/lib/models/graph.model.d.ts +18 -18
- package/lib/models/logicOperator.model.d.ts +48 -48
- package/lib/models/record.model.d.ts +41 -41
- package/lib/models/statistic.model.d.ts +13 -13
- package/lib/models/trigger.model.d.ts +51 -51
- package/lib/modules/formula.model.d.ts +32 -32
- package/lib/modules/material.module.d.ts +37 -37
- package/lib/services/custom-form-validators.service.d.ts +5 -5
- package/lib/services/db-date.service.d.ts +24 -24
- package/lib/services/eqp-dynamic-module-dialog.service.d.ts +44 -44
- package/lib/services/global.service.d.ts +16 -16
- package/lib/services/spinner.service.d.ts +18 -18
- package/lib/services/utilityHelper.services.d.ts +101 -101
- package/package.json +19 -24
- package/public-api.d.ts +53 -53
- package/esm2020/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +0 -516
- package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +0 -1196
- package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +0 -1202
- package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +0 -196
- package/esm2020/lib/components/private/dbgetter/dbgetter.component.mjs +0 -226
- package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +0 -263
- package/esm2020/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.mjs +0 -138
- package/esm2020/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.mjs +0 -71
- package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +0 -104
- package/esm2020/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.mjs +0 -100
- package/esm2020/lib/components/private/field-templates/image-field-template/image-field-template.component.mjs +0 -256
- package/esm2020/lib/components/private/field-templates/image-with-markers-field-template/image-with-markers-field-template.component.mjs +0 -252
- package/esm2020/lib/components/private/field-templates/label-field-template/label-field-template.component.mjs +0 -74
- package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +0 -172
- package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +0 -124
- package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +0 -95
- package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +0 -71
- package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +0 -828
- package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +0 -400
- package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +0 -628
- package/esm2020/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.mjs +0 -75
- package/esm2020/lib/components/private/form-records/repair-form-fields/repair-form-fields.component.mjs +0 -54
- package/esm2020/lib/components/private/form-records/view-form-record/view-form-record.component.mjs +0 -125
- package/esm2020/lib/components/private/form-statistics/dynamic-module-filter-fix/dynamic-module-filter-fix.component.mjs +0 -76
- package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +0 -453
- package/esm2020/lib/components/private/form-statistics/filter-templates/attachment-filter-template/attachment-filter-template.component.mjs +0 -57
- package/esm2020/lib/components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component.mjs +0 -104
- package/esm2020/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.mjs +0 -105
- package/esm2020/lib/components/private/form-statistics/filter-templates/image-filter-template/image-filter-template.component.mjs +0 -57
- package/esm2020/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.mjs +0 -128
- package/esm2020/lib/components/private/form-statistics/filter-templates/list-form-record-filter-template/list-form-record-filter-template.component.mjs +0 -57
- package/esm2020/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.mjs +0 -135
- package/esm2020/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.mjs +0 -120
- package/esm2020/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +0 -102
- package/esm2020/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +0 -102
- package/esm2020/lib/components/private/graphs/graph/graph.component.mjs +0 -180
- package/esm2020/lib/components/private/graphs/graphs.component.mjs +0 -164
- package/esm2020/lib/components/private/spinner/spinner.component.mjs +0 -19
- package/esm2020/lib/components/private/tmw-image-drawer/tmw-image-drawer.component.mjs +0 -403
- package/esm2020/lib/components/private/tmw-image-marker/tmw-image-marker.component.mjs +0 -336
- package/esm2020/lib/components/private/trigger-creator/dynamic-module-trigger-fix/dynamic-module-trigger-fix.component.mjs +0 -69
- package/esm2020/lib/components/private/trigger-creator/trigger-creator.component.mjs +0 -191
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component.mjs +0 -86
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component.mjs +0 -86
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/list-form-record-trigger-template/list-form-record-trigger-template.component.mjs +0 -60
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component.mjs +0 -66
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component.mjs +0 -102
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.mjs +0 -84
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.mjs +0 -84
- package/esm2020/lib/directives/dynamic-loader/dynamic-loader.directive.mjs +0 -59
- package/esm2020/lib/directives/speech-to-text/speech-to-text.directive.mjs +0 -186
- package/esm2020/lib/eqp-dynamic-module.module.mjs +0 -253
- package/esm2020/lib/models/baseField.model.mjs +0 -101
- package/esm2020/lib/models/baseObj.model.mjs +0 -9
- package/esm2020/lib/models/dynAttachment.mjs +0 -21
- package/esm2020/lib/models/dynamicModuleCompileConfig.model.mjs +0 -13
- package/esm2020/lib/models/dynamicModuleConfig.model.mjs +0 -9
- package/esm2020/lib/models/dynamicModuleConfiguratorConfig.model.mjs +0 -9
- package/esm2020/lib/models/dynamicModuleConfiguratorSpecificConfig.model.mjs +0 -15
- package/esm2020/lib/models/dynamicModuleGeneralConfig.model.mjs +0 -36
- package/esm2020/lib/models/dynamicModuleListConfig.model.mjs +0 -30
- package/esm2020/lib/models/dynamicModuleListFormRecordActionsDefault.mjs +0 -11
- package/esm2020/lib/models/endPointConfiguration.model.mjs +0 -205
- package/esm2020/lib/models/fields/attachmentField.model.mjs +0 -22
- package/esm2020/lib/models/fields/booleanField.model.mjs +0 -12
- package/esm2020/lib/models/fields/dateField.model.mjs +0 -15
- package/esm2020/lib/models/fields/imageField.model.mjs +0 -15
- package/esm2020/lib/models/fields/imageSelectorField.model.mjs +0 -8
- package/esm2020/lib/models/fields/imageWithMarkersField.model.mjs +0 -8
- package/esm2020/lib/models/fields/listValueField.model.mjs +0 -11
- package/esm2020/lib/models/fields/lookupField.model.mjs +0 -5
- package/esm2020/lib/models/fields/numericField.model.mjs +0 -5
- package/esm2020/lib/models/fields/textField.model.mjs +0 -14
- package/esm2020/lib/models/fields/textareaField.model.mjs +0 -4
- package/esm2020/lib/models/form.model.mjs +0 -24
- package/esm2020/lib/models/getter.model.mjs +0 -3
- package/esm2020/lib/models/graph.model.mjs +0 -15
- package/esm2020/lib/models/record.model.mjs +0 -10
- package/esm2020/lib/models/statistic.model.mjs +0 -8
- package/esm2020/lib/models/trigger.model.mjs +0 -41
- package/esm2020/lib/modules/formula.model.mjs +0 -265
- package/esm2020/lib/services/db-date.service.mjs +0 -178
- package/esm2020/lib/services/eqp-dynamic-module-dialog.service.mjs +0 -114
- package/esm2020/lib/services/global.service.mjs +0 -41
- package/esm2020/lib/services/spinner.service.mjs +0 -43
- package/esm2020/lib/services/utilityHelper.services.mjs +0 -598
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +0 -12782
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +0 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +0 -12751
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +0 -1
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from "@angular/core";
|
|
2
|
+
import { Context } from "../../../models/context.model";
|
|
3
|
+
import { DynamicModuleCompileConfig } from "../../../models/dynamicModuleCompileConfig.model";
|
|
4
|
+
import { DynamicModuleListConfig } from "../../../models/dynamicModuleListConfig.model";
|
|
5
|
+
import { DynamicModuleRepairConfig } from "../../../models/dynamicModuleRepairConfig.model";
|
|
6
|
+
import { DynamicModuleViewModeEnum } from "../../../models/dynamicModuleViewModeEnum";
|
|
7
|
+
import { ParamTypeEnum, } from "../../../models/endPointConfiguration.model";
|
|
8
|
+
import { Form, FormTypeEnum } from "../../../models/form.model";
|
|
9
|
+
import { DynamicModuleListFormRecordActionsDefault } from "../../../models/dynamicModuleListFormRecordActionsDefault";
|
|
10
|
+
import { EqpDynamicModuleDialogService } from "../../../services/eqp-dynamic-module-dialog.service";
|
|
11
|
+
import { UtilityHelperService } from "../../../services/utilityHelper.services";
|
|
12
|
+
import { DynamicModuleFilterResultViewModeEnum } from "../../../models/dynamicModuleFilterResultViewModeEnum.model";
|
|
13
|
+
import { GlobalService } from "../../../services/global.service";
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "../../../services/utilityHelper.services";
|
|
16
|
+
import * as i2 from "@angular/common";
|
|
17
|
+
import * as i3 from "../../private/form-records/list-form-record/list-form-record.component";
|
|
18
|
+
import * as i4 from "../../private/form-records/list-view-form-record/list-view-form-record.component";
|
|
19
|
+
import * as i5 from "../../private/form-records/add-form-record/add-form-record.component";
|
|
20
|
+
import * as i6 from "../../private/form-records/view-form-record/view-form-record.component";
|
|
21
|
+
import * as i7 from "../../private/spinner/spinner.component";
|
|
22
|
+
import * as i8 from "../../private/form-records/repair-form-fields/repair-form-fields.component";
|
|
23
|
+
import * as i9 from "../../private/form-statistics/filter-form-statistic/filter-form-statistic.component";
|
|
24
|
+
import * as i10 from "../../private/graphs/graphs.component";
|
|
25
|
+
export class EqpDynamicModuleComponent {
|
|
26
|
+
utilityHelperService;
|
|
27
|
+
changeDetector;
|
|
28
|
+
debugMode = false;
|
|
29
|
+
// @Input() configurations: DynamicModuleConfig;
|
|
30
|
+
configurations;
|
|
31
|
+
formID;
|
|
32
|
+
starterViewMode = DynamicModuleViewModeEnum.LIST;
|
|
33
|
+
userID = "0";
|
|
34
|
+
orgaID = "0";
|
|
35
|
+
showTitle = true;
|
|
36
|
+
showBackButton = true;
|
|
37
|
+
showSaveButton = true;
|
|
38
|
+
values = null;
|
|
39
|
+
FormJSON = "";
|
|
40
|
+
externalButtons = new Array();
|
|
41
|
+
listViewRecordTitle = new Array();
|
|
42
|
+
defaultListViewFunction = null;
|
|
43
|
+
defaultListActions = new DynamicModuleListFormRecordActionsDefault();
|
|
44
|
+
onSaveBackToList = false;
|
|
45
|
+
onBackTo = null;
|
|
46
|
+
filterResultViewMode = DynamicModuleFilterResultViewModeEnum.INTERNAL_EQPTABLE;
|
|
47
|
+
additionalParams = null;
|
|
48
|
+
additionalInfo = null;
|
|
49
|
+
updateInfo = null;
|
|
50
|
+
prefilterParams = null;
|
|
51
|
+
showNewSearchButton = true;
|
|
52
|
+
answerToDuplicateId;
|
|
53
|
+
highlightFilter;
|
|
54
|
+
selectedRecord = null;
|
|
55
|
+
isDraggableListView = true;
|
|
56
|
+
QueryEditorComponent; // L'intero componente query Editor
|
|
57
|
+
context = new Context();
|
|
58
|
+
/**
|
|
59
|
+
* Url del server da chiamare per recuperare, salvare o eliminare i record.
|
|
60
|
+
* Usato per creare la configurazione di default degli endpoint da chiamare.
|
|
61
|
+
*/
|
|
62
|
+
baseServerUrl = null;
|
|
63
|
+
/**
|
|
64
|
+
* Token da usare negli endpoint da chiamare per recuperare o salvare i record.
|
|
65
|
+
* Usato solo se viene popolata la proprietà "baseServerUrl".
|
|
66
|
+
*/
|
|
67
|
+
userToken = null;
|
|
68
|
+
/**
|
|
69
|
+
* Configurazione degli endpoint da chiamare per recuperare o salvare i dati.
|
|
70
|
+
* Può essere definita dall'utente oppure lasciata null, viene popolata con dei
|
|
71
|
+
* valori di default se viene valorizzata la proprietà "baseServerUrl" altrimenti
|
|
72
|
+
* viene lasciata null e non viene eseguita nessuna chiamata al server.
|
|
73
|
+
*/
|
|
74
|
+
endPointConfiguration = null;
|
|
75
|
+
//@Input() form: Form = new Form();
|
|
76
|
+
// defaultListActions: dynamicModuleListFormRecordActionsDefault = new dynamicModuleListFormRecordActionsDefault();
|
|
77
|
+
// FormJSON: string = "";
|
|
78
|
+
/**
|
|
79
|
+
* Eventi emessi quando si salva, elimina o duplica un record
|
|
80
|
+
* se non è stato specificato un endpoint da chiamare.
|
|
81
|
+
*/
|
|
82
|
+
saveRecord = new EventEmitter();
|
|
83
|
+
deleteRecord = new EventEmitter();
|
|
84
|
+
SaveJSON = new EventEmitter();
|
|
85
|
+
afterFilter = new EventEmitter();
|
|
86
|
+
/**
|
|
87
|
+
* Eventi emessi DOPO aver eseguito una chiamata al server per il salvataggio,
|
|
88
|
+
* l'eliminazione o la duplicazione di un record all'endpoint specificato.
|
|
89
|
+
*/
|
|
90
|
+
afterSaveRecord = new EventEmitter();
|
|
91
|
+
afterDeleteRecord = new EventEmitter();
|
|
92
|
+
dragStarted = new EventEmitter();
|
|
93
|
+
dragReleased = new EventEmitter();
|
|
94
|
+
out = new EventEmitter();
|
|
95
|
+
fireTrigger = new EventEmitter();
|
|
96
|
+
form = new Form();
|
|
97
|
+
lastform = new Form();
|
|
98
|
+
FormTypeEnum = FormTypeEnum;
|
|
99
|
+
dynamicModuleViewModeEnum = DynamicModuleViewModeEnum;
|
|
100
|
+
onlyView;
|
|
101
|
+
viewMode;
|
|
102
|
+
defaultViewMode;
|
|
103
|
+
dynamicModuleCompileConfig;
|
|
104
|
+
dynamicModuleListConfig;
|
|
105
|
+
dynamicModuleRepairConfig;
|
|
106
|
+
loader = false;
|
|
107
|
+
isDuplicate = false;
|
|
108
|
+
constructor(utilityHelperService, changeDetector) {
|
|
109
|
+
this.utilityHelperService = utilityHelperService;
|
|
110
|
+
this.changeDetector = changeDetector;
|
|
111
|
+
}
|
|
112
|
+
async ngOnInit() {
|
|
113
|
+
GlobalService.debugMode = this.debugMode;
|
|
114
|
+
this.onBackTo = (this.onBackTo == null) ? this.starterViewMode : this.onBackTo;
|
|
115
|
+
this.dynamicModuleCompileConfig = new DynamicModuleCompileConfig(this.showTitle, this.showSaveButton, this.showBackButton, this.userID, this.additionalParams, this.additionalInfo, this.prefilterParams, this.showNewSearchButton);
|
|
116
|
+
this.dynamicModuleListConfig = new DynamicModuleListConfig(this.showTitle, this.values, this.defaultListActions, this.userID, new Array(), this.updateInfo, this.listViewRecordTitle, this.isDraggableListView);
|
|
117
|
+
this.dynamicModuleRepairConfig = new DynamicModuleRepairConfig(this.FormJSON);
|
|
118
|
+
this.context = this.configurations.context;
|
|
119
|
+
this.baseServerUrl = this.configurations.baseServerUrl;
|
|
120
|
+
this.userToken = this.configurations.userToken;
|
|
121
|
+
this.endPointConfiguration = this.configurations.endPointConfiguration;
|
|
122
|
+
//this.formID = this.configurations.dynamicModuleGeneralConfig.formID
|
|
123
|
+
// this.viewMode = this.starterViewMode
|
|
124
|
+
UtilityHelperService.SetContext(this.context);
|
|
125
|
+
this.configureDefaultEndPoints();
|
|
126
|
+
if (this.FormJSON == "") {
|
|
127
|
+
// prende il form e imposta la viewmode corretta
|
|
128
|
+
// await this.getFormByID();
|
|
129
|
+
}
|
|
130
|
+
// this.viewMode = this.starterViewMode;
|
|
131
|
+
GlobalService.debugLog("dynamicModuleCompileConfig", this.dynamicModuleCompileConfig);
|
|
132
|
+
this.loader = true;
|
|
133
|
+
}
|
|
134
|
+
ngAfterViewInit() {
|
|
135
|
+
if (this.starterViewMode == DynamicModuleViewModeEnum.COMPILE || this.starterViewMode == DynamicModuleViewModeEnum.FILTER) {
|
|
136
|
+
// da vedere in getFormByID
|
|
137
|
+
this.defaultViewMode = this.starterViewMode;
|
|
138
|
+
setTimeout(() => this.onAddViewEditRecord(null), 1000);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
this.viewMode = this.starterViewMode;
|
|
142
|
+
this.loader = true;
|
|
143
|
+
setTimeout(_ => { this.changeDetector.detectChanges(); }, 0); // refresh ui
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// getFormByID(id: string = this.formID) {
|
|
147
|
+
// const dynamicModuleParams: Array<EndPointDataParams> =
|
|
148
|
+
// new Array<EndPointDataParams>();
|
|
149
|
+
// dynamicModuleParams.push({
|
|
150
|
+
// ParamName: "id",
|
|
151
|
+
// ParamValue: id,
|
|
152
|
+
// ParamType: ParamTypeEnum["Query param"],
|
|
153
|
+
// });
|
|
154
|
+
// this.utilityHelperService.RunEndPointCall(
|
|
155
|
+
// this.endPointConfiguration.Forms.GetByIDEndPoint,
|
|
156
|
+
// dynamicModuleParams,
|
|
157
|
+
// (res: Form) => {
|
|
158
|
+
// this.lastform = res;
|
|
159
|
+
// this.form = res;
|
|
160
|
+
// // this.getRecordsByFormID();
|
|
161
|
+
// // if (this.starterViewMode == DynamicModuleViewModeEnum.COMPILE) {
|
|
162
|
+
// // this.onAddViewEditRecord(null);
|
|
163
|
+
// // }
|
|
164
|
+
// // this.viewMode = this.starterViewMode;
|
|
165
|
+
// },
|
|
166
|
+
// (err) => {}
|
|
167
|
+
// );
|
|
168
|
+
// }
|
|
169
|
+
/**
|
|
170
|
+
* Metodo per configurare gli endpoint da usare di default a partire dall'url base del server
|
|
171
|
+
* a cui si deve connettere e al token da passare per autenticarsi.
|
|
172
|
+
* Se la proprietà "baseServerUrl" è null e non sono stati configurati i vari endpoint allora
|
|
173
|
+
* non viene eseguita nessuna chiamata http per recuperare/salvare i dati.
|
|
174
|
+
*/
|
|
175
|
+
configureDefaultEndPoints() {
|
|
176
|
+
if (!this.endPointConfiguration && this.baseServerUrl) {
|
|
177
|
+
this.endPointConfiguration =
|
|
178
|
+
this.utilityHelperService.ConfigureDefaultEndPoints(this.baseServerUrl, this.userToken);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Metodo per recuperare tutti i record salvati per una particolare Form.
|
|
183
|
+
* La chiamata viene effettuata solo se è stato configurato l'endPoint da usare.
|
|
184
|
+
* La risposta della chiamata deve essere un array di oggetti di tipo "DynRecord"
|
|
185
|
+
* a partire dai quali vengono ricreati i Record usati nel client.
|
|
186
|
+
*/
|
|
187
|
+
// async getRecordsByFormID() {
|
|
188
|
+
// if (
|
|
189
|
+
// this.endPointConfiguration &&
|
|
190
|
+
// this.endPointConfiguration.Records &&
|
|
191
|
+
// this.endPointConfiguration.Records.GetByFormIDEndPoint
|
|
192
|
+
// ) {
|
|
193
|
+
// var dynamicModuleParams = [
|
|
194
|
+
// {
|
|
195
|
+
// ParamName: "EntID",
|
|
196
|
+
// ParamValue: this.form.ID,
|
|
197
|
+
// ParamType: ParamTypeEnum["Query param"],
|
|
198
|
+
// },
|
|
199
|
+
// ];
|
|
200
|
+
// await this.utilityHelperService.RunEndPointCall(
|
|
201
|
+
// this.endPointConfiguration.Records.GetByFormIDEndPoint,
|
|
202
|
+
// dynamicModuleParams,
|
|
203
|
+
// (res: Array<DynRecord>) => {
|
|
204
|
+
// this.dynamicModuleListConfig.values = new Array<Record>();
|
|
205
|
+
// res.forEach((r) => {
|
|
206
|
+
// var tmpRec: Record = new Record();
|
|
207
|
+
// tmpRec = JSON.parse(r.SerializedValues);
|
|
208
|
+
// tmpRec.ID = r.ID;
|
|
209
|
+
// tmpRec.EntID = r.EntID;
|
|
210
|
+
// tmpRec.Version = r.Version;
|
|
211
|
+
// tmpRec.userID = r.userID;
|
|
212
|
+
// tmpRec.AnswerDate = r.AnswerDate;
|
|
213
|
+
// this.dynamicModuleListConfig.values.push(tmpRec);
|
|
214
|
+
// });
|
|
215
|
+
// }
|
|
216
|
+
// );
|
|
217
|
+
// }
|
|
218
|
+
// }
|
|
219
|
+
onGoBack() {
|
|
220
|
+
this.viewMode = this.onBackTo;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Metodo invocato quando si vuole aggiungere, visualizzare o modificare un record.
|
|
224
|
+
* Se l'evento è null vuol dire che stiamo aggiungendo un nuovo record altrimenti siamo in modifica
|
|
225
|
+
* o visualizzazione. In questi ultimi due casi, se è stato configurato un endpoint per il recupero
|
|
226
|
+
* del record completo allora viene effettuata una chiamata al server, altrimenti viene usato l'oggetto selezionato.
|
|
227
|
+
* @param event Oggetto con due proprietà:
|
|
228
|
+
* "record" = oggetto da modificare/visualizzare,
|
|
229
|
+
* "onlyView" = booleano (se TRUE siamo in visualizzazione altrimenti in modifica)
|
|
230
|
+
*/
|
|
231
|
+
onAddViewEditRecord(event) {
|
|
232
|
+
if (event != null) {
|
|
233
|
+
this.onlyView = event.onlyView;
|
|
234
|
+
GlobalService.debugLog("Version modulo", event.record.Version);
|
|
235
|
+
if (this.endPointConfiguration &&
|
|
236
|
+
this.endPointConfiguration.Records &&
|
|
237
|
+
this.endPointConfiguration.Records.GetByIDEndPoint) {
|
|
238
|
+
// preparo la versione corretta del form
|
|
239
|
+
var dynamicModuleParams = [
|
|
240
|
+
{
|
|
241
|
+
ParamName: "EntID",
|
|
242
|
+
ParamValue: event.record.EntID,
|
|
243
|
+
ParamType: ParamTypeEnum["Query param"],
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
ParamName: "Version",
|
|
247
|
+
ParamValue: event.record.Version,
|
|
248
|
+
ParamType: ParamTypeEnum["Query param"],
|
|
249
|
+
},
|
|
250
|
+
];
|
|
251
|
+
GlobalService.debugLog("query params", dynamicModuleParams);
|
|
252
|
+
this.utilityHelperService.RunEndPointCall(this.endPointConfiguration.Forms.GetByIDAndVersionEndPoint, dynamicModuleParams, (res) => {
|
|
253
|
+
this.form = res;
|
|
254
|
+
this.form.Triggers = JSON.parse(this.form.ObjectTriggers);
|
|
255
|
+
GlobalService.debugLog("RES", res);
|
|
256
|
+
// preparo i dati del record
|
|
257
|
+
var dynamicRecordParams = [
|
|
258
|
+
{
|
|
259
|
+
ParamName: "id",
|
|
260
|
+
ParamValue: event.record.ID,
|
|
261
|
+
ParamType: ParamTypeEnum["Query param"],
|
|
262
|
+
},
|
|
263
|
+
];
|
|
264
|
+
this.utilityHelperService.RunEndPointCall(this.endPointConfiguration.Records.GetByIDEndPoint, dynamicRecordParams, (res) => {
|
|
265
|
+
this.selectedRecord = JSON.parse(res.SerializedValues);
|
|
266
|
+
this.selectedRecord.ID = res.ID;
|
|
267
|
+
this.selectedRecord.EntID = res.EntID;
|
|
268
|
+
this.selectedRecord.userID = res.userID;
|
|
269
|
+
this.selectedRecord.Version = res.Version;
|
|
270
|
+
this.viewMode = this.defaultViewMode;
|
|
271
|
+
this.loader = true;
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
this.selectedRecord = JSON.parse(JSON.stringify(event.record));
|
|
277
|
+
this.viewMode = this.defaultViewMode;
|
|
278
|
+
this.loader = true;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else if (this.selectedRecord != null && typeof this.selectedRecord === "string") {
|
|
282
|
+
// preparo i dati del record
|
|
283
|
+
var dynamicRecordParams = [
|
|
284
|
+
{
|
|
285
|
+
ParamName: "id",
|
|
286
|
+
ParamValue: this.selectedRecord,
|
|
287
|
+
ParamType: ParamTypeEnum["Query param"],
|
|
288
|
+
},
|
|
289
|
+
];
|
|
290
|
+
this.utilityHelperService.RunEndPointCall(this.endPointConfiguration.Records.GetByIDEndPoint, dynamicRecordParams, (res) => {
|
|
291
|
+
this.selectedRecord = JSON.parse(res.SerializedValues);
|
|
292
|
+
this.selectedRecord.ID = res.ID;
|
|
293
|
+
this.selectedRecord.EntID = res.EntID;
|
|
294
|
+
this.selectedRecord.userID = res.userID;
|
|
295
|
+
this.selectedRecord.Version = res.Version;
|
|
296
|
+
this.viewMode = this.defaultViewMode;
|
|
297
|
+
this.loader = true;
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
const dynamicModuleParams = new Array();
|
|
302
|
+
dynamicModuleParams.push({
|
|
303
|
+
ParamName: "id",
|
|
304
|
+
ParamValue: this.formID,
|
|
305
|
+
ParamType: ParamTypeEnum["Query param"],
|
|
306
|
+
});
|
|
307
|
+
this.utilityHelperService.RunEndPointCall(this.endPointConfiguration.Forms.GetByIDEndPoint, dynamicModuleParams, (res) => {
|
|
308
|
+
// console.log("success RunEndPointCall",res,this.defaultViewMode);
|
|
309
|
+
this.form = res;
|
|
310
|
+
if (this.form.ObjectTriggers != null && this.form.ObjectTriggers != "") {
|
|
311
|
+
this.form.Triggers = JSON.parse(this.form.ObjectTriggers);
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
this.form.Triggers = new Array();
|
|
315
|
+
}
|
|
316
|
+
this.selectedRecord = null;
|
|
317
|
+
if (this.answerToDuplicateId != null) {
|
|
318
|
+
this.selectedRecord = this.answerToDuplicateId;
|
|
319
|
+
this.isDuplicate = true;
|
|
320
|
+
}
|
|
321
|
+
this.onlyView = false;
|
|
322
|
+
this.viewMode = this.defaultViewMode;
|
|
323
|
+
this.loader = true;
|
|
324
|
+
}, (err) => {
|
|
325
|
+
console.error("error RunEndPointCall", err);
|
|
326
|
+
});
|
|
327
|
+
// this.selectedRecord = null;
|
|
328
|
+
// this.onlyView = false;
|
|
329
|
+
// this.viewMode = DynamicModuleViewModeEnum.COMPILE;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Metodo invocato quando si vuole aggiungere, visualizzare o modificare un record.
|
|
334
|
+
* Se l'evento è null vuol dire che stiamo aggiungendo un nuovo record altrimenti siamo in modifica
|
|
335
|
+
* o visualizzazione. In questi ultimi due casi, se è stato configurato un endpoint per il recupero
|
|
336
|
+
* del record completo allora viene effettuata una chiamata al server, altrimenti viene usato l'oggetto selezionato.
|
|
337
|
+
* @param event Oggetto con due proprietà:
|
|
338
|
+
* "record" = oggetto da modificare/visualizzare,
|
|
339
|
+
* "onlyView" = booleano (se TRUE siamo in visualizzazione altrimenti in modifica)
|
|
340
|
+
*/
|
|
341
|
+
onViewRecord(record) {
|
|
342
|
+
this.loader = false;
|
|
343
|
+
this.selectedRecord = record;
|
|
344
|
+
this.viewMode = DynamicModuleViewModeEnum.VIEW;
|
|
345
|
+
this.loader = true;
|
|
346
|
+
}
|
|
347
|
+
// #region SAVE
|
|
348
|
+
/**
|
|
349
|
+
* Metodo per gestire il componente dopo che il record è stato aggiunto o modificato.
|
|
350
|
+
* @param event Oggetto di tipo Record da salvare.
|
|
351
|
+
*/
|
|
352
|
+
onSaveRecord(event) {
|
|
353
|
+
// this.getRecordsByFormID();
|
|
354
|
+
this.saveRecord.emit(event);
|
|
355
|
+
// if (this.onSaveBackToList) {
|
|
356
|
+
// this.viewMode = DynamicModuleViewModeEnum.LIST;
|
|
357
|
+
// } else {
|
|
358
|
+
// this.viewMode = DynamicModuleViewModeEnum.NONE;
|
|
359
|
+
// }
|
|
360
|
+
this.viewMode = this.onBackTo;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Metodo per gestire il componente dopo che e stata richiesta una aggiunto o una modifica del record nell' add-form-record.
|
|
364
|
+
* @param event Oggetto di tipo Record da salvare.
|
|
365
|
+
*/
|
|
366
|
+
onAfterSaveRecord(event) {
|
|
367
|
+
this.afterSaveRecord.emit(event);
|
|
368
|
+
// if (this.onSaveBackToList) {
|
|
369
|
+
// this.viewMode = DynamicModuleViewModeEnum.LIST;
|
|
370
|
+
// } else {
|
|
371
|
+
// this.viewMode = DynamicModuleViewModeEnum.NONE;
|
|
372
|
+
// }
|
|
373
|
+
this.viewMode = this.onBackTo;
|
|
374
|
+
}
|
|
375
|
+
onSaveJson(record) {
|
|
376
|
+
this.SaveJSON.emit(record);
|
|
377
|
+
}
|
|
378
|
+
// #endregion SAVE
|
|
379
|
+
reload() {
|
|
380
|
+
this.loader = false;
|
|
381
|
+
setTimeout(() => this.loader = true, 50);
|
|
382
|
+
}
|
|
383
|
+
//#region DELETE
|
|
384
|
+
/**
|
|
385
|
+
* Metodo per eliminare un record dalla lista.
|
|
386
|
+
* @param record Record da eliminare selezionato sulla eqp-table.
|
|
387
|
+
*/
|
|
388
|
+
onDeleteRecord(record) {
|
|
389
|
+
console.log("onDeleteRecord", record);
|
|
390
|
+
if (this.endPointConfiguration &&
|
|
391
|
+
this.endPointConfiguration.Records.DeleteEndPoint) {
|
|
392
|
+
EqpDynamicModuleDialogService.Confirm("Eliminare il record selezionato?", () => {
|
|
393
|
+
var dynamicModuleParams = [
|
|
394
|
+
{
|
|
395
|
+
ParamName: "id",
|
|
396
|
+
ParamValue: record.record.ID,
|
|
397
|
+
ParamType: ParamTypeEnum["Query param"],
|
|
398
|
+
},
|
|
399
|
+
];
|
|
400
|
+
this.utilityHelperService.RunEndPointCall(this.endPointConfiguration.Records.DeleteEndPoint, dynamicModuleParams, (res) => {
|
|
401
|
+
// this.getRecordsByFormID();
|
|
402
|
+
this.afterDeleteRecord.emit(record);
|
|
403
|
+
// this.reloadTables()
|
|
404
|
+
this.reload();
|
|
405
|
+
});
|
|
406
|
+
}, false, "Richiesta conferma");
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
this.deleteRecord.emit(record);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
onAfterDeleteRecord(record) {
|
|
413
|
+
this.loader = false;
|
|
414
|
+
setTimeout(() => this.ngOnInit(), 50);
|
|
415
|
+
this.afterDeleteRecord.emit(record);
|
|
416
|
+
}
|
|
417
|
+
//#ednregion DELETE
|
|
418
|
+
onAfterFilter(ev) {
|
|
419
|
+
this.afterFilter.emit(ev);
|
|
420
|
+
}
|
|
421
|
+
onDragStarted(el) {
|
|
422
|
+
this.dragStarted.emit(el);
|
|
423
|
+
}
|
|
424
|
+
onDragReleased() {
|
|
425
|
+
this.dragReleased.emit();
|
|
426
|
+
}
|
|
427
|
+
onExternalComponentOut(ev) {
|
|
428
|
+
this.out.emit(ev);
|
|
429
|
+
}
|
|
430
|
+
onFireTrigger(ev) {
|
|
431
|
+
this.fireTrigger.emit(ev);
|
|
432
|
+
}
|
|
433
|
+
parseValueString(field, record) {
|
|
434
|
+
var output = null;
|
|
435
|
+
if (field.Formula) {
|
|
436
|
+
output = {};
|
|
437
|
+
const temp = UtilityHelperService.EvaluateFieldFormula(field.Formula, record, null);
|
|
438
|
+
output = GlobalService.stringToValuePairs(temp);
|
|
439
|
+
}
|
|
440
|
+
else if (field.ValuePairs != null) {
|
|
441
|
+
output = field.ValuePairs;
|
|
442
|
+
}
|
|
443
|
+
else if (field.ValueString != null && field.ValueString != "") {
|
|
444
|
+
output = GlobalService.stringToValuePairs(field.ValueString);
|
|
445
|
+
}
|
|
446
|
+
return output;
|
|
447
|
+
}
|
|
448
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EqpDynamicModuleComponent, deps: [{ token: i1.UtilityHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
449
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EqpDynamicModuleComponent, selector: "eqp-dynamic-module", inputs: { debugMode: "debugMode", configurations: "configurations", formID: "formID", starterViewMode: "starterViewMode", userID: "userID", orgaID: "orgaID", showTitle: "showTitle", showBackButton: "showBackButton", showSaveButton: "showSaveButton", values: "values", FormJSON: "FormJSON", externalButtons: "externalButtons", listViewRecordTitle: "listViewRecordTitle", defaultListViewFunction: "defaultListViewFunction", defaultListActions: "defaultListActions", onSaveBackToList: "onSaveBackToList", onBackTo: "onBackTo", filterResultViewMode: "filterResultViewMode", additionalParams: "additionalParams", additionalInfo: "additionalInfo", updateInfo: "updateInfo", prefilterParams: "prefilterParams", showNewSearchButton: "showNewSearchButton", answerToDuplicateId: "answerToDuplicateId", highlightFilter: "highlightFilter", selectedRecord: "selectedRecord", isDraggableListView: "isDraggableListView", QueryEditorComponent: "QueryEditorComponent" }, outputs: { saveRecord: "saveRecord", deleteRecord: "deleteRecord", SaveJSON: "SaveJSON", afterFilter: "afterFilter", afterSaveRecord: "afterSaveRecord", afterDeleteRecord: "afterDeleteRecord", dragStarted: "dragStarted", dragReleased: "dragReleased", out: "out", fireTrigger: "fireTrigger" }, ngImport: i0, template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n<!-- [record]=\"'b3d943c0-9c01-4973-948b-7aa418634f72'\" -->\r\n<view-form-record\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.VIEW\"\r\n class=\"dynamic-module-view\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord\"\r\n (goBackEvent)=\"onGoBack()\"\r\n>\r\n</view-form-record>\r\n\r\n<graphs\r\n*ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.GRAPHS\"\r\nclass=\"dynamic-module-view\"\r\n[endPointConfiguration]=\"endPointConfiguration\"\r\n[form]=\"form\"\r\n[formID]=\"formID\"\r\n[userID]=\"userID\"\r\n[configurations]=\"dynamicModuleCompileConfig\"\r\n>\r\n</graphs>\r\n\r\n<filter-form-statistic\r\n*ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.FILTER\"\r\n class=\"dynamic-module-compile\"\r\n [form]=\"form\"\r\n [formID]=\"formID\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [defaultListActions]=\"defaultListActions\"\r\n [filterResultViewMode]=\"filterResultViewMode\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"dynamicModuleCompileConfig\"\r\n (afterFilter)=\"onAfterFilter($event)\"\r\n>\r\n</filter-form-statistic>\r\n\r\n<add-form-record\r\n*ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.COMPILE\"\r\n class=\"dynamic-module-compile\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [isDuplicate]=\"isDuplicate\"\r\n\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n [orgaID]=\"orgaID\"\r\n\r\n [configurations]=\"dynamicModuleCompileConfig\"\r\n\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"onSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n>\r\n</add-form-record>\r\n\r\n<list-form-record\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.LIST\"\r\n class=\"dynamic-module-list\"\r\n [formID]=\"formID\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n\r\n [configurations]=\"dynamicModuleListConfig\"\r\n [externalButtons]=\"externalButtons\"\r\n\r\n (onViewRecord)=\"onViewRecord($event)\"\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\"\r\n (onAfterDeleteRecord)=\"onAfterDeleteRecord($event)\"\r\n>\r\n</list-form-record>\r\n\r\n<repair-form-fields\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.REPAIR\"\r\n class=\"dynamic-module-repair\"\r\n [formID]=\"formID\"\r\n\r\n [configurations]=\"dynamicModuleRepairConfig\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n\r\n (onSaveJson)=\"onSaveJson($event)\"\r\n>\r\n</repair-form-fields>\r\n\r\n<list-view-form-record\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.LISTWIEW\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"dynamicModuleListConfig\"\r\n [compileConfigurations]=\"dynamicModuleCompileConfig\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [userID]=\"userID\"\r\n [orgaID]=\"orgaID\"\r\n [highlightFilter]=\"highlightFilter\"\r\n [defaultListViewFunction]=\"defaultListViewFunction\"\r\n [externalButtons]=\"externalButtons\"\r\n [onlyView]=\"!defaultListActions.edit\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\"\r\n (saveRecordEvent)=\"onSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (dragStarted)=\"onDragStarted($event)\"\r\n (dragReleased)=\"onDragReleased()\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n</list-view-form-record>\r\n", styles: ["::ng-deep mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ListFormRecordComponent, selector: "list-form-record", inputs: ["configurations", "endPointConfiguration", "formID", "form", "externalButtons"], outputs: ["onViewRecord", "onAddViewEditRecord", "onDeleteRecord", "onAfterDeleteRecord"] }, { kind: "component", type: i4.ListViewFormRecordComponent, selector: "list-view-form-record", inputs: ["configurations", "compileConfigurations", "endPointConfiguration", "userID", "formID", "orgaID", "form", "defaultListViewFunction", "externalButtons", "onlyView", "records", "highlightFilter", "QueryEditorComponent"], outputs: ["onAddViewEditRecord", "onDeleteRecord", "saveRecordEvent", "afterSaveRecordEvent", "dragStarted", "dragReleased", "out", "fireTrigger"] }, { kind: "component", type: i5.AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "onlyView", "isDuplicate", "inConfig", "showAllFields", "QueryEditorComponent"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger"] }, { kind: "component", type: i6.ViewFormRecordComponent, selector: "view-form-record", inputs: ["endPointConfiguration", "record", "showBackButton"], outputs: ["goBackEvent"] }, { kind: "component", type: i7.SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "component", type: i8.RepairFormFieldsComponent, selector: "repair-form-fields", inputs: ["configurations", "formID", "endPointConfiguration"], outputs: ["onSaveJson"] }, { kind: "component", type: i9.FilterFormStatisticComponent, selector: "filter-form-statistic", inputs: ["configurations", "endPointConfiguration", "userID", "externalButtons", "formID", "form", "record", "onlyView", "defaultListActions", "filterResultViewMode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "afterFilter"] }, { kind: "component", type: i10.GraphsComponent, selector: "graphs", inputs: ["configurations", "endPointConfiguration", "userID", "formID", "form"] }] });
|
|
450
|
+
}
|
|
451
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EqpDynamicModuleComponent, decorators: [{
|
|
452
|
+
type: Component,
|
|
453
|
+
args: [{ selector: "eqp-dynamic-module", template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n<!-- [record]=\"'b3d943c0-9c01-4973-948b-7aa418634f72'\" -->\r\n<view-form-record\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.VIEW\"\r\n class=\"dynamic-module-view\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord\"\r\n (goBackEvent)=\"onGoBack()\"\r\n>\r\n</view-form-record>\r\n\r\n<graphs\r\n*ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.GRAPHS\"\r\nclass=\"dynamic-module-view\"\r\n[endPointConfiguration]=\"endPointConfiguration\"\r\n[form]=\"form\"\r\n[formID]=\"formID\"\r\n[userID]=\"userID\"\r\n[configurations]=\"dynamicModuleCompileConfig\"\r\n>\r\n</graphs>\r\n\r\n<filter-form-statistic\r\n*ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.FILTER\"\r\n class=\"dynamic-module-compile\"\r\n [form]=\"form\"\r\n [formID]=\"formID\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [defaultListActions]=\"defaultListActions\"\r\n [filterResultViewMode]=\"filterResultViewMode\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n\r\n [configurations]=\"dynamicModuleCompileConfig\"\r\n (afterFilter)=\"onAfterFilter($event)\"\r\n>\r\n</filter-form-statistic>\r\n\r\n<add-form-record\r\n*ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.COMPILE\"\r\n class=\"dynamic-module-compile\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [isDuplicate]=\"isDuplicate\"\r\n\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n [orgaID]=\"orgaID\"\r\n\r\n [configurations]=\"dynamicModuleCompileConfig\"\r\n\r\n (out)=\"onExternalComponentOut($event)\"\r\n (saveRecordEvent)=\"onSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n>\r\n</add-form-record>\r\n\r\n<list-form-record\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.LIST\"\r\n class=\"dynamic-module-list\"\r\n [formID]=\"formID\"\r\n\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n\r\n [configurations]=\"dynamicModuleListConfig\"\r\n [externalButtons]=\"externalButtons\"\r\n\r\n (onViewRecord)=\"onViewRecord($event)\"\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\"\r\n (onAfterDeleteRecord)=\"onAfterDeleteRecord($event)\"\r\n>\r\n</list-form-record>\r\n\r\n<repair-form-fields\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.REPAIR\"\r\n class=\"dynamic-module-repair\"\r\n [formID]=\"formID\"\r\n\r\n [configurations]=\"dynamicModuleRepairConfig\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n\r\n (onSaveJson)=\"onSaveJson($event)\"\r\n>\r\n</repair-form-fields>\r\n\r\n<list-view-form-record\r\n *ngIf=\"loader && viewMode == dynamicModuleViewModeEnum.LISTWIEW\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"dynamicModuleListConfig\"\r\n [compileConfigurations]=\"dynamicModuleCompileConfig\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [userID]=\"userID\"\r\n [orgaID]=\"orgaID\"\r\n [highlightFilter]=\"highlightFilter\"\r\n [defaultListViewFunction]=\"defaultListViewFunction\"\r\n [externalButtons]=\"externalButtons\"\r\n [onlyView]=\"!defaultListActions.edit\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\"\r\n\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\"\r\n (saveRecordEvent)=\"onSaveRecord($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n (dragStarted)=\"onDragStarted($event)\"\r\n (dragReleased)=\"onDragReleased()\"\r\n (fireTrigger)=\"onFireTrigger($event)\"\r\n >\r\n</list-view-form-record>\r\n", styles: ["::ng-deep mat-form-field{width:100%}\n"] }]
|
|
454
|
+
}], ctorParameters: () => [{ type: i1.UtilityHelperService }, { type: i0.ChangeDetectorRef }], propDecorators: { debugMode: [{
|
|
455
|
+
type: Input
|
|
456
|
+
}], configurations: [{
|
|
457
|
+
type: Input
|
|
458
|
+
}], formID: [{
|
|
459
|
+
type: Input
|
|
460
|
+
}], starterViewMode: [{
|
|
461
|
+
type: Input
|
|
462
|
+
}], userID: [{
|
|
463
|
+
type: Input
|
|
464
|
+
}], orgaID: [{
|
|
465
|
+
type: Input
|
|
466
|
+
}], showTitle: [{
|
|
467
|
+
type: Input
|
|
468
|
+
}], showBackButton: [{
|
|
469
|
+
type: Input
|
|
470
|
+
}], showSaveButton: [{
|
|
471
|
+
type: Input
|
|
472
|
+
}], values: [{
|
|
473
|
+
type: Input
|
|
474
|
+
}], FormJSON: [{
|
|
475
|
+
type: Input
|
|
476
|
+
}], externalButtons: [{
|
|
477
|
+
type: Input
|
|
478
|
+
}], listViewRecordTitle: [{
|
|
479
|
+
type: Input
|
|
480
|
+
}], defaultListViewFunction: [{
|
|
481
|
+
type: Input
|
|
482
|
+
}], defaultListActions: [{
|
|
483
|
+
type: Input
|
|
484
|
+
}], onSaveBackToList: [{
|
|
485
|
+
type: Input
|
|
486
|
+
}], onBackTo: [{
|
|
487
|
+
type: Input
|
|
488
|
+
}], filterResultViewMode: [{
|
|
489
|
+
type: Input
|
|
490
|
+
}], additionalParams: [{
|
|
491
|
+
type: Input
|
|
492
|
+
}], additionalInfo: [{
|
|
493
|
+
type: Input
|
|
494
|
+
}], updateInfo: [{
|
|
495
|
+
type: Input
|
|
496
|
+
}], prefilterParams: [{
|
|
497
|
+
type: Input
|
|
498
|
+
}], showNewSearchButton: [{
|
|
499
|
+
type: Input
|
|
500
|
+
}], answerToDuplicateId: [{
|
|
501
|
+
type: Input
|
|
502
|
+
}], highlightFilter: [{
|
|
503
|
+
type: Input
|
|
504
|
+
}], selectedRecord: [{
|
|
505
|
+
type: Input
|
|
506
|
+
}], isDraggableListView: [{
|
|
507
|
+
type: Input
|
|
508
|
+
}], QueryEditorComponent: [{
|
|
509
|
+
type: Input
|
|
510
|
+
}], saveRecord: [{
|
|
511
|
+
type: Output
|
|
512
|
+
}], deleteRecord: [{
|
|
513
|
+
type: Output
|
|
514
|
+
}], SaveJSON: [{
|
|
515
|
+
type: Output
|
|
516
|
+
}], afterFilter: [{
|
|
517
|
+
type: Output
|
|
518
|
+
}], afterSaveRecord: [{
|
|
519
|
+
type: Output
|
|
520
|
+
}], afterDeleteRecord: [{
|
|
521
|
+
type: Output
|
|
522
|
+
}], dragStarted: [{
|
|
523
|
+
type: Output
|
|
524
|
+
}], dragReleased: [{
|
|
525
|
+
type: Output
|
|
526
|
+
}], out: [{
|
|
527
|
+
type: Output
|
|
528
|
+
}], fireTrigger: [{
|
|
529
|
+
type: Output
|
|
530
|
+
}] } });
|
|
531
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvZXhwb3J0ZWQvZXFwLWR5bmFtaWMtbW9kdWxlL2VxcC1keW5hbWljLW1vZHVsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS9lcXAtZHluYW1pYy1tb2R1bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHOUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFdEgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDcEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFaEYsT0FB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QkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQStCSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxHQUFHO3NCQUFaLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29udGV4dC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUdlbmVyYWxDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVMaXN0Q29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVSZXBhaXJDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVSZXBhaXJDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZVZpZXdNb2RlRW51bSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bVwiO1xyXG5pbXBvcnQge1xyXG4gIEVuZFBvaW50Q29uZmlndXJhdGlvbixcclxuICBFbmRQb2ludERhdGFQYXJhbXMsXHJcbiAgUGFyYW1UeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBGb3JtLCBGb3JtVHlwZUVudW0gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVMaXN0Rm9ybVJlY29yZEFjdGlvbnNEZWZhdWx0XCI7XHJcbmltcG9ydCB7IER5blJlY29yZCwgUmVjb3JkLCBSZWNvcmRCdXR0b24gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBGaWx0ZXJSZXN1bHRUeXBlIH0gZnJvbSBcIkBlcXByb2plY3QvZXFwLWZpbHRlcnNcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUZpbHRlclJlc3VsdFZpZXdNb2RlRW51bSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUZpbHRlclJlc3VsdFZpZXdNb2RlRW51bS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGV2ZW50T3V0IH0gZnJvbSBcIi4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IEZpcmVUcmlnZ2VyLCBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy90cmlnZ2VyLm1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJlcXAtZHluYW1pYy1tb2R1bGVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2VxcC1keW5hbWljLW1vZHVsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9lcXAtZHluYW1pYy1tb2R1bGUuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcXBEeW5hbWljTW9kdWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgZGVidWdNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZztcclxuICBASW5wdXQoKSBmb3JtSUQ6IHN0cmluZztcclxuICBASW5wdXQoKSBzdGFydGVyVmlld01vZGU6IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0gPSBEeW5hbWljTW9kdWxlVmlld01vZGVFbnVtLkxJU1Q7XHJcblxyXG4gIEBJbnB1dCgpIHVzZXJJRDogc3RyaW5nID0gXCIwXCI7XHJcbiAgQElucHV0KCkgb3JnYUlEOiBzdHJpbmcgPSBcIjBcIjsgIFxyXG4gIEBJbnB1dCgpIHNob3dUaXRsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0JhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dTYXZlQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSB2YWx1ZXM6IEFycmF5PFJlY29yZD4gPSBudWxsO1xyXG4gIEBJbnB1dCgpIEZvcm1KU09OID0gXCJcIjtcclxuICBASW5wdXQoKSBleHRlcm5hbEJ1dHRvbnM6IEFycmF5PFJlY29yZEJ1dHRvbj4gPSBuZXcgQXJyYXk8UmVjb3JkQnV0dG9uPigpO1xyXG4gIEBJbnB1dCgpIGxpc3RWaWV3UmVjb3JkVGl0bGU6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRMaXN0Vmlld0Z1bmN0aW9uOiBGdW5jdGlvbiA9IG51bGw7XHJcbiAgQElucHV0KCkgZGVmYXVsdExpc3RBY3Rpb25zOiBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCA9IG5ldyBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCgpO1xyXG4gIEBJbnB1dCgpIG9uU2F2ZUJhY2tUb0xpc3QgPSBmYWxzZTtcclxuICBASW5wdXQoKSBvbkJhY2tUbzogRHluYW1pY01vZHVsZVZpZXdNb2RlRW51bSA9IG51bGw7XHJcbiAgQElucHV0KCkgZmlsdGVyUmVzdWx0Vmlld01vZGU6IER5bmFtaWNNb2R1bGVGaWx0ZXJSZXN1bHRWaWV3TW9kZUVudW0gPSBEeW5hbWljTW9kdWxlRmlsdGVyUmVzdWx0Vmlld01vZGVFbnVtLklOVEVSTkFMX0VRUFRBQkxFO1xyXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxQYXJhbXM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgYWRkaXRpb25hbEluZm86IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgdXBkYXRlSW5mbzogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBwcmVmaWx0ZXJQYXJhbXM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgc2hvd05ld1NlYXJjaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgYW5zd2VyVG9EdXBsaWNhdGVJZDogYW55O1xyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodEZpbHRlcjogYW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUmVjb3JkOiBSZWNvcmQgfCBzdHJpbmcgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGlzRHJhZ2dhYmxlTGlzdFZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBhbnk7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcblxyXG4gIGNvbnRleHQ6IENvbnRleHQgPSBuZXcgQ29udGV4dCgpO1xyXG4gIC8qKlxyXG4gICAqIFVybCBkZWwgc2VydmVyIGRhIGNoaWFtYXJlIHBlciByZWN1cGVyYXJlLCBzYWx2YXJlIG8gZWxpbWluYXJlIGkgcmVjb3JkLlxyXG4gICAqIFVzYXRvIHBlciBjcmVhcmUgbGEgY29uZmlndXJhemlvbmUgZGkgZGVmYXVsdCBkZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZS5cclxuICAgKi9cclxuICBiYXNlU2VydmVyVXJsOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBUb2tlbiBkYSB1c2FyZSBuZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSBvIHNhbHZhcmUgaSByZWNvcmQuXHJcbiAgICogVXNhdG8gc29sbyBzZSB2aWVuZSBwb3BvbGF0YSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiLlxyXG4gICAqL1xyXG4gIHVzZXJUb2tlbjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJhemlvbmUgZGVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUgcGVyIHJlY3VwZXJhcmUgbyBzYWx2YXJlIGkgZGF0aS5cclxuICAgKiBQdcOyIGVzc2VyZSBkZWZpbml0YSBkYWxsJ3V0ZW50ZSBvcHB1cmUgbGFzY2lhdGEgbnVsbCwgdmllbmUgcG9wb2xhdGEgY29uIGRlaVxyXG4gICAqIHZhbG9yaSBkaSBkZWZhdWx0IHNlIHZpZW5lIHZhbG9yaXp6YXRhIGxhIHByb3ByaWV0w6AgXCJiYXNlU2VydmVyVXJsXCIgYWx0cmltZW50aVxyXG4gICAqIHZpZW5lIGxhc2NpYXRhIG51bGwgZSBub24gdmllbmUgZXNlZ3VpdGEgbmVzc3VuYSBjaGlhbWF0YSBhbCBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb24gPSBudWxsO1xyXG5cclxuICAvL0BJbnB1dCgpIGZvcm06IEZvcm0gPSBuZXcgRm9ybSgpO1xyXG4gIC8vIGRlZmF1bHRMaXN0QWN0aW9uczogZHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQgPSBuZXcgZHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQoKTtcclxuICAvLyBGb3JtSlNPTjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRpIGVtZXNzaSBxdWFuZG8gc2kgc2FsdmEsIGVsaW1pbmEgbyBkdXBsaWNhIHVuIHJlY29yZFxyXG4gICAqIHNlIG5vbiDDqCBzdGF0byBzcGVjaWZpY2F0byB1biBlbmRwb2ludCBkYSBjaGlhbWFyZS5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2F2ZVJlY29yZDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIEBPdXRwdXQoKSBTYXZlSlNPTjogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJGaWx0ZXI6IEV2ZW50RW1pdHRlcjxBcnJheTxEeW5SZWNvcmQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8RHluUmVjb3JkPj4oKTtcclxuICAvKipcclxuICAgKiBFdmVudGkgZW1lc3NpIERPUE8gYXZlciBlc2VndWl0byB1bmEgY2hpYW1hdGEgYWwgc2VydmVyIHBlciBpbCBzYWx2YXRhZ2dpbyxcclxuICAgKiBsJ2VsaW1pbmF6aW9uZSBvIGxhIGR1cGxpY2F6aW9uZSBkaSB1biByZWNvcmQgYWxsJ2VuZHBvaW50IHNwZWNpZmljYXRvLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBhZnRlclNhdmVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyRGVsZXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9XHJcbiAgICBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgZHJhZ1N0YXJ0ZWQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGRyYWdSZWxlYXNlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvdXQ6IEV2ZW50RW1pdHRlcjxldmVudE91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPGV2ZW50T3V0PigpO1xyXG4gIEBPdXRwdXQoKSBmaXJlVHJpZ2dlcjogRXZlbnRFbWl0dGVyPEZpcmVUcmlnZ2VyPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlyZVRyaWdnZXI+KCk7XHJcblxyXG4gIGZvcm06IEZvcm0gPSBuZXcgRm9ybSgpO1xyXG4gIGxhc3Rmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBGb3JtVHlwZUVudW0gPSBGb3JtVHlwZUVudW07XHJcbiAgZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bSA9IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW07XHJcbiAgb25seVZpZXc6IGJvb2xlYW47XHJcbiAgdmlld01vZGU6IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW07XHJcbiAgZGVmYXVsdFZpZXdNb2RlOiBEeW5hbWljTW9kdWxlVmlld01vZGVFbnVtO1xyXG5cclxuICBkeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZzogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWc7XHJcbiAgZHluYW1pY01vZHVsZUxpc3RDb25maWc6IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnO1xyXG4gIGR5bmFtaWNNb2R1bGVSZXBhaXJDb25maWc6IER5bmFtaWNNb2R1bGVSZXBhaXJDb25maWc7XHJcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNEdXBsaWNhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdNb2RlID0gdGhpcy5kZWJ1Z01vZGU7XHJcblxyXG4gICAgdGhpcy5vbkJhY2tUbyA9ICh0aGlzLm9uQmFja1RvID09IG51bGwpID8gdGhpcy5zdGFydGVyVmlld01vZGUgOiB0aGlzLm9uQmFja1RvO1xyXG5cclxuICAgIHRoaXMuZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgPSBuZXcgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcoXHJcbiAgICAgIHRoaXMuc2hvd1RpdGxlLFxyXG4gICAgICB0aGlzLnNob3dTYXZlQnV0dG9uLFxyXG4gICAgICB0aGlzLnNob3dCYWNrQnV0dG9uLFxyXG4gICAgICB0aGlzLnVzZXJJRCxcclxuICAgICAgdGhpcy5hZGRpdGlvbmFsUGFyYW1zLFxyXG4gICAgICB0aGlzLmFkZGl0aW9uYWxJbmZvLFxyXG4gICAgICB0aGlzLnByZWZpbHRlclBhcmFtcyxcclxuICAgICAgdGhpcy5zaG93TmV3U2VhcmNoQnV0dG9uXHJcbiAgICApO1xyXG4gICAgdGhpcy5keW5hbWljTW9kdWxlTGlzdENvbmZpZyA9IG5ldyBEeW5hbWljTW9kdWxlTGlzdENvbmZpZyhcclxuICAgICAgdGhpcy5zaG93VGl0bGUsXHJcbiAgICAgIHRoaXMudmFsdWVzLFxyXG4gICAgICB0aGlzLmRlZmF1bHRMaXN0QWN0aW9ucyxcclxuICAgICAgdGhpcy51c2VySUQsXHJcbiAgICAgIG5ldyBBcnJheTxSZWNvcmRCdXR0b24+KCksXHJcbiAgICAgIHRoaXMudXBkYXRlSW5mbyxcclxuICAgICAgdGhpcy5saXN0Vmlld1JlY29yZFRpdGxlLFxyXG4gICAgICB0aGlzLmlzRHJhZ2dhYmxlTGlzdFZpZXdcclxuICAgICk7XHJcbiAgICB0aGlzLmR5bmFtaWNNb2R1bGVSZXBhaXJDb25maWcgPSBuZXcgRHluYW1pY01vZHVsZVJlcGFpckNvbmZpZyhcclxuICAgICAgdGhpcy5Gb3JtSlNPTlxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmNvbnRleHQ7XHJcbiAgICB0aGlzLmJhc2VTZXJ2ZXJVcmwgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmJhc2VTZXJ2ZXJVcmw7XHJcbiAgICB0aGlzLnVzZXJUb2tlbiA9IHRoaXMuY29uZmlndXJhdGlvbnMudXNlclRva2VuO1xyXG4gICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICAgIC8vdGhpcy5mb3JtSUQgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVHZW5lcmFsQ29uZmlnLmZvcm1JRFxyXG5cclxuICAgIC8vIHRoaXMudmlld01vZGUgPSB0aGlzLnN0YXJ0ZXJWaWV3TW9kZVxyXG4gICAgVXRpbGl0eUhlbHBlclNlcnZpY2UuU2V0Q29udGV4dCh0aGlzLmNvbnRleHQpO1xyXG4gICAgXHJcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5Gb3JtSlNPTiA9PSBcIlwiKSB7XHJcbiAgICAgIC8vIHByZW5kZSBpbCBmb3JtIGUgaW1wb3N0YSBsYSB2aWV3bW9kZSBjb3JyZXR0YVxyXG4gICAgICAvLyBhd2FpdCB0aGlzLmdldEZvcm1CeUlEKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy52aWV3TW9kZSA9IHRoaXMuc3RhcnRlclZpZXdNb2RlO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImR5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnXCIsIHRoaXMuZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcpXHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWVcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgICBpZiAodGhpcy5zdGFydGVyVmlld01vZGUgPT0gRHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5DT01QSUxFIHx8IHRoaXMuc3RhcnRlclZpZXdNb2RlID09IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0uRklMVEVSKSB7XHJcbiAgICAgIC8vIGRhIHZlZGVyZSBpbiBnZXRGb3JtQnlJRFxyXG4gICAgICB0aGlzLmRlZmF1bHRWaWV3TW9kZSA9IHRoaXMuc3RhcnRlclZpZXdNb2RlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub25BZGRWaWV3RWRpdFJlY29yZChudWxsKSwgMTAwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZpZXdNb2RlID0gdGhpcy5zdGFydGVyVmlld01vZGU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgc2V0VGltZW91dChfID0+IHsgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkgfSwgMCk7IC8vIHJlZnJlc2ggdWlcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBnZXRGb3JtQnlJRChpZDogc3RyaW5nID0gdGhpcy5mb3JtSUQpIHtcclxuICAvLyAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gIC8vICAgICBuZXcgQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPigpO1xyXG4gIC8vICAgZHluYW1pY01vZHVsZVBhcmFtcy5wdXNoKHtcclxuICAvLyAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgLy8gICAgIFBhcmFtVmFsdWU6IGlkLFxyXG4gIC8vICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgLy8gICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludCxcclxuICAvLyAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAvLyAgICAgKHJlczogRm9ybSkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMubGFzdGZvcm0gPSByZXM7XHJcbiAgLy8gICAgICAgdGhpcy5mb3JtID0gcmVzO1xyXG4gIC8vICAgICAgIC8vIHRoaXMuZ2V0UmVjb3Jkc0J5Rm9ybUlEKCk7XHJcblxyXG4gIC8vICAgICAgIC8vIGlmICh0aGlzLnN0YXJ0ZXJWaWV3TW9kZSA9PSBEeW5hbWljTW9kdWxlVmlld01vZGVFbnVtLkNPTVBJTEUpIHtcclxuICAvLyAgICAgICAvLyAgIHRoaXMub25BZGRWaWV3RWRpdFJlY29yZChudWxsKTtcclxuICAvLyAgICAgICAvLyB9XHJcbiAgLy8gICAgICAgLy8gdGhpcy52aWV3TW9kZSA9IHRoaXMuc3RhcnRlclZpZXdNb2RlO1xyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICAoZXJyKSA9PiB7fVxyXG4gIC8vICAgKTtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY29uZmlndXJhcmUgZ2xpIGVuZHBvaW50IGRhIHVzYXJlIGRpIGRlZmF1bHQgYSBwYXJ0aXJlIGRhbGwndXJsIGJhc2UgZGVsIHNlcnZlclxyXG4gICAqIGEgY3VpIHNpIGRldmUgY29ubmV0dGVyZSBlIGFsIHRva2VuIGRhIHBhc3NhcmUgcGVyIGF1dGVudGljYXJzaS5cclxuICAgKiBTZSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiIMOoIG51bGwgZSBub24gc29ubyBzdGF0aSBjb25maWd1cmF0aSBpIHZhcmkgZW5kcG9pbnQgYWxsb3JhXHJcbiAgICogbm9uIHZpZW5lIGVzZWd1aXRhIG5lc3N1bmEgY2hpYW1hdGEgaHR0cCBwZXIgcmVjdXBlcmFyZS9zYWx2YXJlIGkgZGF0aS5cclxuICAgKi9cclxuICBjb25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJiB0aGlzLmJhc2VTZXJ2ZXJVcmwpIHtcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gPVxyXG4gICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuQ29uZmlndXJlRGVmYXVsdEVuZFBvaW50cyhcclxuICAgICAgICAgIHRoaXMuYmFzZVNlcnZlclVybCxcclxuICAgICAgICAgIHRoaXMudXNlclRva2VuXHJcbiAgICAgICAgKTsgICAgXHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmVjdXBlcmFyZSB0dXR0aSBpIHJlY29yZCBzYWx2YXRpIHBlciB1bmEgcGFydGljb2xhcmUgRm9ybS5cclxuICAgKiBMYSBjaGlhbWF0YSB2aWVuZSBlZmZldHR1YXRhIHNvbG8gc2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gbCdlbmRQb2ludCBkYSB1c2FyZS5cclxuICAgKiBMYSByaXNwb3N0YSBkZWxsYSBjaGlhbWF0YSBkZXZlIGVzc2VyZSB1biBhcnJheSBkaSBvZ2dldHRpIGRpIHRpcG8gXCJEeW5SZWNvcmRcIlxyXG4gICAqIGEgcGFydGlyZSBkYWkgcXVhbGkgdmVuZ29ubyByaWNyZWF0aSBpIFJlY29yZCB1c2F0aSBuZWwgY2xpZW50LlxyXG4gICAqL1xyXG4gIC8vIGFzeW5jIGdldFJlY29yZHNCeUZvcm1JRCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiZcclxuICAgIC8vICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJlxyXG4gICAgLy8gICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnRcclxuICAgIC8vICkge1xyXG4gICAgLy8gICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgIC8vICAgICB7XHJcbiAgICAvLyAgICAgICBQYXJhbU5hbWU6IFwiRW50SURcIixcclxuICAgIC8vICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5JRCxcclxuICAgIC8vICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgLy8gICAgIH0sXHJcbiAgICAvLyAgIF07XHJcbiAgICAvLyAgIGF3YWl0IHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgLy8gICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlGb3JtSURFbmRQb2ludCxcclxuICAgIC8vICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgLy8gICAgIChyZXM6IEFycmF5PER5blJlY29yZD4pID0+IHtcclxuICAgIC8vICAgICAgIHRoaXMuZHluYW1pY01vZHVsZUxpc3RDb25maWcudmFsdWVzID0gbmV3IEFycmF5PFJlY29yZD4oKTtcclxuICAgIC8vICAgICAgIHJlcy5mb3JFYWNoKChyKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIHZhciB0bXBSZWM6IFJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuICAgIC8vICAgICAgICAgdG1wUmVjID0gSlNPTi5wYXJzZShyLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgLy8gICAgICAgICB0bXBSZWMuSUQgPSByLklEO1xyXG4gICAgLy8gICAgICAgICB0bXBSZWMuRW50SUQgPSByLkVudElEO1xyXG4gICAgLy8gICAgICAgICB0bXBSZWMuVmVyc2lvbiA9IHIuVmVyc2lvbjtcclxuICAgIC8vICAgICAgICAgdG1wUmVjLnVzZXJJRCA9IHIudXNlcklEO1xyXG4gICAgLy8gICAgICAgICB0bXBSZWMuQW5zd2VyRGF0ZSA9IHIuQW5zd2VyRGF0ZTtcclxuICAgIC8vICAgICAgICAgdGhpcy5keW5hbWljTW9kdWxlTGlzdENvbmZpZy52YWx1ZXMucHVzaCh0bXBSZWMpO1xyXG4gICAgLy8gICAgICAgfSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICApO1xyXG4gICAgLy8gfVxyXG4gIC8vIH1cclxuXHJcbiAgb25Hb0JhY2soKXtcclxuICAgIHRoaXMudmlld01vZGUgPSB0aGlzLm9uQmFja1RvIDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBxdWFuZG8gc2kgdnVvbGUgYWdnaXVuZ2VyZSwgdmlzdWFsaXp6YXJlIG8gbW9kaWZpY2FyZSB1biByZWNvcmQuXHJcbiAgICogU2UgbCdldmVudG8gw6ggbnVsbCB2dW9sIGRpcmUgY2hlIHN0aWFtbyBhZ2dpdW5nZW5kbyB1biBudW92byByZWNvcmQgYWx0cmltZW50aSBzaWFtbyBpbiBtb2RpZmljYVxyXG4gICAqIG8gdmlzdWFsaXp6YXppb25lLiBJbiBxdWVzdGkgdWx0aW1pIGR1ZSBjYXNpLCBzZSDDqCBzdGF0byBjb25maWd1cmF0byB1biBlbmRwb2ludCBwZXIgaWwgcmVjdXBlcm9cclxuICAgKiBkZWwgcmVjb3JkIGNvbXBsZXRvIGFsbG9yYSB2aWVuZSBlZmZldHR1YXRhIHVuYSBjaGlhbWF0YSBhbCBzZXJ2ZXIsIGFsdHJpbWVudGkgdmllbmUgdXNhdG8gbCdvZ2dldHRvIHNlbGV6aW9uYXRvLlxyXG4gICAqIEBwYXJhbSBldmVudCBPZ2dldHRvIGNvbiBkdWUgcHJvcHJpZXTDoDpcclxuICAgKiBcInJlY29yZFwiID0gb2dnZXR0byBkYSBtb2RpZmljYXJlL3Zpc3VhbGl6emFyZSxcclxuICAgKiBcIm9ubHlWaWV3XCIgPSBib29sZWFubyAoc2UgVFJVRSBzaWFtbyBpbiB2aXN1YWxpenphemlvbmUgYWx0cmltZW50aSBpbiBtb2RpZmljYSlcclxuICAgKi9cclxuICBvbkFkZFZpZXdFZGl0UmVjb3JkKGV2ZW50OiB7IHJlY29yZDogUmVjb3JkOyBvbmx5VmlldzogYm9vbGVhbiB9KSB7XHJcblxyXG4gICAgaWYgKGV2ZW50ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5vbmx5VmlldyA9IGV2ZW50Lm9ubHlWaWV3O1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiVmVyc2lvbiBtb2R1bG9cIiwgZXZlbnQucmVjb3JkLlZlcnNpb24pXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJlxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgJiZcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5SURFbmRQb2ludFxyXG4gICAgICApIHtcclxuICAgICAgICAvLyBwcmVwYXJvIGxhIHZlcnNpb25lIGNvcnJldHRhIGRlbCBmb3JtXHJcbiAgICAgICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFBhcmFtTmFtZTogXCJFbnRJRFwiLFxyXG4gICAgICAgICAgICBQYXJhbVZhbHVlOiBldmVudC5yZWNvcmQuRW50SUQsXHJcbiAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgUGFyYW1OYW1lOiBcIlZlcnNpb25cIixcclxuICAgICAgICAgICAgUGFyYW1WYWx1ZTogZXZlbnQucmVjb3JkLlZlcnNpb24sXHJcbiAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJxdWVyeSBwYXJhbXNcIiwgZHluYW1pY01vZHVsZVBhcmFtcylcclxuICAgICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURBbmRWZXJzaW9uRW5kUG9pbnQsXHJcbiAgICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAgICAgKHJlczogRm9ybSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0gPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IEpTT04ucGFyc2UodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzKTtcclxuICAgICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIlJFU1wiLCByZXMpXHJcbiAgICAgICAgICAgIC8vIHByZXBhcm8gaSBkYXRpIGRlbCByZWNvcmRcclxuICAgICAgICAgICAgdmFyIGR5bmFtaWNSZWNvcmRQYXJhbXMgPSBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgICAgICAgICBQYXJhbVZhbHVlOiBldmVudC5yZWNvcmQuSUQsXHJcbiAgICAgICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5SURFbmRQb2ludCxcclxuICAgICAgICAgICAgICBkeW5hbWljUmVjb3JkUGFyYW1zLFxyXG4gICAgICAgICAgICAgIChyZXM6IER5blJlY29yZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IEpTT04ucGFyc2UocmVzLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRSZWNvcmQgYXMgUmVjb3JkKS5JRCA9IHJlcy5JRDtcclxuICAgICAgICAgICAgICAgICh0aGlzLnNlbGVjdGVkUmVjb3JkIGFzIFJlY29yZCkuRW50SUQgPSByZXMuRW50SUQ7XHJcbiAgICAgICAgICAgICAgICAodGhpcy5zZWxlY3RlZFJlY29yZCBhcyBSZWNvcmQpLnVzZXJJRCA9IHJlcy51c2VySUQ7XHJcbiAgICAgICAgICAgICAgICAodGhpcy5zZWxlY3RlZFJlY29yZCBhcyBSZWNvcmQpLlZlcnNpb24gPSByZXMuVmVyc2lvbjtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld01vZGUgPSB0aGlzLmRlZmF1bHRWaWV3TW9kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShldmVudC5yZWNvcmQpKTtcclxuICAgICAgICB0aGlzLnZpZXdNb2RlID0gdGhpcy5kZWZhdWx0Vmlld01vZGU7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSZWNvcmQgIT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5zZWxlY3RlZFJlY29yZCA9PT0gXCJzdHJpbmdcIil7XHJcblxyXG4gICAgICAgIC8vIHByZXBhcm8gaSBkYXRpIGRlbCByZWNvcmRcclxuICAgICAgICB2YXIgZHluYW1pY1JlY29yZFBhcmFtcyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuc2VsZWN0ZWRSZWNvcmQsXHJcbiAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgICBkeW5hbWljUmVjb3JkUGFyYW1zLFxyXG4gICAgICAgICAgKHJlczogRHluUmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQgPSBKU09OLnBhcnNlKHJlcy5TZXJpYWxpemVkVmFsdWVzKTtcclxuICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRSZWNvcmQgYXMgUmVjb3JkKS5JRCA9IHJlcy5JRDtcclxuICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRSZWNvcmQgYXMgUmVjb3JkKS5FbnRJRCA9IHJlcy5FbnRJRDtcclxuICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRSZWNvcmQgYXMgUmVjb3JkKS51c2VySUQgPSByZXMudXNlcklEO1xyXG4gICAgICAgICAgICAodGhpcy5zZWxlY3RlZFJlY29yZCBhcyBSZWNvcmQpLlZlcnNpb24gPSByZXMuVmVyc2lvbjtcclxuICAgICAgICAgICAgdGhpcy52aWV3TW9kZSA9IHRoaXMuZGVmYXVsdFZpZXdNb2RlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgICBuZXcgQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPigpO1xyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybUlELFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50LFxyXG4gICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgKHJlczogRm9ybSkgPT4ge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJzdWNjZXNzIFJ1bkVuZFBvaW50Q2FsbFwiLHJlcyx0aGlzLmRlZmF1bHRWaWV3TW9kZSk7XHJcbiAgICAgICAgICB0aGlzLmZvcm0gPSByZXM7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybS5PYmplY3RUcmlnZ2VycyAhPSBudWxsICYmIHRoaXMuZm9ybS5PYmplY3RUcmlnZ2VycyAhPSBcIlwiKXtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gSlNPTi5wYXJzZSh0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gbmV3IEFycmF5PFRyaWdnZXI+KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQgPSBudWxsO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFuc3dlclRvRHVwbGljYXRlSWQgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQgPSB0aGlzLmFuc3dlclRvRHVwbGljYXRlSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEdXBsaWNhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLm9ubHlWaWV3ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdNb2RlID0gdGhpcy5kZWZhdWx0Vmlld01vZGU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3IgUnVuRW5kUG9pbnRDYWxsXCIsZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkUmVjb3JkID0gbnVsbDtcclxuICAgICAgLy8gdGhpcy5vbmx5VmlldyA9IGZhbHNlO1xyXG4gICAgICAvLyB0aGlzLnZpZXdNb2RlID0gRHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5DT01QSUxFO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIHF1YW5kbyBzaSB2dW9sZSBhZ2dpdW5nZXJlLCB2aXN1YWxpenphcmUgbyBtb2RpZmljYXJlIHVuIHJlY29yZC5cclxuICAgKiBTZSBsJ2V2ZW50byDDqCBudWxsIHZ1b2wgZGlyZSBjaGUgc3RpYW1vIGFnZ2l1bmdlbmRvIHVuIG51b3ZvIHJlY29yZCBhbHRyaW1lbnRpIHNpYW1vIGluIG1vZGlmaWNhXHJcbiAgICogbyB2aXN1YWxpenphemlvbmUuIEluIHF1ZXN0aSB1bHRpbWkgZHVlIGNhc2ksIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIHVuIGVuZHBvaW50IHBlciBpbCByZWN1cGVyb1xyXG4gICAqIGRlbCByZWNvcmQgY29tcGxldG8gYWxsb3JhIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciwgYWx0cmltZW50aSB2aWVuZSB1c2F0byBsJ29nZ2V0dG8gc2VsZXppb25hdG8uXHJcbiAgICogQHBhcmFtIGV2ZW50IE9nZ2V0dG8gY29uIGR1ZSBwcm9wcmlldMOgOlxyXG4gICAqIFwicmVjb3JkXCIgPSBvZ2dldHRvIGRhIG1vZGlmaWNhcmUvdmlzdWFsaXp6YXJlLFxyXG4gICAqIFwib25seVZpZXdcIiA9IGJvb2xlYW5vIChzZSBUUlVFIHNpYW1vIGluIHZpc3VhbGl6emF6aW9uZSBhbHRyaW1lbnRpIGluIG1vZGlmaWNhKVxyXG4gICAqL1xyXG4gIG9uVmlld1JlY29yZChyZWNvcmQ6IFJlY29yZCkge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQgPSByZWNvcmRcclxuICAgICAgdGhpcy52aWV3TW9kZSA9IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0uVklFV1xyXG4gICAgICB0aGlzLmxvYWRlciA9IHRydWVcclxuXHJcbiAgfVxyXG5cclxuICAvLyAjcmVnaW9uIFNBVkVcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGdlc3RpcmUgaWwgY29tcG9uZW50ZSBkb3BvIGNoZSBpbCByZWNvcmQgw6ggc3RhdG8gYWdnaXVudG8gbyBtb2RpZmljYXRvLlxyXG4gICAqIEBwYXJhbSBldmVudCBPZ2dldHRvIGRpIHRpcG8gUmVjb3JkIGRhIHNhbHZhcmUuXHJcbiAgICovXHJcbiAgb25TYXZlUmVjb3JkKGV2ZW50OiBSZWNvcmQpIHtcclxuICAgIC8vIHRoaXMuZ2V0UmVjb3Jkc0J5Rm9ybUlEKCk7XHJcbiAgICB0aGlzLnNhdmVSZWNvcmQuZW1pdChldmVudCk7XHJcbiAgICAvLyBpZiAodGhpcy5vblNhdmVCYWNrVG9MaXN0KSB7XHJcbiAgICAvLyAgIHRoaXMudmlld01vZGUgPSBEeW5hbWljTW9kdWxlVmlld01vZGVFbnVtLkxJU1Q7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLnZpZXdNb2RlID0gRHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5OT05FO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy52aWV3TW9kZSA9IHRoaXMub25CYWNrVG9cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZ2VzdGlyZSBpbCBjb21wb25lbnRlIGRvcG8gY2hlIGUgc3RhdGEgcmljaGllc3RhIHVuYSBhZ2dpdW50byBvIHVuYSBtb2RpZmljYSBkZWwgcmVjb3JkIG5lbGwnIGFkZC1mb3JtLXJlY29yZC5cclxuICAgKiBAcGFyYW0gZXZlbnQgT2dnZXR0byBkaSB0aXBvIFJlY29yZCBkYSBzYWx2YXJlLlxyXG4gICAqL1xyXG4gIG9uQWZ0ZXJTYXZlUmVjb3JkKGV2ZW50OiBSZWNvcmQpIHtcclxuICAgIHRoaXMuYWZ0ZXJTYXZlUmVjb3JkLmVtaXQoZXZlbnQpO1xyXG4gICAgLy8gaWYgKHRoaXMub25TYXZlQmFja1RvTGlzdCkge1xyXG4gICAgLy8gICB0aGlzLnZpZXdNb2RlID0gRHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5MSVNUO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy52aWV3TW9kZSA9IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0uTk9ORTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMudmlld01vZGUgPSB0aGlzLm9uQmFja1RvXHJcbiAgfVxyXG5cclxuXHJcbiAgb25TYXZlSnNvbihyZWNvcmQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5TYXZlSlNPTi5lbWl0KHJlY29yZCk7XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gU0FWRVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIHJlbG9hZCgpe1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoXHJcbiAgICAgICgpID0+IHRoaXMubG9hZGVyID0gdHJ1ZSxcclxuICAgICAgNTBcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBERUxFVEUgXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBlbGltaW5hcmUgdW4gcmVjb3JkIGRhbGxhIGxpc3RhLlxyXG4gICAqIEBwYXJhbSByZWNvcmQgUmVjb3JkIGRhIGVsaW1pbmFyZSBzZWxlemlvbmF0byBzdWxsYSBlcXAtdGFibGUuXHJcbiAgICovXHJcbiAgb25EZWxldGVSZWNvcmQocmVjb3JkOiBSZWNvcmQpIHtcclxuXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIm9uRGVsZXRlUmVjb3JkXCIsIHJlY29yZCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkRlbGV0ZUVuZFBvaW50XHJcbiAgICApIHtcclxuICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuQ29uZmlybShcclxuICAgICAgICBcIkVsaW1pbmFyZSBpbCByZWNvcmQgc2VsZXppb25hdG8/XCIsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICAgICAgICBQYXJhbVZhbHVlOiByZWNvcmQucmVjb3JkLklELFxyXG4gICAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkRlbGV0ZUVuZFBvaW50LFxyXG4gICAgICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5nZXRSZWNvcmRzQnlGb3JtSUQoKTtcclxuICAgICAgICAgICAgICB0aGlzLmFmdGVyRGVsZXRlUmVjb3JkLmVtaXQocmVjb3JkKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLnJlbG9hZFRhYmxlcygpXHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIFwiUmljaGllc3RhIGNvbmZlcm1hXCJcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVsZXRlUmVjb3JkLmVtaXQocmVjb3JkKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25BZnRlckRlbGV0ZVJlY29yZChyZWNvcmQ6IFJlY29yZCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm5nT25Jbml0KCksIDUwIClcclxuICAgIHRoaXMuYWZ0ZXJEZWxldGVSZWNvcmQuZW1pdChyZWNvcmQpO1xyXG4gIH1cclxuICAvLyNlZG5yZWdpb24gREVMRVRFIFxyXG5cclxuICBvbkFmdGVyRmlsdGVyKGV2KXtcclxuICAgIHRoaXMuYWZ0ZXJGaWx0ZXIuZW1pdChldik7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdTdGFydGVkKGVsOiBhbnkpe1xyXG4gICAgdGhpcy5kcmFnU3RhcnRlZC5lbWl0KGVsKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ1JlbGVhc2VkKCl7XHJcbiAgICB0aGlzLmRyYWdSZWxlYXNlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkV4dGVybmFsQ29tcG9uZW50T3V0KGV2OiBldmVudE91dCl7XHJcbiAgICB0aGlzLm91dC5lbWl0KGV2KTtcclxuICB9XHJcblxyXG4gIG9uRmlyZVRyaWdnZXIoZXY6IEZpcmVUcmlnZ2VyKXtcclxuICAgIHRoaXMuZmlyZVRyaWdnZXIuZW1pdChldik7XHJcbiAgfVxyXG5cclxuICBwYXJzZVZhbHVlU3RyaW5nKGZpZWxkLCByZWNvcmQpe1xyXG4gICAgdmFyIG91dHB1dCA9IG51bGw7XHJcbiAgICBpZiAoZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICBvdXRwdXQgPSB7fTtcclxuICAgICAgY29uc3QgdGVtcDogc3RyaW5nID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEoZmllbGQuRm9ybXVsYSwgcmVjb3JkLCBudWxsKTtcclxuICAgICAgb3V0cHV0ID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGVtcCk7XHJcbiAgICB9IGVsc2UgaWYgKGZpZWxkLlZhbHVlUGFpcnMgIT0gbnVsbCkge1xyXG4gICAgICBvdXRwdXQgPSBmaWVsZC5WYWx1ZVBhaXJzO1xyXG4gICAgfSBlbHNlIGlmIChmaWVsZC5WYWx1ZVN0cmluZyAhPSBudWxsICYmIGZpZWxkLlZhbHVlU3RyaW5nICE9IFwiXCIpIHtcclxuICAgICAgb3V0cHV0ID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnMoZmllbGQuVmFsdWVTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZXFwLWR5bmFtaWMtbW9kdWxlLXNwaW5uZXI+PC9lcXAtZHluYW1pYy1tb2R1bGUtc3Bpbm5lcj5cclxuXHJcbjwhLS0gW3JlY29yZF09XCInYjNkOTQzYzAtOWMwMS00OTczLTk0OGItN2FhNDE4NjM0ZjcyJ1wiIC0tPlxyXG48dmlldy1mb3JtLXJlY29yZFxyXG4gICpuZ0lmPVwibG9hZGVyICYmIHZpZXdNb2RlID09IGR5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0uVklFV1wiXHJcbiAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS12aWV3XCJcclxuICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbiAgW3JlY29yZF09XCJzZWxlY3RlZFJlY29yZFwiXHJcbiAgKGdvQmFja0V2ZW50KT1cIm9uR29CYWNrKClcIlxyXG4+XHJcbjwvdmlldy1mb3JtLXJlY29yZD5cclxuXHJcbjxncmFwaHNcclxuKm5nSWY9XCJsb2FkZXIgJiYgdmlld01vZGUgPT0gZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5HUkFQSFNcIlxyXG5jbGFzcz1cImR5bmFtaWMtbW9kdWxlLXZpZXdcIlxyXG5bZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbltmb3JtXT1cImZvcm1cIlxyXG5bZm9ybUlEXT1cImZvcm1JRFwiXHJcblt1c2VySURdPVwidXNlcklEXCJcclxuW2NvbmZpZ3VyYXRpb25zXT1cImR5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnXCJcclxuPlxyXG48L2dyYXBocz5cclxuXHJcbjxmaWx0ZXItZm9ybS1zdGF0aXN0aWNcclxuKm5nSWY9XCJsb2FkZXIgJiYgdmlld01vZGUgPT0gZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5GSUxURVJcIlxyXG4gIGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtY29tcGlsZVwiXHJcbiAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgW2Zvcm1JRF09XCJmb3JtSURcIlxyXG4gIFtyZWNvcmRdPVwic2VsZWN0ZWRSZWNvcmRcIlxyXG4gIFtvbmx5Vmlld109XCJvbmx5Vmlld1wiXHJcbiAgW2RlZmF1bHRMaXN0QWN0aW9uc109XCJkZWZhdWx0TGlzdEFjdGlvbnNcIlxyXG4gIFtmaWx0ZXJSZXN1bHRWaWV3TW9kZV09XCJmaWx0ZXJSZXN1bHRWaWV3TW9kZVwiXHJcbiAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gIFt1c2VySURdPVwidXNlcklEXCJcclxuXHJcbiAgW2NvbmZpZ3VyYXRpb25zXT1cImR5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnXCJcclxuICAoYWZ0ZXJGaWx0ZXIpPVwib25BZnRlckZpbHRlcigkZXZlbnQpXCJcclxuPlxyXG48L2ZpbHRlci1mb3JtLXN0YXRpc3RpYz5cclxuXHJcbjxhZGQtZm9ybS1yZWNvcmRcclxuKm5nSWY9XCJsb2FkZXIgJiYgdmlld01vZGUgPT0gZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5DT01QSUxFXCJcclxuICBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWNvbXBpbGVcIlxyXG4gIFtmb3JtXT1cImZvcm1cIlxyXG4gIFtyZWNvcmRdPVwic2VsZWN0ZWRSZWNvcmRcIlxyXG4gIFtvbmx5Vmlld109XCJvbmx5Vmlld1wiXHJcbiAgW2lzRHVwbGljYXRlXT1cImlzRHVwbGljYXRlXCJcclxuXHJcbiAgW1F1ZXJ5RWRpdG9yQ29tcG9uZW50XT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCJcclxuICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbiAgW3VzZXJJRF09XCJ1c2VySURcIlxyXG4gIFtvcmdhSURdPVwib3JnYUlEXCJcclxuXHJcbiAgW2NvbmZpZ3VyYXRpb25zXT1cImR5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnXCJcclxuXHJcbiAgKG91dCk9XCJvbkV4dGVybmFsQ29tcG9uZW50T3V0KCRldmVudClcIlxyXG4gIChzYXZlUmVjb3JkRXZlbnQpPVwib25TYXZlUmVjb3JkKCRldmVudClcIlxyXG4gIChhZnRlclNhdmVSZWNvcmRFdmVudCk9XCJvbkFmdGVyU2F2ZVJlY29yZCgkZXZlbnQpXCJcclxuICAoZmlyZVRyaWdnZXIpPVwib25GaXJlVHJpZ2dlcigkZXZlbnQpXCJcclxuPlxyXG48L2FkZC1mb3JtLXJlY29yZD5cclxuXHJcbjxsaXN0LWZvcm0tcmVjb3JkXHJcbiAgKm5nSWY9XCJsb2FkZXIgJiYgdmlld01vZGUgPT0gZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5MSVNUXCJcclxuICBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWxpc3RcIlxyXG4gIFtmb3JtSURdPVwiZm9ybUlEXCJcclxuXHJcbiAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG5cclxuICBbY29uZmlndXJhdGlvbnNdPVwiZHluYW1pY01vZHVsZUxpc3RDb25maWdcIlxyXG4gIFtleHRlcm5hbEJ1dHRvbnNdPVwiZXh0ZXJuYWxCdXR0b25zXCJcclxuXHJcbiAgKG9uVmlld1JlY29yZCk9XCJvblZpZXdSZWNvcmQoJGV2ZW50KVwiXHJcbiAgKG9uQWRkVmlld0VkaXRSZWNvcmQpPVwib25BZGRWaWV3RWRpdFJlY29yZCgkZXZlbnQpXCJcclxuICAob25EZWxldGVSZWNvcmQpPVwib25EZWxldGVSZWNvcmQoJGV2ZW50KVwiXHJcbiAgKG9uQWZ0ZXJEZWxldGVSZWNvcmQpPVwib25BZnRlckRlbGV0ZVJlY29yZCgkZXZlbnQpXCJcclxuPlxyXG48L2xpc3QtZm9ybS1yZWNvcmQ+XHJcblxyXG48cmVwYWlyLWZvcm0tZmllbGRzXHJcbiAgKm5nSWY9XCJsb2FkZXIgJiYgdmlld01vZGUgPT0gZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5SRVBBSVJcIlxyXG4gIGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtcmVwYWlyXCJcclxuICBbZm9ybUlEXT1cImZvcm1JRFwiXHJcblxyXG4gIFtjb25maWd1cmF0aW9uc109XCJkeW5hbWljTW9kdWxlUmVwYWlyQ29uZmlnXCJcclxuICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcblxyXG4gIChvblNhdmVKc29uKT1cIm9uU2F2ZUpzb24oJGV2ZW50KVwiXHJcbj5cclxuPC9yZXBhaXItZm9ybS1maWVsZHM+XHJcblxyXG48bGlzdC12aWV3LWZvcm0tcmVjb3JkXHJcbiAgKm5nSWY9XCJsb2FkZXIgJiYgdmlld01vZGUgPT0gZHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5MSVNUV0lFV1wiXHJcbiAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1saXN0LXZpZXdcIlxyXG4gIFtjb25maWd1cmF0aW9uc109XCJkeW5hbWljTW9kdWxlTGlzdENvbmZpZ1wiXHJcbiAgW2NvbXBpbGVDb25maWd1cmF0aW9uc109XCJkeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZ1wiXHJcbiAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gIFtmb3JtSURdPVwiZm9ybUlEXCJcclxuICBbdXNlcklEXT1cInVzZXJJRFwiXHJcbiAgW29yZ2FJRF09XCJvcmdhSURcIlxyXG4gIFtoaWdobGlnaHRGaWx0ZXJdPVwiaGlnaGxpZ2h0RmlsdGVyXCJcclxuICBbZGVmYXVsdExpc3RWaWV3RnVuY3Rpb25dPVwiZGVmYXVsdExpc3RWaWV3RnVuY3Rpb25cIlxyXG4gIFtleHRlcm5hbEJ1dHRvbnNdPVwiZXh0ZXJuYWxCdXR0b25zXCJcclxuICBbb25seVZpZXddPVwiIWRlZmF1bHRMaXN0QWN0aW9ucy5lZGl0XCJcclxuICBbUXVlcnlFZGl0b3JDb21wb25lbnRdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIlxyXG5cclxuICAob25BZGRWaWV3RWRpdFJlY29yZCk9XCJvbkFkZFZpZXdFZGl0UmVjb3JkKCRldmVudClcIlxyXG4gIChvbkRlbGV0ZVJlY29yZCk9XCJvbkRlbGV0ZVJlY29yZCgkZXZlbnQpXCJcclxuICAoc2F2ZVJlY29yZEV2ZW50KT1cIm9uU2F2ZVJlY29yZCgkZXZlbnQpXCJcclxuICAoYWZ0ZXJTYXZlUmVjb3JkRXZlbnQpPVwib25BZnRlclNhdmVSZWNvcmQoJGV2ZW50KVwiXHJcbiAgKGRyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXHJcbiAgKGRyYWdSZWxlYXNlZCk9XCJvbkRyYWdSZWxlYXNlZCgpXCJcclxuICAoZmlyZVRyaWdnZXIpPVwib25GaXJlVHJpZ2dlcigkZXZlbnQpXCJcclxuICA+XHJcbjwvbGlzdC12aWV3LWZvcm0tcmVjb3JkPlxyXG4iXX0=
|