@coolon/angular-ui-powerups 16.1.0-aplpha.79 → 16.1.0-aplpha.8
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/assets/activities/input-activities.scss +2 -10
- package/assets/form.scss +27 -62
- package/assets/table.scss +18 -15
- package/assets/tabs.scss +6 -2
- package/esm2022/lib/angular-ui-powerups.module.mjs +1 -1
- package/esm2022/lib/animations/slide-animations.mjs +1 -6
- package/esm2022/lib/components/alignment.mjs +1 -1
- package/esm2022/lib/components/busy-overlay/busy-overlay.component.mjs +9 -4
- package/esm2022/lib/components/cards/abstract-card-container.component.mjs +1 -1
- package/esm2022/lib/components/cards/card-container/card-container.component.mjs +2 -2
- package/esm2022/lib/components/commands/command/command.component.mjs +13 -24
- package/esm2022/lib/components/commands/command-face/command-face.component.mjs +3 -11
- package/esm2022/lib/components/commands/command-face.mjs +11 -11
- package/esm2022/lib/components/commands/flex.component.mjs +1 -1
- package/esm2022/lib/components/commands/group/command-container.mjs +1 -1
- package/esm2022/lib/components/commands/group/popup-aware.component.mjs +1 -1
- package/esm2022/lib/components/commands/group/popup-container.mjs +1 -1
- package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +11 -11
- package/esm2022/lib/components/commands/group/popup-menu/more-menu.component.mjs +1 -1
- package/esm2022/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +1 -1
- package/esm2022/lib/components/commands/group/popup-menu/popup-menu.component.mjs +2 -2
- package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +16 -9
- package/esm2022/lib/components/commands/separator.component.mjs +1 -1
- package/esm2022/lib/components/components.module.mjs +17 -31
- package/esm2022/lib/components/disposable-component.mjs +37 -8
- package/esm2022/lib/components/empty-state/empty-state.component.mjs +6 -2
- package/esm2022/lib/components/exports.mjs +2 -6
- package/esm2022/lib/components/focus-container/focus-container.component.mjs +1 -1
- package/esm2022/lib/components/focusable.component.mjs +2 -2
- package/esm2022/lib/components/forms/abstract-input.component.mjs +15 -62
- package/esm2022/lib/components/forms/abstract-list-input.component.mjs +1 -1
- package/esm2022/lib/components/forms/abstract-value-input.component.mjs +1 -1
- package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +4 -3
- package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +1 -1
- package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/number-input/number-input.component.mjs +10 -49
- package/esm2022/lib/components/forms/password-input/password-input.component.mjs +3 -40
- package/esm2022/lib/components/forms/select-input/select-input.component.mjs +11 -12
- package/esm2022/lib/components/forms/string-input/string-input.component.mjs +10 -22
- package/esm2022/lib/components/forms/text-input/text-input.component.mjs +1 -1
- package/esm2022/lib/components/icon/icon.component.mjs +3 -6
- package/esm2022/lib/components/labelled-value/labelled-value.component.mjs +1 -1
- package/esm2022/lib/components/loading-container/loading-container.component.mjs +9 -4
- package/esm2022/lib/components/noop/noop.component.mjs +4 -2
- package/esm2022/lib/components/resize-aware.component.mjs +24 -61
- package/esm2022/lib/components/scroll-container/scroll-container.component.mjs +2 -2
- package/esm2022/lib/components/section-header/section-header.component.mjs +1 -1
- package/esm2022/lib/components/switch-case/switch-case.component.mjs +2 -2
- package/esm2022/lib/components/tables/abstract-table-model.mjs +23 -40
- package/esm2022/lib/components/tables/abstract-table.component.mjs +5 -19
- package/esm2022/lib/components/tables/column/column-list-model.mjs +44 -0
- package/esm2022/lib/components/tables/column/column-model.mjs +7 -18
- package/esm2022/lib/components/tables/column/column-template/column-template.directive.mjs +1 -1
- package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +5 -5
- package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +5 -5
- package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +5 -6
- package/esm2022/lib/components/tables/column/property-column-model.mjs +5 -5
- package/esm2022/lib/components/tables/column/selection-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +6 -6
- package/esm2022/lib/components/tables/editor/edit-session.mjs +2 -4
- package/esm2022/lib/components/tables/editor/editable-cell-renderer.mjs +1 -1
- package/esm2022/lib/components/tables/filter/column-text-search-formatter.mjs +1 -1
- package/esm2022/lib/components/tables/filter/enable-cell-text-search.decorator.mjs +2 -3
- package/esm2022/lib/components/tables/filter/table-filter-model.mjs +2 -4
- package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +2 -16
- package/esm2022/lib/components/tables/paginator/paginator.component.mjs +1 -1
- package/esm2022/lib/components/tables/renderer/cell-editors.mjs +1 -1
- package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +3 -1
- package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +6 -4
- package/esm2022/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.mjs +4 -2
- package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +1 -1
- package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +38 -213
- package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +1 -1
- package/esm2022/lib/components/tables/renderer/table-header-cell/table-header-cell.component.mjs +4 -2
- package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.mjs +1 -1
- package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +2 -7
- package/esm2022/lib/components/tables/table/table-model.mjs +1 -1
- package/esm2022/lib/components/tables/table/table.component.mjs +67 -12
- package/esm2022/lib/components/tables/table-row-menu/table-row-menu.component.mjs +1 -1
- package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +4 -5
- package/esm2022/lib/components/tables/tree-table/flattened-tree-list-model.mjs +1 -1
- package/esm2022/lib/components/tables/tree-table/tree-expansion-model.mjs +1 -1
- package/esm2022/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.mjs +4 -2
- package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
- package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +4 -4
- package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +4 -7
- package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +3 -3
- package/esm2022/lib/components/text/markdown/markdown.component.mjs +3 -3
- package/esm2022/lib/components/track.mjs +1 -1
- package/esm2022/lib/components/types/bounds.class.mjs +1 -1
- package/esm2022/lib/components/vertical-focus-container/vertical-focus-container.component.mjs +1 -1
- package/esm2022/lib/directives/command.directive.mjs +2 -2
- package/esm2022/lib/directives/directives.module.mjs +2 -2
- package/esm2022/lib/directives/exports.mjs +1 -2
- package/esm2022/lib/directives/focus-binding-factory.mjs +1 -1
- package/esm2022/lib/directives/focus-binding.directive.mjs +2 -2
- package/esm2022/lib/directives/focus-binding.mjs +1 -1
- package/esm2022/lib/directives/garbage-collector.directive.mjs +1 -2
- package/esm2022/lib/directives/highlight-text-model.directive.mjs +1 -1
- package/esm2022/lib/directives/highlight.pipe.mjs +2 -2
- package/esm2022/lib/interaction/abstract-interaction-context.mjs +1 -1
- package/esm2022/lib/interaction/activity-ref.mjs +2 -2
- package/esm2022/lib/interaction/activity.mjs +4 -4
- package/esm2022/lib/interaction/alert.mjs +2 -2
- package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +4 -8
- package/esm2022/lib/interaction/components/abstract-dialog.component.mjs +3 -2
- package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +3 -3
- package/esm2022/lib/interaction/components/activity-body/activity-body.component.mjs +1 -1
- package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +11 -28
- package/esm2022/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs +3 -1
- package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +2 -2
- package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
- package/esm2022/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.mjs +1 -1
- package/esm2022/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.mjs +1 -1
- package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
- package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
- package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +1 -1
- package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +1 -1
- package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +1 -1
- package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +1 -1
- package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
- package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-editor-model.mjs +2 -2
- package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +3 -3
- package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +3 -3
- package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -3
- package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +1 -4
- package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +4 -9
- package/esm2022/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.mjs +2 -3
- package/esm2022/lib/interaction/confirm.mjs +1 -1
- package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +6 -6
- package/esm2022/lib/interaction/exports.mjs +1 -2
- package/esm2022/lib/interaction/in-place-interaction-context.mjs +1 -1
- package/esm2022/lib/interaction/interaction-context.mjs +1 -1
- package/esm2022/lib/interaction/interaction.module.mjs +23 -21
- package/esm2022/lib/interaction/route-synchronisation-adapter.mjs +1 -1
- package/esm2022/lib/interaction/services/interaction-service-routing-adapter.mjs +1 -1
- package/esm2022/lib/interaction/services/interaction.service.mjs +3 -3
- package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +3 -2
- package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +2 -1
- package/esm2022/lib/interaction/services/modal-interaction-context.factory.mjs +1 -1
- package/esm2022/lib/place/components/abstract-place-navigation.component.mjs +1 -1
- package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +4 -3
- package/esm2022/lib/place/components/not-authorised-notice/not-authorised-notice.component.mjs +4 -2
- package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +4 -4
- package/esm2022/lib/place/components/place-outlet/route-animations.mjs +1 -1
- package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +4 -4
- package/esm2022/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +1 -1
- package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
- package/esm2022/lib/place/guards/noop-auth-guard.service.mjs +4 -2
- package/esm2022/lib/place/guards/place.guard.mjs +2 -2
- package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
- package/esm2022/lib/place/navigation/session/abstract-pop-state-navigation.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/event-clean-up-session.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.mjs +1 -1
- package/esm2022/lib/place/navigation/session/interactions/navigating-during-interaction.mjs +2 -2
- package/esm2022/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.mjs +1 -1
- package/esm2022/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.mjs +3 -3
- package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +6 -3
- package/esm2022/lib/place/navigation/session/navigating.mjs +2 -2
- package/esm2022/lib/place/navigation/session/navigation-context.mjs +1 -1
- package/esm2022/lib/place/navigation/session/navigation-session.mjs +1 -1
- package/esm2022/lib/place/navigation/session/pop-state-navigation.mjs +1 -1
- package/esm2022/lib/place/place-access-guard.mjs +1 -1
- package/esm2022/lib/place/place-component.mjs +30 -29
- package/esm2022/lib/place/place-config.mjs +1 -1
- package/esm2022/lib/place/place-definition.mjs +3 -3
- package/esm2022/lib/place/place-history.mjs +5 -3
- package/esm2022/lib/place/place-router.mjs +15 -17
- package/esm2022/lib/place/place.decorator.mjs +2 -2
- package/esm2022/lib/place/place.module.mjs +5 -1
- package/esm2022/lib/place/route/formatter.mjs +2 -2
- package/esm2022/lib/place/route/json-types.mjs +1 -1
- package/esm2022/lib/place/route/parameter-decorators.mjs +50 -54
- package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
- package/esm2022/lib/place/route/parameter-sanitiser.mjs +1 -1
- package/esm2022/lib/place/route/parameter-snapshot.mjs +1 -1
- package/esm2022/lib/place/route/visit-segment-sanitiser.mjs +1 -1
- package/esm2022/lib/place/url-service.mjs +1 -1
- package/esm2022/lib/place/url-snapshot.mjs +3 -3
- package/esm2022/lib/place/visit-segment.mjs +2 -2
- package/esm2022/lib/place/visit.mjs +2 -2
- package/esm2022/lib/services/markdown/markdown.service.mjs +4 -2
- package/esm2022/lib/services/markdown/pill-plugin.mjs +3 -1
- package/esm2022/lib/services/visibility-service.mjs +4 -4
- package/fesm2022/coolon-angular-ui-powerups.mjs +1769 -2395
- package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/animations/slide-animations.d.ts +0 -1
- package/lib/components/busy-overlay/busy-overlay.component.d.ts +4 -1
- package/lib/components/commands/command/command.component.d.ts +4 -4
- package/lib/components/commands/command-face/command-face.component.d.ts +0 -2
- package/lib/components/commands/command-face.d.ts +7 -5
- package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +2 -2
- package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +7 -3
- package/lib/components/components.module.d.ts +53 -55
- package/lib/components/disposable-component.d.ts +6 -1
- package/lib/components/empty-state/empty-state.component.d.ts +4 -1
- package/lib/components/exports.d.ts +1 -5
- package/lib/components/forms/abstract-input.component.d.ts +5 -13
- package/lib/components/forms/number-input/number-input.component.d.ts +4 -8
- package/lib/components/forms/password-input/password-input.component.d.ts +1 -7
- package/lib/components/forms/select-input/select-input.component.d.ts +3 -4
- package/lib/components/forms/string-input/string-input.component.d.ts +1 -3
- package/lib/components/loading-container/loading-container.component.d.ts +4 -1
- package/lib/components/noop/noop.component.d.ts +1 -0
- package/lib/components/resize-aware.component.d.ts +5 -24
- package/lib/components/switch-case/switch-case.component.d.ts +4 -4
- package/lib/components/tables/abstract-table-model.d.ts +5 -10
- package/lib/components/tables/abstract-table.component.d.ts +4 -5
- package/lib/components/tables/column/column-list-model.d.ts +13 -0
- package/lib/components/tables/column/column-model.d.ts +2 -6
- package/lib/components/tables/column/custom-template-column-model.d.ts +1 -2
- package/lib/components/tables/column/custom-value-column-model.d.ts +1 -2
- package/lib/components/tables/column/editor-controls-column-model.d.ts +1 -2
- package/lib/components/tables/column/list-propery-column-model.d.ts +1 -2
- package/lib/components/tables/column/property-column-model.d.ts +1 -2
- package/lib/components/tables/column/selection-column-model.d.ts +1 -2
- package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +3 -3
- package/lib/components/tables/editor/editable-cell-renderer.d.ts +1 -1
- package/lib/components/tables/filter/enable-cell-text-search.decorator.d.ts +1 -1
- package/lib/components/tables/filter/text-search-predicate.d.ts +0 -9
- package/lib/components/tables/renderer/cell-portal-ref.d.ts +3 -2
- package/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.d.ts +1 -0
- package/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.d.ts +1 -0
- package/lib/components/tables/renderer/table-body/table-body.component.d.ts +15 -25
- package/lib/components/tables/renderer/table-header-cell/table-header-cell.component.d.ts +1 -0
- package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +1 -2
- package/lib/components/tables/table/table.component.d.ts +12 -6
- package/lib/components/tables/tree-table/tree-expansion-model.d.ts +2 -2
- package/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.d.ts +1 -0
- package/lib/components/tables/tree-table/tree-label-column-model.d.ts +1 -2
- package/lib/components/tables/tree-table/tree-table-component.d.ts +2 -5
- package/lib/components/text/markdown/markdown.component.d.ts +1 -1
- package/lib/directives/exports.d.ts +0 -1
- package/lib/interaction/activity-ref.d.ts +2 -2
- package/lib/interaction/activity.d.ts +2 -2
- package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +0 -1
- package/lib/interaction/components/activity-container/activity-container.component.d.ts +3 -7
- package/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.d.ts +3 -2
- package/lib/interaction/components/editors/edit-context.d.ts +1 -1
- package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +1 -1
- package/lib/interaction/components/input-activities/string-input-activity.d.ts +1 -1
- package/lib/interaction/directives/interaction-context-trigger-for.directive.d.ts +3 -3
- package/lib/interaction/exports.d.ts +0 -1
- package/lib/interaction/interaction.module.d.ts +28 -28
- package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.d.ts +2 -1
- package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.d.ts +2 -1
- package/lib/place/components/not-authorised-notice/not-authorised-notice.component.d.ts +1 -0
- package/lib/place/guards/noop-auth-guard.service.d.ts +1 -0
- package/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.d.ts +1 -0
- package/lib/place/place-component.d.ts +10 -4
- package/lib/place/place-history.d.ts +1 -0
- package/lib/place/place-router.d.ts +2 -2
- package/lib/place/place.decorator.d.ts +1 -1
- package/lib/place/place.module.d.ts +5 -4
- package/lib/place/route/json-types.d.ts +3 -1
- package/lib/place/visit-segment.d.ts +4 -4
- package/lib/place/visit.d.ts +2 -2
- package/lib/services/markdown/markdown.service.d.ts +1 -0
- package/lib/services/visibility-service.d.ts +1 -1
- package/package.json +7 -8
- package/esm2022/lib/components/forms/form-field.mjs +0 -2
- package/esm2022/lib/components/forms/search-input/search-input.component.mjs +0 -33
- package/esm2022/lib/components/loadable-component.mjs +0 -49
- package/esm2022/lib/components/tables/column/column-manager.mjs +0 -81
- package/esm2022/lib/components/tables/column/column-order-manager.mjs +0 -19
- package/esm2022/lib/directives/resize-observer.directive.mjs +0 -40
- package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +0 -129
- package/lib/components/forms/form-field.d.ts +0 -5
- package/lib/components/forms/search-input/search-input.component.d.ts +0 -10
- package/lib/components/loadable-component.d.ts +0 -17
- package/lib/components/tables/column/column-manager.d.ts +0 -19
- package/lib/components/tables/column/column-order-manager.d.ts +0 -20
- package/lib/directives/resize-observer.directive.d.ts +0 -16
- package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +0 -53
|
@@ -3,13 +3,13 @@ import { Injectable } from "@angular/core";
|
|
|
3
3
|
import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from "@angular/router";
|
|
4
4
|
import { assert, DebugContext, Dsl, GarbageCollector, lang, Logger, MutableValueModel } from "@coolon/pectin";
|
|
5
5
|
import { InteractionService } from "../interaction/services/interaction.service";
|
|
6
|
+
import { PlaceAuthService } from "./place-auth-service";
|
|
6
7
|
import { NavigatingDuringInteraction } from "./navigation/session/interactions/navigating-during-interaction";
|
|
7
8
|
import { PopStateDuringInteractionNavigation } from "./navigation/session/interactions/pop-state-during-interaction-navigation";
|
|
8
9
|
import { SynchroniseInteractionContextIdsWithRoute } from "./navigation/session/interactions/synchronise-interaction-context-ids-with-route";
|
|
9
10
|
import { Navigating } from "./navigation/session/navigating";
|
|
10
11
|
import { NavigationContext } from "./navigation/session/navigation-context";
|
|
11
12
|
import { PopStateNavigation } from "./navigation/session/pop-state-navigation";
|
|
12
|
-
import { PlaceAuthService } from "./place-auth-service";
|
|
13
13
|
import { PlaceHistory } from "./place-history";
|
|
14
14
|
import { UrlService } from "./url-service";
|
|
15
15
|
import { Visit } from "./visit";
|
|
@@ -19,9 +19,9 @@ import * as i2 from "@angular/common";
|
|
|
19
19
|
import * as i3 from "../interaction/services/interaction.service";
|
|
20
20
|
import * as i4 from "./url-service";
|
|
21
21
|
import * as i5 from "./place-history";
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
function asArray(item) {
|
|
23
|
+
return Array.isArray(item) ? item : [item];
|
|
24
|
+
}
|
|
25
25
|
export class PlaceRouter extends GarbageCollector {
|
|
26
26
|
angularRouter;
|
|
27
27
|
angularLocation;
|
|
@@ -56,7 +56,7 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
56
56
|
}, segments => {
|
|
57
57
|
this.routingSessionFinished(segments);
|
|
58
58
|
});
|
|
59
|
-
const { chain } = Dsl.disposeWith(this);
|
|
59
|
+
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
60
60
|
this.navigationInProgress$ = chain(this.navigationSession$).isNotNil();
|
|
61
61
|
this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck("isInteractionSync");
|
|
62
62
|
const idleStateName = chain(this.interactionService.active).map(active => active ? "IdleDuringInteraction" : "Idle");
|
|
@@ -153,7 +153,7 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
153
153
|
// @Trace()
|
|
154
154
|
onRouterStarted(event) {
|
|
155
155
|
assert.isFalsey(event.navigationTrigger === "popstate");
|
|
156
|
-
|
|
156
|
+
const inInteraction = this.interactionService.isActive();
|
|
157
157
|
if (this.currentSession) {
|
|
158
158
|
this.currentSession.onRouterStarted(event);
|
|
159
159
|
}
|
|
@@ -187,7 +187,7 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
187
187
|
}
|
|
188
188
|
async navigate(visitOrPlaceComponent, params) {
|
|
189
189
|
const visit = this.toVisit(visitOrPlaceComponent, params).copyWithDefaultsFrom(this.activeVisit$.value);
|
|
190
|
-
return this.doNavigation(visit, async () => {
|
|
190
|
+
return this.doNavigation(visit, async (router) => {
|
|
191
191
|
await this.angularRouter.navigate(visit.getRouterCommands());
|
|
192
192
|
});
|
|
193
193
|
}
|
|
@@ -228,8 +228,8 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
228
228
|
const visit = this.activeVisit$.value.copyAndReplaceSegment(is);
|
|
229
229
|
if (is.hasRoutingChangedFrom(was)) {
|
|
230
230
|
// TODO: can I just do a regular navigate using an updated visit?
|
|
231
|
-
|
|
232
|
-
await this.doNavigation(visit,
|
|
231
|
+
const { when } = Dsl.disposeWith(this);
|
|
232
|
+
await this.doNavigation(visit, router => {
|
|
233
233
|
const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegment(is);
|
|
234
234
|
return this.navigateByUrl(urlSnapshot);
|
|
235
235
|
});
|
|
@@ -250,7 +250,7 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
250
250
|
assert.isTruthy(next !== previous);
|
|
251
251
|
// Logger.get(this).info(`### Router State Transition: ${previous ? previous.toString() : 'null'} -> ${next.toString()}`);
|
|
252
252
|
this.navigationSession$.value = next;
|
|
253
|
-
if (previous) {
|
|
253
|
+
if (!!previous) {
|
|
254
254
|
previous.dispose();
|
|
255
255
|
}
|
|
256
256
|
next.notifyActive();
|
|
@@ -282,13 +282,11 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
282
282
|
* the app directly and we don't get to ask.
|
|
283
283
|
*/
|
|
284
284
|
// @Trace()
|
|
285
|
-
syncInteractionContextIdsWithRouter(onSyncComplete = () => {
|
|
286
|
-
// noop
|
|
287
|
-
}) {
|
|
285
|
+
syncInteractionContextIdsWithRouter(onSyncComplete = () => { }) {
|
|
288
286
|
if (this.navigationSession) {
|
|
289
287
|
// console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);
|
|
290
|
-
|
|
291
|
-
return new Promise((resolve) => {
|
|
288
|
+
const session = this.navigationSession;
|
|
289
|
+
return new Promise((resolve, reject) => {
|
|
292
290
|
this.runAfterRoutingSessionFinishes(() => {
|
|
293
291
|
this.runAfterRoutingSessionFinishes(() => {
|
|
294
292
|
onSyncComplete();
|
|
@@ -300,7 +298,7 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
300
298
|
});
|
|
301
299
|
}
|
|
302
300
|
else {
|
|
303
|
-
return new Promise(((resolve) => {
|
|
301
|
+
return new Promise(((resolve, reject) => {
|
|
304
302
|
// console.log(`No navigation in progress, starting synchronisation job`);
|
|
305
303
|
this.runAfterRoutingSessionFinishes(() => {
|
|
306
304
|
onSyncComplete();
|
|
@@ -328,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
328
326
|
providedIn: "root"
|
|
329
327
|
}]
|
|
330
328
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }, { type: i3.InteractionService }, { type: i4.UrlService }, { type: i5.PlaceHistory }]; } });
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2Utcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsTUFBTSxFQUVQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osR0FBRyxFQUNILGdCQUFnQixFQUNoQixJQUFJLEVBQ0osTUFBTSxFQUNOLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzVHLE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQ0wseUNBQXlDLEVBQzFDLE1BQU0sa0ZBQWtGLENBQUM7QUFDMUYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFB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QUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQzt1R0FsVlUsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICBOYXZpZ2F0aW9uRW5kLFxuICBOYXZpZ2F0aW9uRXJyb3IsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgRGVidWdDb250ZXh0LFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIGxhbmcsXG4gIExvZ2dlcixcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7Q29uc3RydWN0YWJsZX0gZnJvbSBcIkBjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXNcIjtcbmltcG9ydCB7SW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXJ9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi1zZXJ2aWNlLXJvdXRpbmctYWRhcHRlclwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvblNlcnZpY2V9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge05hdmlnYXRpbmdEdXJpbmdJbnRlcmFjdGlvbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL2ludGVyYWN0aW9ucy9uYXZpZ2F0aW5nLWR1cmluZy1pbnRlcmFjdGlvblwiO1xuaW1wb3J0IHtcbiAgUG9wU3RhdGVEdXJpbmdJbnRlcmFjdGlvbk5hdmlnYXRpb25cbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL2ludGVyYWN0aW9ucy9wb3Atc3RhdGUtZHVyaW5nLWludGVyYWN0aW9uLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7XG4gIFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlXG59IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvc3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZVwiO1xuaW1wb3J0IHtOYXZpZ2F0aW5nfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vbmF2aWdhdGluZ1wiO1xuaW1wb3J0IHtOYXZpZ2F0aW9uQ29udGV4dH0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tY29udGV4dFwiO1xuaW1wb3J0IHtOYXZpZ2F0aW9uU2Vzc2lvbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tc2Vzc2lvblwiO1xuaW1wb3J0IHtQb3BTdGF0ZU5hdmlnYXRpb259IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9wb3Atc3RhdGUtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHtQbGFjZUF1dGhTZXJ2aWNlfSBmcm9tIFwiLi9wbGFjZS1hdXRoLXNlcnZpY2VcIjtcbmltcG9ydCB7UGxhY2VDb21wb25lbnR9IGZyb20gXCIuL3BsYWNlLWNvbXBvbmVudFwiO1xuaW1wb3J0IHtQbGFjZUhpc3Rvcnl9IGZyb20gXCIuL3BsYWNlLWhpc3RvcnlcIjtcbmltcG9ydCB7VXJsU2VydmljZX0gZnJvbSBcIi4vdXJsLXNlcnZpY2VcIjtcbmltcG9ydCB7VXJsU25hcHNob3R9IGZyb20gXCIuL3VybC1zbmFwc2hvdFwiO1xuaW1wb3J0IHtWaXNpdH0gZnJvbSBcIi4vdmlzaXRcIjtcbmltcG9ydCB7VmlzaXRTZWdtZW50fSBmcm9tIFwiLi92aXNpdC1zZWdtZW50XCI7XG5cbi8vIGZ1bmN0aW9uIGFzQXJyYXk8VD4oaXRlbTogVCB8IFRbXSk6IFRbXSB7XG4vLyAgIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcbi8vIH1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVJvdXRlciBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uJCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU2Vzc2lvbj4oKTtcbiAgcmVhZG9ubHkgbmF2aWdhdGlvbkluUHJvZ3Jlc3MkOiBWYWx1ZU1vZGVsQ2hhaW48Ym9vbGVhbj47XG4gIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uTmFtZSQ6IFZhbHVlTW9kZWxDaGFpbjxzdHJpbmc+OyAvLyB1c2VkIGJ5IHRlc3RzXG4gIHJlYWRvbmx5IGludGVyYWN0aW9uU3luY0luUHJvZ3Jlc3MkOiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbkNvbnRleHQ6IE5hdmlnYXRpb25Db250ZXh0LkltcGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVmlzaXQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlckludGVyYWN0aW9uQWRhcHRlcjogSW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXI7XG4gIHByaXZhdGUgc2Vzc2lvbkZpbmlzaGVkSm9iczogKCgpID0+IHZvaWQpW10gPSBbXTtcblxuICByZWFkb25seSBhdXRoU2VydmljZSA9IG5ldyBQbGFjZUF1dGhTZXJ2aWNlKCk7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJSb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhbmd1bGFyTG9jYXRpb246IExvY2F0aW9uLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludGVyYWN0aW9uU2VydmljZTogSW50ZXJhY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVybFNlcnZpY2U6IFVybFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnkpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKHdpbmRvd1tcIkN5cHJlc3NcIl0pIHtcbiAgICAgIHdpbmRvd1tcImF1cC5QbGFjZVJvdXRlclwiXSA9IHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIgPSBpbnRlcmFjdGlvblNlcnZpY2UucmVnaXN0ZXJQbGFjZVJvdXRlcih0aGlzKTtcblxuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBhbiBpbnRlcmZhY2UgYW5kIHVzZSAndGhpcycgaW5zdGVhZC5cbiAgICB0aGlzLm5hdmlnYXRpb25Db250ZXh0ID0gbmV3IE5hdmlnYXRpb25Db250ZXh0LkltcGwoXG4gICAgICB0aGlzLnVybFNlcnZpY2UsXG4gICAgICB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlcixcbiAgICAgICh1cmxTbmFwc2hvdDogVXJsU25hcHNob3QsIG9wdGlvbnM6IHsgcmVwbGFjZVVybDogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIHN0YXRlID0+IHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc3RhdGUpO1xuICAgICAgfSxcbiAgICAgIHNlZ21lbnRzID0+IHtcbiAgICAgICAgdGhpcy5yb3V0aW5nU2Vzc2lvbkZpbmlzaGVkKHNlZ21lbnRzKTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJCA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb24kKS5pc05vdE5pbCgpO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25TeW5jSW5Qcm9ncmVzcyQgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uJCkucGx1Y2soXCJpc0ludGVyYWN0aW9uU3luY1wiKVxuXG4gICAgY29uc3QgaWRsZVN0YXRlTmFtZSA9IGNoYWluKHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmFjdGl2ZSkubWFwKGFjdGl2ZSA9PiBhY3RpdmUgPyBcIklkbGVEdXJpbmdJbnRlcmFjdGlvblwiIDogXCJJZGxlXCIpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb25OYW1lJCA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb24kKVxuICAgICAgLnBsdWNrKFwibmFtZVwiKVxuICAgICAgLm90aGVyd2lzZShpZGxlU3RhdGVOYW1lKTtcblxuICAgIERlYnVnQ29udGV4dC50YWcodGhpcy5fYWN0aXZlVmlzaXQkLCBcIlBsYWNlUm91dGVyLmFjdGl2ZVZpc2l0XCIpO1xuXG4gICAgLy8gVE9ETzogbWFrZSBzZXR1cCB0aGUgY2FsbGJhY2tzIGluIGR1cmluZyBtb2R1bGUgaW5pdGlhdGlvbiB0byBtYWtlIHRoaXMgdGVzdGFibGUuXG4gICAgYW5ndWxhclJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIC8vIFJvdXRpbmcgZXZlbnQgc2VxdWVuY2VcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25DYW5jZWwgLS0+IHJlZGlyZWN0LCBnbyBhcm91bmQgYWdhaW4gaW4gdGhlIHNhbWUgc2Vzc2lvblxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVuZCAtLT4gbmF2aWdhdGlvbiBjb21wbGV0ZSwgZW5kIHNlc3Npb24uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRXJyb3IgLS0+IG5hdmlnYXRpb24gYWJvcnRlZCwgZW5kIHNlc3Npb24uXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE5hdmlnYXRpb25TdGFydFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfSAoJHtldmVudC5uYXZpZ2F0aW9uVHJpZ2dlcn0pYCk7XG4gICAgICAgIGlmIChldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gXCJwb3BzdGF0ZVwiKSB7XG4gICAgICAgICAgdGhpcy5vblBvcFN0YXRlKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9uUm91dGVyU3RhcnRlZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvblN0YXJ0WyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9ICgke2V2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyfSlgKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvbkVuZFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgICB0aGlzLm9uUm91dGVyRW5kKGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvbkVuZFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE5hdmlnYXRpb25FcnJvclske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgICB0aGlzLm9uUm91dGVyRXJyb3IoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uRXJyb3JbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvbkNhbmNlbFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgICB0aGlzLm9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvbkNhbmNlbFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVGhlIHJvdXRlciBuZWVkcyB0byBrbm93IGFib3V0IHVybCBjaGFuZ2VzIGFuZCBpbiBzb21lIGNhc2VzIHRoZXkgYXJlIHRoZSBvbmx5IHdheSB0aGUgcm91dGVyIGNhbiBrbm93IGlmXG4gICAgLy8gdGhlIGJhY2sgYnV0dG9uIHdhcyBjbGlja2VkLlxuICAgIGFuZ3VsYXJMb2NhdGlvbi5vblVybENoYW5nZSh1cmwgPT4gdGhpcy5vblVybENoYW5nZWQodXJsKSk7XG5cbiAgfVxuXG4gIGdldEF1dGhlbnRpY2F0aW9uRmFpbHVyZVJlZGlyZWN0KGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFZpc2l0IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRoZW50aWNhdGlvbkZhaWx1cmVSZWRpcmVjdChhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpXG4gIH1cblxuICBnZXRBdXRob3Jpc2F0aW9uRmFpbHVyZVJlZGlyZWN0T3B0aW9ucyhjb21wb25lbnQ6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTogVmlzaXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXNhdGlvbkZhaWx1cmVSZWRpcmVjdE9wdGlvbnMoY29tcG9uZW50KTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uU2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWU7XG4gIH1cblxuICBnZXQgY3VycmVudFNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICB9XG5cbiAgaXNOYXZpZ2F0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJC52YWx1ZTtcbiAgfVxuXG4gIHdhaXRVbnRpbElkbGUoKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx0aGlzPihyZXNvbHZlID0+IHtcbiAgICAgIHdoZW4odGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQpLmJlY29tZXNGYWxzZXkoKCkgPT4gcmVzb2x2ZSh0aGlzKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6IFwiZXZhbHVhdGVcIixcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB3YWl0QWN0aXZpdGllc1N5bmNocm9uaXNlZCgpOiBQcm9taXNlPHRoaXM+IHtcbiAgICBjb25zdCB7d2hlbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHRoaXM+KHJlc29sdmUgPT4ge1xuICAgICAgd2hlbih0aGlzLmludGVyYWN0aW9uU3luY0luUHJvZ3Jlc3MkKS5iZWNvbWVzRmFsc2V5KCgpID0+IHJlc29sdmUodGhpcyksIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiBcImV2YWx1YXRlXCIsXG4gICAgICAgIG9uY2U6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Qb3BTdGF0ZShldmVudDogTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSBcInBvcHN0YXRlXCIpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUG9wU3RhdGUoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3BwZWRIaXN0b3J5VXJsID0gZXZlbnQudXJsO1xuICAgICAgY29uc3QgY3VycmVudFJvdXRlclVybCA9IHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKSA/XG4gICAgICAgIG5ldyBQb3BTdGF0ZUR1cmluZ0ludGVyYWN0aW9uTmF2aWdhdGlvbih0aGlzLm5hdmlnYXRpb25Db250ZXh0LCBjdXJyZW50Um91dGVyVXJsLCBwb3BwZWRIaXN0b3J5VXJsKSA6XG4gICAgICAgIG5ldyBQb3BTdGF0ZU5hdmlnYXRpb24odGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgY3VycmVudFJvdXRlclVybCwgcG9wcGVkSGlzdG9yeVVybCk7XG4gICAgICB0aGlzLnRyYW5zaXRpb25UbyhzZXNzaW9uKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSBcInBvcHN0YXRlXCIpO1xuICAgIC8vIGNvbnN0IGluSW50ZXJhY3Rpb24gPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyU3RhcnRlZChldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuY3JlYXRlTmF2aWdhdGlvblNlc3Npb24odGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uVXJsQ2hhbmdlZChuZXdVcmw6IHN0cmluZykge1xuICAgIC8vIHRoZSBiYWNrIGJ1dHRvbiBjYW4gdHJpZ2dlciBhIHVybCBjaGFuZ2Ugd2l0aG91dCBhIG5hdmlnYXRpb24gc2Vzc2lvbiBpbiBwcm9ncmVzcyBzbyB3ZVxuICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IFVybCBDaGFuZ2VkICR7bmV3VXJsfWApO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uVXJsQ2hhbmdlKG5ld1VybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRllJOiB1cmwgY2hhbmdlZCB3aXRob3V0IGEgbmF2aWdhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzXCIpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBVcmwgQ2hhbmdlZGApO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpIHtcbiAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcikge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJFcnJvcihldmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckVuZChldmVudDogTmF2aWdhdGlvbkVuZCkge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJFbmQoZXZlbnQpO1xuICB9XG5cblxuICBhc3luYyBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQpXG4gIGFzeW5jIG5hdmlnYXRlKHBsYWNlQ29tcG9uZW50OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gIGFzeW5jIG5hdmlnYXRlKHZpc2l0T3JQbGFjZUNvbXBvbmVudDogVmlzaXQgfCBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMudG9WaXNpdCh2aXNpdE9yUGxhY2VDb21wb25lbnQsIHBhcmFtcykuY29weVdpdGhEZWZhdWx0c0Zyb20odGhpcy5hY3RpdmVWaXNpdCQudmFsdWUpXG4gICAgcmV0dXJuIHRoaXMuZG9OYXZpZ2F0aW9uKHZpc2l0LCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmFuZ3VsYXJSb3V0ZXIubmF2aWdhdGUodmlzaXQuZ2V0Um91dGVyQ29tbWFuZHMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBkb05hdmlnYXRpb24odmlzaXQ6IFZpc2l0LCBydW5OYXZpZ2F0aW9uQ29tbWFuZHM6IChyb3V0ZXI6IFJvdXRlcikgPT4gYW55KSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkLnZhbHVlKSB7XG4gICAgICBMb2dnZXIuZ2V0KCkuZXJyb3IoXCJOYXZpZ2F0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIiwge1xuICAgICAgICB2aXNpdDogdmlzaXQsXG4gICAgICAgIHNlc3Npb246IHRoaXMubmF2aWdhdGlvblNlc3Npb25cbiAgICAgIH0pO1xuICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoXCJOYXZpZ2F0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIik7XG4gICAgfVxuICAgIGNvbnN0IG5hdmlnYXRpb24gPSB0aGlzLmNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCkpO1xuICAgIG5hdmlnYXRpb24uaW5pdGlhbGlzZVZpc2l0U2VnbWVudHModmlzaXQpXG4gICAgdGhpcy50cmFuc2l0aW9uVG8obmF2aWdhdGlvbik7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bk5hdmlnYXRpb25Db21tYW5kcyh0aGlzLmFuZ3VsYXJSb3V0ZXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgcm91dGVyIGhhcyBmaW5pc2hlZCAoaW4gdGhlIGNhc2Ugd2hlcmUgbm8gcm91dGVyIGNoYW5nZSByZXF1aXJlZCkgYW5kIHdlJ3JlIHN0aWxsIGluICBhXG4gICAgICAvLyB0cmFuc2llbnQgc3RhdGUgYW5kIGZpbmlzaCBvZiB0aGUgdHJhbnNpdGlvbi5cbiAgICAgIGlmICghdGhpcy5hbmd1bGFyUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkgJiYgdGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyRW5kKG5ldyBOYXZpZ2F0aW9uRW5kKC0xLCBcIlwiLCB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdDogVXJsU25hcHNob3QsIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gY29uc29sZS5sb2coYCMjIyBuYXZpZ2F0aW9uQnlVcmwgLT4gJHt1cmxTbmFwc2hvdC51cmxUcmVlLnRvU3RyaW5nKCl9YCk7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhclJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LnVybFRyZWUsIG5hdmlnYXRpb25FeHRyYXMpO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0JCgpOiBWYWx1ZU1vZGVsPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpc2l0JC5yZWFkb25seSQ7XG4gIH1cblxuICBhc3luYyBub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkKGlzOiBWaXNpdFNlZ21lbnQsIHdhczogVmlzaXRTZWdtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gY29uc29sZS5sb2coXCJQbGFjZVJvdXRlci5ub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkXCIsIGlzLnRvRGVidWdTdHJpbmcoKSwgd2FzLnRvRGVidWdTdHJpbmcoKSk7XG4gICAgdGhpcy5wbGFjZUhpc3RvcnkudXBkYXRlVmlzaXRTZWdtZW50KGlzKTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMuYWN0aXZlVmlzaXQkLnZhbHVlLmNvcHlBbmRSZXBsYWNlU2VnbWVudChpcyk7XG4gICAgaWYgKGlzLmhhc1JvdXRpbmdDaGFuZ2VkRnJvbSh3YXMpKSB7XG4gICAgICAvLyBUT0RPOiBjYW4gSSBqdXN0IGRvIGEgcmVndWxhciBuYXZpZ2F0ZSB1c2luZyBhbiB1cGRhdGVkIHZpc2l0P1xuICAgICAgLy8gY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgICAgYXdhaXQgdGhpcy5kb05hdmlnYXRpb24odmlzaXQsICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2UucGFyc2VVcmwodGhpcy5hbmd1bGFyUm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkudXBkYXRlVmlzaXRTZWdtZW50KGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgY3JlYXRlTmF2aWdhdGlvblNlc3Npb24oY3VycmVudFJvdXRlclVybDogc3RyaW5nKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIGNvbnN0IGluSW50ZXJhY3Rpb24gPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpO1xuICAgIHJldHVybiBpbkludGVyYWN0aW9uID9cbiAgICAgIG5ldyBOYXZpZ2F0aW5nRHVyaW5nSW50ZXJhY3Rpb24odGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgY3VycmVudFJvdXRlclVybCkgOlxuICAgICAgbmV3IE5hdmlnYXRpbmcodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgY3VycmVudFJvdXRlclVybCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIHByb3RlY3RlZCB0cmFuc2l0aW9uVG8obmV4dDogTmF2aWdhdGlvblNlc3Npb24pIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICAgIGlmICghcHJldmlvdXMpIHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5Lm5vdGlmeU5hdmlnYXRpb25TdGFydGVkKCk7XG4gICAgfVxuICAgIGFzc2VydC5pc1RydXRoeShuZXh0ICE9PSBwcmV2aW91cyk7XG4gICAgLy8gTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGAjIyMgUm91dGVyIFN0YXRlIFRyYW5zaXRpb246ICR7cHJldmlvdXMgPyBwcmV2aW91cy50b1N0cmluZygpIDogJ251bGwnfSAtPiAke25leHQudG9TdHJpbmcoKX1gKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZSA9IG5leHQ7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cy5kaXNwb3NlKCk7XG4gICAgfVxuICAgIG5leHQubm90aWZ5QWN0aXZlKCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIHByaXZhdGUgcm91dGluZ1Nlc3Npb25GaW5pc2hlZCh2aXNpdD86IFZpc2l0KSB7XG4gICAgaWYgKHZpc2l0KSB7XG4gICAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQudmFsdWUpO1xuICAgICAgdGhpcy5wbGFjZUhpc3Rvcnkubm90aWZ5TmF2aWdhdGlvbkZpbmlzaGVkKHZpc2l0KTtcbiAgICAgIC8vIFdlIHVwZGF0ZSB0aGUgYWN0aXZlIHZpc2l0cyBiZWZvcmUgd2UgZmluaXNoIHRoZSBzZXNzaW9uIHNvIHRoZVxuICAgICAgLy8gcGxhY2Ugb3V0bGV0cyBjYW4gaWdub3JlIHRoZSBpbmNvbWluZyBjaGFuZ2VzIHVudGlsIHRoaW5ncyBhcmUgc2V0dGxlZC5cbiAgICAgIHRoaXMuX2FjdGl2ZVZpc2l0JC52YWx1ZSA9IHZpc2l0O1xuICAgICAgLy8gY29uc29sZS5sb2codmlzaXQudG9EZWJ1Z1N0cmluZygpKVxuICAgIH1cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdXJyZW50U2Vzc2lvbjtcbiAgICBzZXNzaW9uLmRpc3Bvc2UoKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZSA9IG51bGw7XG4gICAgLy8gY29uc29sZS5sb2coYCMjIyBSb3V0ZXIgU2Vzc2lvbiBGaW5pc2hlZCAod2FzICR7c2Vzc2lvbi50b1N0cmluZygpfSlgKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMuZm9yRWFjaChqb2IgPT4gam9iKCkpO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icyA9IFtdO1xuICB9XG5cblxuICBwcml2YXRlIHJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcyhmdW5jOiAoKSA9PiB2b2lkKSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMucHVzaChmdW5jKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN5bmMncyB0aGUgY3VycmVudCBpbnRlcmFjdGlvbiBzdGF0ZSB3aXRoIHRoZSBVUkwuICBXZSBuZWVkIHRvIHB1c2ggc29tZXRoaW5nIGluIHRoZSBVUkwgaW4gb3JkZXJcbiAgICogdG8gYmUgYWJsZSB0byBjYXB0dXJlIHRoZSBiYWNrIGJ1dHRvbiBvbiB0aGUgZmlyc3QgcGFnZS4gIElmIHdlIGRvbid0IHRoZW4gdGhlIGJhY2sgY2xpY2sgd2lsbCBleGl0XG4gICAqIHRoZSBhcHAgZGlyZWN0bHkgYW5kIHdlIGRvbid0IGdldCB0byBhc2suXG4gICAqL1xuICAvLyBAVHJhY2UoKVxuICBzeW5jSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlcihvblN5bmNDb21wbGV0ZTogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyBub29wXG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbikge1xuICAgICAgLy8gY29uc29sZS5sb2coYE5hdmlnYXRpb24gYWN0aXZlIC0+ICR7dGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi50b1N0cmluZygpfSwgc3luYyBkZWxheWVkIHVudGlsIGZpbmlzaGVkLmApO1xuICAgICAgLy8gY29uc3Qgc2Vzc2lvbiA9IHRoaXMubmF2aWdhdGlvblNlc3Npb247XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy5ydW5BZnRlclJvdXRpbmdTZXNzaW9uRmluaXNoZXMoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3luY0NvbXBsZXRlKCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgc3luY1Nlc3Npb24gPSBuZXcgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSwgZmFsc2UpO1xuICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHN5bmNTZXNzaW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KCgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgTm8gbmF2aWdhdGlvbiBpbiBwcm9ncmVzcywgc3RhcnRpbmcgc3luY2hyb25pc2F0aW9uIGpvYmApO1xuICAgICAgICB0aGlzLnJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcygoKSA9PiB7XG4gICAgICAgICAgb25TeW5jQ29tcGxldGUoKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCksIGZhbHNlKTtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc2Vzc2lvbik7XG4gICAgICB9KSk7XG5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVmlzaXQodmlzaXRPclBsYWNlQ29tcG9uZW50OiBWaXNpdCB8IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIGlmICh2aXNpdE9yUGxhY2VDb21wb25lbnQgaW5zdGFuY2VvZiBWaXNpdCkge1xuICAgICAgcmV0dXJuIHZpc2l0T3JQbGFjZUNvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFZpc2l0LmdvdG8odmlzaXRPclBsYWNlQ29tcG9uZW50LCBwYXJhbXMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlUm91dGVyIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0aW9ucyB7XG4gICAgLyoqXG4gICAgICogTk9URTogZm9yIG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgdG9wIGxldmVsIHBsYWNlcy4gIFN1cHBvcnQgZm9yIGNoaWxkIHBsYWNlcyB3aWxsIHJlcXVpcmUgYSBtb3JlIGZ1bmRhbWVudGFsXG4gICAgICogY2hhbmdlIHRvIHZpc2l0cyB0byBzdXBwb3J0IG5lc3RpbmdcbiAgICAgKi9cbiAgICBvbkF1dGhlbnRpY2F0aW9uRmFpbHVyZShhY3RpdmF0ZWRSb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFZpc2l0IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAgKiBOT1RFOiBmb3Igbm93IHRoaXMgb25seSBzdXBwb3J0cyB0b3AgbGV2ZWwgcGxhY2VzLiAgU3VwcG9ydCBmb3IgY2hpbGQgcGxhY2VzIHdpbGwgcmVxdWlyZSBhIG1vcmUgZnVuZGFtZW50YWxcbiAgICAgKiBjaGFuZ2UgdG8gdmlzaXRzIHRvIHN1cHBvcnQgbmVzdGluZ1xuICAgICAqIEBwYXJhbSBjb21wb25lbnRcbiAgICAgKi9cbiAgICBvbkF1dGhvcmlzYXRpb25GYWlsdXJlKGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiAoQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4gfCBWaXNpdClbXTtcbiAgfVxufVxuIl19
|
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2Utcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFHTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsTUFBTSxFQUVQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLE1BQU0sRUFFTixZQUFZLEVBRVosR0FBRyxFQUNILGdCQUFnQixFQUNoQixJQUFJLEVBRUosTUFBTSxFQUVOLGlCQUFpQixFQUlsQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzVHLE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQ0wseUNBQXlDLEVBQzFDLE1BQU0sa0ZBQWtGLENBQUM7QUFDMUYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBSTdFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFB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QyxDQUFDO2dCQUNILE1BQU0sT0FBTyxHQUFHLElBQUkseUNBQXlDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDcEksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBRUw7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLHFCQUE0RCxFQUFFLE1BQTRCO1FBQ3hHLElBQUkscUJBQXFCLFlBQVksS0FBSyxFQUFFO1lBQzFDLE9BQU8scUJBQXFCLENBQUM7U0FDOUI7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7dUdBalZVLFdBQVc7MkdBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGUsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIE5hdmlnYXRpb25DYW5jZWwsXG4gIE5hdmlnYXRpb25FbmQsXG4gIE5hdmlnYXRpb25FcnJvcixcbiAgTmF2aWdhdGlvbkV4dHJhcyxcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBSb3V0ZXIsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBCaW5kaW5nLFxuICBEZWJ1Z0NvbnRleHQsXG4gIERlbGVnYXRpbmdWYWx1ZU1vZGVsLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIGxhbmcsXG4gIExpc3RNb2RlbCxcbiAgTG9nZ2VyLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVHJhY2UsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7Q29uc3RydWN0YWJsZX0gZnJvbSBcIkBjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXNcIjtcbmltcG9ydCB7SW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXJ9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi1zZXJ2aWNlLXJvdXRpbmctYWRhcHRlclwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvblNlcnZpY2V9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge1BsYWNlQXV0aFNlcnZpY2V9IGZyb20gXCIuL3BsYWNlLWF1dGgtc2VydmljZVwiO1xuaW1wb3J0IHtOYXZpZ2F0aW5nRHVyaW5nSW50ZXJhY3Rpb259IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvbmF2aWdhdGluZy1kdXJpbmctaW50ZXJhY3Rpb25cIjtcbmltcG9ydCB7XG4gIFBvcFN0YXRlRHVyaW5nSW50ZXJhY3Rpb25OYXZpZ2F0aW9uXG59IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvcG9wLXN0YXRlLWR1cmluZy1pbnRlcmFjdGlvbi1uYXZpZ2F0aW9uXCI7XG5pbXBvcnQge1xuICBTeW5jaHJvbmlzZUludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZVxufSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vaW50ZXJhY3Rpb25zL3N5bmNocm9uaXNlLWludGVyYWN0aW9uLWNvbnRleHQtaWRzLXdpdGgtcm91dGVcIjtcbmltcG9ydCB7TmF2aWdhdGluZ30gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpbmdcIjtcbmltcG9ydCB7TmF2aWdhdGlvbkNvbnRleHR9IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9uYXZpZ2F0aW9uLWNvbnRleHRcIjtcbmltcG9ydCB7TmF2aWdhdGlvblNlc3Npb259IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9uYXZpZ2F0aW9uLXNlc3Npb25cIjtcbmltcG9ydCB7UG9wU3RhdGVOYXZpZ2F0aW9ufSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vcG9wLXN0YXRlLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7UGxhY2VBY2Nlc3NHdWFyZH0gZnJvbSBcIi4vcGxhY2UtYWNjZXNzLWd1YXJkXCI7XG5pbXBvcnQge1BsYWNlQ29tcG9uZW50fSBmcm9tIFwiLi9wbGFjZS1jb21wb25lbnRcIjtcbmltcG9ydCB7UGxhY2VEZWZpbml0aW9ufSBmcm9tIFwiLi9wbGFjZS1kZWZpbml0aW9uXCI7XG5pbXBvcnQge1BsYWNlSGlzdG9yeX0gZnJvbSBcIi4vcGxhY2UtaGlzdG9yeVwiO1xuaW1wb3J0IHtVcmxTZXJ2aWNlfSBmcm9tIFwiLi91cmwtc2VydmljZVwiO1xuaW1wb3J0IHtVcmxTbmFwc2hvdH0gZnJvbSBcIi4vdXJsLXNuYXBzaG90XCI7XG5pbXBvcnQge1Zpc2l0fSBmcm9tIFwiLi92aXNpdFwiO1xuaW1wb3J0IHtWaXNpdFNlZ21lbnR9IGZyb20gXCIuL3Zpc2l0LXNlZ21lbnRcIjtcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5mdW5jdGlvbiBhc0FycmF5PFQ+KGl0ZW06IFQgfCBUW10pOiBUW10ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShpdGVtKSA/IGl0ZW0gOiBbaXRlbV07XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbiQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+KCk7XG4gIHJlYWRvbmx5IG5hdmlnYXRpb25JblByb2dyZXNzJDogVmFsdWVNb2RlbENoYWluPGJvb2xlYW4+O1xuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbk5hbWUkOiBWYWx1ZU1vZGVsQ2hhaW48c3RyaW5nPjsgLy8gdXNlZCBieSB0ZXN0c1xuICByZWFkb25seSBpbnRlcmFjdGlvblN5bmNJblByb2dyZXNzJDogVmFsdWVNb2RlbDxib29sZWFuPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Db250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dC5JbXBsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVZpc2l0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxWaXNpdD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXI6IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyO1xuICBwcml2YXRlIHNlc3Npb25GaW5pc2hlZEpvYnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBuZXcgUGxhY2VBdXRoU2VydmljZSgpO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhbmd1bGFyUm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmFjdGlvblNlcnZpY2U6IEludGVyYWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh3aW5kb3dbXCJDeXByZXNzXCJdKSB7XG4gICAgICB3aW5kb3dbXCJhdXAuUGxhY2VSb3V0ZXJcIl0gPSB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyID0gaW50ZXJhY3Rpb25TZXJ2aWNlLnJlZ2lzdGVyUGxhY2VSb3V0ZXIodGhpcyk7XG5cbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYW4gaW50ZXJmYWNlIGFuZCB1c2UgJ3RoaXMnIGluc3RlYWQuXG4gICAgdGhpcy5uYXZpZ2F0aW9uQ29udGV4dCA9IG5ldyBOYXZpZ2F0aW9uQ29udGV4dC5JbXBsKFxuICAgICAgdGhpcy51cmxTZXJ2aWNlLFxuICAgICAgdGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIsXG4gICAgICAodXJsU25hcHNob3Q6IFVybFNuYXBzaG90LCBvcHRpb25zOiB7IHJlcGxhY2VVcmw6IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LCBvcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICBzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHN0YXRlKTtcbiAgICAgIH0sXG4gICAgICBzZWdtZW50cyA9PiB7XG4gICAgICAgIHRoaXMucm91dGluZ1Nlc3Npb25GaW5pc2hlZChzZWdtZW50cyk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHtjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT259ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQpLmlzTm90TmlsKCk7XG4gICAgdGhpcy5pbnRlcmFjdGlvblN5bmNJblByb2dyZXNzJCA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb24kKS5wbHVjayhcImlzSW50ZXJhY3Rpb25TeW5jXCIpXG5cbiAgICBjb25zdCBpZGxlU3RhdGVOYW1lID0gY2hhaW4odGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuYWN0aXZlKS5tYXAoYWN0aXZlID0+IGFjdGl2ZSA/IFwiSWRsZUR1cmluZ0ludGVyYWN0aW9uXCIgOiBcIklkbGVcIik7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk5hbWUkID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQpXG4gICAgICAucGx1Y2soXCJuYW1lXCIpXG4gICAgICAub3RoZXJ3aXNlKGlkbGVTdGF0ZU5hbWUpO1xuXG4gICAgRGVidWdDb250ZXh0LnRhZyh0aGlzLl9hY3RpdmVWaXNpdCQsIFwiUGxhY2VSb3V0ZXIuYWN0aXZlVmlzaXRcIik7XG5cbiAgICAvLyBUT0RPOiBtYWtlIHNldHVwIHRoZSBjYWxsYmFja3MgaW4gZHVyaW5nIG1vZHVsZSBpbml0aWF0aW9uIHRvIG1ha2UgdGhpcyB0ZXN0YWJsZS5cbiAgICBhbmd1bGFyUm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgLy8gUm91dGluZyBldmVudCBzZXF1ZW5jZVxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkNhbmNlbCAtLT4gcmVkaXJlY3QsIGdvIGFyb3VuZCBhZ2FpbiBpbiB0aGUgc2FtZSBzZXNzaW9uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRW5kIC0tPiBuYXZpZ2F0aW9uIGNvbXBsZXRlLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FcnJvciAtLT4gbmF2aWdhdGlvbiBhYm9ydGVkLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvblN0YXJ0WyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9ICgke2V2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyfSlgKTtcbiAgICAgICAgaWYgKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSBcInBvcHN0YXRlXCIpIHtcbiAgICAgICAgICB0aGlzLm9uUG9wU3RhdGUoZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub25Sb3V0ZXJTdGFydGVkKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uU3RhcnRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH0gKCR7ZXZlbnQubmF2aWdhdGlvblRyaWdnZXJ9KWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uRW5kWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJFbmQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uRW5kWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvbkVycm9yWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJFcnJvcihldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25FcnJvclske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uQ2FuY2VsWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uQ2FuY2VsWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgcm91dGVyIG5lZWRzIHRvIGtub3cgYWJvdXQgdXJsIGNoYW5nZXMgYW5kIGluIHNvbWUgY2FzZXMgdGhleSBhcmUgdGhlIG9ubHkgd2F5IHRoZSByb3V0ZXIgY2FuIGtub3cgaWZcbiAgICAvLyB0aGUgYmFjayBidXR0b24gd2FzIGNsaWNrZWQuXG4gICAgYW5ndWxhckxvY2F0aW9uLm9uVXJsQ2hhbmdlKHVybCA9PiB0aGlzLm9uVXJsQ2hhbmdlZCh1cmwpKTtcblxuICB9XG5cbiAgZ2V0QXV0aGVudGljYXRpb25GYWlsdXJlUmVkaXJlY3QoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogVmlzaXQge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhlbnRpY2F0aW9uRmFpbHVyZVJlZGlyZWN0KGFjdGl2YXRlZFJvdXRlLCBzdGF0ZSlcbiAgfVxuXG4gIGdldEF1dGhvcmlzYXRpb25GYWlsdXJlUmVkaXJlY3RPcHRpb25zKGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBWaXNpdFtdIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3Jpc2F0aW9uRmFpbHVyZVJlZGlyZWN0T3B0aW9ucyhjb21wb25lbnQpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50U2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWU7XG4gIH1cblxuICBpc05hdmlnYXRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkLnZhbHVlO1xuICB9XG5cbiAgd2FpdFVudGlsSWRsZSgpOiBQcm9taXNlPHRoaXM+IHtcbiAgICBjb25zdCB7d2hlbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHRoaXM+KHJlc29sdmUgPT4ge1xuICAgICAgd2hlbih0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJCkuYmVjb21lc0ZhbHNleSgoKSA9PiByZXNvbHZlKHRoaXMpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwiLFxuICAgICAgICBvbmNlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRBY3Rpdml0aWVzU3luY2hyb25pc2VkKCk6IFByb21pc2U8dGhpcz4ge1xuICAgIGNvbnN0IHt3aGVufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dGhpcz4ocmVzb2x2ZSA9PiB7XG4gICAgICB3aGVuKHRoaXMuaW50ZXJhY3Rpb25TeW5jSW5Qcm9ncmVzcyQpLmJlY29tZXNGYWxzZXkoKCkgPT4gcmVzb2x2ZSh0aGlzKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6IFwiZXZhbHVhdGVcIixcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblBvcFN0YXRlKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09IFwicG9wc3RhdGVcIik7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Qb3BTdGF0ZShldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBvcHBlZEhpc3RvcnlVcmwgPSBldmVudC51cmw7XG4gICAgICBjb25zdCBjdXJyZW50Um91dGVyVXJsID0gdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpID9cbiAgICAgICAgbmV3IFBvcFN0YXRlRHVyaW5nSW50ZXJhY3Rpb25OYXZpZ2F0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwsIHBvcHBlZEhpc3RvcnlVcmwpIDpcbiAgICAgICAgbmV3IFBvcFN0YXRlTmF2aWdhdGlvbih0aGlzLm5hdmlnYXRpb25Db250ZXh0LCBjdXJyZW50Um91dGVyVXJsLCBwb3BwZWRIaXN0b3J5VXJsKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHNlc3Npb24pO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBhc3NlcnQuaXNGYWxzZXkoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09IFwicG9wc3RhdGVcIik7XG4gICAgY29uc3QgaW5JbnRlcmFjdGlvbiA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJTdGFydGVkKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbih0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25VcmxDaGFuZ2VkKG5ld1VybDogc3RyaW5nKSB7XG4gICAgLy8gdGhlIGJhY2sgYnV0dG9uIGNhbiB0cmlnZ2VyIGEgdXJsIGNoYW5nZSB3aXRob3V0IGEgbmF2aWdhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzIHNvIHdlXG4gICAgLy8gY29uc29sZS5sb2coYC0tLT4gVXJsIENoYW5nZWQgJHtuZXdVcmx9YCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25VcmxDaGFuZ2UobmV3VXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJGWUk6IHVybCBjaGFuZ2VkIHdpdGhvdXQgYSBuYXZpZ2F0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIFVybCBDaGFuZ2VkYCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVycm9yKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVuZChldmVudCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgbmF2aWdhdGUodmlzaXQ6IFZpc2l0KVxuICBhc3luYyBuYXZpZ2F0ZShwbGFjZUNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT4pXG4gIGFzeW5jIG5hdmlnYXRlKHZpc2l0T3JQbGFjZUNvbXBvbmVudDogVmlzaXQgfCBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IHZpc2l0ID0gdGhpcy50b1Zpc2l0KHZpc2l0T3JQbGFjZUNvbXBvbmVudCwgcGFyYW1zKS5jb3B5V2l0aERlZmF1bHRzRnJvbSh0aGlzLmFjdGl2ZVZpc2l0JC52YWx1ZSlcbiAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24odmlzaXQsIGFzeW5jIHJvdXRlciA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmFuZ3VsYXJSb3V0ZXIubmF2aWdhdGUodmlzaXQuZ2V0Um91dGVyQ29tbWFuZHMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBkb05hdmlnYXRpb24odmlzaXQ6IFZpc2l0LCBydW5OYXZpZ2F0aW9uQ29tbWFuZHM6IChyb3V0ZXI6IFJvdXRlcikgPT4gYW55KSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkLnZhbHVlKSB7XG4gICAgICBMb2dnZXIuZ2V0KCkuZXJyb3IoXCJOYXZpZ2F0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIiwge1xuICAgICAgICB2aXNpdDogdmlzaXQsXG4gICAgICAgIHNlc3Npb246IHRoaXMubmF2aWdhdGlvblNlc3Npb25cbiAgICAgIH0pO1xuICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoXCJOYXZpZ2F0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIik7XG4gICAgfVxuICAgIGNvbnN0IG5hdmlnYXRpb24gPSB0aGlzLmNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCkpO1xuICAgIG5hdmlnYXRpb24uaW5pdGlhbGlzZVZpc2l0U2VnbWVudHModmlzaXQpXG4gICAgdGhpcy50cmFuc2l0aW9uVG8obmF2aWdhdGlvbik7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bk5hdmlnYXRpb25Db21tYW5kcyh0aGlzLmFuZ3VsYXJSb3V0ZXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgcm91dGVyIGhhcyBmaW5pc2hlZCAoaW4gdGhlIGNhc2Ugd2hlcmUgbm8gcm91dGVyIGNoYW5nZSByZXF1aXJlZCkgYW5kIHdlJ3JlIHN0aWxsIGluICBhXG4gICAgICAvLyB0cmFuc2llbnQgc3RhdGUgYW5kIGZpbmlzaCBvZiB0aGUgdHJhbnNpdGlvbi5cbiAgICAgIGlmICghdGhpcy5hbmd1bGFyUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkgJiYgdGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyRW5kKG5ldyBOYXZpZ2F0aW9uRW5kKC0xLCBcIlwiLCB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdDogVXJsU25hcHNob3QsIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gY29uc29sZS5sb2coYCMjIyBuYXZpZ2F0aW9uQnlVcmwgLT4gJHt1cmxTbmFwc2hvdC51cmxUcmVlLnRvU3RyaW5nKCl9YCk7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhclJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LnVybFRyZWUsIG5hdmlnYXRpb25FeHRyYXMpO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0JCgpOiBWYWx1ZU1vZGVsPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpc2l0JC5yZWFkb25seSQ7XG4gIH1cblxuICBhc3luYyBub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkKGlzOiBWaXNpdFNlZ21lbnQsIHdhczogVmlzaXRTZWdtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gY29uc29sZS5sb2coXCJQbGFjZVJvdXRlci5ub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkXCIsIGlzLnRvRGVidWdTdHJpbmcoKSwgd2FzLnRvRGVidWdTdHJpbmcoKSk7XG4gICAgdGhpcy5wbGFjZUhpc3RvcnkudXBkYXRlVmlzaXRTZWdtZW50KGlzKTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMuYWN0aXZlVmlzaXQkLnZhbHVlLmNvcHlBbmRSZXBsYWNlU2VnbWVudChpcyk7XG4gICAgaWYgKGlzLmhhc1JvdXRpbmdDaGFuZ2VkRnJvbSh3YXMpKSB7XG4gICAgICAvLyBUT0RPOiBjYW4gSSBqdXN0IGRvIGEgcmVndWxhciBuYXZpZ2F0ZSB1c2luZyBhbiB1cGRhdGVkIHZpc2l0P1xuICAgICAgY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgICAgYXdhaXQgdGhpcy5kb05hdmlnYXRpb24odmlzaXQsIHJvdXRlciA9PiB7XG4gICAgICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy51cmxTZXJ2aWNlLnBhcnNlVXJsKHRoaXMuYW5ndWxhclJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpLnVwZGF0ZVZpc2l0U2VnbWVudChpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKGN1cnJlbnRSb3V0ZXJVcmw6IHN0cmluZyk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICBjb25zdCBpbkludGVyYWN0aW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKTtcbiAgICByZXR1cm4gaW5JbnRlcmFjdGlvbiA/XG4gICAgICBuZXcgTmF2aWdhdGluZ0R1cmluZ0ludGVyYWN0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwpIDpcbiAgICAgIG5ldyBOYXZpZ2F0aW5nKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBwcm90ZWN0ZWQgdHJhbnNpdGlvblRvKG5leHQ6IE5hdmlnYXRpb25TZXNzaW9uKSB7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZTtcbiAgICBpZiAoIXByZXZpb3VzKSB7XG4gICAgICB0aGlzLnBsYWNlSGlzdG9yeS5ub3RpZnlOYXZpZ2F0aW9uU3RhcnRlZCgpO1xuICAgIH1cbiAgICBhc3NlcnQuaXNUcnV0aHkobmV4dCAhPT0gcHJldmlvdXMpO1xuICAgIC8vIExvZ2dlci5nZXQodGhpcykuaW5mbyhgIyMjIFJvdXRlciBTdGF0ZSBUcmFuc2l0aW9uOiAke3ByZXZpb3VzID8gcHJldmlvdXMudG9TdHJpbmcoKSA6ICdudWxsJ30gLT4gJHtuZXh0LnRvU3RyaW5nKCl9YCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWUgPSBuZXh0O1xuICAgIGlmICghIXByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cy5kaXNwb3NlKCk7XG4gICAgfVxuICAgIG5leHQubm90aWZ5QWN0aXZlKCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIHByaXZhdGUgcm91dGluZ1Nlc3Npb25GaW5pc2hlZCh2aXNpdD86IFZpc2l0KSB7XG4gICAgaWYgKHZpc2l0KSB7XG4gICAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQudmFsdWUpO1xuICAgICAgdGhpcy5wbGFjZUhpc3Rvcnkubm90aWZ5TmF2aWdhdGlvbkZpbmlzaGVkKHZpc2l0KTtcbiAgICAgIC8vIFdlIHVwZGF0ZSB0aGUgYWN0aXZlIHZpc2l0cyBiZWZvcmUgd2UgZmluaXNoIHRoZSBzZXNzaW9uIHNvIHRoZVxuICAgICAgLy8gcGxhY2Ugb3V0bGV0cyBjYW4gaWdub3JlIHRoZSBpbmNvbWluZyBjaGFuZ2VzIHVudGlsIHRoaW5ncyBhcmUgc2V0dGxlZC5cbiAgICAgIHRoaXMuX2FjdGl2ZVZpc2l0JC52YWx1ZSA9IHZpc2l0O1xuICAgICAgLy8gY29uc29sZS5sb2codmlzaXQudG9EZWJ1Z1N0cmluZygpKVxuICAgIH1cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdXJyZW50U2Vzc2lvbjtcbiAgICBzZXNzaW9uLmRpc3Bvc2UoKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZSA9IG51bGw7XG4gICAgLy8gY29uc29sZS5sb2coYCMjIyBSb3V0ZXIgU2Vzc2lvbiBGaW5pc2hlZCAod2FzICR7c2Vzc2lvbi50b1N0cmluZygpfSlgKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMuZm9yRWFjaChqb2IgPT4gam9iKCkpO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icyA9IFtdO1xuICB9XG5cblxuICBwcml2YXRlIHJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcyhmdW5jOiAoKSA9PiB2b2lkKSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMucHVzaChmdW5jKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN5bmMncyB0aGUgY3VycmVudCBpbnRlcmFjdGlvbiBzdGF0ZSB3aXRoIHRoZSBVUkwuICBXZSBuZWVkIHRvIHB1c2ggc29tZXRoaW5nIGluIHRoZSBVUkwgaW4gb3JkZXJcbiAgICogdG8gYmUgYWJsZSB0byBjYXB0dXJlIHRoZSBiYWNrIGJ1dHRvbiBvbiB0aGUgZmlyc3QgcGFnZS4gIElmIHdlIGRvbid0IHRoZW4gdGhlIGJhY2sgY2xpY2sgd2lsbCBleGl0XG4gICAqIHRoZSBhcHAgZGlyZWN0bHkgYW5kIHdlIGRvbid0IGdldCB0byBhc2suXG4gICAqL1xuICAvLyBAVHJhY2UoKVxuICBzeW5jSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlcihvblN5bmNDb21wbGV0ZTogKCkgPT4gdm9pZCA9ICgpID0+IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvblNlc3Npb24pIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBOYXZpZ2F0aW9uIGFjdGl2ZSAtPiAke3RoaXMubmF2aWdhdGlvblNlc3Npb24udG9TdHJpbmcoKX0sIHN5bmMgZGVsYXllZCB1bnRpbCBmaW5pc2hlZC5gKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLm5hdmlnYXRpb25TZXNzaW9uO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5ydW5BZnRlclJvdXRpbmdTZXNzaW9uRmluaXNoZXMoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3luY0NvbXBsZXRlKCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgc3luY1Nlc3Npb24gPSBuZXcgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSwgZmFsc2UpO1xuICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHN5bmNTZXNzaW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KCgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBObyBuYXZpZ2F0aW9uIGluIHByb2dyZXNzLCBzdGFydGluZyBzeW5jaHJvbmlzYXRpb24gam9iYCk7XG4gICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICBvblN5bmNDb21wbGV0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSwgZmFsc2UpO1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhzZXNzaW9uKTtcbiAgICAgIH0pKTtcblxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9WaXNpdCh2aXNpdE9yUGxhY2VDb21wb25lbnQ6IFZpc2l0IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBpZiAodmlzaXRPclBsYWNlQ29tcG9uZW50IGluc3RhbmNlb2YgVmlzaXQpIHtcbiAgICAgIHJldHVybiB2aXNpdE9yUGxhY2VDb21wb25lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBWaXNpdC5nb3RvKHZpc2l0T3JQbGFjZUNvbXBvbmVudCwgcGFyYW1zKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZVJvdXRlciB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdGlvbnMge1xuICAgIC8qKlxuICAgICAqIE5PVEU6IGZvciBub3cgdGhpcyBvbmx5IHN1cHBvcnRzIHRvcCBsZXZlbCBwbGFjZXMuICBTdXBwb3J0IGZvciBjaGlsZCBwbGFjZXMgd2lsbCByZXF1aXJlIGEgbW9yZSBmdW5kYW1lbnRhbFxuICAgICAqIGNoYW5nZSB0byB2aXNpdHMgdG8gc3VwcG9ydCBuZXN0aW5nXG4gICAgICovXG4gICAgb25BdXRoZW50aWNhdGlvbkZhaWx1cmUoYWN0aXZhdGVkUm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBWaXNpdCB8ICBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIE5PVEU6IGZvciBub3cgdGhpcyBvbmx5IHN1cHBvcnRzIHRvcCBsZXZlbCBwbGFjZXMuICBTdXBwb3J0IGZvciBjaGlsZCBwbGFjZXMgd2lsbCByZXF1aXJlIGEgbW9yZSBmdW5kYW1lbnRhbFxuICAgICAqIGNoYW5nZSB0byB2aXNpdHMgdG8gc3VwcG9ydCBuZXN0aW5nXG4gICAgICogQHBhcmFtIGNvbXBvbmVudFxuICAgICAqL1xuICAgIG9uQXV0aG9yaXNhdGlvbkZhaWx1cmUoY29tcG9uZW50OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IChDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiB8IFZpc2l0KVtdO1xuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { lang } from '@coolon/pectin';
|
|
2
|
-
import { isNil } from 'lodash
|
|
2
|
+
import { isNil } from 'lodash';
|
|
3
3
|
import { PlaceComponent } from './place-component';
|
|
4
4
|
import { PlaceDefinition } from './place-definition';
|
|
5
5
|
export function Place(options) {
|
|
@@ -15,4 +15,4 @@ export function Place(options) {
|
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsSUFBSSxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsT0FBTyxDQUFDLE1BQWdCLEVBQUUsRUFBRTtRQUMxQixJQUFJLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksZUFBZSxDQUN6RCxNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQ3pELE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssRUFDN0IsT0FBTyxDQUFDLElBQUksRUFDWixjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQ3pDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxLQUFLLENBQ3RDLENBQUMsQ0FBQztZQUVILElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLDJFQUEyRSxDQUFDLENBQUE7YUFDeEc7U0FFRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0seURBQXlELENBQUMsQ0FBQztTQUN2RjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nLCBMb2dnZXIgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5cbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIFBsYWNlKG9wdGlvbnM6IFBsYWNlLk9wdGlvbnMpIHtcbiAgcmV0dXJuICh0YXJnZXQ6IEZ1bmN0aW9uKSA9PiB7XG4gICAgaWYgKFBsYWNlQ29tcG9uZW50LmlzUGxhY2VDb21wb25lbnRDb25zdHJ1Y3Rvcih0YXJnZXQpKSB7XG4gICAgICBQbGFjZUNvbXBvbmVudC5pbmplY3REZWZpbml0aW9uKHRhcmdldCwgbmV3IFBsYWNlRGVmaW5pdGlvbihcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBvcHRpb25zLnBhdGgsXG4gICAgICAgIGlzTmlsKG9wdGlvbnMuYXV0aGVudGljYXRlKSA/IHRydWUgOiBvcHRpb25zLmF1dGhlbnRpY2F0ZSxcbiAgICAgICAgb3B0aW9ucy5yb2xlID8/IG9wdGlvbnMucm9sZXMsXG4gICAgICAgIG9wdGlvbnMuZGF0YSxcbiAgICAgICAgUGxhY2VDb21wb25lbnQuZ2V0Um91dGVQYXJhbWV0ZXJzKHRhcmdldCksXG4gICAgICAgIChvcHRpb25zLmNoaWxkcmVuIHx8IFtdKS5tYXAoYyA9PiBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKGMpKSxcbiAgICAgICAgb3B0aW9ucy5yZWRpcmVjdFRvRmlyc3RDaGlsZCA/PyBmYWxzZVxuICAgICAgKSk7XG5cbiAgICAgIGlmIChvcHRpb25zLnJvbGVzKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0YXJnZXQubmFtZX0gQFBsYWNlKHtyb2xlczogc3RyaW5nW119KSBpcyBkZXByZWNhdGVkLiAgVXNlIEBQbGFjZSh7cm9sZTphbnl9KSBpbnN0ZWFkYClcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgJHt0YXJnZXR9IG11c3QgZXh0ZW5kIFBsYWNlQ29tcG9uZW50IHRvIHVzZSB0aGUgQFBsYWNlIGRlY29yYXRvcmApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZSB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH07IC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBhdXRoZW50aWNhdGU/OiBib29sZWFuOyAvLyBkZWZhdWx0cyB0byB0cnVlXG4gICAgcm9sZT86IGFueTsgLy8gZGVmYXVsdHMgdG8gZW1wdHkgYXJyYXlcblxuICAgIC8qKlxuICAgICAqICBAZGVwcmVjYXRlZCB1c2UgI3JvbGUgaW5zdGVhZFxuICAgICAqL1xuICAgIHJvbGVzPzogc3RyaW5nW107IC8vIGRlZmF1bHRzIHRvIGVtcHR5IGFycmF5XG5cbiAgICBjaGlsZHJlbj86IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+W107XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlICNyZWRpcmVjdFRvRmlyc3RDaGlsZCBpbnN0ZWFkIGFzIGl0IGhhbmRsZXMgY2hpbGQgYXV0aG9yaXNhdGlvbiBjaGVja3MgYXV0b21hdGljYWxseVxuICAgICAqL1xuICAgIGRlZmF1bHRDaGlsZD86IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+O1xuICAgIHJlZGlyZWN0VG9GaXJzdENoaWxkPzogYm9vbGVhbjtcbiAgfVxuXG59XG5cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PortalModule } from '@angular/cdk/portal';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { NgModule } from '@angular/core';
|
|
4
|
+
import { FlexModule } from '@angular/flex-layout';
|
|
4
5
|
import { MatCardModule } from "@angular/material/card";
|
|
5
6
|
import { MatIconModule } from '@angular/material/icon';
|
|
6
7
|
import { MatListModule } from '@angular/material/list';
|
|
@@ -34,6 +35,7 @@ export class PlaceModule {
|
|
|
34
35
|
MatTooltipModule,
|
|
35
36
|
MatIconModule,
|
|
36
37
|
DirectivesModule,
|
|
38
|
+
FlexModule,
|
|
37
39
|
ComponentsModule,
|
|
38
40
|
PortalModule,
|
|
39
41
|
MatCardModule], exports: [PlaceOutletComponent,
|
|
@@ -50,6 +52,7 @@ export class PlaceModule {
|
|
|
50
52
|
MatTooltipModule,
|
|
51
53
|
MatIconModule,
|
|
52
54
|
DirectivesModule,
|
|
55
|
+
FlexModule,
|
|
53
56
|
ComponentsModule,
|
|
54
57
|
PortalModule,
|
|
55
58
|
MatCardModule] });
|
|
@@ -67,6 +70,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
67
70
|
MatTooltipModule,
|
|
68
71
|
MatIconModule,
|
|
69
72
|
DirectivesModule,
|
|
73
|
+
FlexModule,
|
|
70
74
|
ComponentsModule,
|
|
71
75
|
PortalModule,
|
|
72
76
|
MatCardModule
|
|
@@ -91,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
91
95
|
]
|
|
92
96
|
}]
|
|
93
97
|
}] });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFrQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDN0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbEgsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7O0FBc0N4SCxNQUFNLE9BQU8sV0FBVzt1R0FBWCxXQUFXO3dHQUFYLFdBQVcsaUJBbEJoQixvQkFBb0I7WUFDcEIsOEJBQThCO1lBQzlCLHFCQUFxQjtZQUNyQiw0QkFBNEI7WUFDNUIsZ0NBQWdDO1lBQ2hDLDRCQUE0QixhQXBCNUIsWUFBWTtZQUNaLHVCQUF1QjtZQUN2Qix3QkFBd0I7WUFDeEIsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osYUFBYSxhQVdiLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIscUJBQXFCO1lBQ3JCLDRCQUE0QjtZQUM1QixnQ0FBZ0M7d0dBTTNCLFdBQVcsWUFqQ2hCLFlBQVk7WUFDWix1QkFBdUI7WUFDdkIsd0JBQXdCO1lBQ3hCLFlBQVk7WUFDWixhQUFhO1lBQ2IsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLFVBQVU7WUFDVixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLGFBQWE7OzJGQXFCUixXQUFXO2tCQW5DdkIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osYUFBYTtxQkFDaEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLG9CQUFvQjt3QkFDcEIsOEJBQThCO3dCQUM5QixxQkFBcUI7d0JBQ3JCLDRCQUE0Qjt3QkFDNUIsZ0NBQWdDO3dCQUNoQyw0QkFBNEI7cUJBQy9CO29CQUNELE9BQU8sRUFBRTt3QkFDTCxvQkFBb0I7d0JBQ3BCLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3dCQUNyQiw0QkFBNEI7d0JBQzVCLGdDQUFnQztxQkFDbkM7b0JBQ0QsU0FBUyxFQUFFO29CQUNYLHVFQUF1RTtxQkFDdEU7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQge01hdENhcmRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jYXJkXCI7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb25zdHJ1Y3RhYmxlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZXhwb3J0cyc7XG5pbXBvcnQgeyBEaXJlY3RpdmVzTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hYnN0cmFjdC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0UGxhY2VOYXZDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50JztcbmltcG9ydCB7IE5vdEF1dGhvcmlzZWROb3RpY2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbm90LWF1dGhvcmlzZWQtbm90aWNlL25vdC1hdXRob3Jpc2VkLW5vdGljZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3BsYWNlLW91dGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2lkZVBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaWRlLXBsYWNlLW5hdmlnYXRpb24vc2lkZS1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24vdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50JztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgICAgIE1hdExpc3RNb2R1bGUsXG4gICAgICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIERpcmVjdGl2ZXNNb2R1bGUsXG4gICAgICAgIEZsZXhNb2R1bGUsXG4gICAgICAgIENvbXBvbmVudHNNb2R1bGUsXG4gICAgICAgIFBvcnRhbE1vZHVsZSxcbiAgICAgICAgTWF0Q2FyZE1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFBsYWNlT3V0bGV0Q29tcG9uZW50LFxuICAgICAgICBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgICAgIExpc3RQbGFjZU5hdkNvbXBvbmVudCxcbiAgICAgICAgU2lkZVBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQWJzdHJhY3RQbGFjZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgICAgIE5vdEF1dGhvcmlzZWROb3RpY2VDb21wb25lbnRcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgUGxhY2VPdXRsZXRDb21wb25lbnQsXG4gICAgICAgIFRhYmJlZFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTGlzdFBsYWNlTmF2Q29tcG9uZW50LFxuICAgICAgICBTaWRlUGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgICAgICBBYnN0cmFjdFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgLy8ge3Byb3ZpZGU6IEFVUF9QTEFDRV9DT05GSUcsIHVzZVZhbHVlOiB7YW5pbWF0aW9uRHVyYXRpb246IFwiMjAwMG1zXCJ9fVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VNb2R1bGUge1xuXG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNaN as _isNaN
|
|
1
|
+
import { isNumber, isNaN as _isNaN } from 'lodash';
|
|
2
2
|
export var Formatter;
|
|
3
3
|
(function (Formatter) {
|
|
4
4
|
class StringType {
|
|
@@ -30,4 +30,4 @@ export var Formatter;
|
|
|
30
30
|
Formatter.NUMBER = new NumberType();
|
|
31
31
|
Formatter.BOOLEAN = new BooleanType();
|
|
32
32
|
})(Formatter || (Formatter = {}));
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2Uvcm91dGUvZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUcsS0FBSyxJQUFJLE1BQU0sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQVFuRCxNQUFNLEtBQVcsU0FBUyxDQW9DekI7QUFwQ0QsV0FBaUIsU0FBUztJQUV4QixNQUFNLFVBQVU7UUFDZCxNQUFNLENBQUMsS0FBYTtZQUNsQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxLQUFLLENBQUMsS0FBYTtZQUNqQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FDRjtJQUVELE1BQU0sVUFBVTtRQUNkLE1BQU0sQ0FBQyxLQUFhO1lBQ2xCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUQsQ0FBQztRQUVELEtBQUssQ0FBQyxLQUFhO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3hDLENBQUM7S0FDRjtJQUVELE1BQU0sV0FBVztRQUNmLE1BQU0sQ0FBQyxLQUFjO1lBQ25CLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQWE7WUFDakIsT0FBTyxLQUFLLEtBQUssTUFBTSxDQUFDO1FBQzFCLENBQUM7S0FDRjtJQUVZLGdCQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUMxQixnQkFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFDMUIsaUJBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQzNDLENBQUMsRUFwQ2dCLFNBQVMsS0FBVCxTQUFTLFFBb0N6QiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgaXNOdW1iZXIgLCBpc05hTiBhcyBfaXNOYU59IGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVyPFQ+IHtcbiAgZm9ybWF0KHZhbHVlOiBUKTogc3RyaW5nO1xuXG4gIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBUO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIEZvcm1hdHRlciB7XG5cbiAgY2xhc3MgU3RyaW5nVHlwZSBpbXBsZW1lbnRzIEZvcm1hdHRlcjxzdHJpbmc+IHtcbiAgICBmb3JtYXQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcGFyc2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgTnVtYmVyVHlwZSBpbXBsZW1lbnRzIEZvcm1hdHRlcjxudW1iZXI+IHtcbiAgICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmICFpc05hTih2YWx1ZSkgPyBgJHt2YWx1ZX1gIDogbnVsbDtcbiAgICB9XG5cbiAgICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlci5wYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIHJldHVybiBfaXNOYU4ocGFyc2VkKSA/IG51bGwgOiBwYXJzZWQ7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgQm9vbGVhblR5cGUgaW1wbGVtZW50cyBGb3JtYXR0ZXI8Ym9vbGVhbj4ge1xuICAgIGZvcm1hdCh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBTVFJJTkcgPSBuZXcgU3RyaW5nVHlwZSgpO1xuICBleHBvcnQgY29uc3QgTlVNQkVSID0gbmV3IE51bWJlclR5cGUoKTtcbiAgZXhwb3J0IGNvbnN0IEJPT0xFQU4gPSBuZXcgQm9vbGVhblR5cGUoKTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL3JvdXRlL2pzb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEpzb25QcmltaXRpdmUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nO1xuZXhwb3J0IHR5cGUgQW55SnNvbiA9IEpzb25QcmltaXRpdmUgfCBudWxsIHwgSnNvbkFycmF5IHwgSnNvbk1hcDtcblxuZXhwb3J0IGludGVyZmFjZSBKc29uQXJyYXkgZXh0ZW5kcyBBcnJheTxBbnlKc29uPiB7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbk1hcCB7XG4gIFtrZXk6IHN0cmluZ106IEFueUpzb247XG59XG5cbiJdfQ==
|
|
@@ -1,74 +1,70 @@
|
|
|
1
|
+
import { Binding, DebugContext, Functions } from '@coolon/pectin';
|
|
1
2
|
import { Klass, Opts } from '@coolon/typescript-utilities';
|
|
2
3
|
import { ROUTE_PARAMETER_LIST_KEY } from '../place-component';
|
|
3
4
|
import { ParameterDefinition } from './parameter-definition';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// });
|
|
50
|
-
// }
|
|
5
|
+
function installMechanics(parameterDef, prototype, propertyKey, tagPrefix) {
|
|
6
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
7
|
+
function getMechanics(instance, propertyName) {
|
|
8
|
+
const key = `__mechanics_${propertyName.toString()}`;
|
|
9
|
+
if (!instance[key]) {
|
|
10
|
+
const backingModel = parameterDef.createBackingModel();
|
|
11
|
+
instance[key] = {
|
|
12
|
+
backingModel: backingModel,
|
|
13
|
+
binding: null
|
|
14
|
+
};
|
|
15
|
+
const tag = `${tagPrefix}(${prototype.constructor.name}.${propertyKey.toString()})`;
|
|
16
|
+
DebugContext.getOrCreate(instance[key].backingModel).tag(tag);
|
|
17
|
+
}
|
|
18
|
+
return instance[key];
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(prototype, propertyKey, {
|
|
21
|
+
get: function () {
|
|
22
|
+
return getMechanics(this, propertyKey).backingModel;
|
|
23
|
+
},
|
|
24
|
+
set: function (userModel) {
|
|
25
|
+
const mechanics = getMechanics(this, propertyKey);
|
|
26
|
+
// This handles the scenario where we want to push an existing value model (such as a form model)
|
|
27
|
+
// to and from the route.
|
|
28
|
+
if (mechanics.binding) {
|
|
29
|
+
mechanics.binding.dispose();
|
|
30
|
+
}
|
|
31
|
+
if (userModel) {
|
|
32
|
+
mechanics.binding = new Binding(mechanics.backingModel, userModel, {
|
|
33
|
+
toLeft: Functions.identity,
|
|
34
|
+
toRight: Functions.identity
|
|
35
|
+
});
|
|
36
|
+
if (parameterDef.isEmptyValue(userModel.value)) {
|
|
37
|
+
// console.log(`Push visit to model for ${tag}`, {value: mechanics.backingModel.value});
|
|
38
|
+
mechanics.binding.writeRight(); // push the visit into the user model;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
if (!parameterDef.isEmptyValue(mechanics.backingModel.value)) {
|
|
42
|
+
console.warn('Assigning a visit model with an existing value to a visit parameter with an existing value. Visit parameter will be overridden');
|
|
43
|
+
}
|
|
44
|
+
mechanics.binding.writeLeft(); // push the user model into the visit
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
51
50
|
export function RouteId(formatter, options) {
|
|
52
51
|
return (prototype, propertyKey) => {
|
|
53
52
|
const parameterDef = new ParameterDefinition.RouteId(propertyKey.toString(), options, formatter);
|
|
54
|
-
|
|
55
|
-
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
53
|
+
installMechanics(parameterDef, prototype, propertyKey, '@RouteId');
|
|
56
54
|
};
|
|
57
55
|
}
|
|
58
56
|
export function VisitParameter(options) {
|
|
59
57
|
const opts = Opts.get(options);
|
|
60
58
|
return (prototype, propertyKey) => {
|
|
61
59
|
const parameterDef = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
|
|
62
|
-
|
|
63
|
-
// installMechanics(parameterDef, prototype, propertyKey, '@VisitParameter');
|
|
60
|
+
installMechanics(parameterDef, prototype, propertyKey, '@VisitParameter');
|
|
64
61
|
};
|
|
65
62
|
}
|
|
66
63
|
export function VisitParameterList(options) {
|
|
67
64
|
const opts = Opts.get(options);
|
|
68
65
|
return (prototype, propertyKey) => {
|
|
69
66
|
const parameterDef = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
|
|
70
|
-
|
|
71
|
-
// installMechanics(parameterDef, prototype, propertyKey, '@VisitParameterList');
|
|
67
|
+
installMechanics(parameterDef, prototype, propertyKey, '@VisitParameterList');
|
|
72
68
|
};
|
|
73
69
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLWRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9wbGFjZS9yb3V0ZS9wYXJhbWV0ZXItZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFpQixZQUFZLEVBQUUsU0FBUyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQStCN0QsU0FBUyxnQkFBZ0IsQ0FBMEIsWUFBc0MsRUFBRSxTQUFpQixFQUFFLFdBQTRCLEVBQUUsU0FBaUI7SUFFM0osS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVsRixTQUFTLFlBQVksQ0FBQyxRQUFXLEVBQUUsWUFBNkI7UUFDOUQsTUFBTSxHQUFHLEdBQUcsZUFBZSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRztnQkFDZCxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsT0FBTyxFQUFFLElBQXlCO2FBQ25DLENBQUM7WUFDRixNQUFNLEdBQUcsR0FBRyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztZQUNwRixZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0Q7UUFDRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFO1FBQzVDLEdBQUcsRUFBRTtZQUNILE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDdEQsQ0FBQztRQUNELEdBQUcsRUFBRSxVQUFTLFNBQVk7WUFDeEIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNsRCxpR0FBaUc7WUFDakcseUJBQXlCO1lBQ3pCLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtnQkFDckIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM3QjtZQUNELElBQUksU0FBUyxFQUFFO2dCQUNiLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUU7b0JBQ2pFLE1BQU0sRUFBRSxTQUFTLENBQUMsUUFBUTtvQkFDMUIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRO2lCQUM1QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDOUMsd0ZBQXdGO29CQUN4RixTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsc0NBQXNDO2lCQUN2RTtxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLGlJQUFpSSxDQUFDLENBQUM7cUJBQ2pKO29CQUNELFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxxQ0FBcUM7aUJBQ3JFO2FBQ0Y7UUFDSCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQTRCLFNBQXVCLEVBQUUsT0FBMkI7SUFDckcsT0FBTyxDQUFDLFNBQWlCLEVBQUUsV0FBNEIsRUFBRSxFQUFFO1FBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUksT0FBa0M7SUFDbEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsU0FBaUIsRUFBRSxXQUE0QixFQUFFLEVBQUU7UUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25JLGdCQUFnQixDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBSSxPQUFzQztJQUMxRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxTQUFpQixFQUFFLFdBQTRCLEVBQUUsRUFBRTtRQUN6RCxNQUFNLFlBQVksR0FBRyxJQUFJLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkksZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUNoRixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmluZGluZywgQ29uc3RydWN0YWJsZSwgRGVidWdDb250ZXh0LCBGdW5jdGlvbnMsIEhhc1ZhbHVlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgS2xhc3MsIE9wdHMgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSB9IGZyb20gJy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTYW5pdGlzZXIgfSBmcm9tICcuL3BhcmFtZXRlci1zYW5pdGlzZXInO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVJZE9wdGlvbnM8VD4ge1xuICBhcz86IHN0cmluZztcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICByZW1lbWJlcj86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IFQ7XG4gIHNhbml0aXNlcj86IENvbnN0cnVjdGFibGU8UGFyYW1ldGVyU2FuaXRpc2VyPFQ+PiB8IFBhcmFtZXRlclNhbml0aXNlcjxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVBhcmFtZXRlck9wdGlvbnM8VD4ge1xuICBhcz86IHN0cmluZztcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICByZW1lbWJlcj86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IFQ7XG4gIHN0b3JlSW5Vcmw/OiBGb3JtYXR0ZXI8VD5cbiAgc2FuaXRpc2VyPzogQ29uc3RydWN0YWJsZTxQYXJhbWV0ZXJTYW5pdGlzZXI8VD4+IHwgUGFyYW1ldGVyU2FuaXRpc2VyPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlTGlzdFBhcmFtZXRlck9wdGlvbnM8VD4ge1xuICBhcz86IHN0cmluZztcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICByZW1lbWJlcj86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IFRbXTtcbiAgc3RvcmVJblVybD86IEZvcm1hdHRlcjxUPlxuICBzYW5pdGlzZXI/OiBDb25zdHJ1Y3RhYmxlPFBhcmFtZXRlclNhbml0aXNlcjxUW10+PiB8IFBhcmFtZXRlclNhbml0aXNlcjxUW10+O1xufVxuXG5cbmZ1bmN0aW9uIGluc3RhbGxNZWNoYW5pY3M8TSBleHRlbmRzIEhhc1ZhbHVlPGFueT4+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+LCBwcm90b3R5cGU6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgdGFnUHJlZml4OiBzdHJpbmcpIHtcblxuICBLbGFzcy5nZXQocHJvdG90eXBlKS5hZGRUb093bk1ldGFkYXRhTGlzdChST1VURV9QQVJBTUVURVJfTElTVF9LRVksIHBhcmFtZXRlckRlZik7XG5cbiAgZnVuY3Rpb24gZ2V0TWVjaGFuaWNzKGluc3RhbmNlOiBNLCBwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgIGNvbnN0IGtleSA9IGBfX21lY2hhbmljc18ke3Byb3BlcnR5TmFtZS50b1N0cmluZygpfWA7XG4gICAgaWYgKCFpbnN0YW5jZVtrZXldKSB7XG4gICAgICBjb25zdCBiYWNraW5nTW9kZWwgPSBwYXJhbWV0ZXJEZWYuY3JlYXRlQmFja2luZ01vZGVsKCk7XG4gICAgICBpbnN0YW5jZVtrZXldID0ge1xuICAgICAgICBiYWNraW5nTW9kZWw6IGJhY2tpbmdNb2RlbCxcbiAgICAgICAgYmluZGluZzogbnVsbCBhcyBCaW5kaW5nPGFueSwgYW55PlxuICAgICAgfTtcbiAgICAgIGNvbnN0IHRhZyA9IGAke3RhZ1ByZWZpeH0oJHtwcm90b3R5cGUuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleS50b1N0cmluZygpfSlgO1xuICAgICAgRGVidWdDb250ZXh0LmdldE9yQ3JlYXRlKGluc3RhbmNlW2tleV0uYmFja2luZ01vZGVsKS50YWcodGFnKTtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlW2tleV07XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eUtleSwge1xuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0TWVjaGFuaWNzKHRoaXMsIHByb3BlcnR5S2V5KS5iYWNraW5nTW9kZWw7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uKHVzZXJNb2RlbDogTSkge1xuICAgICAgY29uc3QgbWVjaGFuaWNzID0gZ2V0TWVjaGFuaWNzKHRoaXMsIHByb3BlcnR5S2V5KTtcbiAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgc2NlbmFyaW8gd2hlcmUgd2Ugd2FudCB0byBwdXNoIGFuIGV4aXN0aW5nIHZhbHVlIG1vZGVsIChzdWNoIGFzIGEgZm9ybSBtb2RlbClcbiAgICAgIC8vIHRvIGFuZCBmcm9tIHRoZSByb3V0ZS5cbiAgICAgIGlmIChtZWNoYW5pY3MuYmluZGluZykge1xuICAgICAgICBtZWNoYW5pY3MuYmluZGluZy5kaXNwb3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAodXNlck1vZGVsKSB7XG4gICAgICAgIG1lY2hhbmljcy5iaW5kaW5nID0gbmV3IEJpbmRpbmcobWVjaGFuaWNzLmJhY2tpbmdNb2RlbCwgdXNlck1vZGVsLCB7XG4gICAgICAgICAgdG9MZWZ0OiBGdW5jdGlvbnMuaWRlbnRpdHksXG4gICAgICAgICAgdG9SaWdodDogRnVuY3Rpb25zLmlkZW50aXR5XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocGFyYW1ldGVyRGVmLmlzRW1wdHlWYWx1ZSh1c2VyTW9kZWwudmFsdWUpKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYFB1c2ggdmlzaXQgdG8gbW9kZWwgZm9yICR7dGFnfWAsIHt2YWx1ZTogbWVjaGFuaWNzLmJhY2tpbmdNb2RlbC52YWx1ZX0pO1xuICAgICAgICAgIG1lY2hhbmljcy5iaW5kaW5nLndyaXRlUmlnaHQoKTsgLy8gcHVzaCB0aGUgdmlzaXQgaW50byB0aGUgdXNlciBtb2RlbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXBhcmFtZXRlckRlZi5pc0VtcHR5VmFsdWUobWVjaGFuaWNzLmJhY2tpbmdNb2RlbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQXNzaWduaW5nIGEgdmlzaXQgbW9kZWwgd2l0aCBhbiBleGlzdGluZyB2YWx1ZSB0byBhIHZpc2l0IHBhcmFtZXRlciB3aXRoIGFuIGV4aXN0aW5nIHZhbHVlLiAgVmlzaXQgcGFyYW1ldGVyIHdpbGwgYmUgb3ZlcnJpZGRlbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtZWNoYW5pY3MuYmluZGluZy53cml0ZUxlZnQoKTsgLy8gcHVzaCB0aGUgdXNlciBtb2RlbCBpbnRvIHRoZSB2aXNpdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJvdXRlSWQ8VCBleHRlbmRzIHN0cmluZyB8IG51bWJlcj4oZm9ybWF0dGVyOiBGb3JtYXR0ZXI8VD4sIG9wdGlvbnM/OiBSb3V0ZUlkT3B0aW9uczxUPik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuIChwcm90b3R5cGU6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckRlZiA9IG5ldyBQYXJhbWV0ZXJEZWZpbml0aW9uLlJvdXRlSWQocHJvcGVydHlLZXkudG9TdHJpbmcoKSwgb3B0aW9ucywgZm9ybWF0dGVyKTtcbiAgICBpbnN0YWxsTWVjaGFuaWNzKHBhcmFtZXRlckRlZiwgcHJvdG90eXBlLCBwcm9wZXJ0eUtleSwgJ0BSb3V0ZUlkJyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWaXNpdFBhcmFtZXRlcjxUPihvcHRpb25zPzogUm91dGVQYXJhbWV0ZXJPcHRpb25zPFQ+KTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICBjb25zdCBvcHRzID0gT3B0cy5nZXQob3B0aW9ucyk7XG4gIHJldHVybiAocHJvdG90eXBlOiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJEZWYgPSBuZXcgUGFyYW1ldGVyRGVmaW5pdGlvbi5WYWx1ZVBhcmFtZXRlcihwcm9wZXJ0eUtleS50b1N0cmluZygpLCBvcHRpb25zLCBvcHRzLmdldE9wdGlvbmFsKCdzdG9yZUluVXJsJywgbnVsbCkpO1xuICAgIGluc3RhbGxNZWNoYW5pY3MocGFyYW1ldGVyRGVmLCBwcm90b3R5cGUsIHByb3BlcnR5S2V5LCAnQFZpc2l0UGFyYW1ldGVyJyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWaXNpdFBhcmFtZXRlckxpc3Q8RT4ob3B0aW9ucz86IFJvdXRlTGlzdFBhcmFtZXRlck9wdGlvbnM8RT4pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIGNvbnN0IG9wdHMgPSBPcHRzLmdldChvcHRpb25zKTtcbiAgcmV0dXJuIChwcm90b3R5cGU6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckRlZiA9IG5ldyBQYXJhbWV0ZXJEZWZpbml0aW9uLkFycmF5UGFyYW1ldGVyKHByb3BlcnR5S2V5LnRvU3RyaW5nKCksIG9wdGlvbnMsIG9wdHMuZ2V0T3B0aW9uYWwoJ3N0b3JlSW5VcmwnLCBudWxsKSk7XG4gICAgaW5zdGFsbE1lY2hhbmljcyhwYXJhbWV0ZXJEZWYsIHByb3RvdHlwZSwgcHJvcGVydHlLZXksICdAVmlzaXRQYXJhbWV0ZXJMaXN0Jyk7XG4gIH07XG59XG4iXX0=
|