@colijnit/sharedcomponents 1.0.64 → 1.0.66
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/3rdpartylicenses.txt +1200 -0
- package/README.md +24 -24
- package/bundles/colijnit-sharedcomponents.umd.js +10078 -9926
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.d.ts +92 -91
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/colijnit-sharedcomponents.js +93 -92
- package/esm2015/lib/assets/dictionary/text.properties.js +11 -11
- package/esm2015/lib/businessobject/build-images-and-documentation-result.js +2 -2
- package/esm2015/lib/businessobject/co-document-right.bo.js +3 -3
- package/esm2015/lib/businessobject/drag-drop-container-element.js +2 -2
- package/esm2015/lib/businessobject/drag-drop-container.js +7 -7
- package/esm2015/lib/components/activity-list/activity-list.component.js +130 -130
- package/esm2015/lib/components/activity-list/activity-list.module.js +24 -24
- package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +47 -47
- package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.module.js +20 -20
- package/esm2015/lib/components/date-planning/component/agenda/agenda-base-view.component.js +61 -61
- package/esm2015/lib/components/date-planning/component/agenda/agenda-day-view.component.js +36 -36
- package/esm2015/lib/components/date-planning/component/agenda/agenda-event.component.js +56 -56
- package/esm2015/lib/components/date-planning/component/agenda/agenda-events.component.js +47 -47
- package/esm2015/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.js +68 -68
- package/esm2015/lib/components/date-planning/component/agenda/agenda-header.component.js +243 -243
- package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-cell.component.js +36 -36
- package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.js +50 -50
- package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view.component.js +46 -46
- package/esm2015/lib/components/date-planning/component/agenda/agenda-month-view.component.js +61 -61
- package/esm2015/lib/components/date-planning/component/agenda/agenda-select-event.component.js +39 -39
- package/esm2015/lib/components/date-planning/component/agenda/agenda-view.component.js +35 -35
- package/esm2015/lib/components/date-planning/component/agenda/agenda-week-select-view.component.js +64 -64
- package/esm2015/lib/components/date-planning/component/agenda/agenda-week-view.component.js +48 -48
- package/esm2015/lib/components/date-planning/component/agenda/view-select.component.js +42 -42
- package/esm2015/lib/components/date-planning/component/calendar/calendar-all-months.component.js +34 -34
- package/esm2015/lib/components/date-planning/component/calendar/calendar-all-years.component.js +48 -48
- package/esm2015/lib/components/date-planning/component/calendar/calendar-header.component.js +107 -107
- package/esm2015/lib/components/date-planning/component/calendar/calendar-view.component.js +178 -178
- package/esm2015/lib/components/date-planning/component/calendar/calendar.component.js +34 -34
- package/esm2015/lib/components/date-planning/date-planning.component.js +113 -113
- package/esm2015/lib/components/date-planning/date-planning.module.js +63 -63
- package/esm2015/lib/components/docsign/component/signature/signature.component.js +75 -75
- package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +44 -44
- package/esm2015/lib/components/docsign/docsign.component.js +242 -242
- package/esm2015/lib/components/docsign/docsign.module.js +23 -23
- package/esm2015/lib/components/file-upload/file-upload.component.js +189 -189
- package/esm2015/lib/components/file-upload/file-upload.module.js +25 -25
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +397 -397
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +30 -30
- package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +469 -469
- package/esm2015/lib/components/files-upload/components/drag-drop-container.component.js +115 -115
- package/esm2015/lib/components/files-upload/files-upload.component.js +131 -131
- package/esm2015/lib/components/files-upload/files-upload.module.js +47 -47
- package/esm2015/lib/components/image-display/image-display.component.js +36 -36
- package/esm2015/lib/components/image-display/image-display.module.js +23 -23
- package/esm2015/lib/components/key-pad/key-pad.component.js +200 -200
- package/esm2015/lib/components/key-pad/key-pad.module.js +22 -22
- package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +74 -74
- package/esm2015/lib/components/layout-switcher/layout-switcher.module.js +21 -21
- package/esm2015/lib/components/linear-gauge/co-linear-gauge.component.js +59 -59
- package/esm2015/lib/components/linear-gauge/co-linear-gauge.module.js +19 -19
- package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +89 -89
- package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +79 -79
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +85 -85
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +64 -64
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +26 -26
- package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.js +40 -40
- package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.js +23 -23
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +61 -61
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +28 -28
- package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.component.js +38 -38
- package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -7
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +258 -258
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +35 -35
- package/esm2015/lib/components/send-method-dialog/send-method-params.interface.js +2 -2
- package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -59
- package/esm2015/lib/components/simple-tags/simple-tags.component.js +229 -229
- package/esm2015/lib/components/simple-tags/simple-tags.module.js +26 -26
- package/esm2015/lib/components/statusbar/statusbar-popup.component.js +97 -97
- package/esm2015/lib/components/statusbar/statusbar.component.js +81 -81
- package/esm2015/lib/components/statusbar/statusbar.module.js +27 -27
- package/esm2015/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-stock-history/order-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-stock-tab/order-stock-tab.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-tab/order-tab.component.js +67 -67
- package/esm2015/lib/components/stock/components/stock-history/stock-history.component.js +53 -53
- package/esm2015/lib/components/stock/components/stock-location/components/stock-location-popup/stock-location-popup.component.js +210 -0
- package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +248 -251
- package/esm2015/lib/components/stock/components/stock-prognose/stock-prognose.component.js +52 -52
- package/esm2015/lib/components/stock/components/stock-tab/stock-tab.component.js +39 -39
- package/esm2015/lib/components/stock/localization/translation.js +74 -72
- package/esm2015/lib/components/stock/stock-history-tabs/stock-history-tabs.component.js +33 -33
- package/esm2015/lib/components/stock/stock-information/stock-information.component.js +48 -48
- package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +457 -457
- package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +251 -243
- package/esm2015/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.js +2 -2
- package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +72 -72
- package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +160 -160
- package/esm2015/lib/components/stock/stock.component.js +237 -237
- package/esm2015/lib/components/stock/stock.module.js +82 -80
- package/esm2015/lib/components/stock-statusbar/stock-statusbar.component.js +23 -23
- package/esm2015/lib/components/stock-statusbar/stock-statusbar.module.js +19 -19
- package/esm2015/lib/components/tab-bar/tab-bar.component.js +90 -90
- package/esm2015/lib/components/tab-bar/tab-bar.module.js +21 -21
- package/esm2015/lib/components/tab-bar/tab.interface.js +2 -2
- package/esm2015/lib/components/tile-renderer/tile-render.component.js +80 -80
- package/esm2015/lib/components/tile-renderer/tile-render.module.js +26 -26
- package/esm2015/lib/decorator/input-boolean.decorator.js +34 -34
- package/esm2015/lib/enum/calendar-view.enum.js +9 -9
- package/esm2015/lib/enum/document-email-report.enum.js +18 -18
- package/esm2015/lib/enum/domain-multiple-name.enum.js +13 -13
- package/esm2015/lib/enum/file-type.js +14 -14
- package/esm2015/lib/enum/files-upload-config-objects.js +3 -3
- package/esm2015/lib/enum/gauge-color.enum.js +10 -10
- package/esm2015/lib/enum/icon.enum.js +49 -48
- package/esm2015/lib/enum/internal-param.enum.js +38 -38
- package/esm2015/lib/enum/keyboard-code.enum.js +32 -32
- package/esm2015/lib/enum/language-code.enum.js +8 -8
- package/esm2015/lib/enum/month.enum.js +17 -17
- package/esm2015/lib/enum/read-write-access-config-names.enum.js +2 -2
- package/esm2015/lib/enum/table-name.enum.js +86 -86
- package/esm2015/lib/enum/tag-category.enum.js +22 -22
- package/esm2015/lib/enum/tags-component-config-names.js +2 -2
- package/esm2015/lib/enum/thumb-three-way-state.js +19 -19
- package/esm2015/lib/enum/tile-size-type.js +7 -7
- package/esm2015/lib/enum/time-period.enum.js +11 -11
- package/esm2015/lib/event/co-drag-event.js +2 -2
- package/esm2015/lib/event/co-drop-event.js +2 -2
- package/esm2015/lib/interface/key-value-pair.js +2 -2
- package/esm2015/lib/interface/operation-callback-simple-function.js +4 -4
- package/esm2015/lib/localization/localization.module.js +19 -19
- package/esm2015/lib/localization/localize.pipe.js +26 -26
- package/esm2015/lib/localization/localize.service.js +30 -30
- package/esm2015/lib/localization/translation.js +3 -3
- package/esm2015/lib/model/agenda-event-per-day.model.js +6 -6
- package/esm2015/lib/model/agenda-event.model.js +8 -8
- package/esm2015/lib/model/agenda-null-objects.js +11 -11
- package/esm2015/lib/model/constant/all-months.js +17 -17
- package/esm2015/lib/model/date-range.js +5 -5
- package/esm2015/lib/model/day.model.js +7 -7
- package/esm2015/lib/model/icon-svg.js +48 -47
- package/esm2015/lib/model/month.model.js +11 -11
- package/esm2015/lib/model/send-method.js +8 -8
- package/esm2015/lib/model/settings.js +4 -4
- package/esm2015/lib/model/tag-tree-item.bo.js +16 -16
- package/esm2015/lib/model/time-window.bo.js +26 -26
- package/esm2015/lib/model/tree-object.js +15 -15
- package/esm2015/lib/model/week.model.js +6 -6
- package/esm2015/lib/model/weekday.model.js +10 -10
- package/esm2015/lib/pipe/array-number.pipe.js +15 -15
- package/esm2015/lib/pipe/file-type-image.pipe.js +51 -51
- package/esm2015/lib/pipe/master-pipes.js +9 -9
- package/esm2015/lib/pipe/ucfirst.pipe.js +16 -16
- package/esm2015/lib/service/dictionary.service.js +76 -76
- package/esm2015/lib/service/drag-drop.service.js +365 -365
- package/esm2015/lib/service/icon-cache.service.js +51 -51
- package/esm2015/lib/service/options.service.js +48 -48
- package/esm2015/lib/service/shared-connector.service.js +433 -433
- package/esm2015/lib/service/shared.service.js +60 -60
- package/esm2015/lib/service/stock.service.js +110 -110
- package/esm2015/lib/utils/array-utils.js +202 -202
- package/esm2015/lib/utils/calendar.utils.js +68 -68
- package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -2
- package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -2
- package/esm2015/lib/utils/co-document-shared-field-logic.js +50 -50
- package/esm2015/lib/utils/date-utils.js +264 -264
- package/esm2015/lib/utils/enum-utils.js +128 -128
- package/esm2015/lib/utils/function/not-nill.function.js +5 -5
- package/esm2015/lib/utils/is-nill.function.js +5 -5
- package/esm2015/lib/utils/map-utils.js +41 -41
- package/esm2015/lib/utils/number-utils.js +390 -390
- package/esm2015/lib/utils/object-utils.js +278 -278
- package/esm2015/lib/utils/ref-code-utils.js +49 -49
- package/esm2015/lib/utils/string-utils.js +93 -93
- package/esm2015/public-api.js +31 -31
- package/favicon.ico +0 -0
- package/fesm2015/colijnit-sharedcomponents.js +10622 -10408
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/index.html +12 -0
- package/lib/assets/dictionary/text.properties.d.ts +3 -3
- package/lib/businessobject/build-images-and-documentation-result.d.ts +5 -5
- package/lib/businessobject/co-document-right.bo.d.ts +6 -6
- package/lib/businessobject/drag-drop-container-element.d.ts +6 -6
- package/lib/businessobject/drag-drop-container.d.ts +6 -6
- package/lib/components/access/read-write-access.scss +25 -25
- package/lib/components/access/style/_layout.scss +23 -23
- package/lib/components/access/style/_material-definition.scss +12 -12
- package/lib/components/access/style/_theme.scss +4 -4
- package/lib/components/access/style/material.scss +4 -4
- package/lib/components/activity-list/activity-list.component.d.ts +33 -33
- package/lib/components/activity-list/activity-list.module.d.ts +2 -2
- package/lib/components/activity-list/style/_layout.scss +68 -68
- package/lib/components/activity-list/style/_theme.scss +4 -4
- package/lib/components/activity-list/style/material.scss +4 -4
- package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +14 -14
- package/lib/components/app-file-dropzone/app-file-dropzone.module.d.ts +2 -2
- package/lib/components/app-file-dropzone/style/_layout.scss +61 -61
- package/lib/components/app-file-dropzone/style/_theme.scss +4 -4
- package/lib/components/app-file-dropzone/style/material.scss +4 -4
- package/lib/components/date-planning/component/agenda/agenda-base-view.component.d.ts +21 -21
- package/lib/components/date-planning/component/agenda/agenda-day-view.component.d.ts +7 -7
- package/lib/components/date-planning/component/agenda/agenda-event.component.d.ts +18 -18
- package/lib/components/date-planning/component/agenda/agenda-events.component.d.ts +13 -13
- package/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.d.ts +18 -18
- package/lib/components/date-planning/component/agenda/agenda-header.component.d.ts +48 -48
- package/lib/components/date-planning/component/agenda/agenda-hour-cell.component.d.ts +9 -9
- package/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.d.ts +8 -8
- package/lib/components/date-planning/component/agenda/agenda-hour-view.component.d.ts +7 -7
- package/lib/components/date-planning/component/agenda/agenda-month-view.component.d.ts +10 -10
- package/lib/components/date-planning/component/agenda/agenda-select-event.component.d.ts +12 -12
- package/lib/components/date-planning/component/agenda/agenda-view.component.d.ts +12 -12
- package/lib/components/date-planning/component/agenda/agenda-week-select-view.component.d.ts +10 -10
- package/lib/components/date-planning/component/agenda/agenda-week-view.component.d.ts +9 -9
- package/lib/components/date-planning/component/agenda/style/_layout.scss +443 -443
- package/lib/components/date-planning/component/agenda/style/_material-definition.scss +12 -12
- package/lib/components/date-planning/component/agenda/style/_theme.scss +7 -7
- package/lib/components/date-planning/component/agenda/style/material.scss +5 -5
- package/lib/components/date-planning/component/agenda/view-select.component.d.ts +11 -11
- package/lib/components/date-planning/component/calendar/calendar-all-months.component.d.ts +9 -9
- package/lib/components/date-planning/component/calendar/calendar-all-years.component.d.ts +9 -9
- package/lib/components/date-planning/component/calendar/calendar-header.component.d.ts +23 -23
- package/lib/components/date-planning/component/calendar/calendar-view.component.d.ts +31 -31
- package/lib/components/date-planning/component/calendar/calendar.component.d.ts +10 -10
- package/lib/components/date-planning/component/calendar/style/_layout.scss +167 -167
- package/lib/components/date-planning/component/calendar/style/_material-definition.scss +7 -7
- package/lib/components/date-planning/component/calendar/style/_theme.scss +7 -7
- package/lib/components/date-planning/component/calendar/style/material.scss +5 -5
- package/lib/components/date-planning/date-planning.component.d.ts +28 -28
- package/lib/components/date-planning/date-planning.module.d.ts +2 -2
- package/lib/components/date-planning/style/_layout.scss +45 -45
- package/lib/components/date-planning/style/_theme.scss +5 -5
- package/lib/components/date-planning/style/material.scss +7 -7
- package/lib/components/docsign/component/signature/signature.component.d.ts +16 -16
- package/lib/components/docsign/component/signature/style/_layout.scss +40 -40
- package/lib/components/docsign/component/signature/style/_material-definition.scss +11 -11
- package/lib/components/docsign/component/signature/style/_theme.scss +13 -13
- package/lib/components/docsign/component/signature/style/material.scss +4 -4
- package/lib/components/docsign/component/signatures/signatures.component.d.ts +12 -12
- package/lib/components/docsign/component/signatures/style/_layout.scss +13 -13
- package/lib/components/docsign/component/signatures/style/_material-definition.scss +1 -1
- package/lib/components/docsign/component/signatures/style/_theme.scss +4 -4
- package/lib/components/docsign/component/signatures/style/material.scss +5 -5
- package/lib/components/docsign/docsign.component.d.ts +94 -94
- package/lib/components/docsign/docsign.module.d.ts +2 -2
- package/lib/components/docsign/style/_layout.scss +40 -40
- package/lib/components/docsign/style/_material-definition.scss +12 -12
- package/lib/components/docsign/style/_theme.scss +12 -12
- package/lib/components/docsign/style/material.scss +15 -15
- package/lib/components/file-upload/file-upload.component.d.ts +42 -42
- package/lib/components/file-upload/file-upload.module.d.ts +2 -2
- package/lib/components/file-upload/style/_layout.scss +59 -59
- package/lib/components/file-upload/style/_material-definition.scss +2 -2
- package/lib/components/file-upload/style/_theme.scss +4 -4
- package/lib/components/file-upload/style/material.scss +4 -4
- package/lib/components/file-upload-popup/file-upload-popup.component.d.ts +75 -75
- package/lib/components/file-upload-popup/file-upload-popup.module.d.ts +2 -2
- package/lib/components/file-upload-popup/style/_layout.scss +48 -48
- package/lib/components/file-upload-popup/style/_material-definition.scss +2 -2
- package/lib/components/file-upload-popup/style/_theme.scss +5 -5
- package/lib/components/file-upload-popup/style/material.scss +4 -4
- package/lib/components/files-upload/components/base-file-upload.component.d.ts +98 -98
- package/lib/components/files-upload/components/drag-drop-container.component.d.ts +34 -34
- package/lib/components/files-upload/files-upload.component.d.ts +32 -32
- package/lib/components/files-upload/files-upload.module.d.ts +2 -2
- package/lib/components/files-upload/style/_layout.scss +49 -49
- package/lib/components/files-upload/style/_theme.scss +5 -5
- package/lib/components/files-upload/style/material.scss +4 -4
- package/lib/components/image-display/image-display.component.d.ts +14 -14
- package/lib/components/image-display/image-display.module.d.ts +2 -2
- package/lib/components/image-display/style/_layout.scss +56 -56
- package/lib/components/image-display/style/_material-definition.scss +4 -4
- package/lib/components/image-display/style/_theme.scss +6 -6
- package/lib/components/image-display/style/material.scss +3 -3
- package/lib/components/key-pad/key-pad.component.d.ts +38 -38
- package/lib/components/key-pad/key-pad.module.d.ts +2 -2
- package/lib/components/key-pad/style/_layout.scss +160 -160
- package/lib/components/key-pad/style/_material-definition.scss +19 -19
- package/lib/components/key-pad/style/_theme.scss +35 -35
- package/lib/components/key-pad/style/material.scss +4 -4
- package/lib/components/layout-switcher/layout-switcher.component.d.ts +16 -16
- package/lib/components/layout-switcher/layout-switcher.module.d.ts +2 -2
- package/lib/components/layout-switcher/style/_layout.scss +94 -94
- package/lib/components/layout-switcher/style/_material-definition.scss +16 -16
- package/lib/components/layout-switcher/style/_theme.scss +4 -4
- package/lib/components/layout-switcher/style/material.scss +6 -6
- package/lib/components/linear-gauge/co-linear-gauge.component.d.ts +11 -11
- package/lib/components/linear-gauge/co-linear-gauge.module.d.ts +2 -2
- package/lib/components/linear-gauge/style/_layout.scss +20 -20
- package/lib/components/linear-gauge/style/_material-definition.scss +8 -8
- package/lib/components/linear-gauge/style/_theme.scss +4 -4
- package/lib/components/linear-gauge/style/material.scss +6 -6
- package/lib/components/login/style/_layout.scss +57 -57
- package/lib/components/login/style/_material-definition.scss +23 -23
- package/lib/components/login/style/_theme.scss +7 -7
- package/lib/components/login/style/material.scss +4 -4
- package/lib/components/multi-property-toggler/multiple-property-toggler.component.d.ts +27 -27
- package/lib/components/multi-property-toggler/multiple-property-toggler.module.d.ts +2 -2
- package/lib/components/multi-property-toggler/style/_layout.scss +24 -24
- package/lib/components/multi-property-toggler/style/_theme.scss +4 -4
- package/lib/components/multi-property-toggler/style/material.scss +4 -4
- package/lib/components/screen-config-generator/style/_layout.scss +95 -95
- package/lib/components/screen-config-generator/style/_theme.scss +4 -4
- package/lib/components/screen-config-generator/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.d.ts +19 -19
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/layout-selection/style/_layout.scss +44 -44
- package/lib/components/send-method-dialog/components/layout-selection/style/_material-definition.scss +19 -19
- package/lib/components/send-method-dialog/components/layout-selection/style/_theme.scss +17 -17
- package/lib/components/send-method-dialog/components/layout-selection/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.d.ts +19 -19
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/printer-selection/style/_layout.scss +69 -69
- package/lib/components/send-method-dialog/components/printer-selection/style/_material-definition.scss +37 -37
- package/lib/components/send-method-dialog/components/printer-selection/style/_theme.scss +23 -23
- package/lib/components/send-method-dialog/components/printer-selection/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +14 -14
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/send-method-email/style/_layout.scss +29 -29
- package/lib/components/send-method-dialog/components/send-method-email/style/_material-definition.scss +8 -8
- package/lib/components/send-method-dialog/components/send-method-email/style/_theme.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-email/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.d.ts +8 -8
- package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/send-method-pdf/style/_layout.scss +25 -25
- package/lib/components/send-method-dialog/components/send-method-pdf/style/_material-definition.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-pdf/style/_theme.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-pdf/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +13 -13
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/send-method-printer/style/_layout.scss +30 -30
- package/lib/components/send-method-dialog/components/send-method-printer/style/_material-definition.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-printer/style/_theme.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-printer/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/signature-button/signature-button.component.d.ts +12 -12
- package/lib/components/send-method-dialog/components/signature-button/signature-button.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/signature-button/style/_layout.scss +28 -28
- package/lib/components/send-method-dialog/components/signature-button/style/_material-definition.scss +8 -8
- package/lib/components/send-method-dialog/components/signature-button/style/_theme.scss +4 -4
- package/lib/components/send-method-dialog/components/signature-button/style/material.scss +4 -4
- package/lib/components/send-method-dialog/model/email-address-viewmodel.d.ts +5 -5
- package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +71 -71
- package/lib/components/send-method-dialog/send-method-dialog.module.d.ts +2 -2
- package/lib/components/send-method-dialog/send-method-params.interface.d.ts +13 -13
- package/lib/components/send-method-dialog/service/send-method.service.d.ts +23 -23
- package/lib/components/send-method-dialog/style/_layout.scss +165 -165
- package/lib/components/send-method-dialog/style/_material-definition.scss +48 -48
- package/lib/components/send-method-dialog/style/_theme.scss +33 -33
- package/lib/components/send-method-dialog/style/material.scss +10 -10
- package/lib/components/simple-tags/simple-tags.component.d.ts +31 -31
- package/lib/components/simple-tags/simple-tags.module.d.ts +2 -2
- package/lib/components/simple-tags/style/_layout.scss +272 -272
- package/lib/components/simple-tags/style/_material-definition.scss +39 -39
- package/lib/components/simple-tags/style/_theme.scss +4 -4
- package/lib/components/simple-tags/style/material.scss +4 -4
- package/lib/components/statusbar/statusbar-popup.component.d.ts +21 -21
- package/lib/components/statusbar/statusbar.component.d.ts +26 -26
- package/lib/components/statusbar/statusbar.module.d.ts +2 -2
- package/lib/components/statusbar/style/_layout.scss +70 -70
- package/lib/components/statusbar/style/_material-definition.scss +23 -23
- package/lib/components/statusbar/style/_theme.scss +13 -13
- package/lib/components/statusbar/style/material.scss +5 -5
- package/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-stock-history/order-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-stock-tab/order-stock-tab.component.d.ts +11 -11
- package/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-tab/order-tab.component.d.ts +20 -20
- package/lib/components/stock/components/stock-history/stock-history.component.d.ts +13 -13
- package/lib/components/stock/components/stock-location/components/stock-location-popup/stock-location-popup.component.d.ts +41 -0
- package/lib/components/stock/components/stock-location/stock-location.component.d.ts +54 -52
- package/lib/components/stock/components/stock-prognose/stock-prognose.component.d.ts +11 -11
- package/lib/components/stock/components/stock-tab/stock-tab.component.d.ts +7 -7
- package/lib/components/stock/localization/translation.d.ts +71 -69
- package/lib/components/stock/stock-history-tabs/stock-history-tabs.component.d.ts +7 -7
- package/lib/components/stock/stock-information/stock-information.component.d.ts +9 -9
- package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +75 -75
- package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +59 -56
- package/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.d.ts +4 -4
- package/lib/components/stock/stock-transfer/stock-change-amount.component.d.ts +18 -18
- package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +38 -38
- package/lib/components/stock/stock.component.d.ts +64 -64
- package/lib/components/stock/stock.module.d.ts +2 -2
- package/lib/components/stock/style/_layout.scss +519 -473
- package/lib/components/stock/style/_material-definition.scss +28 -28
- package/lib/components/stock/style/_theme.scss +5 -5
- package/lib/components/stock/style/material.scss +4 -4
- package/lib/components/stock-statusbar/stock-statusbar.component.d.ts +4 -4
- package/lib/components/stock-statusbar/stock-statusbar.module.d.ts +2 -2
- package/lib/components/stock-statusbar/style/_layout.scss +24 -24
- package/lib/components/stock-statusbar/style/material.scss +4 -4
- package/lib/components/tab-bar/style/_layout.scss +83 -83
- package/lib/components/tab-bar/style/_material-definition.scss +6 -6
- package/lib/components/tab-bar/style/material.scss +4 -4
- package/lib/components/tab-bar/tab-bar.component.d.ts +21 -21
- package/lib/components/tab-bar/tab-bar.module.d.ts +2 -2
- package/lib/components/tab-bar/tab.interface.d.ts +5 -5
- package/lib/components/tags/component/style/_layout.scss +67 -67
- package/lib/components/tags/component/style/_material-definition.scss +1 -1
- package/lib/components/tags/component/style/_theme.scss +8 -8
- package/lib/components/tags/component/style/material.scss +3 -3
- package/lib/components/tags/component/tag-join-label/style/_layout.scss +97 -97
- package/lib/components/tags/component/tag-join-label/style/_material-definition.scss +4 -4
- package/lib/components/tags/component/tag-join-label/style/_theme.scss +8 -8
- package/lib/components/tags/component/tag-join-label/style/material.scss +3 -3
- package/lib/components/tile-renderer/style/_layout.scss +90 -90
- package/lib/components/tile-renderer/style/_theme.scss +4 -4
- package/lib/components/tile-renderer/style/material.scss +4 -4
- package/lib/components/tile-renderer/tile-render.component.d.ts +31 -31
- package/lib/components/tile-renderer/tile-render.module.d.ts +2 -2
- package/lib/decorator/input-boolean.decorator.d.ts +8 -8
- package/lib/enum/calendar-view.enum.d.ts +7 -7
- package/lib/enum/document-email-report.enum.d.ts +15 -15
- package/lib/enum/domain-multiple-name.enum.d.ts +10 -10
- package/lib/enum/file-type.d.ts +7 -7
- package/lib/enum/files-upload-config-objects.d.ts +22 -22
- package/lib/enum/gauge-color.enum.d.ts +8 -8
- package/lib/enum/icon.enum.d.ts +47 -46
- package/lib/enum/internal-param.enum.d.ts +34 -34
- package/lib/enum/keyboard-code.enum.d.ts +30 -30
- package/lib/enum/language-code.enum.d.ts +6 -6
- package/lib/enum/month.enum.d.ts +14 -14
- package/lib/enum/read-write-access-config-names.enum.d.ts +4 -4
- package/lib/enum/table-name.enum.d.ts +84 -84
- package/lib/enum/tag-category.enum.d.ts +19 -19
- package/lib/enum/tags-component-config-names.d.ts +4 -4
- package/lib/enum/thumb-three-way-state.d.ts +6 -6
- package/lib/enum/tile-size-type.d.ts +4 -4
- package/lib/enum/time-period.enum.d.ts +8 -8
- package/lib/event/co-drag-event.d.ts +5 -5
- package/lib/event/co-drop-event.d.ts +8 -8
- package/lib/interface/key-value-pair.d.ts +4 -4
- package/lib/interface/operation-callback-simple-function.d.ts +4 -4
- package/lib/localization/localization.module.d.ts +2 -2
- package/lib/localization/localize.pipe.d.ts +7 -7
- package/lib/localization/localize.service.d.ts +7 -7
- package/lib/localization/translation.d.ts +2 -2
- package/lib/model/agenda-event-per-day.model.d.ts +5 -5
- package/lib/model/agenda-event.model.d.ts +17 -17
- package/lib/model/agenda-null-objects.d.ts +10 -10
- package/lib/model/constant/all-months.d.ts +2 -2
- package/lib/model/date-range.d.ts +7 -7
- package/lib/model/day.model.d.ts +8 -8
- package/lib/model/icon-svg.d.ts +4 -4
- package/lib/model/month.model.d.ts +5 -5
- package/lib/model/send-method.d.ts +7 -7
- package/lib/model/settings.d.ts +3 -3
- package/lib/model/tag-tree-item.bo.d.ts +18 -18
- package/lib/model/time-window.bo.d.ts +13 -13
- package/lib/model/tree-object.d.ts +8 -8
- package/lib/model/week.model.d.ts +4 -4
- package/lib/model/weekday.model.d.ts +16 -16
- package/lib/pipe/array-number.pipe.d.ts +4 -4
- package/lib/pipe/file-type-image.pipe.d.ts +12 -12
- package/lib/pipe/master-pipes.d.ts +1 -1
- package/lib/pipe/ucfirst.pipe.d.ts +4 -4
- package/lib/service/dictionary.service.d.ts +21 -21
- package/lib/service/drag-drop.service.d.ts +86 -86
- package/lib/service/icon-cache.service.d.ts +18 -18
- package/lib/service/options.service.d.ts +13 -13
- package/lib/service/shared-connector.service.d.ts +55 -55
- package/lib/service/shared.service.d.ts +18 -18
- package/lib/service/stock.service.d.ts +41 -41
- package/lib/style/_mixin.scss +14 -14
- package/lib/style/_variables.scss +21 -21
- package/lib/style/sharedcomponents-globals.scss +10 -10
- package/lib/utils/array-utils.d.ts +63 -63
- package/lib/utils/calendar.utils.d.ts +10 -10
- package/lib/utils/check-precision-and-scale-result.d.ts +4 -4
- package/lib/utils/check-within-stepped-bounds-result.d.ts +8 -8
- package/lib/utils/co-document-shared-field-logic.d.ts +7 -7
- package/lib/utils/date-utils.d.ts +44 -44
- package/lib/utils/enum-utils.d.ts +31 -31
- package/lib/utils/function/not-nill.function.d.ts +1 -1
- package/lib/utils/is-nill.function.d.ts +1 -1
- package/lib/utils/map-utils.d.ts +16 -16
- package/lib/utils/number-utils.d.ts +125 -125
- package/lib/utils/object-utils.d.ts +40 -40
- package/lib/utils/ref-code-utils.d.ts +10 -10
- package/lib/utils/string-utils.d.ts +38 -38
- package/main.1d1ac86d8023edac29b1.js +1 -0
- package/package.json +1 -1
- package/polyfills.907fe9d1887c5de17993.js +1 -0
- package/public-api.d.ts +27 -27
- package/runtime.8aac21847ed3d3829cca.js +1 -0
- package/styles.42e2561063e306e59f45.css +1 -0
|
@@ -1,397 +1,397 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import { FormComponent } from '@colijnit/corecomponents_v12';
|
|
4
|
-
import { DocumentPublication } from "@colijnit/articleapi/build/enum/refcode/document-publication.enum";
|
|
5
|
-
import { ObjectRightType } from "@colijnit/sharedapi/build/enum/object-right-type.enum";
|
|
6
|
-
import { PromptService } from "@colijnit/corecomponents_v12";
|
|
7
|
-
import { BusinessObjectFactory } from "@colijnit/ioneconnector/build/service/business-object-factory";
|
|
8
|
-
import { InputBoolean } from "../../decorator/input-boolean.decorator";
|
|
9
|
-
import { CoDocument } from "@colijnit/mainapi/build/model/co-document";
|
|
10
|
-
import { CoDocumentRight } from "@colijnit/mainapi/build/model/co-document-right";
|
|
11
|
-
import { FileType } from "../../enum/file-type";
|
|
12
|
-
import { DocumentEmailReport } from "../../enum/document-email-report.enum";
|
|
13
|
-
import { DomainMultipleName } from "../../enum/domain-multiple-name.enum";
|
|
14
|
-
import { FileTypeImagePipe } from "../../pipe/file-type-image.pipe";
|
|
15
|
-
import { FileUtils } from "@colijnit/mainapi/build/utils/file-utils";
|
|
16
|
-
// Component that shows a popup when the user wants to upload a CoDocument
|
|
17
|
-
export class FileUploadPopupComponent {
|
|
18
|
-
constructor(
|
|
19
|
-
//private _workabilityService: AppWorkabilityService,
|
|
20
|
-
_promptService, _fileTypeImgPipe) {
|
|
21
|
-
this._promptService = _promptService;
|
|
22
|
-
this._fileTypeImgPipe = _fileTypeImgPipe;
|
|
23
|
-
this.useWithoutSettingProps = false;
|
|
24
|
-
this.hasPublicAccessVisible = false;
|
|
25
|
-
this.showDocumentReportPicker = true;
|
|
26
|
-
this.displayReadWriteAccess = true;
|
|
27
|
-
this.documentChangeEvent = new EventEmitter();
|
|
28
|
-
this.popupCloseEvent = new EventEmitter();
|
|
29
|
-
this.documentPublication = DocumentPublication;
|
|
30
|
-
this.documentEmailReports = DocumentEmailReport;
|
|
31
|
-
this.domain = DomainMultipleName;
|
|
32
|
-
this.fileTypes = FileType;
|
|
33
|
-
this.hideCancel = false;
|
|
34
|
-
this.storeGroups = [];
|
|
35
|
-
this.userGroupsForWrite = [];
|
|
36
|
-
this.userGroupsForRead = [];
|
|
37
|
-
this.documentTags = [];
|
|
38
|
-
this._filesUploadConfigObjects = {}; // Instantiate with empty object to avoid nullpointers in the template
|
|
39
|
-
this._boFactory = new BusinessObjectFactory();
|
|
40
|
-
this._readonly = false;
|
|
41
|
-
}
|
|
42
|
-
set documentUnderEdit(doc) {
|
|
43
|
-
this._documentUnderEdit = doc ? this._boFactory.makeWithRawBackendData(CoDocument, doc) : undefined;
|
|
44
|
-
}
|
|
45
|
-
get documentUnderEdit() {
|
|
46
|
-
return this._documentUnderEdit;
|
|
47
|
-
}
|
|
48
|
-
set readonly(value) {
|
|
49
|
-
this._readonly = value;
|
|
50
|
-
if (value) {
|
|
51
|
-
//this._toastService.spawnToast("MESSAGE_DOCUMENT_LOCK_SINGLE");
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
set filesUploadConfigObjects(value) {
|
|
55
|
-
this._filesUploadConfigObjects = value;
|
|
56
|
-
}
|
|
57
|
-
showClass() {
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
get showReadWriteAccess() {
|
|
61
|
-
//TODO get userrights
|
|
62
|
-
return true;
|
|
63
|
-
//return this._userRights.workabilityParameterEnabled && this.displayReadWriteAccess;
|
|
64
|
-
}
|
|
65
|
-
get filesUploadConfigObjects() {
|
|
66
|
-
return this._filesUploadConfigObjects;
|
|
67
|
-
}
|
|
68
|
-
get isWorkability() {
|
|
69
|
-
//TODO fix workability
|
|
70
|
-
return false;
|
|
71
|
-
//return this._workabilityService.workabilitySystemEnabled;
|
|
72
|
-
}
|
|
73
|
-
get docUnderEditIsReadOnly() {
|
|
74
|
-
return this.documentUnderEdit.readonly || this._readonly;
|
|
75
|
-
}
|
|
76
|
-
get thumbnail() {
|
|
77
|
-
if (this.documentUnderEdit.isImageDocument()) {
|
|
78
|
-
return this._thumbnail;
|
|
79
|
-
}
|
|
80
|
-
return this._fileTypeImgPipe.transform(this.documentUnderEdit.fileTypeInternal);
|
|
81
|
-
}
|
|
82
|
-
get popupHeader() {
|
|
83
|
-
if (this.documentUnderEdit && this.documentUnderEdit.isImageDocument()) {
|
|
84
|
-
return "IMAGE";
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return "DOCUMENT";
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
get publicationConfigName() {
|
|
91
|
-
if (this.filesUploadConfigObjects) {
|
|
92
|
-
return this.documentUnderEdit.isImageDocument() ?
|
|
93
|
-
this.filesUploadConfigObjects.ImageDocumentPublishTo :
|
|
94
|
-
this.filesUploadConfigObjects.TextDocumentPublishTo;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
return; // No configname found
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
get tagsConfigName() {
|
|
101
|
-
if (this.filesUploadConfigObjects) {
|
|
102
|
-
return this.documentUnderEdit.isImageDocument() ?
|
|
103
|
-
this.filesUploadConfigObjects.TagsImageConfigNames :
|
|
104
|
-
this.filesUploadConfigObjects.TagsTextConfigNames;
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
return; // No configname found
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
ngOnInit() {
|
|
111
|
-
this.loadCollection();
|
|
112
|
-
if (this.documentUnderEdit.isImageDocument()) {
|
|
113
|
-
this._thumbnail = this.documentUnderEdit.documentBodyAsDataUri;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
loadCollection() {
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
//this.documentTags = await this._tagsRepo.getJoinedTags(this.tagReferenceTable, this.documentKey);
|
|
119
|
-
//this.storeGroups = await this._baseDataRepo.getStoreGroupList();
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
onPreviewClick() {
|
|
123
|
-
if (this.documentUnderEdit.isImageDocument()) { //preview image
|
|
124
|
-
this._promptService.showImage(this.documentUnderEdit.documentBodyAsDataUri, "Preview");
|
|
125
|
-
}
|
|
126
|
-
else { //download document
|
|
127
|
-
try {
|
|
128
|
-
FileUtils.DownloadFromDataUri(this.documentUnderEdit.bodyAsDataUri, this.documentUnderEdit.fileName);
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
saveDocumentUnderEditRights() {
|
|
135
|
-
this.documentUnderEdit.rights = [];
|
|
136
|
-
const forWriteLength = this.userGroupsForWrite.length;
|
|
137
|
-
for (let i = 0; i < forWriteLength; i++) {
|
|
138
|
-
const rights = new CoDocumentRight();
|
|
139
|
-
rights.userGroupId = this.userGroupsForWrite[i];
|
|
140
|
-
rights.rightLevel = ObjectRightType.ReadWrite;
|
|
141
|
-
this.documentUnderEdit.rights.push(rights);
|
|
142
|
-
}
|
|
143
|
-
const forReadLength = this.userGroupsForRead.length;
|
|
144
|
-
for (let i = 0; i < forReadLength; i++) {
|
|
145
|
-
const rights = new CoDocumentRight();
|
|
146
|
-
rights.userGroupId = this.userGroupsForRead[i];
|
|
147
|
-
rights.rightLevel = ObjectRightType.ReadOnly;
|
|
148
|
-
this.documentUnderEdit.rights.push(rights);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
onPopupOkClick() {
|
|
152
|
-
if (this.form) {
|
|
153
|
-
this.form.submit();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
handlePropertyChange(refSumOfEnabledItems) {
|
|
157
|
-
this._publicationNumber = refSumOfEnabledItems;
|
|
158
|
-
}
|
|
159
|
-
handleReportsPropertyChange(refSumOfEnabledItems) {
|
|
160
|
-
this._reportsNumber = refSumOfEnabledItems;
|
|
161
|
-
}
|
|
162
|
-
onValidSubmit() {
|
|
163
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
-
this._publicationNumber ? this.documentUnderEdit.publication = this._publicationNumber : this.documentUnderEdit.publication = 0;
|
|
165
|
-
this._reportsNumber ? this.documentUnderEdit.reports = this._reportsNumber : this.documentUnderEdit.reports = 0;
|
|
166
|
-
this.documentUnderEdit.retailFormulas = this.storeGroupIds;
|
|
167
|
-
this.saveDocumentUnderEditRights();
|
|
168
|
-
this.documentChangeEvent.emit(this.documentUnderEdit);
|
|
169
|
-
this.onPopupClose();
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
onPopupCancelClick() {
|
|
173
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
-
this.onPopupClose();
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
onPopupClose() {
|
|
178
|
-
this.userGroupsForWrite.length = 0;
|
|
179
|
-
this.userGroupsForRead.length = 0;
|
|
180
|
-
this.documentUnderEdit = undefined;
|
|
181
|
-
this.popupCloseEvent.next();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
FileUploadPopupComponent.decorators = [
|
|
185
|
-
{ type: Component, args: [{
|
|
186
|
-
selector: "co-file-upload-popup",
|
|
187
|
-
template: `
|
|
188
|
-
<co-dialog *ngIf="!useWithoutSettingProps && documentUnderEdit" cssId="popup_files_upload_content"
|
|
189
|
-
[headerTemplate]="headerTemplate" contentSize noClickOutside
|
|
190
|
-
(close)="onPopupClose()">
|
|
191
|
-
<div class="co-dialog-wrapper">
|
|
192
|
-
<div class="file-upload-form-wrapper" fxLayout="column" fxLayoutGap="10px">
|
|
193
|
-
<co-form class="narrow-scrollbar" (validSubmit)="onValidSubmit()">
|
|
194
|
-
<div class="horizontal-layout-column">
|
|
195
|
-
<div class="document-thumb column-left" *ngIf="!addDocumentByUrl">
|
|
196
|
-
<a (click)="onPreviewClick()"><img [src]="thumbnail"/></a>
|
|
197
|
-
</div>
|
|
198
|
-
<div class="column-right">
|
|
199
|
-
<co-input-text
|
|
200
|
-
[model]="documentUnderEdit.fileSize"
|
|
201
|
-
[screenConfigurationObject]="documentUnderEdit.isImageDocument() ?
|
|
202
|
-
filesUploadConfigObjects?.ImageDocumentFileSize :
|
|
203
|
-
filesUploadConfigObjects?.TextDocumentFileSize"
|
|
204
|
-
[placeholder]="'SIZE' | localize"
|
|
205
|
-
forceReadonly
|
|
206
|
-
noValidation>
|
|
207
|
-
</co-input-text>
|
|
208
|
-
<ng-container *ngIf="documentUnderEdit.isImageDocument()">
|
|
209
|
-
<co-input-text [placeholder]="'DIMENSIONS' | localize"
|
|
210
|
-
[model]="documentUnderEdit.imageDimensions"
|
|
211
|
-
[screenConfigurationObject]="filesUploadConfigObjects?.ImageDocumentDimensions"
|
|
212
|
-
forceReadonly noValidation></co-input-text>
|
|
213
|
-
</ng-container>
|
|
214
|
-
<co-input-text
|
|
215
|
-
[(model)]="documentUnderEdit.title"
|
|
216
|
-
[screenConfigurationObject]="documentUnderEdit.isImageDocument() ?
|
|
217
|
-
filesUploadConfigObjects?.ImageDocumentTitle :
|
|
218
|
-
filesUploadConfigObjects?.TextDocumentTitle"
|
|
219
|
-
[placeholder]="'TITLE2' | localize"
|
|
220
|
-
noValidation forceReadonly></co-input-text>
|
|
221
|
-
</div>
|
|
222
|
-
</div>
|
|
223
|
-
|
|
224
|
-
<div>
|
|
225
|
-
<!--<sc-tags
|
|
226
|
-
[tagCategory]="tagCategory"
|
|
227
|
-
[readonly]="docUnderEditIsReadOnly"-->
|
|
228
|
-
|
|
229
|
-
<!-- ></sc-tags>--><!-- [myCfgNames]="tagsConfigName" | [(joinedTags)]="this.documentUnderEdit.tags"-->
|
|
230
|
-
</div>
|
|
231
|
-
<!--<div>
|
|
232
|
-
<read-write-access *ngIf="showReadWriteAccess"
|
|
233
|
-
[readWriteCfgNames]="filesUploadConfigObjects?.readWriteAccess"
|
|
234
|
-
[layoutHorizontal]="true"
|
|
235
|
-
[medicalUserGroups]="medicalUserGroups"
|
|
236
|
-
[(userGroupsForWrite)]="userGroupsForWrite"
|
|
237
|
-
[(userGroupsForRead)]="userGroupsForRead"
|
|
238
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
239
|
-
></read-write-access>
|
|
240
|
-
</div>-->
|
|
241
|
-
<!--<div class="horizontal-layout-column">
|
|
242
|
-
<ng-container *ngIf="addDocumentByUrl">
|
|
243
|
-
<co-input-text required [placeholder]="'URL' | localize" [(model)]="documentUnderEdit.filePath"
|
|
244
|
-
[readonly]="docUnderEditIsReadOnly"></co-input-text>
|
|
245
|
-
</ng-container>
|
|
246
|
-
</div>-->
|
|
247
|
-
<div class="horizontal-layout-column">
|
|
248
|
-
<div class="column-left">
|
|
249
|
-
<co-input-text [placeholder]="'DESCRIPTION' | localize" [(model)]="documentUnderEdit.description"
|
|
250
|
-
[screenConfigurationObject]="documentUnderEdit.isImageDocument() ?
|
|
251
|
-
filesUploadConfigObjects?.ImageDocumentDescription :
|
|
252
|
-
filesUploadConfigObjects?.TextDocumentDescription"
|
|
253
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
254
|
-
></co-input-text>
|
|
255
|
-
|
|
256
|
-
</div>
|
|
257
|
-
<!--<div *ngIf="hasPublicAccessVisible" class="column-right">
|
|
258
|
-
<input-switcher-yes-no label="PUBLIC_ACCESS"
|
|
259
|
-
[(model)]="documentUnderEdit.hasPublicAccess"
|
|
260
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
261
|
-
></input-switcher-yes-no>
|
|
262
|
-
</div>-->
|
|
263
|
-
</div>
|
|
264
|
-
<div class="horizontal-layout-column">
|
|
265
|
-
<ng-container *ngIf="!documentUnderEdit.isImageDocument()">
|
|
266
|
-
<div class="column-left">
|
|
267
|
-
<!-- <input-switcher-yes-no label="DOWNLOADABLE"
|
|
268
|
-
[(model)]="documentUnderEdit.downloadable"
|
|
269
|
-
[cfgName]="filesUploadConfigObjects?.TextDocumentDownloadable"
|
|
270
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
271
|
-
></input-switcher-yes-no>-->
|
|
272
|
-
</div>
|
|
273
|
-
</ng-container>
|
|
274
|
-
</div>
|
|
275
|
-
<div class="horizontal-layout-column">
|
|
276
|
-
<ng-container *ngIf="fileType === fileTypes.ThreeDFile">
|
|
277
|
-
<div class="column-left">
|
|
278
|
-
<!-- <input-switcher-yes-no label="ALSO_AS_USDZ"
|
|
279
|
-
[(model)]="documentUnderEdit.convertToUSDZ"
|
|
280
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
281
|
-
></input-switcher-yes-no>-->
|
|
282
|
-
</div>
|
|
283
|
-
</ng-container>
|
|
284
|
-
</div>
|
|
285
|
-
<div class="horizontal-layout-column">
|
|
286
|
-
<ng-container *ngIf="documentUnderEdit.isImageDocument()">
|
|
287
|
-
<div class="column-left"><!--
|
|
288
|
-
<input-switcher-yes-no label="ATTACH_TO_NOTIFICATION"
|
|
289
|
-
[(model)]="documentUnderEdit.attachToNotification"
|
|
290
|
-
[cfgName]="filesUploadConfigObjects?.ImageDocumentAttachNotification"
|
|
291
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
292
|
-
></input-switcher-yes-no>-->
|
|
293
|
-
</div>
|
|
294
|
-
<div class="column-right"><!--
|
|
295
|
-
<image-type-select
|
|
296
|
-
[cfgName]="filesUploadConfigObjects?.ImageDocumentDisplayType"
|
|
297
|
-
[(selectedModelId)]="this.documentUnderEdit.imageDisplayKind"
|
|
298
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
299
|
-
label="DISPLAY_TYPE"
|
|
300
|
-
></image-type-select>-->
|
|
301
|
-
</div>
|
|
302
|
-
</ng-container>
|
|
303
|
-
</div>
|
|
304
|
-
<div *ngIf="!isWorkability">
|
|
305
|
-
<!-- <multiple-property-toggler *ngIf="!showDocumentReportPicker"
|
|
306
|
-
[propertyNamesToToggle]="documentPublication"
|
|
307
|
-
[(enableditems)]="this.documentUnderEdit.publication"
|
|
308
|
-
(onPropertyItemChange)="handlePropertyChange($event)"
|
|
309
|
-
label="PUBLISH_TO"
|
|
310
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
311
|
-
></multiple-property-toggler>-->
|
|
312
|
-
<co-multiple-property-toggler *ngIf="showDocumentReportPicker"
|
|
313
|
-
[propertyNamesToToggle]="documentEmailReports"
|
|
314
|
-
[(enableditems)]="documentUnderEdit.reports"
|
|
315
|
-
(onPropertyItemChange)="handleReportsPropertyChange($event)"
|
|
316
|
-
label="REPORTS_TO_ATTACH_TO"
|
|
317
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
318
|
-
></co-multiple-property-toggler>
|
|
319
|
-
|
|
320
|
-
<!--<ng-container *ngIf="documentUnderEdit.isImageDocument()"
|
|
321
|
-
[templateWrapper]="templateImage"></ng-container>-->
|
|
322
|
-
</div>
|
|
323
|
-
</co-form>
|
|
324
|
-
<div class="ok-cancel-buttons">
|
|
325
|
-
<co-button [disabled]="docUnderEditIsReadOnly" [textContent]="'OK' | localize" (click)="onPopupOkClick()"></co-button>
|
|
326
|
-
<co-button *ngIf="hideCancel" [textContent]="'STICKER' | localize" (click)="onPopupCancelClick()"></co-button>
|
|
327
|
-
</div>
|
|
328
|
-
<!-- <default-ok-cancel-buttons class="justify-center"
|
|
329
|
-
[okDisabled]="docUnderEditIsReadOnly"
|
|
330
|
-
[hideCancel]="hideCancel"
|
|
331
|
-
(okClick)="onPopupOkClick()"
|
|
332
|
-
(cancelClick)="onPopupCancelClick()">
|
|
333
|
-
</default-ok-cancel-buttons>-->
|
|
334
|
-
</div>
|
|
335
|
-
</div>
|
|
336
|
-
</co-dialog>
|
|
337
|
-
<ng-template #headerTemplate>
|
|
338
|
-
<div [textContent]="popupHeader | localize"></div>
|
|
339
|
-
</ng-template>
|
|
340
|
-
<ng-template #templateImage *ngIf="!isWorkability">
|
|
341
|
-
<!-- <div class="column-right">
|
|
342
|
-
<input-lov-multi-select
|
|
343
|
-
[cfgName]="filesUploadConfigObjects.ImageDocumentStoreGroups"
|
|
344
|
-
[(selectedModelIds)]="storeGroupIds"
|
|
345
|
-
[collection]="storeGroups"
|
|
346
|
-
[readonly]="docUnderEditIsReadOnly"
|
|
347
|
-
descriptionField="description"
|
|
348
|
-
doNotLoadCollection
|
|
349
|
-
customWidth
|
|
350
|
-
label="RETAIL_FORMULAS"
|
|
351
|
-
></input-lov-multi-select>
|
|
352
|
-
</div>-->
|
|
353
|
-
</ng-template>
|
|
354
|
-
`,
|
|
355
|
-
encapsulation: ViewEncapsulation.None
|
|
356
|
-
},] }
|
|
357
|
-
];
|
|
358
|
-
FileUploadPopupComponent.ctorParameters = () => [
|
|
359
|
-
{ type: PromptService },
|
|
360
|
-
{ type: FileTypeImagePipe }
|
|
361
|
-
];
|
|
362
|
-
FileUploadPopupComponent.propDecorators = {
|
|
363
|
-
form: [{ type: ViewChild, args: [FormComponent,] }],
|
|
364
|
-
useWithoutSettingProps: [{ type: Input }],
|
|
365
|
-
hasPublicAccessVisible: [{ type: Input }],
|
|
366
|
-
showDocumentReportPicker: [{ type: Input }],
|
|
367
|
-
documentUnderEdit: [{ type: Input }],
|
|
368
|
-
readonly: [{ type: Input }],
|
|
369
|
-
filesUploadConfigObjects: [{ type: Input }],
|
|
370
|
-
tagCategory: [{ type: Input }],
|
|
371
|
-
medicalUserGroups: [{ type: Input }],
|
|
372
|
-
displayReadWriteAccess: [{ type: Input }],
|
|
373
|
-
tagReferenceTable: [{ type: Input }],
|
|
374
|
-
documentKey: [{ type: Input }],
|
|
375
|
-
documentTable: [{ type: Input }],
|
|
376
|
-
fileType: [{ type: Input }],
|
|
377
|
-
addDocumentByUrl: [{ type: Input }],
|
|
378
|
-
documentChangeEvent: [{ type: Output }],
|
|
379
|
-
popupCloseEvent: [{ type: Output }],
|
|
380
|
-
showClass: [{ type: HostBinding, args: ['class.co-file-upload-popup',] }]
|
|
381
|
-
};
|
|
382
|
-
__decorate([
|
|
383
|
-
InputBoolean()
|
|
384
|
-
], FileUploadPopupComponent.prototype, "useWithoutSettingProps", void 0);
|
|
385
|
-
__decorate([
|
|
386
|
-
InputBoolean()
|
|
387
|
-
], FileUploadPopupComponent.prototype, "hasPublicAccessVisible", void 0);
|
|
388
|
-
__decorate([
|
|
389
|
-
InputBoolean()
|
|
390
|
-
], FileUploadPopupComponent.prototype, "showDocumentReportPicker", void 0);
|
|
391
|
-
__decorate([
|
|
392
|
-
InputBoolean()
|
|
393
|
-
], FileUploadPopupComponent.prototype, "medicalUserGroups", void 0);
|
|
394
|
-
__decorate([
|
|
395
|
-
InputBoolean()
|
|
396
|
-
], FileUploadPopupComponent.prototype, "addDocumentByUrl", void 0);
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQtcG9wdXAvZmlsZS11cGxvYWQtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBRXRHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN0RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFJaEYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQStLbkUsMEVB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QkFBaUIsR0FBRyxTQUFTLENBQUM7UUFFbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzs7WUFwYUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F1S1Q7Z0JBQ0EsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDekM7OztZQTVMTyxhQUFhO1lBYWIsaUJBQWlCOzs7bUJBa0xwQixTQUFTLFNBQUMsYUFBYTtxQ0FHdkIsS0FBSztxQ0FJTCxLQUFLO3VDQUlMLEtBQUs7Z0NBTUwsS0FBSzt1QkFTTCxLQUFLO3VDQVNMLEtBQUs7MEJBS0wsS0FBSztnQ0FHTCxLQUFLO3FDQUlMLEtBQUs7Z0NBR0wsS0FBSzswQkFHTCxLQUFLOzRCQUdMLEtBQUs7dUJBR0wsS0FBSzsrQkFHTCxLQUFLO2tDQUlMLE1BQU07OEJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsNEJBQTRCOztBQW5FekM7SUFEQyxZQUFZLEVBQUU7d0VBQ2dDO0FBSS9DO0lBREMsWUFBWSxFQUFFO3dFQUNnQztBQUsvQztJQUZDLFlBQVksRUFBRTswRUFFaUM7QUErQmhEO0lBREMsWUFBWSxFQUFFO21FQUNtQjtBQW1CbEM7SUFEQyxZQUFZLEVBQUU7a0VBQ2tCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xuaW1wb3J0IHtEb2N1bWVudFB1YmxpY2F0aW9ufSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvZW51bS9yZWZjb2RlL2RvY3VtZW50LXB1YmxpY2F0aW9uLmVudW1cIjtcbmltcG9ydCB7U3RvcmVHcm91cH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3N0b3JlLWdyb3VwLmJvXCI7XG5pbXBvcnQge09iamVjdFJpZ2h0VHlwZX0gZnJvbSBcIkBjb2xpam5pdC9zaGFyZWRhcGkvYnVpbGQvZW51bS9vYmplY3QtcmlnaHQtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1Byb21wdFNlcnZpY2V9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3NlcnZpY2UvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tIFwiLi4vLi4vZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yXCI7XG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudFwiO1xuaW1wb3J0IHtDb0RvY3VtZW50UmlnaHR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudC1yaWdodFwiO1xuaW1wb3J0IHtUYWdDYXRlZ29yeX0gZnJvbSBcIi4uLy4uL2VudW0vdGFnLWNhdGVnb3J5LmVudW1cIjtcbmltcG9ydCB7RmlsZXNVcGxvYWRDb25maWdPYmplY3RzfSBmcm9tIFwiLi4vLi4vZW51bS9maWxlcy11cGxvYWQtY29uZmlnLW9iamVjdHNcIjtcbmltcG9ydCB7VGFibGVOYW1lfSBmcm9tIFwiLi4vLi4vZW51bS90YWJsZS1uYW1lLmVudW1cIjtcbmltcG9ydCB7RmlsZVR5cGV9IGZyb20gXCIuLi8uLi9lbnVtL2ZpbGUtdHlwZVwiO1xuaW1wb3J0IHtEb2N1bWVudEVtYWlsUmVwb3J0fSBmcm9tIFwiLi4vLi4vZW51bS9kb2N1bWVudC1lbWFpbC1yZXBvcnQuZW51bVwiO1xuaW1wb3J0IHtUYWdzQ29tcG9uZW50Q29uZmlnTmFtZXN9IGZyb20gXCIuLi8uLi9lbnVtL3RhZ3MtY29tcG9uZW50LWNvbmZpZy1uYW1lc1wiO1xuaW1wb3J0IHtEb21haW5NdWx0aXBsZU5hbWV9IGZyb20gXCIuLi8uLi9lbnVtL2RvbWFpbi1tdWx0aXBsZS1uYW1lLmVudW1cIjtcbmltcG9ydCB7VGFnVHJlZUl0ZW19IGZyb20gXCIuLi8uLi9tb2RlbC90YWctdHJlZS1pdGVtLmJvXCI7XG5pbXBvcnQge0ZpbGVUeXBlSW1hZ2VQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZS9maWxlLXR5cGUtaW1hZ2UucGlwZVwiO1xuaW1wb3J0IHtGaWxlVXRpbHN9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC91dGlscy9maWxlLXV0aWxzXCI7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwiY28tZmlsZS11cGxvYWQtcG9wdXBcIixcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8Y28tZGlhbG9nICpuZ0lmPVwiIXVzZVdpdGhvdXRTZXR0aW5nUHJvcHMgJiYgZG9jdW1lbnRVbmRlckVkaXRcIiBjc3NJZD1cInBvcHVwX2ZpbGVzX3VwbG9hZF9jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIiBjb250ZW50U2l6ZSBub0NsaWNrT3V0c2lkZVxuICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJvblBvcHVwQ2xvc2UoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkLWZvcm0td3JhcHBlclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxjby1mb3JtIGNsYXNzPVwibmFycm93LXNjcm9sbGJhclwiICh2YWxpZFN1Ym1pdCk9XCJvblZhbGlkU3VibWl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWxheW91dC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdGh1bWIgY29sdW1uLWxlZnRcIiAqbmdJZj1cIiFhZGREb2N1bWVudEJ5VXJsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJvblByZXZpZXdDbGljaygpXCI+PGltZyBbc3JjXT1cInRodW1ibmFpbFwiLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJkb2N1bWVudFVuZGVyRWRpdC5maWxlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5JbWFnZURvY3VtZW50RmlsZVNpemUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5UZXh0RG9jdW1lbnRGaWxlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTSVpFJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9WYWxpZGF0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFtwbGFjZWhvbGRlcl09XCInRElNRU5TSU9OUycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZG9jdW1lbnRVbmRlckVkaXQuaW1hZ2VEaW1lbnNpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cz8uSW1hZ2VEb2N1bWVudERpbWVuc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VSZWFkb25seSBub1ZhbGlkYXRpb24+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkb2N1bWVudFVuZGVyRWRpdC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5JbWFnZURvY3VtZW50VGl0bGUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5UZXh0RG9jdW1lbnRUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidUSVRMRTInIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vVmFsaWRhdGlvbiBmb3JjZVJlYWRvbmx5PjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxzYy10YWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ0NhdGVnb3J5XT1cInRhZ0NhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPjwvc2MtdGFncz4tLT48IS0tIFtteUNmZ05hbWVzXT1cInRhZ3NDb25maWdOYW1lXCIgfCBbKGpvaW5lZFRhZ3MpXT1cInRoaXMuZG9jdW1lbnRVbmRlckVkaXQudGFnc1wiLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVhZC13cml0ZS1hY2Nlc3MgKm5nSWY9XCJzaG93UmVhZFdyaXRlQWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRXcml0ZUNmZ05hbWVzXT1cImZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cz8ucmVhZFdyaXRlQWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dEhvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttZWRpY2FsVXNlckdyb3Vwc109XCJtZWRpY2FsVXNlckdyb3Vwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodXNlckdyb3Vwc0ZvcldyaXRlKV09XCJ1c2VyR3JvdXBzRm9yV3JpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHVzZXJHcm91cHNGb3JSZWFkKV09XCJ1c2VyR3JvdXBzRm9yUmVhZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9yZWFkLXdyaXRlLWFjY2Vzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWxheW91dC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWRkRG9jdW1lbnRCeVVybFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCByZXF1aXJlZCBbcGxhY2Vob2xkZXJdPVwiJ1VSTCcgfCBsb2NhbGl6ZVwiIFsobW9kZWwpXT1cImRvY3VtZW50VW5kZXJFZGl0LmZpbGVQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRvY1VuZGVyRWRpdElzUmVhZE9ubHlcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWxheW91dC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW3BsYWNlaG9sZGVyXT1cIidERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiIFsobW9kZWwpXT1cImRvY3VtZW50VW5kZXJFZGl0LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5JbWFnZURvY3VtZW50RGVzY3JpcHRpb24gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5UZXh0RG9jdW1lbnREZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08ZGl2ICpuZ0lmPVwiaGFzUHVibGljQWNjZXNzVmlzaWJsZVwiIGNsYXNzPVwiY29sdW1uLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dC1zd2l0Y2hlci15ZXMtbm8gbGFiZWw9XCJQVUJMSUNfQUNDRVNTXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkb2N1bWVudFVuZGVyRWRpdC5oYXNQdWJsaWNBY2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW5wdXQtc3dpdGNoZXIteWVzLW5vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1sYXlvdXQtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQtc3dpdGNoZXIteWVzLW5vIGxhYmVsPVwiRE9XTkxPQURBQkxFXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiZG9jdW1lbnRVbmRlckVkaXQuZG93bmxvYWRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NmZ05hbWVdPVwiZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5UZXh0RG9jdW1lbnREb3dubG9hZGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pbnB1dC1zd2l0Y2hlci15ZXMtbm8+LS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1sYXlvdXQtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGVUeXBlID09PSBmaWxlVHlwZXMuVGhyZWVERmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQtc3dpdGNoZXIteWVzLW5vIGxhYmVsPVwiQUxTT19BU19VU0RaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiZG9jdW1lbnRVbmRlckVkaXQuY29udmVydFRvVVNEWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lucHV0LXN3aXRjaGVyLXllcy1ubz4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWxheW91dC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1sZWZ0XCI+PCEtLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0LXN3aXRjaGVyLXllcy1ubyBsYWJlbD1cIkFUVEFDSF9UT19OT1RJRklDQVRJT05cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkb2N1bWVudFVuZGVyRWRpdC5hdHRhY2hUb05vdGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZmdOYW1lXT1cImZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cz8uSW1hZ2VEb2N1bWVudEF0dGFjaE5vdGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lucHV0LXN3aXRjaGVyLXllcy1ubz4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tcmlnaHRcIj48IS0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1hZ2UtdHlwZS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NmZ05hbWVdPVwiZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5JbWFnZURvY3VtZW50RGlzcGxheVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkTW9kZWxJZCldPVwidGhpcy5kb2N1bWVudFVuZGVyRWRpdC5pbWFnZURpc3BsYXlLaW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRvY1VuZGVyRWRpdElzUmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkRJU1BMQVlfVFlQRVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pbWFnZS10eXBlLXNlbGVjdD4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNXb3JrYWJpbGl0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bXVsdGlwbGUtcHJvcGVydHktdG9nZ2xlciAqbmdJZj1cIiFzaG93RG9jdW1lbnRSZXBvcnRQaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BlcnR5TmFtZXNUb1RvZ2dsZV09XCJkb2N1bWVudFB1YmxpY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZW5hYmxlZGl0ZW1zKV09XCJ0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnB1YmxpY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblByb3BlcnR5SXRlbUNoYW5nZSk9XCJoYW5kbGVQcm9wZXJ0eUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiUFVCTElTSF9UT1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbXVsdGlwbGUtcHJvcGVydHktdG9nZ2xlcj4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tbXVsdGlwbGUtcHJvcGVydHktdG9nZ2xlciAqbmdJZj1cInNob3dEb2N1bWVudFJlcG9ydFBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlOYW1lc1RvVG9nZ2xlXT1cImRvY3VtZW50RW1haWxSZXBvcnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZW5hYmxlZGl0ZW1zKV09XCJkb2N1bWVudFVuZGVyRWRpdC5yZXBvcnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblByb3BlcnR5SXRlbUNoYW5nZSk9XCJoYW5kbGVSZXBvcnRzUHJvcGVydHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlJFUE9SVFNfVE9fQVRUQUNIX1RPXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1tdWx0aXBsZS1wcm9wZXJ0eS10b2dnbGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxuZy1jb250YWluZXIgKm5nSWY9XCJkb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVXcmFwcGVyXT1cInRlbXBsYXRlSW1hZ2VcIj48L25nLWNvbnRhaW5lcj4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2NvLWZvcm0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2stY2FuY2VsLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiIFt0ZXh0Q29udGVudF09XCInT0snIHwgbG9jYWxpemVcIiAoY2xpY2spPVwib25Qb3B1cE9rQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uICpuZ0lmPVwiaGlkZUNhbmNlbFwiIFt0ZXh0Q29udGVudF09XCInU1RJQ0tFUicgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvblBvcHVwQ2FuY2VsQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8IS0tICA8ZGVmYXVsdC1vay1jYW5jZWwtYnV0dG9ucyBjbGFzcz1cImp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29rRGlzYWJsZWRdPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQ2FuY2VsXT1cImhpZGVDYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2tDbGljayk9XCJvblBvcHVwT2tDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbmNlbENsaWNrKT1cIm9uUG9wdXBDYW5jZWxDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGVmYXVsdC1vay1jYW5jZWwtYnV0dG9ucz4tLT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2NvLWRpYWxvZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cInBvcHVwSGVhZGVyIHwgbG9jYWxpemVcIj48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZUltYWdlICpuZ0lmPVwiIWlzV29ya2FiaWxpdHlcIj5cbiAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sdW1uLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0LWxvdi1tdWx0aS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjZmdOYW1lXT1cImZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cy5JbWFnZURvY3VtZW50U3RvcmVHcm91cHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE1vZGVsSWRzKV09XCJzdG9yZUdyb3VwSWRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInN0b3JlR3JvdXBzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRmllbGQ9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkb05vdExvYWRDb2xsZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21XaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJSRVRBSUxfRk9STVVMQVNcIlxuICAgICAgICAgICAgICAgID48L2lucHV0LWxvdi1tdWx0aS1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj4tLT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICBgLFxuICAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuLy8gQ29tcG9uZW50IHRoYXQgc2hvd3MgYSBwb3B1cCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIENvRG9jdW1lbnRcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoRm9ybUNvbXBvbmVudClcbiAgICBwdWJsaWMgZm9ybTogRm9ybUNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgcHVibGljIHVzZVdpdGhvdXRTZXR0aW5nUHJvcHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgcHVibGljIGhhc1B1YmxpY0FjY2Vzc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgLy90b2RvIHRoaXMgaXMgdXN1YWxseSBzZXQgdG8gZmFsc2Ugb24gaW5pdFxuICAgIHB1YmxpYyBzaG93RG9jdW1lbnRSZXBvcnRQaWNrZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZG9jdW1lbnRVbmRlckVkaXQoZG9jOiBDb0RvY3VtZW50KSB7XG4gICAgICAgIHRoaXMuX2RvY3VtZW50VW5kZXJFZGl0ID0gZG9jID8gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQ29Eb2N1bWVudCwgZG9jKSBhcyB1bmtub3duIGFzIENvRG9jdW1lbnQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkb2N1bWVudFVuZGVyRWRpdCgpOiBDb0RvY3VtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50VW5kZXJFZGl0O1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgLy90aGlzLl90b2FzdFNlcnZpY2Uuc3Bhd25Ub2FzdChcIk1FU1NBR0VfRE9DVU1FTlRfTE9DS19TSU5HTEVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzKHZhbHVlOiBGaWxlc1VwbG9hZENvbmZpZ09iamVjdHMpIHtcbiAgICAgICAgdGhpcy5fZmlsZXNVcGxvYWRDb25maWdPYmplY3RzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGFnQ2F0ZWdvcnk6IFRhZ0NhdGVnb3J5O1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBwdWJsaWMgbWVkaWNhbFVzZXJHcm91cHM6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNwbGF5UmVhZFdyaXRlQWNjZXNzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhZ1JlZmVyZW5jZVRhYmxlOiBUYWJsZU5hbWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkb2N1bWVudEtleTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZG9jdW1lbnRUYWJsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsZVR5cGU6IEZpbGVUeXBlO1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBwdWJsaWMgYWRkRG9jdW1lbnRCeVVybDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudENoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9wdXBDbG9zZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWZpbGUtdXBsb2FkLXBvcHVwJylcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRQdWJsaWNhdGlvbjogdHlwZW9mIERvY3VtZW50UHVibGljYXRpb24gPSBEb2N1bWVudFB1YmxpY2F0aW9uO1xuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudEVtYWlsUmVwb3J0czogdHlwZW9mIERvY3VtZW50RW1haWxSZXBvcnQgPSBEb2N1bWVudEVtYWlsUmVwb3J0O1xuXG4gICAgcHVibGljIGdldCBzaG93UmVhZFdyaXRlQWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICAvL1RPRE8gZ2V0IHVzZXJyaWdodHNcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIC8vcmV0dXJuIHRoaXMuX3VzZXJSaWdodHMud29ya2FiaWxpdHlQYXJhbWV0ZXJFbmFibGVkICYmIHRoaXMuZGlzcGxheVJlYWRXcml0ZUFjY2VzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cygpOiBGaWxlc1VwbG9hZENvbmZpZ09iamVjdHMge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXNVcGxvYWRDb25maWdPYmplY3RzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNXb3JrYWJpbGl0eSgpOiBib29sZWFuIHtcbiAgICAgIC8vVE9ETyBmaXggd29ya2FiaWxpdHlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgLy9yZXR1cm4gdGhpcy5fd29ya2FiaWxpdHlTZXJ2aWNlLndvcmthYmlsaXR5U3lzdGVtRW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRvY1VuZGVyRWRpdElzUmVhZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnJlYWRvbmx5IHx8IHRoaXMuX3JlYWRvbmx5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGh1bWJuYWlsKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmlzSW1hZ2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdGh1bWJuYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVUeXBlSW1nUGlwZS50cmFuc2Zvcm0odGhpcy5kb2N1bWVudFVuZGVyRWRpdC5maWxlVHlwZUludGVybmFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvcHVwSGVhZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50VW5kZXJFZGl0ICYmIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBcIklNQUdFXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXCJET0NVTUVOVFwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwdWJsaWNhdGlvbkNvbmZpZ05hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZXNVcGxvYWRDb25maWdPYmplY3RzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKSA/XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMuSW1hZ2VEb2N1bWVudFB1Ymxpc2hUbyA6XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMuVGV4dERvY3VtZW50UHVibGlzaFRvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBObyBjb25maWduYW1lIGZvdW5kXG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHB1YmxpYyBnZXQgdGFnc0NvbmZpZ05hbWUoKTogVGFnc0NvbXBvbmVudENvbmZpZ05hbWVzIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZXNVcGxvYWRDb25maWdPYmplY3RzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKSA/XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMuVGFnc0ltYWdlQ29uZmlnTmFtZXMgOlxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNVcGxvYWRDb25maWdPYmplY3RzLlRhZ3NUZXh0Q29uZmlnTmFtZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIE5vIGNvbmZpZ25hbWUgZm91bmRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBkb21haW46IHR5cGVvZiBEb21haW5NdWx0aXBsZU5hbWUgPSBEb21haW5NdWx0aXBsZU5hbWU7XG4gICAgcHVibGljIHJlYWRvbmx5IGZpbGVUeXBlczogdHlwZW9mIEZpbGVUeXBlID0gRmlsZVR5cGU7XG5cbiAgICBwdWJsaWMgX2RvY3VtZW50VW5kZXJFZGl0OiBDb0RvY3VtZW50O1xuICAgIHB1YmxpYyBoaWRlQ2FuY2VsOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHN0b3JlR3JvdXBzOiBTdG9yZUdyb3VwW10gPSBbXTtcbiAgICBwdWJsaWMgcHVibGljYXRpb25JZHM6IG51bWJlcltdO1xuICAgIHB1YmxpYyBzdG9yZUdyb3VwSWRzOiBzdHJpbmdbXTtcbiAgICBwdWJsaWMgdXNlckdyb3Vwc0ZvcldyaXRlOiBudW1iZXJbXSA9IFtdO1xuICAgIHB1YmxpYyB1c2VyR3JvdXBzRm9yUmVhZDogbnVtYmVyW10gPSBbXTtcbiAgICBwdWJsaWMgZG9jdW1lbnRUYWdzOiBUYWdUcmVlSXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIF9maWxlc1VwbG9hZENvbmZpZ09iamVjdHM6IEZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cyA9IHt9OyAvLyBJbnN0YW50aWF0ZSB3aXRoIGVtcHR5IG9iamVjdCB0byBhdm9pZCBudWxscG9pbnRlcnMgaW4gdGhlIHRlbXBsYXRlXG4gICAgcHJpdmF0ZSBfYm9GYWN0b3J5OiBCdXNpbmVzc09iamVjdEZhY3RvcnkgPSBuZXcgQnVzaW5lc3NPYmplY3RGYWN0b3J5KCk7XG4gICAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9wdWJsaWNhdGlvbk51bWJlcjogbnVtYmVyO1xuICAgIHByaXZhdGUgX3JlcG9ydHNOdW1iZXI6IG51bWJlcjtcblxuICAgIHByaXZhdGUgX3RodW1ibmFpbDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIC8vcHJpdmF0ZSBfd29ya2FiaWxpdHlTZXJ2aWNlOiBBcHBXb3JrYWJpbGl0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3Byb21wdFNlcnZpY2U6IFByb21wdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2ZpbGVUeXBlSW1nUGlwZTogRmlsZVR5cGVJbWFnZVBpcGUsXG4gICAgICAgIC8vcHJpdmF0ZSBfdXNlclJpZ2h0czogVXNlclJpZ2h0c1NlcnZpY2UsXG4gICAgICAgIC8vcHJpdmF0ZSBfYmFzZURhdGFSZXBvOiBCYXNlRGF0YURhbFJlcG9zaXRvcnksXG4gICAgICAgIC8vcHJpdmF0ZSBfdGFnc1JlcG86IFRhZ3NEYWxSZXBvc2l0b3J5LFxuICAgICAgICAvL3ByaXZhdGUgX2RhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICAgICAgLy9wcml2YXRlIF90b2FzdFNlcnZpY2U6IEFwcFRvYXN0U2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRDb2xsZWN0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmlzSW1hZ2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICB0aGlzLl90aHVtYm5haWwgPSB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmRvY3VtZW50Qm9keUFzRGF0YVVyaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkQ29sbGVjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy90aGlzLmRvY3VtZW50VGFncyA9IGF3YWl0IHRoaXMuX3RhZ3NSZXBvLmdldEpvaW5lZFRhZ3ModGhpcy50YWdSZWZlcmVuY2VUYWJsZSwgdGhpcy5kb2N1bWVudEtleSk7XG4gICAgICAgIC8vdGhpcy5zdG9yZUdyb3VwcyA9IGF3YWl0IHRoaXMuX2Jhc2VEYXRhUmVwby5nZXRTdG9yZUdyb3VwTGlzdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblByZXZpZXdDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkpIHsgLy9wcmV2aWV3IGltYWdlXG4gICAgICAgICAgICB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dJbWFnZSh0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmRvY3VtZW50Qm9keUFzRGF0YVVyaSwgXCJQcmV2aWV3XCIpO1xuICAgICAgICB9IGVsc2UgeyAvL2Rvd25sb2FkIGRvY3VtZW50XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIEZpbGVVdGlscy5Eb3dubG9hZEZyb21EYXRhVXJpKHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuYm9keUFzRGF0YVVyaSwgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5maWxlTmFtZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZURvY3VtZW50VW5kZXJFZGl0UmlnaHRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnJpZ2h0cyA9IFtdO1xuICAgICAgICBjb25zdCBmb3JXcml0ZUxlbmd0aDogbnVtYmVyID0gdGhpcy51c2VyR3JvdXBzRm9yV3JpdGUubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgZm9yV3JpdGVMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmlnaHRzOiBDb0RvY3VtZW50UmlnaHQgPSBuZXcgQ29Eb2N1bWVudFJpZ2h0KCk7XG4gICAgICAgICAgICByaWdodHMudXNlckdyb3VwSWQgPSB0aGlzLnVzZXJHcm91cHNGb3JXcml0ZVtpXTtcbiAgICAgICAgICAgIHJpZ2h0cy5yaWdodExldmVsID0gT2JqZWN0UmlnaHRUeXBlLlJlYWRXcml0ZTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzLnB1c2gocmlnaHRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvclJlYWRMZW5ndGg6IG51bWJlciA9IHRoaXMudXNlckdyb3Vwc0ZvclJlYWQubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgZm9yUmVhZExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByaWdodHM6IENvRG9jdW1lbnRSaWdodCA9IG5ldyBDb0RvY3VtZW50UmlnaHQoKTtcbiAgICAgICAgICAgIHJpZ2h0cy51c2VyR3JvdXBJZCA9IHRoaXMudXNlckdyb3Vwc0ZvclJlYWRbaV07XG4gICAgICAgICAgICByaWdodHMucmlnaHRMZXZlbCA9IE9iamVjdFJpZ2h0VHlwZS5SZWFkT25seTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzLnB1c2gocmlnaHRzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblBvcHVwT2tDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnN1Ym1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZVByb3BlcnR5Q2hhbmdlKHJlZlN1bU9mRW5hYmxlZEl0ZW1zOiBudW1iZXIpOiBhbnkge1xuICAgICAgICB0aGlzLl9wdWJsaWNhdGlvbk51bWJlciA9IHJlZlN1bU9mRW5hYmxlZEl0ZW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVSZXBvcnRzUHJvcGVydHlDaGFuZ2UocmVmU3VtT2ZFbmFibGVkSXRlbXM6IG51bWJlcik6IGFueSB7XG4gICAgICAgIHRoaXMuX3JlcG9ydHNOdW1iZXIgPSByZWZTdW1PZkVuYWJsZWRJdGVtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25WYWxpZFN1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5fcHVibGljYXRpb25OdW1iZXIgPyB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnB1YmxpY2F0aW9uID0gdGhpcy5fcHVibGljYXRpb25OdW1iZXIgOiB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnB1YmxpY2F0aW9uID0gMDtcbiAgICAgICAgdGhpcy5fcmVwb3J0c051bWJlciA/IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmVwb3J0cyA9IHRoaXMuX3JlcG9ydHNOdW1iZXIgOiB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnJlcG9ydHMgPSAwO1xuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnJldGFpbEZvcm11bGFzID0gdGhpcy5zdG9yZUdyb3VwSWRzO1xuICAgICAgICB0aGlzLnNhdmVEb2N1bWVudFVuZGVyRWRpdFJpZ2h0cygpO1xuICAgICAgICB0aGlzLmRvY3VtZW50Q2hhbmdlRXZlbnQuZW1pdCh0aGlzLmRvY3VtZW50VW5kZXJFZGl0KTtcbiAgICAgICAgdGhpcy5vblBvcHVwQ2xvc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25Qb3B1cENhbmNlbENsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLm9uUG9wdXBDbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvcHVwQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlckdyb3Vwc0ZvcldyaXRlLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMudXNlckdyb3Vwc0ZvclJlYWQubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdCA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLnBvcHVwQ2xvc2VFdmVudC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLypwcml2YXRlIF91bmxvY2tEb2N1bWVudChkb2M6IENvRG9jdW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFkb2MucmVhZG9ubHkgJiYgIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTZXJ2aWNlLnVubG9jayhDb0RvY3VtZW50LCBkb2MuZG9jdW1lbnRJZCk7XG4gICAgICAgIH1cbiAgICB9Ki9cbn1cbiJdfQ==
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { FormComponent } from '@colijnit/corecomponents_v12';
|
|
4
|
+
import { DocumentPublication } from "@colijnit/articleapi/build/enum/refcode/document-publication.enum";
|
|
5
|
+
import { ObjectRightType } from "@colijnit/sharedapi/build/enum/object-right-type.enum";
|
|
6
|
+
import { PromptService } from "@colijnit/corecomponents_v12";
|
|
7
|
+
import { BusinessObjectFactory } from "@colijnit/ioneconnector/build/service/business-object-factory";
|
|
8
|
+
import { InputBoolean } from "../../decorator/input-boolean.decorator";
|
|
9
|
+
import { CoDocument } from "@colijnit/mainapi/build/model/co-document";
|
|
10
|
+
import { CoDocumentRight } from "@colijnit/mainapi/build/model/co-document-right";
|
|
11
|
+
import { FileType } from "../../enum/file-type";
|
|
12
|
+
import { DocumentEmailReport } from "../../enum/document-email-report.enum";
|
|
13
|
+
import { DomainMultipleName } from "../../enum/domain-multiple-name.enum";
|
|
14
|
+
import { FileTypeImagePipe } from "../../pipe/file-type-image.pipe";
|
|
15
|
+
import { FileUtils } from "@colijnit/mainapi/build/utils/file-utils";
|
|
16
|
+
// Component that shows a popup when the user wants to upload a CoDocument
|
|
17
|
+
export class FileUploadPopupComponent {
|
|
18
|
+
constructor(
|
|
19
|
+
//private _workabilityService: AppWorkabilityService,
|
|
20
|
+
_promptService, _fileTypeImgPipe) {
|
|
21
|
+
this._promptService = _promptService;
|
|
22
|
+
this._fileTypeImgPipe = _fileTypeImgPipe;
|
|
23
|
+
this.useWithoutSettingProps = false;
|
|
24
|
+
this.hasPublicAccessVisible = false;
|
|
25
|
+
this.showDocumentReportPicker = true;
|
|
26
|
+
this.displayReadWriteAccess = true;
|
|
27
|
+
this.documentChangeEvent = new EventEmitter();
|
|
28
|
+
this.popupCloseEvent = new EventEmitter();
|
|
29
|
+
this.documentPublication = DocumentPublication;
|
|
30
|
+
this.documentEmailReports = DocumentEmailReport;
|
|
31
|
+
this.domain = DomainMultipleName;
|
|
32
|
+
this.fileTypes = FileType;
|
|
33
|
+
this.hideCancel = false;
|
|
34
|
+
this.storeGroups = [];
|
|
35
|
+
this.userGroupsForWrite = [];
|
|
36
|
+
this.userGroupsForRead = [];
|
|
37
|
+
this.documentTags = [];
|
|
38
|
+
this._filesUploadConfigObjects = {}; // Instantiate with empty object to avoid nullpointers in the template
|
|
39
|
+
this._boFactory = new BusinessObjectFactory();
|
|
40
|
+
this._readonly = false;
|
|
41
|
+
}
|
|
42
|
+
set documentUnderEdit(doc) {
|
|
43
|
+
this._documentUnderEdit = doc ? this._boFactory.makeWithRawBackendData(CoDocument, doc) : undefined;
|
|
44
|
+
}
|
|
45
|
+
get documentUnderEdit() {
|
|
46
|
+
return this._documentUnderEdit;
|
|
47
|
+
}
|
|
48
|
+
set readonly(value) {
|
|
49
|
+
this._readonly = value;
|
|
50
|
+
if (value) {
|
|
51
|
+
//this._toastService.spawnToast("MESSAGE_DOCUMENT_LOCK_SINGLE");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
set filesUploadConfigObjects(value) {
|
|
55
|
+
this._filesUploadConfigObjects = value;
|
|
56
|
+
}
|
|
57
|
+
showClass() {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
get showReadWriteAccess() {
|
|
61
|
+
//TODO get userrights
|
|
62
|
+
return true;
|
|
63
|
+
//return this._userRights.workabilityParameterEnabled && this.displayReadWriteAccess;
|
|
64
|
+
}
|
|
65
|
+
get filesUploadConfigObjects() {
|
|
66
|
+
return this._filesUploadConfigObjects;
|
|
67
|
+
}
|
|
68
|
+
get isWorkability() {
|
|
69
|
+
//TODO fix workability
|
|
70
|
+
return false;
|
|
71
|
+
//return this._workabilityService.workabilitySystemEnabled;
|
|
72
|
+
}
|
|
73
|
+
get docUnderEditIsReadOnly() {
|
|
74
|
+
return this.documentUnderEdit.readonly || this._readonly;
|
|
75
|
+
}
|
|
76
|
+
get thumbnail() {
|
|
77
|
+
if (this.documentUnderEdit.isImageDocument()) {
|
|
78
|
+
return this._thumbnail;
|
|
79
|
+
}
|
|
80
|
+
return this._fileTypeImgPipe.transform(this.documentUnderEdit.fileTypeInternal);
|
|
81
|
+
}
|
|
82
|
+
get popupHeader() {
|
|
83
|
+
if (this.documentUnderEdit && this.documentUnderEdit.isImageDocument()) {
|
|
84
|
+
return "IMAGE";
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return "DOCUMENT";
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
get publicationConfigName() {
|
|
91
|
+
if (this.filesUploadConfigObjects) {
|
|
92
|
+
return this.documentUnderEdit.isImageDocument() ?
|
|
93
|
+
this.filesUploadConfigObjects.ImageDocumentPublishTo :
|
|
94
|
+
this.filesUploadConfigObjects.TextDocumentPublishTo;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return; // No configname found
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
get tagsConfigName() {
|
|
101
|
+
if (this.filesUploadConfigObjects) {
|
|
102
|
+
return this.documentUnderEdit.isImageDocument() ?
|
|
103
|
+
this.filesUploadConfigObjects.TagsImageConfigNames :
|
|
104
|
+
this.filesUploadConfigObjects.TagsTextConfigNames;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
return; // No configname found
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
ngOnInit() {
|
|
111
|
+
this.loadCollection();
|
|
112
|
+
if (this.documentUnderEdit.isImageDocument()) {
|
|
113
|
+
this._thumbnail = this.documentUnderEdit.documentBodyAsDataUri;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
loadCollection() {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
//this.documentTags = await this._tagsRepo.getJoinedTags(this.tagReferenceTable, this.documentKey);
|
|
119
|
+
//this.storeGroups = await this._baseDataRepo.getStoreGroupList();
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
onPreviewClick() {
|
|
123
|
+
if (this.documentUnderEdit.isImageDocument()) { //preview image
|
|
124
|
+
this._promptService.showImage(this.documentUnderEdit.documentBodyAsDataUri, "Preview");
|
|
125
|
+
}
|
|
126
|
+
else { //download document
|
|
127
|
+
try {
|
|
128
|
+
FileUtils.DownloadFromDataUri(this.documentUnderEdit.bodyAsDataUri, this.documentUnderEdit.fileName);
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
saveDocumentUnderEditRights() {
|
|
135
|
+
this.documentUnderEdit.rights = [];
|
|
136
|
+
const forWriteLength = this.userGroupsForWrite.length;
|
|
137
|
+
for (let i = 0; i < forWriteLength; i++) {
|
|
138
|
+
const rights = new CoDocumentRight();
|
|
139
|
+
rights.userGroupId = this.userGroupsForWrite[i];
|
|
140
|
+
rights.rightLevel = ObjectRightType.ReadWrite;
|
|
141
|
+
this.documentUnderEdit.rights.push(rights);
|
|
142
|
+
}
|
|
143
|
+
const forReadLength = this.userGroupsForRead.length;
|
|
144
|
+
for (let i = 0; i < forReadLength; i++) {
|
|
145
|
+
const rights = new CoDocumentRight();
|
|
146
|
+
rights.userGroupId = this.userGroupsForRead[i];
|
|
147
|
+
rights.rightLevel = ObjectRightType.ReadOnly;
|
|
148
|
+
this.documentUnderEdit.rights.push(rights);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
onPopupOkClick() {
|
|
152
|
+
if (this.form) {
|
|
153
|
+
this.form.submit();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
handlePropertyChange(refSumOfEnabledItems) {
|
|
157
|
+
this._publicationNumber = refSumOfEnabledItems;
|
|
158
|
+
}
|
|
159
|
+
handleReportsPropertyChange(refSumOfEnabledItems) {
|
|
160
|
+
this._reportsNumber = refSumOfEnabledItems;
|
|
161
|
+
}
|
|
162
|
+
onValidSubmit() {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
this._publicationNumber ? this.documentUnderEdit.publication = this._publicationNumber : this.documentUnderEdit.publication = 0;
|
|
165
|
+
this._reportsNumber ? this.documentUnderEdit.reports = this._reportsNumber : this.documentUnderEdit.reports = 0;
|
|
166
|
+
this.documentUnderEdit.retailFormulas = this.storeGroupIds;
|
|
167
|
+
this.saveDocumentUnderEditRights();
|
|
168
|
+
this.documentChangeEvent.emit(this.documentUnderEdit);
|
|
169
|
+
this.onPopupClose();
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
onPopupCancelClick() {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
this.onPopupClose();
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
onPopupClose() {
|
|
178
|
+
this.userGroupsForWrite.length = 0;
|
|
179
|
+
this.userGroupsForRead.length = 0;
|
|
180
|
+
this.documentUnderEdit = undefined;
|
|
181
|
+
this.popupCloseEvent.next();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
FileUploadPopupComponent.decorators = [
|
|
185
|
+
{ type: Component, args: [{
|
|
186
|
+
selector: "co-file-upload-popup",
|
|
187
|
+
template: `
|
|
188
|
+
<co-dialog *ngIf="!useWithoutSettingProps && documentUnderEdit" cssId="popup_files_upload_content"
|
|
189
|
+
[headerTemplate]="headerTemplate" contentSize noClickOutside
|
|
190
|
+
(close)="onPopupClose()">
|
|
191
|
+
<div class="co-dialog-wrapper">
|
|
192
|
+
<div class="file-upload-form-wrapper" fxLayout="column" fxLayoutGap="10px">
|
|
193
|
+
<co-form class="narrow-scrollbar" (validSubmit)="onValidSubmit()">
|
|
194
|
+
<div class="horizontal-layout-column">
|
|
195
|
+
<div class="document-thumb column-left" *ngIf="!addDocumentByUrl">
|
|
196
|
+
<a (click)="onPreviewClick()"><img [src]="thumbnail"/></a>
|
|
197
|
+
</div>
|
|
198
|
+
<div class="column-right">
|
|
199
|
+
<co-input-text
|
|
200
|
+
[model]="documentUnderEdit.fileSize"
|
|
201
|
+
[screenConfigurationObject]="documentUnderEdit.isImageDocument() ?
|
|
202
|
+
filesUploadConfigObjects?.ImageDocumentFileSize :
|
|
203
|
+
filesUploadConfigObjects?.TextDocumentFileSize"
|
|
204
|
+
[placeholder]="'SIZE' | localize"
|
|
205
|
+
forceReadonly
|
|
206
|
+
noValidation>
|
|
207
|
+
</co-input-text>
|
|
208
|
+
<ng-container *ngIf="documentUnderEdit.isImageDocument()">
|
|
209
|
+
<co-input-text [placeholder]="'DIMENSIONS' | localize"
|
|
210
|
+
[model]="documentUnderEdit.imageDimensions"
|
|
211
|
+
[screenConfigurationObject]="filesUploadConfigObjects?.ImageDocumentDimensions"
|
|
212
|
+
forceReadonly noValidation></co-input-text>
|
|
213
|
+
</ng-container>
|
|
214
|
+
<co-input-text
|
|
215
|
+
[(model)]="documentUnderEdit.title"
|
|
216
|
+
[screenConfigurationObject]="documentUnderEdit.isImageDocument() ?
|
|
217
|
+
filesUploadConfigObjects?.ImageDocumentTitle :
|
|
218
|
+
filesUploadConfigObjects?.TextDocumentTitle"
|
|
219
|
+
[placeholder]="'TITLE2' | localize"
|
|
220
|
+
noValidation forceReadonly></co-input-text>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
<div>
|
|
225
|
+
<!--<sc-tags
|
|
226
|
+
[tagCategory]="tagCategory"
|
|
227
|
+
[readonly]="docUnderEditIsReadOnly"-->
|
|
228
|
+
|
|
229
|
+
<!-- ></sc-tags>--><!-- [myCfgNames]="tagsConfigName" | [(joinedTags)]="this.documentUnderEdit.tags"-->
|
|
230
|
+
</div>
|
|
231
|
+
<!--<div>
|
|
232
|
+
<read-write-access *ngIf="showReadWriteAccess"
|
|
233
|
+
[readWriteCfgNames]="filesUploadConfigObjects?.readWriteAccess"
|
|
234
|
+
[layoutHorizontal]="true"
|
|
235
|
+
[medicalUserGroups]="medicalUserGroups"
|
|
236
|
+
[(userGroupsForWrite)]="userGroupsForWrite"
|
|
237
|
+
[(userGroupsForRead)]="userGroupsForRead"
|
|
238
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
239
|
+
></read-write-access>
|
|
240
|
+
</div>-->
|
|
241
|
+
<!--<div class="horizontal-layout-column">
|
|
242
|
+
<ng-container *ngIf="addDocumentByUrl">
|
|
243
|
+
<co-input-text required [placeholder]="'URL' | localize" [(model)]="documentUnderEdit.filePath"
|
|
244
|
+
[readonly]="docUnderEditIsReadOnly"></co-input-text>
|
|
245
|
+
</ng-container>
|
|
246
|
+
</div>-->
|
|
247
|
+
<div class="horizontal-layout-column">
|
|
248
|
+
<div class="column-left">
|
|
249
|
+
<co-input-text [placeholder]="'DESCRIPTION' | localize" [(model)]="documentUnderEdit.description"
|
|
250
|
+
[screenConfigurationObject]="documentUnderEdit.isImageDocument() ?
|
|
251
|
+
filesUploadConfigObjects?.ImageDocumentDescription :
|
|
252
|
+
filesUploadConfigObjects?.TextDocumentDescription"
|
|
253
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
254
|
+
></co-input-text>
|
|
255
|
+
|
|
256
|
+
</div>
|
|
257
|
+
<!--<div *ngIf="hasPublicAccessVisible" class="column-right">
|
|
258
|
+
<input-switcher-yes-no label="PUBLIC_ACCESS"
|
|
259
|
+
[(model)]="documentUnderEdit.hasPublicAccess"
|
|
260
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
261
|
+
></input-switcher-yes-no>
|
|
262
|
+
</div>-->
|
|
263
|
+
</div>
|
|
264
|
+
<div class="horizontal-layout-column">
|
|
265
|
+
<ng-container *ngIf="!documentUnderEdit.isImageDocument()">
|
|
266
|
+
<div class="column-left">
|
|
267
|
+
<!-- <input-switcher-yes-no label="DOWNLOADABLE"
|
|
268
|
+
[(model)]="documentUnderEdit.downloadable"
|
|
269
|
+
[cfgName]="filesUploadConfigObjects?.TextDocumentDownloadable"
|
|
270
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
271
|
+
></input-switcher-yes-no>-->
|
|
272
|
+
</div>
|
|
273
|
+
</ng-container>
|
|
274
|
+
</div>
|
|
275
|
+
<div class="horizontal-layout-column">
|
|
276
|
+
<ng-container *ngIf="fileType === fileTypes.ThreeDFile">
|
|
277
|
+
<div class="column-left">
|
|
278
|
+
<!-- <input-switcher-yes-no label="ALSO_AS_USDZ"
|
|
279
|
+
[(model)]="documentUnderEdit.convertToUSDZ"
|
|
280
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
281
|
+
></input-switcher-yes-no>-->
|
|
282
|
+
</div>
|
|
283
|
+
</ng-container>
|
|
284
|
+
</div>
|
|
285
|
+
<div class="horizontal-layout-column">
|
|
286
|
+
<ng-container *ngIf="documentUnderEdit.isImageDocument()">
|
|
287
|
+
<div class="column-left"><!--
|
|
288
|
+
<input-switcher-yes-no label="ATTACH_TO_NOTIFICATION"
|
|
289
|
+
[(model)]="documentUnderEdit.attachToNotification"
|
|
290
|
+
[cfgName]="filesUploadConfigObjects?.ImageDocumentAttachNotification"
|
|
291
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
292
|
+
></input-switcher-yes-no>-->
|
|
293
|
+
</div>
|
|
294
|
+
<div class="column-right"><!--
|
|
295
|
+
<image-type-select
|
|
296
|
+
[cfgName]="filesUploadConfigObjects?.ImageDocumentDisplayType"
|
|
297
|
+
[(selectedModelId)]="this.documentUnderEdit.imageDisplayKind"
|
|
298
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
299
|
+
label="DISPLAY_TYPE"
|
|
300
|
+
></image-type-select>-->
|
|
301
|
+
</div>
|
|
302
|
+
</ng-container>
|
|
303
|
+
</div>
|
|
304
|
+
<div *ngIf="!isWorkability">
|
|
305
|
+
<!-- <multiple-property-toggler *ngIf="!showDocumentReportPicker"
|
|
306
|
+
[propertyNamesToToggle]="documentPublication"
|
|
307
|
+
[(enableditems)]="this.documentUnderEdit.publication"
|
|
308
|
+
(onPropertyItemChange)="handlePropertyChange($event)"
|
|
309
|
+
label="PUBLISH_TO"
|
|
310
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
311
|
+
></multiple-property-toggler>-->
|
|
312
|
+
<co-multiple-property-toggler *ngIf="showDocumentReportPicker"
|
|
313
|
+
[propertyNamesToToggle]="documentEmailReports"
|
|
314
|
+
[(enableditems)]="documentUnderEdit.reports"
|
|
315
|
+
(onPropertyItemChange)="handleReportsPropertyChange($event)"
|
|
316
|
+
label="REPORTS_TO_ATTACH_TO"
|
|
317
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
318
|
+
></co-multiple-property-toggler>
|
|
319
|
+
|
|
320
|
+
<!--<ng-container *ngIf="documentUnderEdit.isImageDocument()"
|
|
321
|
+
[templateWrapper]="templateImage"></ng-container>-->
|
|
322
|
+
</div>
|
|
323
|
+
</co-form>
|
|
324
|
+
<div class="ok-cancel-buttons">
|
|
325
|
+
<co-button [disabled]="docUnderEditIsReadOnly" [textContent]="'OK' | localize" (click)="onPopupOkClick()"></co-button>
|
|
326
|
+
<co-button *ngIf="hideCancel" [textContent]="'STICKER' | localize" (click)="onPopupCancelClick()"></co-button>
|
|
327
|
+
</div>
|
|
328
|
+
<!-- <default-ok-cancel-buttons class="justify-center"
|
|
329
|
+
[okDisabled]="docUnderEditIsReadOnly"
|
|
330
|
+
[hideCancel]="hideCancel"
|
|
331
|
+
(okClick)="onPopupOkClick()"
|
|
332
|
+
(cancelClick)="onPopupCancelClick()">
|
|
333
|
+
</default-ok-cancel-buttons>-->
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
</co-dialog>
|
|
337
|
+
<ng-template #headerTemplate>
|
|
338
|
+
<div [textContent]="popupHeader | localize"></div>
|
|
339
|
+
</ng-template>
|
|
340
|
+
<ng-template #templateImage *ngIf="!isWorkability">
|
|
341
|
+
<!-- <div class="column-right">
|
|
342
|
+
<input-lov-multi-select
|
|
343
|
+
[cfgName]="filesUploadConfigObjects.ImageDocumentStoreGroups"
|
|
344
|
+
[(selectedModelIds)]="storeGroupIds"
|
|
345
|
+
[collection]="storeGroups"
|
|
346
|
+
[readonly]="docUnderEditIsReadOnly"
|
|
347
|
+
descriptionField="description"
|
|
348
|
+
doNotLoadCollection
|
|
349
|
+
customWidth
|
|
350
|
+
label="RETAIL_FORMULAS"
|
|
351
|
+
></input-lov-multi-select>
|
|
352
|
+
</div>-->
|
|
353
|
+
</ng-template>
|
|
354
|
+
`,
|
|
355
|
+
encapsulation: ViewEncapsulation.None
|
|
356
|
+
},] }
|
|
357
|
+
];
|
|
358
|
+
FileUploadPopupComponent.ctorParameters = () => [
|
|
359
|
+
{ type: PromptService },
|
|
360
|
+
{ type: FileTypeImagePipe }
|
|
361
|
+
];
|
|
362
|
+
FileUploadPopupComponent.propDecorators = {
|
|
363
|
+
form: [{ type: ViewChild, args: [FormComponent,] }],
|
|
364
|
+
useWithoutSettingProps: [{ type: Input }],
|
|
365
|
+
hasPublicAccessVisible: [{ type: Input }],
|
|
366
|
+
showDocumentReportPicker: [{ type: Input }],
|
|
367
|
+
documentUnderEdit: [{ type: Input }],
|
|
368
|
+
readonly: [{ type: Input }],
|
|
369
|
+
filesUploadConfigObjects: [{ type: Input }],
|
|
370
|
+
tagCategory: [{ type: Input }],
|
|
371
|
+
medicalUserGroups: [{ type: Input }],
|
|
372
|
+
displayReadWriteAccess: [{ type: Input }],
|
|
373
|
+
tagReferenceTable: [{ type: Input }],
|
|
374
|
+
documentKey: [{ type: Input }],
|
|
375
|
+
documentTable: [{ type: Input }],
|
|
376
|
+
fileType: [{ type: Input }],
|
|
377
|
+
addDocumentByUrl: [{ type: Input }],
|
|
378
|
+
documentChangeEvent: [{ type: Output }],
|
|
379
|
+
popupCloseEvent: [{ type: Output }],
|
|
380
|
+
showClass: [{ type: HostBinding, args: ['class.co-file-upload-popup',] }]
|
|
381
|
+
};
|
|
382
|
+
__decorate([
|
|
383
|
+
InputBoolean()
|
|
384
|
+
], FileUploadPopupComponent.prototype, "useWithoutSettingProps", void 0);
|
|
385
|
+
__decorate([
|
|
386
|
+
InputBoolean()
|
|
387
|
+
], FileUploadPopupComponent.prototype, "hasPublicAccessVisible", void 0);
|
|
388
|
+
__decorate([
|
|
389
|
+
InputBoolean()
|
|
390
|
+
], FileUploadPopupComponent.prototype, "showDocumentReportPicker", void 0);
|
|
391
|
+
__decorate([
|
|
392
|
+
InputBoolean()
|
|
393
|
+
], FileUploadPopupComponent.prototype, "medicalUserGroups", void 0);
|
|
394
|
+
__decorate([
|
|
395
|
+
InputBoolean()
|
|
396
|
+
], FileUploadPopupComponent.prototype, "addDocumentByUrl", void 0);
|
|
397
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQtcG9wdXAvZmlsZS11cGxvYWQtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBRXRHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN0RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFJaEYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQStLbkUsMEVB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QkFBaUIsR0FBRyxTQUFTLENBQUM7UUFFbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzs7WUFwYUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F1S1Q7Z0JBQ0EsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDekM7OztZQTVMTyxhQUFhO1lBYWIsaUJBQWlCOzs7bUJBa0xwQixTQUFTLFNBQUMsYUFBYTtxQ0FHdkIsS0FBSztxQ0FJTCxLQUFLO3VDQUlMLEtBQUs7Z0NBTUwsS0FBSzt1QkFTTCxLQUFLO3VDQVNMLEtBQUs7MEJBS0wsS0FBSztnQ0FHTCxLQUFLO3FDQUlMLEtBQUs7Z0NBR0wsS0FBSzswQkFHTCxLQUFLOzRCQUdMLEtBQUs7dUJBR0wsS0FBSzsrQkFHTCxLQUFLO2tDQUlMLE1BQU07OEJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsNEJBQTRCOztBQW5FekM7SUFEQyxZQUFZLEVBQUU7d0VBQ2dDO0FBSS9DO0lBREMsWUFBWSxFQUFFO3dFQUNnQztBQUsvQztJQUZDLFlBQVksRUFBRTswRUFFaUM7QUErQmhEO0lBREMsWUFBWSxFQUFFO21FQUNtQjtBQW1CbEM7SUFEQyxZQUFZLEVBQUU7a0VBQ2tCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7RG9jdW1lbnRQdWJsaWNhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL2VudW0vcmVmY29kZS9kb2N1bWVudC1wdWJsaWNhdGlvbi5lbnVtXCI7XHJcbmltcG9ydCB7U3RvcmVHcm91cH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3N0b3JlLWdyb3VwLmJvXCI7XHJcbmltcG9ydCB7T2JqZWN0UmlnaHRUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9lbnVtL29iamVjdC1yaWdodC10eXBlLmVudW1cIjtcclxuaW1wb3J0IHtQcm9tcHRTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3NlcnZpY2UvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcclxuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gXCIuLi8uLi9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnRcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50UmlnaHR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudC1yaWdodFwiO1xyXG5pbXBvcnQge1RhZ0NhdGVnb3J5fSBmcm9tIFwiLi4vLi4vZW51bS90YWctY2F0ZWdvcnkuZW51bVwiO1xyXG5pbXBvcnQge0ZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0c30gZnJvbSBcIi4uLy4uL2VudW0vZmlsZXMtdXBsb2FkLWNvbmZpZy1vYmplY3RzXCI7XHJcbmltcG9ydCB7VGFibGVOYW1lfSBmcm9tIFwiLi4vLi4vZW51bS90YWJsZS1uYW1lLmVudW1cIjtcclxuaW1wb3J0IHtGaWxlVHlwZX0gZnJvbSBcIi4uLy4uL2VudW0vZmlsZS10eXBlXCI7XHJcbmltcG9ydCB7RG9jdW1lbnRFbWFpbFJlcG9ydH0gZnJvbSBcIi4uLy4uL2VudW0vZG9jdW1lbnQtZW1haWwtcmVwb3J0LmVudW1cIjtcclxuaW1wb3J0IHtUYWdzQ29tcG9uZW50Q29uZmlnTmFtZXN9IGZyb20gXCIuLi8uLi9lbnVtL3RhZ3MtY29tcG9uZW50LWNvbmZpZy1uYW1lc1wiO1xyXG5pbXBvcnQge0RvbWFpbk11bHRpcGxlTmFtZX0gZnJvbSBcIi4uLy4uL2VudW0vZG9tYWluLW11bHRpcGxlLW5hbWUuZW51bVwiO1xyXG5pbXBvcnQge1RhZ1RyZWVJdGVtfSBmcm9tIFwiLi4vLi4vbW9kZWwvdGFnLXRyZWUtaXRlbS5ib1wiO1xyXG5pbXBvcnQge0ZpbGVUeXBlSW1hZ2VQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZS9maWxlLXR5cGUtaW1hZ2UucGlwZVwiO1xyXG5pbXBvcnQge0ZpbGVVdGlsc30gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL3V0aWxzL2ZpbGUtdXRpbHNcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImNvLWZpbGUtdXBsb2FkLXBvcHVwXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjby1kaWFsb2cgKm5nSWY9XCIhdXNlV2l0aG91dFNldHRpbmdQcm9wcyAmJiBkb2N1bWVudFVuZGVyRWRpdFwiIGNzc0lkPVwicG9wdXBfZmlsZXNfdXBsb2FkX2NvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCIgY29udGVudFNpemUgbm9DbGlja091dHNpZGVcclxuICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJvblBvcHVwQ2xvc2UoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXVwbG9hZC1mb3JtLXdyYXBwZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjby1mb3JtIGNsYXNzPVwibmFycm93LXNjcm9sbGJhclwiICh2YWxpZFN1Ym1pdCk9XCJvblZhbGlkU3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtbGF5b3V0LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXRodW1iIGNvbHVtbi1sZWZ0XCIgKm5nSWY9XCIhYWRkRG9jdW1lbnRCeVVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJvblByZXZpZXdDbGljaygpXCI+PGltZyBbc3JjXT1cInRodW1ibmFpbFwiLz48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImRvY3VtZW50VW5kZXJFZGl0LmZpbGVTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImRvY3VtZW50VW5kZXJFZGl0LmlzSW1hZ2VEb2N1bWVudCgpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5JbWFnZURvY3VtZW50RmlsZVNpemUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc1VwbG9hZENvbmZpZ09iamVjdHM/LlRleHREb2N1bWVudEZpbGVTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0laRScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub1ZhbGlkYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW3BsYWNlaG9sZGVyXT1cIidESU1FTlNJT05TJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImRvY3VtZW50VW5kZXJFZGl0LmltYWdlRGltZW5zaW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cz8uSW1hZ2VEb2N1bWVudERpbWVuc2lvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlYWRvbmx5IG5vVmFsaWRhdGlvbj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImRvY3VtZW50VW5kZXJFZGl0LnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImRvY3VtZW50VW5kZXJFZGl0LmlzSW1hZ2VEb2N1bWVudCgpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5JbWFnZURvY3VtZW50VGl0bGUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc1VwbG9hZENvbmZpZ09iamVjdHM/LlRleHREb2N1bWVudFRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVElUTEUyJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vVmFsaWRhdGlvbiBmb3JjZVJlYWRvbmx5PjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08c2MtdGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ0NhdGVnb3J5XT1cInRhZ0NhdGVnb3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCItLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPjwvc2MtdGFncz4tLT48IS0tIFtteUNmZ05hbWVzXT1cInRhZ3NDb25maWdOYW1lXCIgfCBbKGpvaW5lZFRhZ3MpXT1cInRoaXMuZG9jdW1lbnRVbmRlckVkaXQudGFnc1wiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVhZC13cml0ZS1hY2Nlc3MgKm5nSWY9XCJzaG93UmVhZFdyaXRlQWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZFdyaXRlQ2ZnTmFtZXNdPVwiZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5yZWFkV3JpdGVBY2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRIb3Jpem9udGFsXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttZWRpY2FsVXNlckdyb3Vwc109XCJtZWRpY2FsVXNlckdyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh1c2VyR3JvdXBzRm9yV3JpdGUpXT1cInVzZXJHcm91cHNGb3JXcml0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh1c2VyR3JvdXBzRm9yUmVhZCldPVwidXNlckdyb3Vwc0ZvclJlYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3JlYWQtd3JpdGUtYWNjZXNzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWxheW91dC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGREb2N1bWVudEJ5VXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgcmVxdWlyZWQgW3BsYWNlaG9sZGVyXT1cIidVUkwnIHwgbG9jYWxpemVcIiBbKG1vZGVsKV09XCJkb2N1bWVudFVuZGVyRWRpdC5maWxlUGF0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRvY1VuZGVyRWRpdElzUmVhZE9ubHlcIj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWxheW91dC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFtwbGFjZWhvbGRlcl09XCInREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIiBbKG1vZGVsKV09XCJkb2N1bWVudFVuZGVyRWRpdC5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc1VwbG9hZENvbmZpZ09iamVjdHM/LkltYWdlRG9jdW1lbnREZXNjcmlwdGlvbiA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cz8uVGV4dERvY3VtZW50RGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxkaXYgKm5nSWY9XCJoYXNQdWJsaWNBY2Nlc3NWaXNpYmxlXCIgY2xhc3M9XCJjb2x1bW4tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQtc3dpdGNoZXIteWVzLW5vIGxhYmVsPVwiUFVCTElDX0FDQ0VTU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkb2N1bWVudFVuZGVyRWRpdC5oYXNQdWJsaWNBY2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRvY1VuZGVyRWRpdElzUmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lucHV0LXN3aXRjaGVyLXllcy1ubz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtbGF5b3V0LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0LXN3aXRjaGVyLXllcy1ubyBsYWJlbD1cIkRPV05MT0FEQUJMRVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiZG9jdW1lbnRVbmRlckVkaXQuZG93bmxvYWRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2ZnTmFtZV09XCJmaWxlc1VwbG9hZENvbmZpZ09iamVjdHM/LlRleHREb2N1bWVudERvd25sb2FkYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRvY1VuZGVyRWRpdElzUmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pbnB1dC1zd2l0Y2hlci15ZXMtbm8+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWxheW91dC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlVHlwZSA9PT0gZmlsZVR5cGVzLlRocmVlREZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dC1zd2l0Y2hlci15ZXMtbm8gbGFiZWw9XCJBTFNPX0FTX1VTRFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImRvY3VtZW50VW5kZXJFZGl0LmNvbnZlcnRUb1VTRFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW5wdXQtc3dpdGNoZXIteWVzLW5vPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1sYXlvdXQtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxlZnRcIj48IS0tXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dC1zd2l0Y2hlci15ZXMtbm8gbGFiZWw9XCJBVFRBQ0hfVE9fTk9USUZJQ0FUSU9OXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkb2N1bWVudFVuZGVyRWRpdC5hdHRhY2hUb05vdGlmaWNhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NmZ05hbWVdPVwiZmlsZXNVcGxvYWRDb25maWdPYmplY3RzPy5JbWFnZURvY3VtZW50QXR0YWNoTm90aWZpY2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lucHV0LXN3aXRjaGVyLXllcy1ubz4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXJpZ2h0XCI+PCEtLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1hZ2UtdHlwZS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2ZnTmFtZV09XCJmaWxlc1VwbG9hZENvbmZpZ09iamVjdHM/LkltYWdlRG9jdW1lbnREaXNwbGF5VHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE1vZGVsSWQpXT1cInRoaXMuZG9jdW1lbnRVbmRlckVkaXQuaW1hZ2VEaXNwbGF5S2luZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRvY1VuZGVyRWRpdElzUmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRElTUExBWV9UWVBFXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW1hZ2UtdHlwZS1zZWxlY3Q+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNXb3JrYWJpbGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxtdWx0aXBsZS1wcm9wZXJ0eS10b2dnbGVyICpuZ0lmPVwiIXNob3dEb2N1bWVudFJlcG9ydFBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0eU5hbWVzVG9Ub2dnbGVdPVwiZG9jdW1lbnRQdWJsaWNhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZW5hYmxlZGl0ZW1zKV09XCJ0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnB1YmxpY2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uUHJvcGVydHlJdGVtQ2hhbmdlKT1cImhhbmRsZVByb3BlcnR5Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlBVQkxJU0hfVE9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9tdWx0aXBsZS1wcm9wZXJ0eS10b2dnbGVyPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLW11bHRpcGxlLXByb3BlcnR5LXRvZ2dsZXIgKm5nSWY9XCJzaG93RG9jdW1lbnRSZXBvcnRQaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlOYW1lc1RvVG9nZ2xlXT1cImRvY3VtZW50RW1haWxSZXBvcnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhlbmFibGVkaXRlbXMpXT1cImRvY3VtZW50VW5kZXJFZGl0LnJlcG9ydHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Qcm9wZXJ0eUl0ZW1DaGFuZ2UpPVwiaGFuZGxlUmVwb3J0c1Byb3BlcnR5Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlJFUE9SVFNfVE9fQVRUQUNIX1RPXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRvY1VuZGVyRWRpdElzUmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tbXVsdGlwbGUtcHJvcGVydHktdG9nZ2xlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvY3VtZW50VW5kZXJFZGl0LmlzSW1hZ2VEb2N1bWVudCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlV3JhcHBlcl09XCJ0ZW1wbGF0ZUltYWdlXCI+PC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvY28tZm9ybT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9rLWNhbmNlbC1idXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZG9jVW5kZXJFZGl0SXNSZWFkT25seVwiIFt0ZXh0Q29udGVudF09XCInT0snIHwgbG9jYWxpemVcIiAoY2xpY2spPVwib25Qb3B1cE9rQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjby1idXR0b24gKm5nSWY9XCJoaWRlQ2FuY2VsXCIgW3RleHRDb250ZW50XT1cIidTVElDS0VSJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uUG9wdXBDYW5jZWxDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8IS0tICA8ZGVmYXVsdC1vay1jYW5jZWwtYnV0dG9ucyBjbGFzcz1cImp1c3RpZnktY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2tEaXNhYmxlZF09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZUNhbmNlbF09XCJoaWRlQ2FuY2VsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2tDbGljayk9XCJvblBvcHVwT2tDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FuY2VsQ2xpY2spPVwib25Qb3B1cENhbmNlbENsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZmF1bHQtb2stY2FuY2VsLWJ1dHRvbnM+LS0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9jby1kaWFsb2c+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwicG9wdXBIZWFkZXIgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZUltYWdlICpuZ0lmPVwiIWlzV29ya2FiaWxpdHlcIj5cclxuICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2x1bW4tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dC1sb3YtbXVsdGktc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjZmdOYW1lXT1cImZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cy5JbWFnZURvY3VtZW50U3RvcmVHcm91cHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkTW9kZWxJZHMpXT1cInN0b3JlR3JvdXBJZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJzdG9yZUdyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJkb2NVbmRlckVkaXRJc1JlYWRPbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25GaWVsZD1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9Ob3RMb2FkQ29sbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21XaWR0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlJFVEFJTF9GT1JNVUxBU1wiXHJcbiAgICAgICAgICAgICAgICA+PC9pbnB1dC1sb3YtbXVsdGktc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgYCxcclxuICAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbi8vIENvbXBvbmVudCB0aGF0IHNob3dzIGEgcG9wdXAgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBDb0RvY3VtZW50XHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZChGb3JtQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGZvcm06IEZvcm1Db21wb25lbnQ7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIHVzZVdpdGhvdXRTZXR0aW5nUHJvcHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgaGFzUHVibGljQWNjZXNzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIC8vdG9kbyB0aGlzIGlzIHVzdWFsbHkgc2V0IHRvIGZhbHNlIG9uIGluaXRcclxuICAgIHB1YmxpYyBzaG93RG9jdW1lbnRSZXBvcnRQaWNrZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBkb2N1bWVudFVuZGVyRWRpdChkb2M6IENvRG9jdW1lbnQpIHtcclxuICAgICAgICB0aGlzLl9kb2N1bWVudFVuZGVyRWRpdCA9IGRvYyA/IHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKENvRG9jdW1lbnQsIGRvYykgYXMgdW5rbm93biBhcyBDb0RvY3VtZW50IDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZG9jdW1lbnRVbmRlckVkaXQoKTogQ29Eb2N1bWVudCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50VW5kZXJFZGl0O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fcmVhZG9ubHkgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8vdGhpcy5fdG9hc3RTZXJ2aWNlLnNwYXduVG9hc3QoXCJNRVNTQUdFX0RPQ1VNRU5UX0xPQ0tfU0lOR0xFXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBmaWxlc1VwbG9hZENvbmZpZ09iamVjdHModmFsdWU6IEZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cykge1xyXG4gICAgICAgIHRoaXMuX2ZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cyA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGFnQ2F0ZWdvcnk6IFRhZ0NhdGVnb3J5O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBtZWRpY2FsVXNlckdyb3VwczogYm9vbGVhbjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc3BsYXlSZWFkV3JpdGVBY2Nlc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGFnUmVmZXJlbmNlVGFibGU6IFRhYmxlTmFtZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRvY3VtZW50S2V5OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkb2N1bWVudFRhYmxlOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaWxlVHlwZTogRmlsZVR5cGU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGFkZERvY3VtZW50QnlVcmw6IGJvb2xlYW47XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5IHBvcHVwQ2xvc2VFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tZmlsZS11cGxvYWQtcG9wdXAnKVxyXG4gICAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudFB1YmxpY2F0aW9uOiB0eXBlb2YgRG9jdW1lbnRQdWJsaWNhdGlvbiA9IERvY3VtZW50UHVibGljYXRpb247XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRFbWFpbFJlcG9ydHM6IHR5cGVvZiBEb2N1bWVudEVtYWlsUmVwb3J0ID0gRG9jdW1lbnRFbWFpbFJlcG9ydDtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNob3dSZWFkV3JpdGVBY2Nlc3MoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy9UT0RPIGdldCB1c2VycmlnaHRzXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgLy9yZXR1cm4gdGhpcy5fdXNlclJpZ2h0cy53b3JrYWJpbGl0eVBhcmFtZXRlckVuYWJsZWQgJiYgdGhpcy5kaXNwbGF5UmVhZFdyaXRlQWNjZXNzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzKCk6IEZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzV29ya2FiaWxpdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgIC8vVE9ETyBmaXggd29ya2FiaWxpdHlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgLy9yZXR1cm4gdGhpcy5fd29ya2FiaWxpdHlTZXJ2aWNlLndvcmthYmlsaXR5U3lzdGVtRW5hYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGRvY1VuZGVyRWRpdElzUmVhZE9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmVhZG9ubHkgfHwgdGhpcy5fcmVhZG9ubHk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0aHVtYm5haWwoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5kb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdGh1bWJuYWlsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlVHlwZUltZ1BpcGUudHJhbnNmb3JtKHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZmlsZVR5cGVJbnRlcm5hbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwb3B1cEhlYWRlcigpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50VW5kZXJFZGl0ICYmIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiSU1BR0VcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJET0NVTUVOVFwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHB1YmxpY2F0aW9uQ29uZmlnTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKSA/XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cy5JbWFnZURvY3VtZW50UHVibGlzaFRvIDpcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNVcGxvYWRDb25maWdPYmplY3RzLlRleHREb2N1bWVudFB1Ymxpc2hUbztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm47IC8vIE5vIGNvbmZpZ25hbWUgZm91bmRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBnZXQgdGFnc0NvbmZpZ05hbWUoKTogVGFnc0NvbXBvbmVudENvbmZpZ05hbWVzIHtcclxuICAgICAgICBpZiAodGhpcy5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuaXNJbWFnZURvY3VtZW50KCkgP1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMuVGFnc0ltYWdlQ29uZmlnTmFtZXMgOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlc1VwbG9hZENvbmZpZ09iamVjdHMuVGFnc1RleHRDb25maWdOYW1lcztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm47IC8vIE5vIGNvbmZpZ25hbWUgZm91bmRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IGRvbWFpbjogdHlwZW9mIERvbWFpbk11bHRpcGxlTmFtZSA9IERvbWFpbk11bHRpcGxlTmFtZTtcclxuICAgIHB1YmxpYyByZWFkb25seSBmaWxlVHlwZXM6IHR5cGVvZiBGaWxlVHlwZSA9IEZpbGVUeXBlO1xyXG5cclxuICAgIHB1YmxpYyBfZG9jdW1lbnRVbmRlckVkaXQ6IENvRG9jdW1lbnQ7XHJcbiAgICBwdWJsaWMgaGlkZUNhbmNlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0b3JlR3JvdXBzOiBTdG9yZUdyb3VwW10gPSBbXTtcclxuICAgIHB1YmxpYyBwdWJsaWNhdGlvbklkczogbnVtYmVyW107XHJcbiAgICBwdWJsaWMgc3RvcmVHcm91cElkczogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgdXNlckdyb3Vwc0ZvcldyaXRlOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgcHVibGljIHVzZXJHcm91cHNGb3JSZWFkOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgcHVibGljIGRvY3VtZW50VGFnczogVGFnVHJlZUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgX2ZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0czogRmlsZXNVcGxvYWRDb25maWdPYmplY3RzID0ge307IC8vIEluc3RhbnRpYXRlIHdpdGggZW1wdHkgb2JqZWN0IHRvIGF2b2lkIG51bGxwb2ludGVycyBpbiB0aGUgdGVtcGxhdGVcclxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5ID0gbmV3IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSgpO1xyXG4gICAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX3B1YmxpY2F0aW9uTnVtYmVyOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIF9yZXBvcnRzTnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgcHJpdmF0ZSBfdGh1bWJuYWlsOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy9wcml2YXRlIF93b3JrYWJpbGl0eVNlcnZpY2U6IEFwcFdvcmthYmlsaXR5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9wcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVUeXBlSW1nUGlwZTogRmlsZVR5cGVJbWFnZVBpcGUsXHJcbiAgICAgICAgLy9wcml2YXRlIF91c2VyUmlnaHRzOiBVc2VyUmlnaHRzU2VydmljZSxcclxuICAgICAgICAvL3ByaXZhdGUgX2Jhc2VEYXRhUmVwbzogQmFzZURhdGFEYWxSZXBvc2l0b3J5LFxyXG4gICAgICAgIC8vcHJpdmF0ZSBfdGFnc1JlcG86IFRhZ3NEYWxSZXBvc2l0b3J5LFxyXG4gICAgICAgIC8vcHJpdmF0ZSBfZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBBcHBUb2FzdFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9hZENvbGxlY3Rpb24oKTtcclxuICAgICAgICBpZiAodGhpcy5kb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl90aHVtYm5haWwgPSB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmRvY3VtZW50Qm9keUFzRGF0YVVyaTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGxvYWRDb2xsZWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIC8vdGhpcy5kb2N1bWVudFRhZ3MgPSBhd2FpdCB0aGlzLl90YWdzUmVwby5nZXRKb2luZWRUYWdzKHRoaXMudGFnUmVmZXJlbmNlVGFibGUsIHRoaXMuZG9jdW1lbnRLZXkpO1xyXG4gICAgICAgIC8vdGhpcy5zdG9yZUdyb3VwcyA9IGF3YWl0IHRoaXMuX2Jhc2VEYXRhUmVwby5nZXRTdG9yZUdyb3VwTGlzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblByZXZpZXdDbGljaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kb2N1bWVudFVuZGVyRWRpdC5pc0ltYWdlRG9jdW1lbnQoKSkgeyAvL3ByZXZpZXcgaW1hZ2VcclxuICAgICAgICAgICAgdGhpcy5fcHJvbXB0U2VydmljZS5zaG93SW1hZ2UodGhpcy5kb2N1bWVudFVuZGVyRWRpdC5kb2N1bWVudEJvZHlBc0RhdGFVcmksIFwiUHJldmlld1wiKTtcclxuICAgICAgICB9IGVsc2UgeyAvL2Rvd25sb2FkIGRvY3VtZW50XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBGaWxlVXRpbHMuRG93bmxvYWRGcm9tRGF0YVVyaSh0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmJvZHlBc0RhdGFVcmksIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2F2ZURvY3VtZW50VW5kZXJFZGl0UmlnaHRzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzID0gW107XHJcbiAgICAgICAgY29uc3QgZm9yV3JpdGVMZW5ndGg6IG51bWJlciA9IHRoaXMudXNlckdyb3Vwc0ZvcldyaXRlLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgZm9yV3JpdGVMZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCByaWdodHM6IENvRG9jdW1lbnRSaWdodCA9IG5ldyBDb0RvY3VtZW50UmlnaHQoKTtcclxuICAgICAgICAgICAgcmlnaHRzLnVzZXJHcm91cElkID0gdGhpcy51c2VyR3JvdXBzRm9yV3JpdGVbaV07XHJcbiAgICAgICAgICAgIHJpZ2h0cy5yaWdodExldmVsID0gT2JqZWN0UmlnaHRUeXBlLlJlYWRXcml0ZTtcclxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5yaWdodHMucHVzaChyaWdodHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZm9yUmVhZExlbmd0aDogbnVtYmVyID0gdGhpcy51c2VyR3JvdXBzRm9yUmVhZC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGZvclJlYWRMZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCByaWdodHM6IENvRG9jdW1lbnRSaWdodCA9IG5ldyBDb0RvY3VtZW50UmlnaHQoKTtcclxuICAgICAgICAgICAgcmlnaHRzLnVzZXJHcm91cElkID0gdGhpcy51c2VyR3JvdXBzRm9yUmVhZFtpXTtcclxuICAgICAgICAgICAgcmlnaHRzLnJpZ2h0TGV2ZWwgPSBPYmplY3RSaWdodFR5cGUuUmVhZE9ubHk7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucmlnaHRzLnB1c2gocmlnaHRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUG9wdXBPa0NsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0pIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLnN1Ym1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlUHJvcGVydHlDaGFuZ2UocmVmU3VtT2ZFbmFibGVkSXRlbXM6IG51bWJlcik6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fcHVibGljYXRpb25OdW1iZXIgPSByZWZTdW1PZkVuYWJsZWRJdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlUmVwb3J0c1Byb3BlcnR5Q2hhbmdlKHJlZlN1bU9mRW5hYmxlZEl0ZW1zOiBudW1iZXIpOiBhbnkge1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydHNOdW1iZXIgPSByZWZTdW1PZkVuYWJsZWRJdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgb25WYWxpZFN1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLl9wdWJsaWNhdGlvbk51bWJlciA/IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucHVibGljYXRpb24gPSB0aGlzLl9wdWJsaWNhdGlvbk51bWJlciA6IHRoaXMuZG9jdW1lbnRVbmRlckVkaXQucHVibGljYXRpb24gPSAwO1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydHNOdW1iZXIgPyB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnJlcG9ydHMgPSB0aGlzLl9yZXBvcnRzTnVtYmVyIDogdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5yZXBvcnRzID0gMDtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnJldGFpbEZvcm11bGFzID0gdGhpcy5zdG9yZUdyb3VwSWRzO1xyXG4gICAgICAgIHRoaXMuc2F2ZURvY3VtZW50VW5kZXJFZGl0UmlnaHRzKCk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudENoYW5nZUV2ZW50LmVtaXQodGhpcy5kb2N1bWVudFVuZGVyRWRpdCk7XHJcbiAgICAgICAgdGhpcy5vblBvcHVwQ2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgb25Qb3B1cENhbmNlbENsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMub25Qb3B1cENsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUG9wdXBDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnVzZXJHcm91cHNGb3JXcml0ZS5sZW5ndGggPSAwO1xyXG4gICAgICAgIHRoaXMudXNlckdyb3Vwc0ZvclJlYWQubGVuZ3RoID0gMDtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICB0aGlzLnBvcHVwQ2xvc2VFdmVudC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLypwcml2YXRlIF91bmxvY2tEb2N1bWVudChkb2M6IENvRG9jdW1lbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWRvYy5yZWFkb25seSAmJiAhdGhpcy5yZWFkb25seSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhU2VydmljZS51bmxvY2soQ29Eb2N1bWVudCwgZG9jLmRvY3VtZW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgIH0qL1xyXG59XHJcbiJdfQ==
|