@covalent/core 3.1.0 → 3.1.2-beta.6
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/breadcrumbs/covalent-core-breadcrumbs.metadata.json +1 -1
- package/breadcrumbs/package.json +1 -3
- package/bundles/covalent-core-breadcrumbs.umd.js +131 -167
- package/bundles/covalent-core-breadcrumbs.umd.js.map +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.min.js +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.min.js.map +1 -1
- package/bundles/covalent-core-chips.umd.js +533 -708
- package/bundles/covalent-core-chips.umd.js.map +1 -1
- package/bundles/covalent-core-chips.umd.min.js +12 -12
- package/bundles/covalent-core-chips.umd.min.js.map +1 -1
- package/bundles/covalent-core-common.umd.js +566 -571
- package/bundles/covalent-core-common.umd.js.map +1 -1
- package/bundles/covalent-core-common.umd.min.js +13 -12
- package/bundles/covalent-core-common.umd.min.js.map +1 -1
- package/bundles/covalent-core-data-table.umd.js +727 -1038
- package/bundles/covalent-core-data-table.umd.js.map +1 -1
- package/bundles/covalent-core-data-table.umd.min.js +12 -12
- package/bundles/covalent-core-data-table.umd.min.js.map +1 -1
- package/bundles/covalent-core-dialogs.umd.js +515 -592
- package/bundles/covalent-core-dialogs.umd.js.map +1 -1
- package/bundles/covalent-core-dialogs.umd.min.js +1 -15
- package/bundles/covalent-core-dialogs.umd.min.js.map +1 -1
- package/bundles/covalent-core-dynamic-menu.umd.js +73 -62
- package/bundles/covalent-core-dynamic-menu.umd.js.map +1 -1
- package/bundles/covalent-core-dynamic-menu.umd.min.js +1 -1
- package/bundles/covalent-core-dynamic-menu.umd.min.js.map +1 -1
- package/bundles/covalent-core-expansion-panel.umd.js +465 -449
- package/bundles/covalent-core-expansion-panel.umd.js.map +1 -1
- package/bundles/covalent-core-expansion-panel.umd.min.js +12 -12
- package/bundles/covalent-core-expansion-panel.umd.min.js.map +1 -1
- package/bundles/covalent-core-file.umd.js +533 -598
- package/bundles/covalent-core-file.umd.js.map +1 -1
- package/bundles/covalent-core-file.umd.min.js +13 -12
- package/bundles/covalent-core-file.umd.min.js.map +1 -1
- package/bundles/covalent-core-json-formatter.umd.js +101 -152
- package/bundles/covalent-core-json-formatter.umd.js.map +1 -1
- package/bundles/covalent-core-json-formatter.umd.min.js +1 -1
- package/bundles/covalent-core-json-formatter.umd.min.js.map +1 -1
- package/bundles/covalent-core-layout.umd.js +845 -883
- package/bundles/covalent-core-layout.umd.js.map +1 -1
- package/bundles/covalent-core-layout.umd.min.js +13 -12
- package/bundles/covalent-core-layout.umd.min.js.map +1 -1
- package/bundles/covalent-core-loading.umd.js +481 -723
- package/bundles/covalent-core-loading.umd.js.map +1 -1
- package/bundles/covalent-core-loading.umd.min.js +12 -12
- package/bundles/covalent-core-loading.umd.min.js.map +1 -1
- package/bundles/covalent-core-media.umd.js +395 -375
- package/bundles/covalent-core-media.umd.js.map +1 -1
- package/bundles/covalent-core-media.umd.min.js +12 -12
- package/bundles/covalent-core-media.umd.min.js.map +1 -1
- package/bundles/covalent-core-menu.umd.js +37 -17
- package/bundles/covalent-core-menu.umd.js.map +1 -1
- package/bundles/covalent-core-menu.umd.min.js +1 -1
- package/bundles/covalent-core-menu.umd.min.js.map +1 -1
- package/bundles/covalent-core-message.umd.js +96 -152
- package/bundles/covalent-core-message.umd.js.map +1 -1
- package/bundles/covalent-core-message.umd.min.js +1 -1
- package/bundles/covalent-core-message.umd.min.js.map +1 -1
- package/bundles/covalent-core-nav-links.umd.js +63 -75
- package/bundles/covalent-core-nav-links.umd.js.map +1 -1
- package/bundles/covalent-core-nav-links.umd.min.js +1 -1
- package/bundles/covalent-core-nav-links.umd.min.js.map +1 -1
- package/bundles/covalent-core-notifications.umd.js +77 -101
- package/bundles/covalent-core-notifications.umd.js.map +1 -1
- package/bundles/covalent-core-notifications.umd.min.js +1 -1
- package/bundles/covalent-core-notifications.umd.min.js.map +1 -1
- package/bundles/covalent-core-paging.umd.js +89 -166
- package/bundles/covalent-core-paging.umd.js.map +1 -1
- package/bundles/covalent-core-paging.umd.min.js +1 -1
- package/bundles/covalent-core-paging.umd.min.js.map +1 -1
- package/bundles/covalent-core-search.umd.js +469 -418
- package/bundles/covalent-core-search.umd.js.map +1 -1
- package/bundles/covalent-core-search.umd.min.js +12 -12
- package/bundles/covalent-core-search.umd.min.js.map +1 -1
- package/bundles/covalent-core-sidesheet.umd.js +72 -52
- package/bundles/covalent-core-sidesheet.umd.js.map +1 -1
- package/bundles/covalent-core-sidesheet.umd.min.js +1 -1
- package/bundles/covalent-core-sidesheet.umd.min.js.map +1 -1
- package/bundles/covalent-core-steps.umd.js +663 -822
- package/bundles/covalent-core-steps.umd.js.map +1 -1
- package/bundles/covalent-core-steps.umd.min.js +12 -12
- package/bundles/covalent-core-steps.umd.min.js.map +1 -1
- package/bundles/covalent-core-tab-select.umd.js +446 -385
- package/bundles/covalent-core-tab-select.umd.js.map +1 -1
- package/bundles/covalent-core-tab-select.umd.min.js +12 -12
- package/bundles/covalent-core-tab-select.umd.min.js.map +1 -1
- package/bundles/covalent-core-user-profile.umd.js +65 -48
- package/bundles/covalent-core-user-profile.umd.js.map +1 -1
- package/bundles/covalent-core-user-profile.umd.min.js +1 -1
- package/bundles/covalent-core-user-profile.umd.min.js.map +1 -1
- package/bundles/covalent-core-virtual-scroll.umd.js +412 -356
- package/bundles/covalent-core-virtual-scroll.umd.js.map +1 -1
- package/bundles/covalent-core-virtual-scroll.umd.min.js +12 -12
- package/bundles/covalent-core-virtual-scroll.umd.min.js.map +1 -1
- package/bundles/covalent-core.umd.js +0 -8
- package/bundles/covalent-core.umd.js.map +1 -1
- package/chips/covalent-core-chips.metadata.json +1 -1
- package/chips/package.json +1 -3
- package/common/_common-theme.scss +11 -0
- package/common/package.json +1 -3
- package/data-table/covalent-core-data-table.metadata.json +1 -1
- package/data-table/package.json +1 -3
- package/dialogs/_dialog-theme.scss +6 -0
- package/dialogs/covalent-core-dialogs.metadata.json +1 -1
- package/dialogs/package.json +1 -3
- package/dialogs/window-dialog/window-dialog.component.scss +4 -0
- package/dynamic-menu/covalent-core-dynamic-menu.metadata.json +1 -1
- package/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.scss +0 -4
- package/dynamic-menu/package.json +1 -3
- package/esm2015/breadcrumbs/breadcrumb/breadcrumb.component.js +4 -3
- package/esm2015/breadcrumbs/breadcrumbs.component.js +3 -2
- package/esm2015/breadcrumbs/breadcrumbs.module.js +3 -2
- package/esm2015/breadcrumbs/covalent-core-breadcrumbs.js +3 -2
- package/esm2015/breadcrumbs/index.js +3 -2
- package/esm2015/breadcrumbs/public-api.js +3 -2
- package/esm2015/chips/chips.component.js +4 -3
- package/esm2015/chips/chips.module.js +3 -2
- package/esm2015/chips/covalent-core-chips.js +3 -2
- package/esm2015/chips/index.js +3 -2
- package/esm2015/chips/public-api.js +3 -2
- package/esm2015/common/animations/bounce/bounce.animation.js +3 -2
- package/esm2015/common/animations/collapse/collapse.animation.js +3 -2
- package/esm2015/common/animations/common/interfaces.js +3 -2
- package/esm2015/common/animations/fade/fadeInOut.animation.js +3 -2
- package/esm2015/common/animations/flash/flash.animation.js +3 -2
- package/esm2015/common/animations/headshake/headshake.animation.js +3 -2
- package/esm2015/common/animations/jello/jello.animation.js +3 -2
- package/esm2015/common/animations/pulse/pulse.animation.js +3 -2
- package/esm2015/common/animations/rotate/rotate.animation.js +3 -2
- package/esm2015/common/behaviors/control-value-accesor.mixin.js +3 -2
- package/esm2015/common/behaviors/disable-ripple.mixin.js +3 -2
- package/esm2015/common/behaviors/disabled.mixin.js +3 -2
- package/esm2015/common/common.module.js +3 -2
- package/esm2015/common/covalent-core-common.js +3 -2
- package/esm2015/common/directives/fullscreen/fullscreen.directive.js +3 -2
- package/esm2015/common/forms/auto-trim/auto-trim.directive.js +3 -2
- package/esm2015/common/forms/validators/validators.js +3 -2
- package/esm2015/common/functions/clipboard.js +3 -2
- package/esm2015/common/functions/convert.js +3 -2
- package/esm2015/common/functions/download.js +3 -2
- package/esm2015/common/functions/file.js +3 -2
- package/esm2015/common/index.js +3 -2
- package/esm2015/common/pipes/bytes/bytes.pipe.js +3 -2
- package/esm2015/common/pipes/decimal-bytes/decimal-bytes.pipe.js +3 -2
- package/esm2015/common/pipes/digits/digits.pipe.js +3 -2
- package/esm2015/common/pipes/time-ago/time-ago.pipe.js +3 -2
- package/esm2015/common/pipes/time-difference/time-difference.pipe.js +3 -2
- package/esm2015/common/pipes/time-until/time-until.pipe.js +3 -2
- package/esm2015/common/pipes/truncate/truncate.pipe.js +3 -2
- package/esm2015/common/public-api.js +3 -2
- package/esm2015/common/services/icon.service.js +3 -2
- package/esm2015/common/services/router-path.service.js +3 -2
- package/esm2015/covalent-core.js +3 -2
- package/esm2015/data-table/covalent-core-data-table.js +3 -2
- package/esm2015/data-table/data-table-cell/data-table-cell.component.js +4 -3
- package/esm2015/data-table/data-table-column/data-table-column.component.js +4 -3
- package/esm2015/data-table/data-table-row/data-table-row.component.js +3 -2
- package/esm2015/data-table/data-table-table/data-table-table.component.js +4 -3
- package/esm2015/data-table/data-table.component.js +6 -5
- package/esm2015/data-table/data-table.module.js +3 -2
- package/esm2015/data-table/directives/data-table-template.directive.js +3 -2
- package/esm2015/data-table/index.js +3 -2
- package/esm2015/data-table/public-api.js +3 -2
- package/esm2015/data-table/services/data-table.service.js +3 -2
- package/esm2015/dialogs/alert-dialog/alert-dialog.component.js +3 -2
- package/esm2015/dialogs/confirm-dialog/confirm-dialog.component.js +3 -2
- package/esm2015/dialogs/covalent-core-dialogs.js +3 -2
- package/esm2015/dialogs/dialog.component.js +4 -3
- package/esm2015/dialogs/dialogs.module.js +3 -2
- package/esm2015/dialogs/index.js +3 -2
- package/esm2015/dialogs/prompt-dialog/prompt-dialog.component.js +4 -3
- package/esm2015/dialogs/public-api.js +3 -2
- package/esm2015/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.js +14 -13
- package/esm2015/dialogs/services/dialog.service.js +3 -2
- package/esm2015/dialogs/window-dialog/window-dialog.component.js +4 -3
- package/esm2015/dynamic-menu/covalent-core-dynamic-menu.js +3 -2
- package/esm2015/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.js +5 -4
- package/esm2015/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.js +4 -3
- package/esm2015/dynamic-menu/dynamic-menu.component.js +3 -2
- package/esm2015/dynamic-menu/dynamic-menu.module.js +3 -2
- package/esm2015/dynamic-menu/index.js +3 -2
- package/esm2015/dynamic-menu/public_api.js +3 -2
- package/esm2015/expansion-panel/covalent-core-expansion-panel.js +3 -2
- package/esm2015/expansion-panel/expansion-panel-group.component.js +3 -2
- package/esm2015/expansion-panel/expansion-panel.component.js +4 -3
- package/esm2015/expansion-panel/expansion-panel.module.js +3 -2
- package/esm2015/expansion-panel/index.js +3 -2
- package/esm2015/expansion-panel/public-api.js +3 -2
- package/esm2015/file/covalent-core-file.js +3 -2
- package/esm2015/file/directives/file-drop.directive.js +3 -2
- package/esm2015/file/directives/file-select.directive.js +3 -2
- package/esm2015/file/file-input/file-input.component.js +3 -2
- package/esm2015/file/file-upload/file-upload.component.js +4 -3
- package/esm2015/file/file.module.js +3 -2
- package/esm2015/file/index.js +3 -2
- package/esm2015/file/public-api.js +3 -2
- package/esm2015/file/services/file.service.js +3 -2
- package/esm2015/index.js +4 -2
- package/esm2015/json-formatter/covalent-core-json-formatter.js +3 -2
- package/esm2015/json-formatter/index.js +3 -2
- package/esm2015/json-formatter/json-formatter.component.js +4 -3
- package/esm2015/json-formatter/json-formatter.module.js +3 -2
- package/esm2015/json-formatter/public-api.js +3 -2
- package/esm2015/layout/covalent-core-layout.js +4 -3
- package/esm2015/layout/index.js +4 -3
- package/esm2015/layout/layout-card-over/layout-card-over.component.js +4 -3
- package/esm2015/layout/layout-footer/layout-footer.component.js +3 -2
- package/esm2015/layout/layout-manage-list/layout-manage-list.component.js +4 -3
- package/esm2015/layout/layout-manage-list/layout-manage-list.directives.js +7 -6
- package/esm2015/layout/layout-nav/layout-nav.component.js +4 -3
- package/esm2015/layout/layout-nav-list/layout-nav-list.component.js +4 -3
- package/esm2015/layout/layout-nav-list/layout-nav-list.directives.js +7 -6
- package/esm2015/layout/layout-toggle.class.js +22 -12
- package/esm2015/layout/layout.component.js +4 -3
- package/esm2015/layout/layout.directives.js +7 -6
- package/esm2015/layout/layout.module.js +3 -2
- package/esm2015/layout/navigation-drawer/navigation-drawer.component.js +4 -3
- package/esm2015/layout/public-api.js +4 -3
- package/esm2015/loading/covalent-core-loading.js +3 -2
- package/esm2015/loading/directives/loading.directive.js +3 -2
- package/esm2015/loading/index.js +3 -2
- package/esm2015/loading/loading.component.js +13 -12
- package/esm2015/loading/loading.module.js +3 -2
- package/esm2015/loading/public-api.js +3 -2
- package/esm2015/loading/services/loading.factory.js +3 -2
- package/esm2015/loading/services/loading.service.js +3 -2
- package/esm2015/media/covalent-core-media.js +3 -2
- package/esm2015/media/directives/media-toggle.directive.js +3 -2
- package/esm2015/media/index.js +3 -2
- package/esm2015/media/media.module.js +3 -2
- package/esm2015/media/public-api.js +3 -2
- package/esm2015/media/services/media.service.js +3 -2
- package/esm2015/menu/covalent-core-menu.js +3 -2
- package/esm2015/menu/index.js +3 -2
- package/esm2015/menu/menu.component.js +4 -3
- package/esm2015/menu/menu.module.js +3 -2
- package/esm2015/menu/public-api.js +3 -2
- package/esm2015/message/covalent-core-message.js +3 -2
- package/esm2015/message/index.js +3 -2
- package/esm2015/message/message.component.js +4 -3
- package/esm2015/message/message.module.js +3 -2
- package/esm2015/message/public-api.js +3 -2
- package/esm2015/nav-links/covalent-core-nav-links.js +3 -2
- package/esm2015/nav-links/index.js +3 -2
- package/esm2015/nav-links/nav-links.component.js +3 -2
- package/esm2015/nav-links/nav-links.module.js +3 -2
- package/esm2015/nav-links/public-api.js +3 -2
- package/esm2015/notifications/covalent-core-notifications.js +3 -2
- package/esm2015/notifications/index.js +3 -2
- package/esm2015/notifications/notification-count.component.js +10 -9
- package/esm2015/notifications/notifications.module.js +3 -2
- package/esm2015/notifications/public-api.js +3 -2
- package/esm2015/paging/covalent-core-paging.js +3 -2
- package/esm2015/paging/index.js +3 -2
- package/esm2015/paging/paging-bar.component.js +4 -3
- package/esm2015/paging/paging.module.js +3 -2
- package/esm2015/paging/public-api.js +3 -2
- package/esm2015/search/covalent-core-search.js +3 -2
- package/esm2015/search/index.js +3 -2
- package/esm2015/search/public-api.js +3 -2
- package/esm2015/search/search-box/search-box.component.js +4 -3
- package/esm2015/search/search-input/search-input.component.js +4 -3
- package/esm2015/search/search.module.js +3 -2
- package/esm2015/sidesheet/covalent-core-sidesheet.js +3 -2
- package/esm2015/sidesheet/index.js +3 -2
- package/esm2015/sidesheet/public-api.js +3 -2
- package/esm2015/sidesheet/sidesheet.component.js +4 -3
- package/esm2015/sidesheet/sidesheet.module.js +3 -2
- package/esm2015/steps/covalent-core-steps.js +3 -2
- package/esm2015/steps/index.js +3 -2
- package/esm2015/steps/nav/nav-step-link/nav-step-link.component.js +4 -3
- package/esm2015/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +4 -3
- package/esm2015/steps/nav/nav-steps-vertical/nav-steps-vertical.component.js +4 -3
- package/esm2015/steps/public-api.js +3 -2
- package/esm2015/steps/step-body/step-body.component.js +4 -3
- package/esm2015/steps/step-header/step-header.component.js +4 -3
- package/esm2015/steps/step.component.js +6 -5
- package/esm2015/steps/steps.component.js +6 -5
- package/esm2015/steps/steps.module.js +3 -2
- package/esm2015/tab-select/covalent-core-tab-select.js +3 -2
- package/esm2015/tab-select/index.js +3 -2
- package/esm2015/tab-select/public-api.js +3 -2
- package/esm2015/tab-select/tab-option.component.js +3 -2
- package/esm2015/tab-select/tab-select.component.js +3 -2
- package/esm2015/tab-select/tab-select.module.js +3 -2
- package/esm2015/user-profile/covalent-core-user-profile.js +3 -2
- package/esm2015/user-profile/index.js +3 -2
- package/esm2015/user-profile/public_api.js +3 -2
- package/esm2015/user-profile/user-profile-menu/user-profile-menu.component.js +4 -3
- package/esm2015/user-profile/user-profile.component.js +3 -2
- package/esm2015/user-profile/user-profile.module.js +3 -2
- package/esm2015/virtual-scroll/covalent-core-virtual-scroll.js +3 -2
- package/esm2015/virtual-scroll/index.js +3 -2
- package/esm2015/virtual-scroll/public-api.js +3 -2
- package/esm2015/virtual-scroll/virtual-scroll-container.component.js +4 -3
- package/esm2015/virtual-scroll/virtual-scroll-row.directive.js +3 -2
- package/esm2015/virtual-scroll/virtual-scroll.module.js +3 -2
- package/expansion-panel/covalent-core-expansion-panel.metadata.json +1 -1
- package/expansion-panel/package.json +1 -3
- package/fesm2015/covalent-core-breadcrumbs.js +13 -7
- package/fesm2015/covalent-core-breadcrumbs.js.map +1 -1
- package/fesm2015/covalent-core-chips.js +11 -6
- package/fesm2015/covalent-core-chips.js.map +1 -1
- package/fesm2015/covalent-core-common.js +62 -31
- package/fesm2015/covalent-core-common.js.map +1 -1
- package/fesm2015/covalent-core-data-table.js +28 -17
- package/fesm2015/covalent-core-data-table.js.map +1 -1
- package/fesm2015/covalent-core-dialogs.js +36 -25
- package/fesm2015/covalent-core-dialogs.js.map +1 -1
- package/fesm2015/covalent-core-dynamic-menu.js +17 -10
- package/fesm2015/covalent-core-dynamic-menu.js.map +1 -1
- package/fesm2015/covalent-core-expansion-panel.js +13 -7
- package/fesm2015/covalent-core-expansion-panel.js.map +1 -1
- package/fesm2015/covalent-core-file.js +19 -10
- package/fesm2015/covalent-core-file.js.map +1 -1
- package/fesm2015/covalent-core-json-formatter.js +11 -6
- package/fesm2015/covalent-core-json-formatter.js.map +1 -1
- package/fesm2015/covalent-core-layout.js +65 -41
- package/fesm2015/covalent-core-layout.js.map +1 -1
- package/fesm2015/covalent-core-loading.js +26 -18
- package/fesm2015/covalent-core-loading.js.map +1 -1
- package/fesm2015/covalent-core-media.js +12 -6
- package/fesm2015/covalent-core-media.js.map +1 -1
- package/fesm2015/covalent-core-menu.js +11 -6
- package/fesm2015/covalent-core-menu.js.map +1 -1
- package/fesm2015/covalent-core-message.js +11 -6
- package/fesm2015/covalent-core-message.js.map +1 -1
- package/fesm2015/covalent-core-nav-links.js +10 -5
- package/fesm2015/covalent-core-nav-links.js.map +1 -1
- package/fesm2015/covalent-core-notifications.js +17 -12
- package/fesm2015/covalent-core-notifications.js.map +1 -1
- package/fesm2015/covalent-core-paging.js +11 -6
- package/fesm2015/covalent-core-paging.js.map +1 -1
- package/fesm2015/covalent-core-search.js +14 -8
- package/fesm2015/covalent-core-search.js.map +1 -1
- package/fesm2015/covalent-core-sidesheet.js +11 -6
- package/fesm2015/covalent-core-sidesheet.js.map +1 -1
- package/fesm2015/covalent-core-steps.js +33 -22
- package/fesm2015/covalent-core-steps.js.map +1 -1
- package/fesm2015/covalent-core-tab-select.js +12 -6
- package/fesm2015/covalent-core-tab-select.js.map +1 -1
- package/fesm2015/covalent-core-user-profile.js +13 -7
- package/fesm2015/covalent-core-user-profile.js.map +1 -1
- package/fesm2015/covalent-core-virtual-scroll.js +13 -7
- package/fesm2015/covalent-core-virtual-scroll.js.map +1 -1
- package/fesm2015/covalent-core.js +4 -2
- package/fesm2015/covalent-core.js.map +1 -1
- package/file/covalent-core-file.metadata.json +1 -1
- package/file/package.json +1 -3
- package/json-formatter/covalent-core-json-formatter.metadata.json +1 -1
- package/json-formatter/package.json +1 -3
- package/layout/covalent-core-layout.metadata.json +1 -1
- package/layout/layout-manage-list/layout-manage-list.directives.d.ts +4 -4
- package/layout/layout-nav-list/layout-nav-list.directives.d.ts +4 -4
- package/layout/layout-toggle.class.d.ts +1 -1
- package/layout/layout.directives.d.ts +4 -4
- package/layout/package.json +1 -3
- package/loading/covalent-core-loading.metadata.json +1 -1
- package/loading/package.json +1 -3
- package/media/package.json +1 -3
- package/menu/covalent-core-menu.metadata.json +1 -1
- package/menu/package.json +1 -3
- package/message/covalent-core-message.metadata.json +1 -1
- package/message/package.json +1 -3
- package/nav-links/package.json +1 -3
- package/notifications/covalent-core-notifications.metadata.json +1 -1
- package/notifications/package.json +1 -3
- package/package.json +12 -12
- package/paging/covalent-core-paging.metadata.json +1 -1
- package/paging/package.json +1 -3
- package/schematics/components.js +1 -0
- package/schematics/components.js.map +1 -1
- package/schematics/ng-add/files/theme.scss +1 -1
- package/schematics/ng-add/index.js +4 -6
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-update/index.js +1 -0
- package/schematics/ng-update/index.js.map +1 -1
- package/schematics/ng-update/target-version.js +1 -0
- package/schematics/ng-update/target-version.js.map +1 -1
- package/schematics/version-names.js +1 -0
- package/schematics/version-names.js.map +1 -1
- package/search/covalent-core-search.metadata.json +1 -1
- package/search/package.json +1 -3
- package/sidesheet/covalent-core-sidesheet.metadata.json +1 -1
- package/sidesheet/package.json +1 -3
- package/steps/covalent-core-steps.metadata.json +1 -1
- package/steps/package.json +1 -3
- package/tab-select/covalent-core-tab-select.metadata.json +1 -1
- package/tab-select/package.json +1 -3
- package/theming/prebuilt/blue-grey-deep-orange.css +193 -28
- package/theming/prebuilt/blue-grey-deep-orange.css.map +1 -1
- package/theming/prebuilt/blue-orange.css +193 -28
- package/theming/prebuilt/blue-orange.css.map +1 -1
- package/theming/prebuilt/indigo-pink.css +193 -28
- package/theming/prebuilt/indigo-pink.css.map +1 -1
- package/theming/prebuilt/orange-light-blue.css +193 -28
- package/theming/prebuilt/orange-light-blue.css.map +1 -1
- package/theming/prebuilt/teal-orange.css +193 -28
- package/theming/prebuilt/teal-orange.css.map +1 -1
- package/user-profile/covalent-core-user-profile.metadata.json +1 -1
- package/user-profile/package.json +1 -3
- package/virtual-scroll/covalent-core-virtual-scroll.metadata.json +1 -1
- package/virtual-scroll/package.json +1 -3
- package/esm5/breadcrumbs/breadcrumb/breadcrumb.component.js +0 -216
- package/esm5/breadcrumbs/breadcrumbs.component.js +0 -286
- package/esm5/breadcrumbs/breadcrumbs.module.js +0 -23
- package/esm5/breadcrumbs/covalent-core-breadcrumbs.js +0 -9
- package/esm5/breadcrumbs/index.js +0 -6
- package/esm5/breadcrumbs/public-api.js +0 -8
- package/esm5/chips/chips.component.js +0 -1453
- package/esm5/chips/chips.module.js +0 -26
- package/esm5/chips/covalent-core-chips.js +0 -9
- package/esm5/chips/index.js +0 -6
- package/esm5/chips/public-api.js +0 -7
- package/esm5/common/animations/bounce/bounce.animation.js +0 -75
- package/esm5/common/animations/collapse/collapse.animation.js +0 -66
- package/esm5/common/animations/common/interfaces.js +0 -17
- package/esm5/common/animations/fade/fadeInOut.animation.js +0 -52
- package/esm5/common/animations/flash/flash.animation.js +0 -39
- package/esm5/common/animations/headshake/headshake.animation.js +0 -40
- package/esm5/common/animations/jello/jello.animation.js +0 -43
- package/esm5/common/animations/pulse/pulse.animation.js +0 -37
- package/esm5/common/animations/rotate/rotate.animation.js +0 -40
- package/esm5/common/behaviors/control-value-accesor.mixin.js +0 -127
- package/esm5/common/behaviors/disable-ripple.mixin.js +0 -75
- package/esm5/common/behaviors/disabled.mixin.js +0 -75
- package/esm5/common/common.module.js +0 -57
- package/esm5/common/covalent-core-common.js +0 -11
- package/esm5/common/directives/fullscreen/fullscreen.directive.js +0 -228
- package/esm5/common/forms/auto-trim/auto-trim.directive.js +0 -52
- package/esm5/common/forms/validators/validators.js +0 -73
- package/esm5/common/functions/clipboard.js +0 -29
- package/esm5/common/functions/convert.js +0 -120
- package/esm5/common/functions/download.js +0 -93
- package/esm5/common/functions/file.js +0 -28
- package/esm5/common/index.js +0 -6
- package/esm5/common/pipes/bytes/bytes.pipe.js +0 -54
- package/esm5/common/pipes/decimal-bytes/decimal-bytes.pipe.js +0 -54
- package/esm5/common/pipes/digits/digits.pipe.js +0 -72
- package/esm5/common/pipes/time-ago/time-ago.pipe.js +0 -89
- package/esm5/common/pipes/time-difference/time-difference.pipe.js +0 -74
- package/esm5/common/pipes/time-until/time-until.pipe.js +0 -89
- package/esm5/common/pipes/truncate/truncate.pipe.js +0 -42
- package/esm5/common/public-api.js +0 -43
- package/esm5/common/services/icon.service.js +0 -1118
- package/esm5/common/services/router-path.service.js +0 -69
- package/esm5/covalent-core.js +0 -9
- package/esm5/data-table/covalent-core-data-table.js +0 -9
- package/esm5/data-table/data-table-cell/data-table-cell.component.js +0 -98
- package/esm5/data-table/data-table-column/data-table-column.component.js +0 -257
- package/esm5/data-table/data-table-row/data-table-row.component.js +0 -145
- package/esm5/data-table/data-table-table/data-table-table.component.js +0 -40
- package/esm5/data-table/data-table.component.js +0 -2079
- package/esm5/data-table/data-table.module.js +0 -42
- package/esm5/data-table/directives/data-table-template.directive.js +0 -31
- package/esm5/data-table/index.js +0 -6
- package/esm5/data-table/public-api.js +0 -13
- package/esm5/data-table/services/data-table.service.js +0 -184
- package/esm5/dialogs/alert-dialog/alert-dialog.component.js +0 -48
- package/esm5/dialogs/confirm-dialog/confirm-dialog.component.js +0 -63
- package/esm5/dialogs/covalent-core-dialogs.js +0 -10
- package/esm5/dialogs/dialog.component.js +0 -76
- package/esm5/dialogs/dialogs.module.js +0 -60
- package/esm5/dialogs/index.js +0 -6
- package/esm5/dialogs/prompt-dialog/prompt-dialog.component.js +0 -100
- package/esm5/dialogs/public-api.js +0 -12
- package/esm5/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.js +0 -356
- package/esm5/dialogs/services/dialog.service.js +0 -441
- package/esm5/dialogs/window-dialog/window-dialog.component.js +0 -60
- package/esm5/dynamic-menu/covalent-core-dynamic-menu.js +0 -10
- package/esm5/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.js +0 -45
- package/esm5/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.js +0 -39
- package/esm5/dynamic-menu/dynamic-menu.component.js +0 -94
- package/esm5/dynamic-menu/dynamic-menu.module.js +0 -29
- package/esm5/dynamic-menu/index.js +0 -6
- package/esm5/dynamic-menu/public_api.js +0 -8
- package/esm5/expansion-panel/covalent-core-expansion-panel.js +0 -9
- package/esm5/expansion-panel/expansion-panel-group.component.js +0 -251
- package/esm5/expansion-panel/expansion-panel.component.js +0 -344
- package/esm5/expansion-panel/expansion-panel.module.js +0 -34
- package/esm5/expansion-panel/index.js +0 -6
- package/esm5/expansion-panel/public-api.js +0 -8
- package/esm5/file/covalent-core-file.js +0 -9
- package/esm5/file/directives/file-drop.directive.js +0 -276
- package/esm5/file/directives/file-select.directive.js +0 -124
- package/esm5/file/file-input/file-input.component.js +0 -225
- package/esm5/file/file-upload/file-upload.component.js +0 -284
- package/esm5/file/file.module.js +0 -38
- package/esm5/file/index.js +0 -6
- package/esm5/file/public-api.js +0 -11
- package/esm5/file/services/file.service.js +0 -137
- package/esm5/index.js +0 -5
- package/esm5/json-formatter/covalent-core-json-formatter.js +0 -9
- package/esm5/json-formatter/index.js +0 -6
- package/esm5/json-formatter/json-formatter.component.js +0 -433
- package/esm5/json-formatter/json-formatter.module.js +0 -23
- package/esm5/json-formatter/public-api.js +0 -7
- package/esm5/layout/covalent-core-layout.js +0 -9
- package/esm5/layout/index.js +0 -6
- package/esm5/layout/layout-card-over/layout-card-over.component.js +0 -72
- package/esm5/layout/layout-footer/layout-footer.component.js +0 -77
- package/esm5/layout/layout-manage-list/layout-manage-list.component.js +0 -175
- package/esm5/layout/layout-manage-list/layout-manage-list.directives.js +0 -147
- package/esm5/layout/layout-nav/layout-nav.component.js +0 -108
- package/esm5/layout/layout-nav-list/layout-nav-list.component.js +0 -257
- package/esm5/layout/layout-nav-list/layout-nav-list.directives.js +0 -147
- package/esm5/layout/layout-toggle.class.js +0 -214
- package/esm5/layout/layout.component.js +0 -175
- package/esm5/layout/layout.directives.js +0 -144
- package/esm5/layout/layout.module.js +0 -67
- package/esm5/layout/navigation-drawer/navigation-drawer.component.js +0 -364
- package/esm5/layout/public-api.js +0 -17
- package/esm5/loading/covalent-core-loading.js +0 -9
- package/esm5/loading/directives/loading.directive.js +0 -304
- package/esm5/loading/index.js +0 -6
- package/esm5/loading/loading.component.js +0 -367
- package/esm5/loading/loading.module.js +0 -33
- package/esm5/loading/public-api.js +0 -10
- package/esm5/loading/services/loading.factory.js +0 -378
- package/esm5/loading/services/loading.service.js +0 -494
- package/esm5/media/covalent-core-media.js +0 -9
- package/esm5/media/directives/media-toggle.directive.js +0 -261
- package/esm5/media/index.js +0 -6
- package/esm5/media/media.module.js +0 -23
- package/esm5/media/public-api.js +0 -8
- package/esm5/media/services/media.service.js +0 -229
- package/esm5/menu/covalent-core-menu.js +0 -9
- package/esm5/menu/index.js +0 -6
- package/esm5/menu/menu.component.js +0 -19
- package/esm5/menu/menu.module.js +0 -25
- package/esm5/menu/public-api.js +0 -7
- package/esm5/message/covalent-core-message.js +0 -9
- package/esm5/message/index.js +0 -6
- package/esm5/message/message.component.js +0 -402
- package/esm5/message/message.module.js +0 -24
- package/esm5/message/public-api.js +0 -7
- package/esm5/nav-links/covalent-core-nav-links.js +0 -9
- package/esm5/nav-links/index.js +0 -6
- package/esm5/nav-links/nav-links.component.js +0 -171
- package/esm5/nav-links/nav-links.module.js +0 -40
- package/esm5/nav-links/public-api.js +0 -7
- package/esm5/notifications/covalent-core-notifications.js +0 -9
- package/esm5/notifications/index.js +0 -6
- package/esm5/notifications/notification-count.component.js +0 -268
- package/esm5/notifications/notifications.module.js +0 -23
- package/esm5/notifications/public-api.js +0 -7
- package/esm5/paging/covalent-core-paging.js +0 -9
- package/esm5/paging/index.js +0 -6
- package/esm5/paging/paging-bar.component.js +0 -542
- package/esm5/paging/paging.module.js +0 -23
- package/esm5/paging/public-api.js +0 -7
- package/esm5/search/covalent-core-search.js +0 -9
- package/esm5/search/index.js +0 -6
- package/esm5/search/public-api.js +0 -8
- package/esm5/search/search-box/search-box.component.js +0 -298
- package/esm5/search/search-input/search-input.component.js +0 -297
- package/esm5/search/search.module.js +0 -26
- package/esm5/sidesheet/covalent-core-sidesheet.js +0 -9
- package/esm5/sidesheet/index.js +0 -6
- package/esm5/sidesheet/public-api.js +0 -7
- package/esm5/sidesheet/sidesheet.component.js +0 -89
- package/esm5/sidesheet/sidesheet.module.js +0 -30
- package/esm5/steps/covalent-core-steps.js +0 -9
- package/esm5/steps/index.js +0 -6
- package/esm5/steps/nav/nav-step-link/nav-step-link.component.js +0 -165
- package/esm5/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +0 -464
- package/esm5/steps/nav/nav-steps-vertical/nav-steps-vertical.component.js +0 -143
- package/esm5/steps/public-api.js +0 -13
- package/esm5/steps/step-body/step-body.component.js +0 -103
- package/esm5/steps/step-header/step-header.component.js +0 -101
- package/esm5/steps/step.component.js +0 -399
- package/esm5/steps/steps.component.js +0 -313
- package/esm5/steps/steps.module.js +0 -47
- package/esm5/tab-select/covalent-core-tab-select.js +0 -9
- package/esm5/tab-select/index.js +0 -6
- package/esm5/tab-select/public-api.js +0 -8
- package/esm5/tab-select/tab-option.component.js +0 -86
- package/esm5/tab-select/tab-select.component.js +0 -344
- package/esm5/tab-select/tab-select.module.js +0 -34
- package/esm5/user-profile/covalent-core-user-profile.js +0 -9
- package/esm5/user-profile/index.js +0 -6
- package/esm5/user-profile/public_api.js +0 -8
- package/esm5/user-profile/user-profile-menu/user-profile-menu.component.js +0 -42
- package/esm5/user-profile/user-profile.component.js +0 -29
- package/esm5/user-profile/user-profile.module.js +0 -36
- package/esm5/virtual-scroll/covalent-core-virtual-scroll.js +0 -9
- package/esm5/virtual-scroll/index.js +0 -6
- package/esm5/virtual-scroll/public-api.js +0 -8
- package/esm5/virtual-scroll/virtual-scroll-container.component.js +0 -468
- package/esm5/virtual-scroll/virtual-scroll-row.directive.js +0 -24
- package/esm5/virtual-scroll/virtual-scroll.module.js +0 -24
- package/fesm5/covalent-core-breadcrumbs.js +0 -535
- package/fesm5/covalent-core-breadcrumbs.js.map +0 -1
- package/fesm5/covalent-core-chips.js +0 -1484
- package/fesm5/covalent-core-chips.js.map +0 -1
- package/fesm5/covalent-core-common.js +0 -2961
- package/fesm5/covalent-core-common.js.map +0 -1
- package/fesm5/covalent-core-data-table.js +0 -2863
- package/fesm5/covalent-core-data-table.js.map +0 -1
- package/fesm5/covalent-core-dialogs.js +0 -1189
- package/fesm5/covalent-core-dialogs.js.map +0 -1
- package/fesm5/covalent-core-dynamic-menu.js +0 -214
- package/fesm5/covalent-core-dynamic-menu.js.map +0 -1
- package/fesm5/covalent-core-expansion-panel.js +0 -631
- package/fesm5/covalent-core-expansion-panel.js.map +0 -1
- package/fesm5/covalent-core-file.js +0 -1068
- package/fesm5/covalent-core-file.js.map +0 -1
- package/fesm5/covalent-core-json-formatter.js +0 -470
- package/fesm5/covalent-core-json-formatter.js.map +0 -1
- package/fesm5/covalent-core-layout.js +0 -1906
- package/fesm5/covalent-core-layout.js.map +0 -1
- package/fesm5/covalent-core-loading.js +0 -1562
- package/fesm5/covalent-core-loading.js.map +0 -1
- package/fesm5/covalent-core-media.js +0 -522
- package/fesm5/covalent-core-media.js.map +0 -1
- package/fesm5/covalent-core-menu.js +0 -58
- package/fesm5/covalent-core-menu.js.map +0 -1
- package/fesm5/covalent-core-message.js +0 -439
- package/fesm5/covalent-core-message.js.map +0 -1
- package/fesm5/covalent-core-nav-links.js +0 -224
- package/fesm5/covalent-core-nav-links.js.map +0 -1
- package/fesm5/covalent-core-notifications.js +0 -303
- package/fesm5/covalent-core-notifications.js.map +0 -1
- package/fesm5/covalent-core-paging.js +0 -579
- package/fesm5/covalent-core-paging.js.map +0 -1
- package/fesm5/covalent-core-search.js +0 -623
- package/fesm5/covalent-core-search.js.map +0 -1
- package/fesm5/covalent-core-sidesheet.js +0 -129
- package/fesm5/covalent-core-sidesheet.js.map +0 -1
- package/fesm5/covalent-core-steps.js +0 -1704
- package/fesm5/covalent-core-steps.js.map +0 -1
- package/fesm5/covalent-core-tab-select.js +0 -467
- package/fesm5/covalent-core-tab-select.js.map +0 -1
- package/fesm5/covalent-core-user-profile.js +0 -118
- package/fesm5/covalent-core-user-profile.js.map +0 -1
- package/fesm5/covalent-core-virtual-scroll.js +0 -526
- package/fesm5/covalent-core-virtual-scroll.js.map +0 -1
- package/fesm5/covalent-core.js +0 -10
- package/fesm5/covalent-core.js.map +0 -1
@@ -1,1453 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview added by tsickle
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
4
|
-
*/
|
5
|
-
import { __extends } from "tslib";
|
6
|
-
import { Component, Input, Output, forwardRef, ViewChild, ViewChildren, QueryList, HostListener, ElementRef, Optional, Inject, Directive, TemplateRef, ViewContainerRef, ContentChild, ChangeDetectionStrategy, ChangeDetectorRef, HostBinding, Renderer2, } from '@angular/core';
|
7
|
-
import { DOCUMENT } from '@angular/common';
|
8
|
-
import { EventEmitter } from '@angular/core';
|
9
|
-
import { NG_VALUE_ACCESSOR, FormControl } from '@angular/forms';
|
10
|
-
import { TemplatePortalDirective } from '@angular/cdk/portal';
|
11
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
12
|
-
import { UP_ARROW, DOWN_ARROW, ESCAPE, LEFT_ARROW, RIGHT_ARROW, DELETE, BACKSPACE, TAB, } from '@angular/cdk/keycodes';
|
13
|
-
import { MatChip } from '@angular/material/chips';
|
14
|
-
import { MatInput } from '@angular/material/input';
|
15
|
-
import { MatOption } from '@angular/material/core';
|
16
|
-
import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
|
17
|
-
import { Subscription, timer, merge, fromEvent } from 'rxjs';
|
18
|
-
import { filter, debounceTime } from 'rxjs/operators';
|
19
|
-
import { mixinDisabled, mixinControlValueAccessor } from '@covalent/core/common';
|
20
|
-
var TdChipDirective = /** @class */ (function (_super) {
|
21
|
-
__extends(TdChipDirective, _super);
|
22
|
-
function TdChipDirective(templateRef, viewContainerRef) {
|
23
|
-
return _super.call(this, templateRef, viewContainerRef) || this;
|
24
|
-
}
|
25
|
-
TdChipDirective.decorators = [
|
26
|
-
{ type: Directive, args: [{
|
27
|
-
selector: '[td-chip]ng-template',
|
28
|
-
},] }
|
29
|
-
];
|
30
|
-
/** @nocollapse */
|
31
|
-
TdChipDirective.ctorParameters = function () { return [
|
32
|
-
{ type: TemplateRef },
|
33
|
-
{ type: ViewContainerRef }
|
34
|
-
]; };
|
35
|
-
return TdChipDirective;
|
36
|
-
}(TemplatePortalDirective));
|
37
|
-
export { TdChipDirective };
|
38
|
-
var TdAutocompleteOptionDirective = /** @class */ (function (_super) {
|
39
|
-
__extends(TdAutocompleteOptionDirective, _super);
|
40
|
-
function TdAutocompleteOptionDirective(templateRef, viewContainerRef) {
|
41
|
-
return _super.call(this, templateRef, viewContainerRef) || this;
|
42
|
-
}
|
43
|
-
TdAutocompleteOptionDirective.decorators = [
|
44
|
-
{ type: Directive, args: [{
|
45
|
-
selector: '[td-autocomplete-option]ng-template',
|
46
|
-
},] }
|
47
|
-
];
|
48
|
-
/** @nocollapse */
|
49
|
-
TdAutocompleteOptionDirective.ctorParameters = function () { return [
|
50
|
-
{ type: TemplateRef },
|
51
|
-
{ type: ViewContainerRef }
|
52
|
-
]; };
|
53
|
-
return TdAutocompleteOptionDirective;
|
54
|
-
}(TemplatePortalDirective));
|
55
|
-
export { TdAutocompleteOptionDirective };
|
56
|
-
var TdChipsBase = /** @class */ (function () {
|
57
|
-
function TdChipsBase(_changeDetectorRef) {
|
58
|
-
this._changeDetectorRef = _changeDetectorRef;
|
59
|
-
}
|
60
|
-
return TdChipsBase;
|
61
|
-
}());
|
62
|
-
export { TdChipsBase };
|
63
|
-
if (false) {
|
64
|
-
/** @type {?} */
|
65
|
-
TdChipsBase.prototype._changeDetectorRef;
|
66
|
-
}
|
67
|
-
/* tslint:disable-next-line */
|
68
|
-
/** @type {?} */
|
69
|
-
export var _TdChipsMixinBase = mixinControlValueAccessor(mixinDisabled(TdChipsBase), []);
|
70
|
-
var TdChipsComponent = /** @class */ (function (_super) {
|
71
|
-
__extends(TdChipsComponent, _super);
|
72
|
-
function TdChipsComponent(_elementRef, _renderer, _document, _changeDetectorRef) {
|
73
|
-
var _this = _super.call(this, _changeDetectorRef) || this;
|
74
|
-
_this._elementRef = _elementRef;
|
75
|
-
_this._renderer = _renderer;
|
76
|
-
_this._document = _document;
|
77
|
-
_this._outsideClickSubs = Subscription.EMPTY;
|
78
|
-
_this._inputValueChangesSubs = Subscription.EMPTY;
|
79
|
-
_this._isMousedown = false;
|
80
|
-
_this._length = 0;
|
81
|
-
_this._stacked = false;
|
82
|
-
_this._requireMatch = false;
|
83
|
-
_this._color = 'primary';
|
84
|
-
_this._inputPosition = 'after';
|
85
|
-
_this._chipAddition = true;
|
86
|
-
_this._chipRemoval = true;
|
87
|
-
_this._focused = false;
|
88
|
-
_this._required = false;
|
89
|
-
_this._tabIndex = 0;
|
90
|
-
_this._touchendDebounce = 100;
|
91
|
-
_this._internalClick = false;
|
92
|
-
_this._internalActivateOption = false;
|
93
|
-
/**
|
94
|
-
* FormControl for the matInput element.
|
95
|
-
*/
|
96
|
-
_this.inputControl = new FormControl();
|
97
|
-
/**
|
98
|
-
* debounce?: number
|
99
|
-
* Debounce timeout between keypresses. Defaults to 200.
|
100
|
-
*/
|
101
|
-
_this.debounce = 200;
|
102
|
-
/**
|
103
|
-
* add?: function
|
104
|
-
* Method to be executed when a chip is added.
|
105
|
-
* Sends chip value as event.
|
106
|
-
*/
|
107
|
-
_this.add = new EventEmitter();
|
108
|
-
/**
|
109
|
-
* remove?: function
|
110
|
-
* Method to be executed when a chip is removed.
|
111
|
-
* Sends chip value as event.
|
112
|
-
*/
|
113
|
-
_this.remove = new EventEmitter();
|
114
|
-
/**
|
115
|
-
* inputChange?: function
|
116
|
-
* Method to be executed when the value in the autocomplete input changes.
|
117
|
-
* Sends string value as event.
|
118
|
-
*/
|
119
|
-
_this.inputChange = new EventEmitter();
|
120
|
-
/**
|
121
|
-
* chipFocus?: function
|
122
|
-
* Method to be executed when a chip is focused.
|
123
|
-
* Sends chip value as event.
|
124
|
-
*/
|
125
|
-
_this.chipFocus = new EventEmitter();
|
126
|
-
/**
|
127
|
-
* blur?: function
|
128
|
-
* Method to be executed when a chip is blurred.
|
129
|
-
* Sends chip value as event.
|
130
|
-
*/
|
131
|
-
_this.chipBlur = new EventEmitter();
|
132
|
-
/**
|
133
|
-
* compareWith? function
|
134
|
-
* Function used to check whether a chip value already exists.
|
135
|
-
* Defaults to strict equality comparison ===
|
136
|
-
*/
|
137
|
-
_this.compareWith = (/**
|
138
|
-
* @param {?} o1
|
139
|
-
* @param {?} o2
|
140
|
-
* @return {?}
|
141
|
-
*/
|
142
|
-
function (o1, o2) {
|
143
|
-
return o1 === o2;
|
144
|
-
});
|
145
|
-
_this._renderer.addClass(_this._elementRef.nativeElement, 'mat-' + _this._color);
|
146
|
-
return _this;
|
147
|
-
}
|
148
|
-
Object.defineProperty(TdChipsComponent.prototype, "focused", {
|
149
|
-
/**
|
150
|
-
* Flag that is true when autocomplete is focused.
|
151
|
-
*/
|
152
|
-
get: /**
|
153
|
-
* Flag that is true when autocomplete is focused.
|
154
|
-
* @return {?}
|
155
|
-
*/
|
156
|
-
function () {
|
157
|
-
return this._focused;
|
158
|
-
},
|
159
|
-
enumerable: true,
|
160
|
-
configurable: true
|
161
|
-
});
|
162
|
-
Object.defineProperty(TdChipsComponent.prototype, "items", {
|
163
|
-
get: /**
|
164
|
-
* @return {?}
|
165
|
-
*/
|
166
|
-
function () {
|
167
|
-
return this._items;
|
168
|
-
},
|
169
|
-
/**
|
170
|
-
* items?: any[]
|
171
|
-
* Renders the `mat-autocomplete` with the provided list to display as options.
|
172
|
-
*/
|
173
|
-
set: /**
|
174
|
-
* items?: any[]
|
175
|
-
* Renders the `mat-autocomplete` with the provided list to display as options.
|
176
|
-
* @param {?} items
|
177
|
-
* @return {?}
|
178
|
-
*/
|
179
|
-
function (items) {
|
180
|
-
this._items = items;
|
181
|
-
this._setFirstOptionActive();
|
182
|
-
this._changeDetectorRef.markForCheck();
|
183
|
-
},
|
184
|
-
enumerable: true,
|
185
|
-
configurable: true
|
186
|
-
});
|
187
|
-
Object.defineProperty(TdChipsComponent.prototype, "stacked", {
|
188
|
-
get: /**
|
189
|
-
* @return {?}
|
190
|
-
*/
|
191
|
-
function () {
|
192
|
-
return this._stacked;
|
193
|
-
},
|
194
|
-
/**
|
195
|
-
* stacked?: boolean
|
196
|
-
* Set stacked or horizontal chips depending on value.
|
197
|
-
* Defaults to false.
|
198
|
-
*/
|
199
|
-
set: /**
|
200
|
-
* stacked?: boolean
|
201
|
-
* Set stacked or horizontal chips depending on value.
|
202
|
-
* Defaults to false.
|
203
|
-
* @param {?} stacked
|
204
|
-
* @return {?}
|
205
|
-
*/
|
206
|
-
function (stacked) {
|
207
|
-
this._stacked = coerceBooleanProperty(stacked);
|
208
|
-
},
|
209
|
-
enumerable: true,
|
210
|
-
configurable: true
|
211
|
-
});
|
212
|
-
Object.defineProperty(TdChipsComponent.prototype, "inputPosition", {
|
213
|
-
get: /**
|
214
|
-
* @return {?}
|
215
|
-
*/
|
216
|
-
function () {
|
217
|
-
return this._inputPosition;
|
218
|
-
},
|
219
|
-
/**
|
220
|
-
* inputPosition?: 'before' | 'after'
|
221
|
-
* Set input position before or after the chips.
|
222
|
-
* Defaults to 'after'.
|
223
|
-
*/
|
224
|
-
set: /**
|
225
|
-
* inputPosition?: 'before' | 'after'
|
226
|
-
* Set input position before or after the chips.
|
227
|
-
* Defaults to 'after'.
|
228
|
-
* @param {?} inputPosition
|
229
|
-
* @return {?}
|
230
|
-
*/
|
231
|
-
function (inputPosition) {
|
232
|
-
this._inputPosition = inputPosition;
|
233
|
-
},
|
234
|
-
enumerable: true,
|
235
|
-
configurable: true
|
236
|
-
});
|
237
|
-
Object.defineProperty(TdChipsComponent.prototype, "requireMatch", {
|
238
|
-
get: /**
|
239
|
-
* @return {?}
|
240
|
-
*/
|
241
|
-
function () {
|
242
|
-
return this._requireMatch;
|
243
|
-
},
|
244
|
-
/**
|
245
|
-
* requireMatch?: boolean
|
246
|
-
* Blocks custom inputs and only allows selections from the autocomplete list.
|
247
|
-
*/
|
248
|
-
set: /**
|
249
|
-
* requireMatch?: boolean
|
250
|
-
* Blocks custom inputs and only allows selections from the autocomplete list.
|
251
|
-
* @param {?} requireMatch
|
252
|
-
* @return {?}
|
253
|
-
*/
|
254
|
-
function (requireMatch) {
|
255
|
-
this._requireMatch = coerceBooleanProperty(requireMatch);
|
256
|
-
},
|
257
|
-
enumerable: true,
|
258
|
-
configurable: true
|
259
|
-
});
|
260
|
-
Object.defineProperty(TdChipsComponent.prototype, "required", {
|
261
|
-
get: /**
|
262
|
-
* @return {?}
|
263
|
-
*/
|
264
|
-
function () {
|
265
|
-
return this._required;
|
266
|
-
},
|
267
|
-
/**
|
268
|
-
* required?: boolean
|
269
|
-
* Value is set to true if at least one chip is needed
|
270
|
-
* Defaults to false
|
271
|
-
*/
|
272
|
-
set: /**
|
273
|
-
* required?: boolean
|
274
|
-
* Value is set to true if at least one chip is needed
|
275
|
-
* Defaults to false
|
276
|
-
* @param {?} required
|
277
|
-
* @return {?}
|
278
|
-
*/
|
279
|
-
function (required) {
|
280
|
-
this._required = coerceBooleanProperty(required);
|
281
|
-
},
|
282
|
-
enumerable: true,
|
283
|
-
configurable: true
|
284
|
-
});
|
285
|
-
Object.defineProperty(TdChipsComponent.prototype, "chipAddition", {
|
286
|
-
get: /**
|
287
|
-
* @return {?}
|
288
|
-
*/
|
289
|
-
function () {
|
290
|
-
return this._chipAddition;
|
291
|
-
},
|
292
|
-
/**
|
293
|
-
* chipAddition?: boolean
|
294
|
-
* Disables the ability to add chips. When setting disabled as true, this will be overriden.
|
295
|
-
* Defaults to true.
|
296
|
-
*/
|
297
|
-
set: /**
|
298
|
-
* chipAddition?: boolean
|
299
|
-
* Disables the ability to add chips. When setting disabled as true, this will be overriden.
|
300
|
-
* Defaults to true.
|
301
|
-
* @param {?} chipAddition
|
302
|
-
* @return {?}
|
303
|
-
*/
|
304
|
-
function (chipAddition) {
|
305
|
-
this._chipAddition = chipAddition;
|
306
|
-
this._toggleInput();
|
307
|
-
},
|
308
|
-
enumerable: true,
|
309
|
-
configurable: true
|
310
|
-
});
|
311
|
-
Object.defineProperty(TdChipsComponent.prototype, "canAddChip", {
|
312
|
-
/**
|
313
|
-
* Checks if not in disabled state and if chipAddition is set to 'true'
|
314
|
-
* States if a chip can be added and if the input is available
|
315
|
-
*/
|
316
|
-
get: /**
|
317
|
-
* Checks if not in disabled state and if chipAddition is set to 'true'
|
318
|
-
* States if a chip can be added and if the input is available
|
319
|
-
* @return {?}
|
320
|
-
*/
|
321
|
-
function () {
|
322
|
-
return this.chipAddition && !this.disabled;
|
323
|
-
},
|
324
|
-
enumerable: true,
|
325
|
-
configurable: true
|
326
|
-
});
|
327
|
-
Object.defineProperty(TdChipsComponent.prototype, "chipRemoval", {
|
328
|
-
get: /**
|
329
|
-
* @return {?}
|
330
|
-
*/
|
331
|
-
function () {
|
332
|
-
return this._chipRemoval;
|
333
|
-
},
|
334
|
-
/**
|
335
|
-
* chipRemoval?: boolean
|
336
|
-
* Disables the ability to remove chips. If it doesn't exist chip remmoval defaults to true.
|
337
|
-
* When setting disabled as true, this will be overriden to false.
|
338
|
-
*/
|
339
|
-
set: /**
|
340
|
-
* chipRemoval?: boolean
|
341
|
-
* Disables the ability to remove chips. If it doesn't exist chip remmoval defaults to true.
|
342
|
-
* When setting disabled as true, this will be overriden to false.
|
343
|
-
* @param {?} chipRemoval
|
344
|
-
* @return {?}
|
345
|
-
*/
|
346
|
-
function (chipRemoval) {
|
347
|
-
this._chipRemoval = chipRemoval;
|
348
|
-
},
|
349
|
-
enumerable: true,
|
350
|
-
configurable: true
|
351
|
-
});
|
352
|
-
Object.defineProperty(TdChipsComponent.prototype, "canRemoveChip", {
|
353
|
-
/**
|
354
|
-
* Checks if not in disabled state and if chipRemoval is set to 'true'
|
355
|
-
* States if a chip can be removed
|
356
|
-
*/
|
357
|
-
get: /**
|
358
|
-
* Checks if not in disabled state and if chipRemoval is set to 'true'
|
359
|
-
* States if a chip can be removed
|
360
|
-
* @return {?}
|
361
|
-
*/
|
362
|
-
function () {
|
363
|
-
return this.chipRemoval && !this.disabled;
|
364
|
-
},
|
365
|
-
enumerable: true,
|
366
|
-
configurable: true
|
367
|
-
});
|
368
|
-
Object.defineProperty(TdChipsComponent.prototype, "displayPlaceHolder", {
|
369
|
-
/**
|
370
|
-
* returns the display placeholder
|
371
|
-
*/
|
372
|
-
get: /**
|
373
|
-
* returns the display placeholder
|
374
|
-
* @return {?}
|
375
|
-
*/
|
376
|
-
function () {
|
377
|
-
if (!this.canAddChip) {
|
378
|
-
return '';
|
379
|
-
}
|
380
|
-
return this._required ? this.placeholder + " *" : this.placeholder;
|
381
|
-
},
|
382
|
-
enumerable: true,
|
383
|
-
configurable: true
|
384
|
-
});
|
385
|
-
Object.defineProperty(TdChipsComponent.prototype, "color", {
|
386
|
-
get: /**
|
387
|
-
* @return {?}
|
388
|
-
*/
|
389
|
-
function () {
|
390
|
-
return this._color;
|
391
|
-
},
|
392
|
-
/**
|
393
|
-
* color?: 'primary' | 'accent' | 'warn'
|
394
|
-
* Sets the color for the input and focus/selected state of the chips.
|
395
|
-
* Defaults to 'primary'
|
396
|
-
*/
|
397
|
-
set: /**
|
398
|
-
* color?: 'primary' | 'accent' | 'warn'
|
399
|
-
* Sets the color for the input and focus/selected state of the chips.
|
400
|
-
* Defaults to 'primary'
|
401
|
-
* @param {?} color
|
402
|
-
* @return {?}
|
403
|
-
*/
|
404
|
-
function (color) {
|
405
|
-
if (color) {
|
406
|
-
this._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);
|
407
|
-
this._color = color;
|
408
|
-
this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);
|
409
|
-
}
|
410
|
-
},
|
411
|
-
enumerable: true,
|
412
|
-
configurable: true
|
413
|
-
});
|
414
|
-
Object.defineProperty(TdChipsComponent.prototype, "tabIndex", {
|
415
|
-
/**
|
416
|
-
* Hostbinding to set the a11y of the TdChipsComponent depending on its state
|
417
|
-
*/
|
418
|
-
get: /**
|
419
|
-
* Hostbinding to set the a11y of the TdChipsComponent depending on its state
|
420
|
-
* @return {?}
|
421
|
-
*/
|
422
|
-
function () {
|
423
|
-
return this.disabled ? -1 : this._tabIndex;
|
424
|
-
},
|
425
|
-
enumerable: true,
|
426
|
-
configurable: true
|
427
|
-
});
|
428
|
-
/**
|
429
|
-
* Listens to host focus event to act on it
|
430
|
-
*/
|
431
|
-
/**
|
432
|
-
* Listens to host focus event to act on it
|
433
|
-
* @param {?} event
|
434
|
-
* @return {?}
|
435
|
-
*/
|
436
|
-
TdChipsComponent.prototype.focusListener = /**
|
437
|
-
* Listens to host focus event to act on it
|
438
|
-
* @param {?} event
|
439
|
-
* @return {?}
|
440
|
-
*/
|
441
|
-
function (event) {
|
442
|
-
// should only focus if its not via mousedown to prevent clashing with autocomplete
|
443
|
-
if (!this._isMousedown) {
|
444
|
-
this.focus();
|
445
|
-
}
|
446
|
-
event.preventDefault();
|
447
|
-
};
|
448
|
-
/**
|
449
|
-
* Listens to host mousedown event to act on it
|
450
|
-
*/
|
451
|
-
/**
|
452
|
-
* Listens to host mousedown event to act on it
|
453
|
-
* @param {?} event
|
454
|
-
* @return {?}
|
455
|
-
*/
|
456
|
-
TdChipsComponent.prototype.mousedownListener = /**
|
457
|
-
* Listens to host mousedown event to act on it
|
458
|
-
* @param {?} event
|
459
|
-
* @return {?}
|
460
|
-
*/
|
461
|
-
function (event) {
|
462
|
-
var _this = this;
|
463
|
-
// sets a flag to know if there was a mousedown and then it returns it back to false
|
464
|
-
this._isMousedown = true;
|
465
|
-
timer()
|
466
|
-
.toPromise()
|
467
|
-
.then((/**
|
468
|
-
* @return {?}
|
469
|
-
*/
|
470
|
-
function () {
|
471
|
-
_this._isMousedown = false;
|
472
|
-
}));
|
473
|
-
};
|
474
|
-
/**
|
475
|
-
* If clicking on :host or `td-chips-wrapper`, then we stop the click propagation so the autocomplete
|
476
|
-
* doesnt close automatically.
|
477
|
-
*/
|
478
|
-
/**
|
479
|
-
* If clicking on :host or `td-chips-wrapper`, then we stop the click propagation so the autocomplete
|
480
|
-
* doesnt close automatically.
|
481
|
-
* @param {?} event
|
482
|
-
* @return {?}
|
483
|
-
*/
|
484
|
-
TdChipsComponent.prototype.clickListener = /**
|
485
|
-
* If clicking on :host or `td-chips-wrapper`, then we stop the click propagation so the autocomplete
|
486
|
-
* doesnt close automatically.
|
487
|
-
* @param {?} event
|
488
|
-
* @return {?}
|
489
|
-
*/
|
490
|
-
function (event) {
|
491
|
-
/** @type {?} */
|
492
|
-
var clickTarget = (/** @type {?} */ (event.target));
|
493
|
-
if (clickTarget === this._elementRef.nativeElement || clickTarget.className.indexOf('td-chips-wrapper') > -1) {
|
494
|
-
this.focus();
|
495
|
-
event.preventDefault();
|
496
|
-
event.stopPropagation();
|
497
|
-
}
|
498
|
-
};
|
499
|
-
/**
|
500
|
-
* Listens to host keydown event to act on it depending on the keypress
|
501
|
-
*/
|
502
|
-
/**
|
503
|
-
* Listens to host keydown event to act on it depending on the keypress
|
504
|
-
* @param {?} event
|
505
|
-
* @return {?}
|
506
|
-
*/
|
507
|
-
TdChipsComponent.prototype.keydownListener = /**
|
508
|
-
* Listens to host keydown event to act on it depending on the keypress
|
509
|
-
* @param {?} event
|
510
|
-
* @return {?}
|
511
|
-
*/
|
512
|
-
function (event) {
|
513
|
-
var _this = this;
|
514
|
-
switch (event.keyCode) {
|
515
|
-
case TAB:
|
516
|
-
// if tabing out, then unfocus the component
|
517
|
-
timer()
|
518
|
-
.toPromise()
|
519
|
-
.then((/**
|
520
|
-
* @return {?}
|
521
|
-
*/
|
522
|
-
function () {
|
523
|
-
_this.removeFocusedState();
|
524
|
-
}));
|
525
|
-
break;
|
526
|
-
case ESCAPE:
|
527
|
-
if (this._inputChild.focused) {
|
528
|
-
this._nativeInput.nativeElement.blur();
|
529
|
-
this.removeFocusedState();
|
530
|
-
this._closeAutocomplete();
|
531
|
-
}
|
532
|
-
else {
|
533
|
-
this.focus();
|
534
|
-
}
|
535
|
-
break;
|
536
|
-
default:
|
537
|
-
// default
|
538
|
-
}
|
539
|
-
};
|
540
|
-
/**
|
541
|
-
* @return {?}
|
542
|
-
*/
|
543
|
-
TdChipsComponent.prototype.ngOnInit = /**
|
544
|
-
* @return {?}
|
545
|
-
*/
|
546
|
-
function () {
|
547
|
-
var _this = this;
|
548
|
-
this._inputValueChangesSubs = this.inputControl.valueChanges
|
549
|
-
.pipe(debounceTime(this.debounce))
|
550
|
-
.subscribe((/**
|
551
|
-
* @param {?} value
|
552
|
-
* @return {?}
|
553
|
-
*/
|
554
|
-
function (value) {
|
555
|
-
_this.inputChange.emit(value ? value : '');
|
556
|
-
}));
|
557
|
-
this._changeDetectorRef.markForCheck();
|
558
|
-
};
|
559
|
-
/**
|
560
|
-
* @return {?}
|
561
|
-
*/
|
562
|
-
TdChipsComponent.prototype.ngAfterViewInit = /**
|
563
|
-
* @return {?}
|
564
|
-
*/
|
565
|
-
function () {
|
566
|
-
this._watchOutsideClick();
|
567
|
-
this._changeDetectorRef.markForCheck();
|
568
|
-
};
|
569
|
-
/**
|
570
|
-
* @return {?}
|
571
|
-
*/
|
572
|
-
TdChipsComponent.prototype.ngDoCheck = /**
|
573
|
-
* @return {?}
|
574
|
-
*/
|
575
|
-
function () {
|
576
|
-
// Throw onChange event only if array changes size.
|
577
|
-
if (this.value && this.value.length !== this._length) {
|
578
|
-
this._length = this.value.length;
|
579
|
-
this.onChange(this.value);
|
580
|
-
}
|
581
|
-
};
|
582
|
-
/**
|
583
|
-
* @return {?}
|
584
|
-
*/
|
585
|
-
TdChipsComponent.prototype.ngOnDestroy = /**
|
586
|
-
* @return {?}
|
587
|
-
*/
|
588
|
-
function () {
|
589
|
-
this._outsideClickSubs.unsubscribe();
|
590
|
-
this._inputValueChangesSubs.unsubscribe();
|
591
|
-
};
|
592
|
-
/**
|
593
|
-
* @return {?}
|
594
|
-
*/
|
595
|
-
TdChipsComponent.prototype._setInternalClick = /**
|
596
|
-
* @return {?}
|
597
|
-
*/
|
598
|
-
function () {
|
599
|
-
this._internalClick = true;
|
600
|
-
};
|
601
|
-
/** Method executed when the disabled value changes */
|
602
|
-
/**
|
603
|
-
* Method executed when the disabled value changes
|
604
|
-
* @param {?} v
|
605
|
-
* @return {?}
|
606
|
-
*/
|
607
|
-
TdChipsComponent.prototype.onDisabledChange = /**
|
608
|
-
* Method executed when the disabled value changes
|
609
|
-
* @param {?} v
|
610
|
-
* @return {?}
|
611
|
-
*/
|
612
|
-
function (v) {
|
613
|
-
this._toggleInput();
|
614
|
-
};
|
615
|
-
/**
|
616
|
-
* Method that is executed when trying to create a new chip from the autocomplete.
|
617
|
-
* It check if [requireMatch] is enabled, and tries to add the first active option
|
618
|
-
* else if just adds the value thats on the input
|
619
|
-
* returns 'true' if successful, 'false' if it fails.
|
620
|
-
*/
|
621
|
-
/**
|
622
|
-
* Method that is executed when trying to create a new chip from the autocomplete.
|
623
|
-
* It check if [requireMatch] is enabled, and tries to add the first active option
|
624
|
-
* else if just adds the value thats on the input
|
625
|
-
* returns 'true' if successful, 'false' if it fails.
|
626
|
-
* @return {?}
|
627
|
-
*/
|
628
|
-
TdChipsComponent.prototype._handleAddChip = /**
|
629
|
-
* Method that is executed when trying to create a new chip from the autocomplete.
|
630
|
-
* It check if [requireMatch] is enabled, and tries to add the first active option
|
631
|
-
* else if just adds the value thats on the input
|
632
|
-
* returns 'true' if successful, 'false' if it fails.
|
633
|
-
* @return {?}
|
634
|
-
*/
|
635
|
-
function () {
|
636
|
-
/** @type {?} */
|
637
|
-
var value;
|
638
|
-
if (this.requireMatch) {
|
639
|
-
/** @type {?} */
|
640
|
-
var selectedOptions = this._options.toArray().filter((/**
|
641
|
-
* @param {?} option
|
642
|
-
* @return {?}
|
643
|
-
*/
|
644
|
-
function (option) {
|
645
|
-
return option.active;
|
646
|
-
}));
|
647
|
-
if (selectedOptions.length > 0) {
|
648
|
-
value = selectedOptions[0].value;
|
649
|
-
selectedOptions[0].setInactiveStyles();
|
650
|
-
}
|
651
|
-
if (!value) {
|
652
|
-
return false;
|
653
|
-
}
|
654
|
-
}
|
655
|
-
else {
|
656
|
-
// if there is a selection, then use that
|
657
|
-
// else use the input value as chip
|
658
|
-
if (this._autocompleteTrigger.activeOption) {
|
659
|
-
value = this._autocompleteTrigger.activeOption.value;
|
660
|
-
this._autocompleteTrigger.activeOption.setInactiveStyles();
|
661
|
-
}
|
662
|
-
else {
|
663
|
-
value = this._inputChild.value;
|
664
|
-
if (value.trim() === '') {
|
665
|
-
return false;
|
666
|
-
}
|
667
|
-
}
|
668
|
-
}
|
669
|
-
return this.addChip(value);
|
670
|
-
};
|
671
|
-
/**
|
672
|
-
* Method thats exectuted when trying to add a value as chip
|
673
|
-
* returns 'true' if successful, 'false' if it fails.
|
674
|
-
*/
|
675
|
-
/**
|
676
|
-
* Method thats exectuted when trying to add a value as chip
|
677
|
-
* returns 'true' if successful, 'false' if it fails.
|
678
|
-
* @param {?} value
|
679
|
-
* @return {?}
|
680
|
-
*/
|
681
|
-
TdChipsComponent.prototype.addChip = /**
|
682
|
-
* Method thats exectuted when trying to add a value as chip
|
683
|
-
* returns 'true' if successful, 'false' if it fails.
|
684
|
-
* @param {?} value
|
685
|
-
* @return {?}
|
686
|
-
*/
|
687
|
-
function (value) {
|
688
|
-
/**
|
689
|
-
* add a debounce ms delay when reopening the autocomplete to give it time
|
690
|
-
* to rerender the next list and at the correct spot
|
691
|
-
*/
|
692
|
-
var _this = this;
|
693
|
-
this._closeAutocomplete();
|
694
|
-
timer(this.debounce)
|
695
|
-
.toPromise()
|
696
|
-
.then((/**
|
697
|
-
* @return {?}
|
698
|
-
*/
|
699
|
-
function () {
|
700
|
-
_this.setFocusedState();
|
701
|
-
_this._setFirstOptionActive();
|
702
|
-
_this._openAutocomplete();
|
703
|
-
}));
|
704
|
-
this.inputControl.setValue('');
|
705
|
-
// check if value is already part of the model
|
706
|
-
if (this.value.findIndex((/**
|
707
|
-
* @param {?} item
|
708
|
-
* @return {?}
|
709
|
-
*/
|
710
|
-
function (item) { return _this.compareWith(item, value); })) > -1) {
|
711
|
-
return false;
|
712
|
-
}
|
713
|
-
this.value.push(value);
|
714
|
-
this.add.emit(value);
|
715
|
-
this.onChange(this.value);
|
716
|
-
this._changeDetectorRef.markForCheck();
|
717
|
-
return true;
|
718
|
-
};
|
719
|
-
/**
|
720
|
-
* Method that is executed when trying to remove a chip.
|
721
|
-
* returns 'true' if successful, 'false' if it fails.
|
722
|
-
*/
|
723
|
-
/**
|
724
|
-
* Method that is executed when trying to remove a chip.
|
725
|
-
* returns 'true' if successful, 'false' if it fails.
|
726
|
-
* @param {?} index
|
727
|
-
* @return {?}
|
728
|
-
*/
|
729
|
-
TdChipsComponent.prototype.removeChip = /**
|
730
|
-
* Method that is executed when trying to remove a chip.
|
731
|
-
* returns 'true' if successful, 'false' if it fails.
|
732
|
-
* @param {?} index
|
733
|
-
* @return {?}
|
734
|
-
*/
|
735
|
-
function (index) {
|
736
|
-
/** @type {?} */
|
737
|
-
var removedValues = this.value.splice(index, 1);
|
738
|
-
if (removedValues.length === 0) {
|
739
|
-
return false;
|
740
|
-
}
|
741
|
-
/**
|
742
|
-
* Checks if deleting last single chip, to focus input afterwards
|
743
|
-
* Else check if its not the last chip of the list to focus the next one.
|
744
|
-
*/
|
745
|
-
if (index === this._totalChips - 1 && index === 0) {
|
746
|
-
this._inputChild.focus();
|
747
|
-
}
|
748
|
-
else if (index < this._totalChips - 1) {
|
749
|
-
this._focusChip(index + 1);
|
750
|
-
}
|
751
|
-
else if (index > 0) {
|
752
|
-
this._focusChip(index - 1);
|
753
|
-
}
|
754
|
-
this.remove.emit(removedValues[0]);
|
755
|
-
this.onChange(this.value);
|
756
|
-
this.inputControl.setValue('');
|
757
|
-
this._changeDetectorRef.markForCheck();
|
758
|
-
return true;
|
759
|
-
};
|
760
|
-
/**
|
761
|
-
* Sets blur of chip and sends out event
|
762
|
-
*/
|
763
|
-
/**
|
764
|
-
* Sets blur of chip and sends out event
|
765
|
-
* @param {?} event
|
766
|
-
* @param {?} value
|
767
|
-
* @return {?}
|
768
|
-
*/
|
769
|
-
TdChipsComponent.prototype._handleChipBlur = /**
|
770
|
-
* Sets blur of chip and sends out event
|
771
|
-
* @param {?} event
|
772
|
-
* @param {?} value
|
773
|
-
* @return {?}
|
774
|
-
*/
|
775
|
-
function (event, value) {
|
776
|
-
this.chipBlur.emit(value);
|
777
|
-
};
|
778
|
-
/**
|
779
|
-
* Sets focus of chip and sends out event
|
780
|
-
*/
|
781
|
-
/**
|
782
|
-
* Sets focus of chip and sends out event
|
783
|
-
* @param {?} event
|
784
|
-
* @param {?} value
|
785
|
-
* @return {?}
|
786
|
-
*/
|
787
|
-
TdChipsComponent.prototype._handleChipFocus = /**
|
788
|
-
* Sets focus of chip and sends out event
|
789
|
-
* @param {?} event
|
790
|
-
* @param {?} value
|
791
|
-
* @return {?}
|
792
|
-
*/
|
793
|
-
function (event, value) {
|
794
|
-
this.setFocusedState();
|
795
|
-
this.chipFocus.emit(value);
|
796
|
-
};
|
797
|
-
/**
|
798
|
-
* @return {?}
|
799
|
-
*/
|
800
|
-
TdChipsComponent.prototype._handleFocus = /**
|
801
|
-
* @return {?}
|
802
|
-
*/
|
803
|
-
function () {
|
804
|
-
this.setFocusedState();
|
805
|
-
this._setFirstOptionActive();
|
806
|
-
return true;
|
807
|
-
};
|
808
|
-
/**
|
809
|
-
* Sets focus state of the component
|
810
|
-
*/
|
811
|
-
/**
|
812
|
-
* Sets focus state of the component
|
813
|
-
* @return {?}
|
814
|
-
*/
|
815
|
-
TdChipsComponent.prototype.setFocusedState = /**
|
816
|
-
* Sets focus state of the component
|
817
|
-
* @return {?}
|
818
|
-
*/
|
819
|
-
function () {
|
820
|
-
if (!this.disabled) {
|
821
|
-
this._focused = true;
|
822
|
-
this._tabIndex = -1;
|
823
|
-
this._changeDetectorRef.markForCheck();
|
824
|
-
}
|
825
|
-
};
|
826
|
-
/**
|
827
|
-
* Removes focus state of the component
|
828
|
-
*/
|
829
|
-
/**
|
830
|
-
* Removes focus state of the component
|
831
|
-
* @return {?}
|
832
|
-
*/
|
833
|
-
TdChipsComponent.prototype.removeFocusedState = /**
|
834
|
-
* Removes focus state of the component
|
835
|
-
* @return {?}
|
836
|
-
*/
|
837
|
-
function () {
|
838
|
-
this._focused = false;
|
839
|
-
this._tabIndex = 0;
|
840
|
-
this._changeDetectorRef.markForCheck();
|
841
|
-
};
|
842
|
-
/**
|
843
|
-
* Programmatically focus the input or first chip. Since its the component entry point
|
844
|
-
* depending if a user can add or remove chips
|
845
|
-
*/
|
846
|
-
/**
|
847
|
-
* Programmatically focus the input or first chip. Since its the component entry point
|
848
|
-
* depending if a user can add or remove chips
|
849
|
-
* @return {?}
|
850
|
-
*/
|
851
|
-
TdChipsComponent.prototype.focus = /**
|
852
|
-
* Programmatically focus the input or first chip. Since its the component entry point
|
853
|
-
* depending if a user can add or remove chips
|
854
|
-
* @return {?}
|
855
|
-
*/
|
856
|
-
function () {
|
857
|
-
if (this.canAddChip) {
|
858
|
-
this._inputChild.focus();
|
859
|
-
}
|
860
|
-
else if (!this.disabled) {
|
861
|
-
this._focusFirstChip();
|
862
|
-
}
|
863
|
-
};
|
864
|
-
/**
|
865
|
-
* Passes relevant input key presses.
|
866
|
-
*/
|
867
|
-
/**
|
868
|
-
* Passes relevant input key presses.
|
869
|
-
* @param {?} event
|
870
|
-
* @return {?}
|
871
|
-
*/
|
872
|
-
TdChipsComponent.prototype._inputKeydown = /**
|
873
|
-
* Passes relevant input key presses.
|
874
|
-
* @param {?} event
|
875
|
-
* @return {?}
|
876
|
-
*/
|
877
|
-
function (event) {
|
878
|
-
switch (event.keyCode) {
|
879
|
-
case UP_ARROW:
|
880
|
-
/**
|
881
|
-
* Since the first item is highlighted on [requireMatch], we need to inactivate it
|
882
|
-
* when pressing the up key
|
883
|
-
*/
|
884
|
-
if (this.requireMatch) {
|
885
|
-
/** @type {?} */
|
886
|
-
var length_1 = this._options.length;
|
887
|
-
if (length_1 > 1 && this._options.toArray()[0].active && this._internalActivateOption) {
|
888
|
-
this._options.toArray()[0].setInactiveStyles();
|
889
|
-
this._internalActivateOption = false;
|
890
|
-
// prevent default window scrolling
|
891
|
-
event.preventDefault();
|
892
|
-
}
|
893
|
-
}
|
894
|
-
break;
|
895
|
-
case LEFT_ARROW:
|
896
|
-
case DELETE:
|
897
|
-
case BACKSPACE:
|
898
|
-
this._closeAutocomplete();
|
899
|
-
/** Check to see if input is empty when pressing left arrow to move to the last chip */
|
900
|
-
if (!this._inputChild.value) {
|
901
|
-
this._focusLastChip();
|
902
|
-
// prevent default window scrolling
|
903
|
-
event.preventDefault();
|
904
|
-
}
|
905
|
-
break;
|
906
|
-
case RIGHT_ARROW:
|
907
|
-
this._closeAutocomplete();
|
908
|
-
/** Check to see if input is empty when pressing right arrow to move to the first chip */
|
909
|
-
if (!this._inputChild.value) {
|
910
|
-
this._focusFirstChip();
|
911
|
-
// prevent default window scrolling
|
912
|
-
event.preventDefault();
|
913
|
-
}
|
914
|
-
break;
|
915
|
-
default:
|
916
|
-
// default
|
917
|
-
}
|
918
|
-
};
|
919
|
-
/**
|
920
|
-
* Passes relevant chip key presses.
|
921
|
-
*/
|
922
|
-
/**
|
923
|
-
* Passes relevant chip key presses.
|
924
|
-
* @param {?} event
|
925
|
-
* @param {?} index
|
926
|
-
* @return {?}
|
927
|
-
*/
|
928
|
-
TdChipsComponent.prototype._chipKeydown = /**
|
929
|
-
* Passes relevant chip key presses.
|
930
|
-
* @param {?} event
|
931
|
-
* @param {?} index
|
932
|
-
* @return {?}
|
933
|
-
*/
|
934
|
-
function (event, index) {
|
935
|
-
switch (event.keyCode) {
|
936
|
-
case DELETE:
|
937
|
-
case BACKSPACE:
|
938
|
-
/** Check to see if we can delete a chip */
|
939
|
-
if (this.canRemoveChip) {
|
940
|
-
this.removeChip(index);
|
941
|
-
}
|
942
|
-
break;
|
943
|
-
case UP_ARROW:
|
944
|
-
case LEFT_ARROW:
|
945
|
-
/**
|
946
|
-
* Check to see if left/down arrow was pressed while focusing the first chip to focus input next
|
947
|
-
* Also check if input should be focused
|
948
|
-
*/
|
949
|
-
if (index === 0) {
|
950
|
-
// only try to target input if pressing left
|
951
|
-
if (this.canAddChip && event.keyCode === LEFT_ARROW) {
|
952
|
-
this._inputChild.focus();
|
953
|
-
}
|
954
|
-
else {
|
955
|
-
this._focusLastChip();
|
956
|
-
}
|
957
|
-
}
|
958
|
-
else if (index > 0) {
|
959
|
-
this._focusChip(index - 1);
|
960
|
-
}
|
961
|
-
// prevent default window scrolling
|
962
|
-
event.preventDefault();
|
963
|
-
break;
|
964
|
-
case DOWN_ARROW:
|
965
|
-
case RIGHT_ARROW:
|
966
|
-
/**
|
967
|
-
* Check to see if right/up arrow was pressed while focusing the last chip to focus input next
|
968
|
-
* Also check if input should be focused
|
969
|
-
*/
|
970
|
-
if (index === this._totalChips - 1) {
|
971
|
-
// only try to target input if pressing right
|
972
|
-
if (this.canAddChip && event.keyCode === RIGHT_ARROW) {
|
973
|
-
this._inputChild.focus();
|
974
|
-
}
|
975
|
-
else {
|
976
|
-
this._focusFirstChip();
|
977
|
-
}
|
978
|
-
}
|
979
|
-
else if (index < this._totalChips - 1) {
|
980
|
-
this._focusChip(index + 1);
|
981
|
-
}
|
982
|
-
// prevent default window scrolling
|
983
|
-
event.preventDefault();
|
984
|
-
break;
|
985
|
-
default:
|
986
|
-
// default
|
987
|
-
}
|
988
|
-
};
|
989
|
-
/**
|
990
|
-
* Method to remove from display the value added from the autocomplete since it goes directly as chip.
|
991
|
-
*/
|
992
|
-
/**
|
993
|
-
* Method to remove from display the value added from the autocomplete since it goes directly as chip.
|
994
|
-
* @return {?}
|
995
|
-
*/
|
996
|
-
TdChipsComponent.prototype._removeInputDisplay = /**
|
997
|
-
* Method to remove from display the value added from the autocomplete since it goes directly as chip.
|
998
|
-
* @return {?}
|
999
|
-
*/
|
1000
|
-
function () {
|
1001
|
-
return '';
|
1002
|
-
};
|
1003
|
-
/**
|
1004
|
-
* Method to open the autocomplete manually if its not already opened
|
1005
|
-
*/
|
1006
|
-
/**
|
1007
|
-
* Method to open the autocomplete manually if its not already opened
|
1008
|
-
* @return {?}
|
1009
|
-
*/
|
1010
|
-
TdChipsComponent.prototype._openAutocomplete = /**
|
1011
|
-
* Method to open the autocomplete manually if its not already opened
|
1012
|
-
* @return {?}
|
1013
|
-
*/
|
1014
|
-
function () {
|
1015
|
-
if (!this._autocompleteTrigger.panelOpen) {
|
1016
|
-
this._autocompleteTrigger.openPanel();
|
1017
|
-
this._changeDetectorRef.markForCheck();
|
1018
|
-
}
|
1019
|
-
};
|
1020
|
-
/**
|
1021
|
-
* Method to close the autocomplete manually if its not already closed
|
1022
|
-
*/
|
1023
|
-
/**
|
1024
|
-
* Method to close the autocomplete manually if its not already closed
|
1025
|
-
* @return {?}
|
1026
|
-
*/
|
1027
|
-
TdChipsComponent.prototype._closeAutocomplete = /**
|
1028
|
-
* Method to close the autocomplete manually if its not already closed
|
1029
|
-
* @return {?}
|
1030
|
-
*/
|
1031
|
-
function () {
|
1032
|
-
if (this._autocompleteTrigger.panelOpen) {
|
1033
|
-
this._autocompleteTrigger.closePanel();
|
1034
|
-
this._changeDetectorRef.markForCheck();
|
1035
|
-
}
|
1036
|
-
};
|
1037
|
-
Object.defineProperty(TdChipsComponent.prototype, "_totalChips", {
|
1038
|
-
/**
|
1039
|
-
* Get total of chips
|
1040
|
-
*/
|
1041
|
-
get: /**
|
1042
|
-
* Get total of chips
|
1043
|
-
* @return {?}
|
1044
|
-
*/
|
1045
|
-
function () {
|
1046
|
-
/** @type {?} */
|
1047
|
-
var chips = this._chipsChildren.toArray();
|
1048
|
-
return chips.length;
|
1049
|
-
},
|
1050
|
-
enumerable: true,
|
1051
|
-
configurable: true
|
1052
|
-
});
|
1053
|
-
/**
|
1054
|
-
* Method to focus a desired chip by index
|
1055
|
-
*/
|
1056
|
-
/**
|
1057
|
-
* Method to focus a desired chip by index
|
1058
|
-
* @private
|
1059
|
-
* @param {?} index
|
1060
|
-
* @return {?}
|
1061
|
-
*/
|
1062
|
-
TdChipsComponent.prototype._focusChip = /**
|
1063
|
-
* Method to focus a desired chip by index
|
1064
|
-
* @private
|
1065
|
-
* @param {?} index
|
1066
|
-
* @return {?}
|
1067
|
-
*/
|
1068
|
-
function (index) {
|
1069
|
-
/** check to see if index exists in the array before focusing */
|
1070
|
-
if (index > -1 && this._totalChips > index) {
|
1071
|
-
this._chipsChildren.toArray()[index].focus();
|
1072
|
-
}
|
1073
|
-
};
|
1074
|
-
/** Method to focus first chip */
|
1075
|
-
/**
|
1076
|
-
* Method to focus first chip
|
1077
|
-
* @private
|
1078
|
-
* @return {?}
|
1079
|
-
*/
|
1080
|
-
TdChipsComponent.prototype._focusFirstChip = /**
|
1081
|
-
* Method to focus first chip
|
1082
|
-
* @private
|
1083
|
-
* @return {?}
|
1084
|
-
*/
|
1085
|
-
function () {
|
1086
|
-
this._focusChip(0);
|
1087
|
-
};
|
1088
|
-
/** Method to focus last chip */
|
1089
|
-
/**
|
1090
|
-
* Method to focus last chip
|
1091
|
-
* @private
|
1092
|
-
* @return {?}
|
1093
|
-
*/
|
1094
|
-
TdChipsComponent.prototype._focusLastChip = /**
|
1095
|
-
* Method to focus last chip
|
1096
|
-
* @private
|
1097
|
-
* @return {?}
|
1098
|
-
*/
|
1099
|
-
function () {
|
1100
|
-
this._focusChip(this._totalChips - 1);
|
1101
|
-
};
|
1102
|
-
/**
|
1103
|
-
* Method to toggle the disable state of input
|
1104
|
-
* Checks if not in disabled state and if chipAddition is set to 'true'
|
1105
|
-
*/
|
1106
|
-
/**
|
1107
|
-
* Method to toggle the disable state of input
|
1108
|
-
* Checks if not in disabled state and if chipAddition is set to 'true'
|
1109
|
-
* @private
|
1110
|
-
* @return {?}
|
1111
|
-
*/
|
1112
|
-
TdChipsComponent.prototype._toggleInput = /**
|
1113
|
-
* Method to toggle the disable state of input
|
1114
|
-
* Checks if not in disabled state and if chipAddition is set to 'true'
|
1115
|
-
* @private
|
1116
|
-
* @return {?}
|
1117
|
-
*/
|
1118
|
-
function () {
|
1119
|
-
if (this.canAddChip) {
|
1120
|
-
this.inputControl.enable();
|
1121
|
-
}
|
1122
|
-
else {
|
1123
|
-
this.inputControl.disable();
|
1124
|
-
}
|
1125
|
-
this._changeDetectorRef.markForCheck();
|
1126
|
-
};
|
1127
|
-
/**
|
1128
|
-
* Sets first option as active to let the user know which one will be added when pressing enter
|
1129
|
-
* Only if [requireMatch] has been set
|
1130
|
-
*/
|
1131
|
-
/**
|
1132
|
-
* Sets first option as active to let the user know which one will be added when pressing enter
|
1133
|
-
* Only if [requireMatch] has been set
|
1134
|
-
* @private
|
1135
|
-
* @return {?}
|
1136
|
-
*/
|
1137
|
-
TdChipsComponent.prototype._setFirstOptionActive = /**
|
1138
|
-
* Sets first option as active to let the user know which one will be added when pressing enter
|
1139
|
-
* Only if [requireMatch] has been set
|
1140
|
-
* @private
|
1141
|
-
* @return {?}
|
1142
|
-
*/
|
1143
|
-
function () {
|
1144
|
-
var _this = this;
|
1145
|
-
if (this.requireMatch) {
|
1146
|
-
// need to use a timer here to wait until the autocomplete has been opened (end of queue)
|
1147
|
-
timer()
|
1148
|
-
.toPromise()
|
1149
|
-
.then((/**
|
1150
|
-
* @return {?}
|
1151
|
-
*/
|
1152
|
-
function () {
|
1153
|
-
if (_this.focused && _this._options && _this._options.length > 0) {
|
1154
|
-
// clean up of previously active options
|
1155
|
-
_this._options.toArray().forEach((/**
|
1156
|
-
* @param {?} option
|
1157
|
-
* @return {?}
|
1158
|
-
*/
|
1159
|
-
function (option) {
|
1160
|
-
option.setInactiveStyles();
|
1161
|
-
}));
|
1162
|
-
// set the first one as active
|
1163
|
-
_this._options.toArray()[0].setActiveStyles();
|
1164
|
-
_this._internalActivateOption = true;
|
1165
|
-
_this._changeDetectorRef.markForCheck();
|
1166
|
-
}
|
1167
|
-
}));
|
1168
|
-
}
|
1169
|
-
};
|
1170
|
-
/**
|
1171
|
-
* Watches clicks outside of the component to remove the focus
|
1172
|
-
* The autocomplete panel is considered inside the component so we
|
1173
|
-
* need to use a flag to find out when its clicked.
|
1174
|
-
*/
|
1175
|
-
/**
|
1176
|
-
* Watches clicks outside of the component to remove the focus
|
1177
|
-
* The autocomplete panel is considered inside the component so we
|
1178
|
-
* need to use a flag to find out when its clicked.
|
1179
|
-
* @private
|
1180
|
-
* @return {?}
|
1181
|
-
*/
|
1182
|
-
TdChipsComponent.prototype._watchOutsideClick = /**
|
1183
|
-
* Watches clicks outside of the component to remove the focus
|
1184
|
-
* The autocomplete panel is considered inside the component so we
|
1185
|
-
* need to use a flag to find out when its clicked.
|
1186
|
-
* @private
|
1187
|
-
* @return {?}
|
1188
|
-
*/
|
1189
|
-
function () {
|
1190
|
-
var _this = this;
|
1191
|
-
if (this._document) {
|
1192
|
-
this._outsideClickSubs = merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'touchend'))
|
1193
|
-
.pipe(debounceTime(this._touchendDebounce), filter((/**
|
1194
|
-
* @param {?} event
|
1195
|
-
* @return {?}
|
1196
|
-
*/
|
1197
|
-
function (event) {
|
1198
|
-
/** @type {?} */
|
1199
|
-
var clickTarget = (/** @type {?} */ (event.target));
|
1200
|
-
setTimeout((/**
|
1201
|
-
* @return {?}
|
1202
|
-
*/
|
1203
|
-
function () {
|
1204
|
-
_this._internalClick = false;
|
1205
|
-
}));
|
1206
|
-
return (_this.focused &&
|
1207
|
-
clickTarget !== _this._elementRef.nativeElement &&
|
1208
|
-
!_this._elementRef.nativeElement.contains(clickTarget) &&
|
1209
|
-
!_this._internalClick);
|
1210
|
-
})))
|
1211
|
-
.subscribe((/**
|
1212
|
-
* @return {?}
|
1213
|
-
*/
|
1214
|
-
function () {
|
1215
|
-
if (_this.focused) {
|
1216
|
-
_this._autocompleteTrigger.closePanel();
|
1217
|
-
_this.removeFocusedState();
|
1218
|
-
_this.onTouched();
|
1219
|
-
_this._changeDetectorRef.markForCheck();
|
1220
|
-
}
|
1221
|
-
}));
|
1222
|
-
}
|
1223
|
-
return undefined;
|
1224
|
-
};
|
1225
|
-
TdChipsComponent.decorators = [
|
1226
|
-
{ type: Component, args: [{
|
1227
|
-
providers: [
|
1228
|
-
{
|
1229
|
-
provide: NG_VALUE_ACCESSOR,
|
1230
|
-
useExisting: forwardRef((/**
|
1231
|
-
* @return {?}
|
1232
|
-
*/
|
1233
|
-
function () { return TdChipsComponent; })),
|
1234
|
-
multi: true,
|
1235
|
-
},
|
1236
|
-
],
|
1237
|
-
selector: 'td-chips',
|
1238
|
-
inputs: ['disabled', 'value'],
|
1239
|
-
template: "<div\n class=\"td-chips-wrapper\"\n [class.td-chips-stacked]=\"stacked\"\n [class.td-chips-input-before-position]=\"inputPosition === 'before'\"\n>\n <ng-template let-chip let-first=\"first\" let-index=\"index\" ngFor [ngForOf]=\"value\">\n <mat-basic-chip\n [class.td-chip-disabled]=\"disabled\"\n [class.td-chip-after-pad]=\"!canRemoveChip\"\n [disableRipple]=\"true\"\n [color]=\"color\"\n (keydown)=\"_chipKeydown($event, index)\"\n (blur)=\"_handleChipBlur($event, chip)\"\n (focus)=\"_handleChipFocus($event, chip)\"\n >\n <div class=\"td-chip\" [class.td-chip-stacked]=\"stacked\">\n <span class=\"td-chip-content\">\n <span *ngIf=\"!_chipTemplate?.templateRef\">{{ chip }}</span>\n <ng-template\n *ngIf=\"_chipTemplate?.templateRef\"\n [ngTemplateOutlet]=\"_chipTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ chip: chip }\"\n ></ng-template>\n </span>\n <mat-icon *ngIf=\"canRemoveChip\" class=\"td-chip-removal\" (click)=\"_internalClick = removeChip(index)\">\n cancel\n </mat-icon>\n </div>\n </mat-basic-chip>\n </ng-template>\n <mat-form-field\n floatLabel=\"never\"\n class=\"td-chips-form-field\"\n [style.width.px]=\"canAddChip ? null : 0\"\n [style.height.px]=\"canAddChip ? null : 0\"\n [color]=\"color\"\n >\n <input\n matInput\n #input\n [tabIndex]=\"-1\"\n [matAutocomplete]=\"autocomplete\"\n [formControl]=\"inputControl\"\n [placeholder]=\"displayPlaceHolder\"\n (keydown)=\"_inputKeydown($event)\"\n (keyup.enter)=\"_handleAddChip()\"\n (focus)=\"_handleFocus()\"\n />\n </mat-form-field>\n <mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n [displayWith]=\"_removeInputDisplay\"\n (optionSelected)=\"addChip($event.option.value)\"\n >\n <ng-template let-item let-first=\"first\" ngFor [ngForOf]=\"items\">\n <mat-option (click)=\"_setInternalClick()\" [value]=\"item\">\n <span *ngIf=\"!_autocompleteOptionTemplate?.templateRef\">{{ item }}</span>\n <ng-template\n *ngIf=\"_autocompleteOptionTemplate?.templateRef\"\n [ngTemplateOutlet]=\"_autocompleteOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ option: item }\"\n ></ng-template>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n</div>\n<div *ngIf=\"chipAddition\" class=\"mat-form-field-underline\" [class.mat-disabled]=\"disabled\">\n <span class=\"mat-form-field-ripple\" [class.mat-focused]=\"focused\"></span>\n</div>\n<ng-content></ng-content>\n",
|
1240
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
1241
|
-
styles: [":host{display:block;padding:0 5px;min-height:48px}:host .td-chips-wrapper{min-height:42px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host .td-chips-wrapper.td-chips-stacked .mat-basic-chip,:host .td-chips-wrapper.td-chips-stacked .td-chips-form-field{width:100%}:host .td-chips-wrapper.td-chips-input-before-position .td-chips-form-field{-ms-flex-order:-1;order:-1}:host .td-chip,:host .td-chip>.td-chip-content{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;max-width:100%;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;-ms-flex-pack:start;justify-content:flex-start;min-width:0}:host .td-chip.td-chip-stacked,:host .td-chip>.td-chip-content.td-chip-stacked{-ms-flex-pack:justify;justify-content:space-between}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:2px}:host ::ng-deep .mat-basic-chip{display:inline-block;cursor:default;border-radius:16px;margin:8px 8px 0 0;box-sizing:border-box;max-width:100%;position:relative}html[dir=rtl] :host ::ng-deep .mat-basic-chip{margin:8px 0 0 8px;unicode-bidi:embed}body[dir=rtl] :host ::ng-deep .mat-basic-chip{margin:8px 0 0 8px;unicode-bidi:embed}[dir=rtl] :host ::ng-deep .mat-basic-chip{margin:8px 0 0 8px;unicode-bidi:embed}:host ::ng-deep .mat-basic-chip bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip .td-chip{min-height:32px;line-height:32px;font-size:13px;padding:0 0 0 12px}html[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip{padding:0 12px 0 0;unicode-bidi:embed}body[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip{padding:0 12px 0 0;unicode-bidi:embed}[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip{padding:0 12px 0 0;unicode-bidi:embed}:host ::ng-deep .mat-basic-chip .td-chip bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip .td-chip bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{display:inline-block;-ms-flex-order:-20;order:-20;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;text-align:center;height:32px;width:32px;margin:0 8px 0 -12px;border-radius:50%;-ms-flex:0 0 auto;flex:0 0 auto;box-sizing:border-box}html[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{margin:0 -12px 0 8px;unicode-bidi:embed}body[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{margin:0 -12px 0 8px;unicode-bidi:embed}[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{margin:0 -12px 0 8px;unicode-bidi:embed}:host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar] bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar] bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip.td-chip-after-pad{padding:0 12px 0 0}html[dir=rtl] :host ::ng-deep .mat-basic-chip.td-chip-after-pad{padding:0 0 0 12px;unicode-bidi:embed}body[dir=rtl] :host ::ng-deep .mat-basic-chip.td-chip-after-pad{padding:0 0 0 12px;unicode-bidi:embed}[dir=rtl] :host ::ng-deep .mat-basic-chip.td-chip-after-pad{padding:0 0 0 12px;unicode-bidi:embed}:host ::ng-deep .mat-basic-chip.td-chip-after-pad bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip.td-chip-after-pad bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host ::ng-deep .mat-basic-chip mat-icon.td-chip-removal{margin:0 4px;font-size:21px;line-height:22px}:host ::ng-deep .mat-basic-chip mat-icon.td-chip-removal:hover{cursor:pointer}:host ::ng-deep .td-chips-stacked .mat-basic-chip{margin:4px 0}:host ::ng-deep .td-chips-stacked .mat-basic-chip:first-of-type{margin:8px 0 4px}:host ::ng-deep .td-chips-stacked .mat-basic-chip:last-of-type{margin:4px 0 8px}:host .mat-form-field-underline{position:relative;height:1px;width:100%;bottom:0}:host .mat-form-field-underline.mat-disabled{background-position:0;bottom:-4px;background-color:transparent}:host .mat-form-field-underline .mat-form-field-ripple{position:absolute;height:2px;top:0;width:100%;-ms-transform-origin:50%;transform-origin:50%;-ms-transform:scaleX(.5);transform:scaleX(.5);visibility:hidden;opacity:0;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}:host .mat-form-field-underline .mat-form-field-ripple.mat-focused{visibility:visible;opacity:1;-ms-transform:scaleX(1);transform:scaleX(1);transition:transform 150ms linear,background-color .3s cubic-bezier(.55,0,.55,.2)}:host.ng-invalid .mat-form-field-underline .mat-form-field-ripple{visibility:visible;opacity:1;-ms-transform:scaleX(1);transform:scaleX(1);transition:transform 150ms linear,background-color .3s cubic-bezier(.55,0,.55,.2)}:host ::ng-deep mat-form-field .mat-form-field-underline{display:none}"]
|
1242
|
-
}] }
|
1243
|
-
];
|
1244
|
-
/** @nocollapse */
|
1245
|
-
TdChipsComponent.ctorParameters = function () { return [
|
1246
|
-
{ type: ElementRef },
|
1247
|
-
{ type: Renderer2 },
|
1248
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
|
1249
|
-
{ type: ChangeDetectorRef }
|
1250
|
-
]; };
|
1251
|
-
TdChipsComponent.propDecorators = {
|
1252
|
-
_nativeInput: [{ type: ViewChild, args: ['input', { static: true },] }],
|
1253
|
-
_inputChild: [{ type: ViewChild, args: [MatInput, { static: true },] }],
|
1254
|
-
_autocompleteTrigger: [{ type: ViewChild, args: [MatAutocompleteTrigger, { static: true },] }],
|
1255
|
-
_chipsChildren: [{ type: ViewChildren, args: [MatChip,] }],
|
1256
|
-
_chipTemplate: [{ type: ContentChild, args: [TdChipDirective,] }],
|
1257
|
-
_autocompleteOptionTemplate: [{ type: ContentChild, args: [TdAutocompleteOptionDirective,] }],
|
1258
|
-
_options: [{ type: ViewChildren, args: [MatOption,] }],
|
1259
|
-
items: [{ type: Input, args: ['items',] }],
|
1260
|
-
stacked: [{ type: Input, args: ['stacked',] }],
|
1261
|
-
inputPosition: [{ type: Input, args: ['inputPosition',] }],
|
1262
|
-
requireMatch: [{ type: Input, args: ['requireMatch',] }],
|
1263
|
-
required: [{ type: Input, args: ['required',] }],
|
1264
|
-
chipAddition: [{ type: Input, args: ['chipAddition',] }],
|
1265
|
-
chipRemoval: [{ type: Input, args: ['chipRemoval',] }],
|
1266
|
-
placeholder: [{ type: Input }],
|
1267
|
-
debounce: [{ type: Input }],
|
1268
|
-
color: [{ type: Input, args: ['color',] }],
|
1269
|
-
add: [{ type: Output }],
|
1270
|
-
remove: [{ type: Output }],
|
1271
|
-
inputChange: [{ type: Output }],
|
1272
|
-
chipFocus: [{ type: Output }],
|
1273
|
-
chipBlur: [{ type: Output }],
|
1274
|
-
tabIndex: [{ type: HostBinding, args: ['attr.tabindex',] }],
|
1275
|
-
compareWith: [{ type: Input }],
|
1276
|
-
focusListener: [{ type: HostListener, args: ['focus', ['$event'],] }],
|
1277
|
-
mousedownListener: [{ type: HostListener, args: ['mousedown', ['$event'],] }],
|
1278
|
-
clickListener: [{ type: HostListener, args: ['click', ['$event'],] }],
|
1279
|
-
keydownListener: [{ type: HostListener, args: ['keydown', ['$event'],] }]
|
1280
|
-
};
|
1281
|
-
return TdChipsComponent;
|
1282
|
-
}(_TdChipsMixinBase));
|
1283
|
-
export { TdChipsComponent };
|
1284
|
-
if (false) {
|
1285
|
-
/**
|
1286
|
-
* @type {?}
|
1287
|
-
* @private
|
1288
|
-
*/
|
1289
|
-
TdChipsComponent.prototype._outsideClickSubs;
|
1290
|
-
/**
|
1291
|
-
* @type {?}
|
1292
|
-
* @private
|
1293
|
-
*/
|
1294
|
-
TdChipsComponent.prototype._inputValueChangesSubs;
|
1295
|
-
/**
|
1296
|
-
* @type {?}
|
1297
|
-
* @private
|
1298
|
-
*/
|
1299
|
-
TdChipsComponent.prototype._isMousedown;
|
1300
|
-
/**
|
1301
|
-
* @type {?}
|
1302
|
-
* @private
|
1303
|
-
*/
|
1304
|
-
TdChipsComponent.prototype._items;
|
1305
|
-
/**
|
1306
|
-
* @type {?}
|
1307
|
-
* @private
|
1308
|
-
*/
|
1309
|
-
TdChipsComponent.prototype._length;
|
1310
|
-
/**
|
1311
|
-
* @type {?}
|
1312
|
-
* @private
|
1313
|
-
*/
|
1314
|
-
TdChipsComponent.prototype._stacked;
|
1315
|
-
/**
|
1316
|
-
* @type {?}
|
1317
|
-
* @private
|
1318
|
-
*/
|
1319
|
-
TdChipsComponent.prototype._requireMatch;
|
1320
|
-
/**
|
1321
|
-
* @type {?}
|
1322
|
-
* @private
|
1323
|
-
*/
|
1324
|
-
TdChipsComponent.prototype._color;
|
1325
|
-
/**
|
1326
|
-
* @type {?}
|
1327
|
-
* @private
|
1328
|
-
*/
|
1329
|
-
TdChipsComponent.prototype._inputPosition;
|
1330
|
-
/**
|
1331
|
-
* @type {?}
|
1332
|
-
* @private
|
1333
|
-
*/
|
1334
|
-
TdChipsComponent.prototype._chipAddition;
|
1335
|
-
/**
|
1336
|
-
* @type {?}
|
1337
|
-
* @private
|
1338
|
-
*/
|
1339
|
-
TdChipsComponent.prototype._chipRemoval;
|
1340
|
-
/**
|
1341
|
-
* @type {?}
|
1342
|
-
* @private
|
1343
|
-
*/
|
1344
|
-
TdChipsComponent.prototype._focused;
|
1345
|
-
/**
|
1346
|
-
* @type {?}
|
1347
|
-
* @private
|
1348
|
-
*/
|
1349
|
-
TdChipsComponent.prototype._required;
|
1350
|
-
/**
|
1351
|
-
* @type {?}
|
1352
|
-
* @private
|
1353
|
-
*/
|
1354
|
-
TdChipsComponent.prototype._tabIndex;
|
1355
|
-
/**
|
1356
|
-
* @type {?}
|
1357
|
-
* @private
|
1358
|
-
*/
|
1359
|
-
TdChipsComponent.prototype._touchendDebounce;
|
1360
|
-
/** @type {?} */
|
1361
|
-
TdChipsComponent.prototype._internalClick;
|
1362
|
-
/** @type {?} */
|
1363
|
-
TdChipsComponent.prototype._internalActivateOption;
|
1364
|
-
/** @type {?} */
|
1365
|
-
TdChipsComponent.prototype._nativeInput;
|
1366
|
-
/** @type {?} */
|
1367
|
-
TdChipsComponent.prototype._inputChild;
|
1368
|
-
/** @type {?} */
|
1369
|
-
TdChipsComponent.prototype._autocompleteTrigger;
|
1370
|
-
/** @type {?} */
|
1371
|
-
TdChipsComponent.prototype._chipsChildren;
|
1372
|
-
/** @type {?} */
|
1373
|
-
TdChipsComponent.prototype._chipTemplate;
|
1374
|
-
/** @type {?} */
|
1375
|
-
TdChipsComponent.prototype._autocompleteOptionTemplate;
|
1376
|
-
/** @type {?} */
|
1377
|
-
TdChipsComponent.prototype._options;
|
1378
|
-
/**
|
1379
|
-
* FormControl for the matInput element.
|
1380
|
-
* @type {?}
|
1381
|
-
*/
|
1382
|
-
TdChipsComponent.prototype.inputControl;
|
1383
|
-
/**
|
1384
|
-
* placeholder?: string
|
1385
|
-
* Placeholder for the autocomplete input.
|
1386
|
-
* @type {?}
|
1387
|
-
*/
|
1388
|
-
TdChipsComponent.prototype.placeholder;
|
1389
|
-
/**
|
1390
|
-
* debounce?: number
|
1391
|
-
* Debounce timeout between keypresses. Defaults to 200.
|
1392
|
-
* @type {?}
|
1393
|
-
*/
|
1394
|
-
TdChipsComponent.prototype.debounce;
|
1395
|
-
/**
|
1396
|
-
* add?: function
|
1397
|
-
* Method to be executed when a chip is added.
|
1398
|
-
* Sends chip value as event.
|
1399
|
-
* @type {?}
|
1400
|
-
*/
|
1401
|
-
TdChipsComponent.prototype.add;
|
1402
|
-
/**
|
1403
|
-
* remove?: function
|
1404
|
-
* Method to be executed when a chip is removed.
|
1405
|
-
* Sends chip value as event.
|
1406
|
-
* @type {?}
|
1407
|
-
*/
|
1408
|
-
TdChipsComponent.prototype.remove;
|
1409
|
-
/**
|
1410
|
-
* inputChange?: function
|
1411
|
-
* Method to be executed when the value in the autocomplete input changes.
|
1412
|
-
* Sends string value as event.
|
1413
|
-
* @type {?}
|
1414
|
-
*/
|
1415
|
-
TdChipsComponent.prototype.inputChange;
|
1416
|
-
/**
|
1417
|
-
* chipFocus?: function
|
1418
|
-
* Method to be executed when a chip is focused.
|
1419
|
-
* Sends chip value as event.
|
1420
|
-
* @type {?}
|
1421
|
-
*/
|
1422
|
-
TdChipsComponent.prototype.chipFocus;
|
1423
|
-
/**
|
1424
|
-
* blur?: function
|
1425
|
-
* Method to be executed when a chip is blurred.
|
1426
|
-
* Sends chip value as event.
|
1427
|
-
* @type {?}
|
1428
|
-
*/
|
1429
|
-
TdChipsComponent.prototype.chipBlur;
|
1430
|
-
/**
|
1431
|
-
* compareWith? function
|
1432
|
-
* Function used to check whether a chip value already exists.
|
1433
|
-
* Defaults to strict equality comparison ===
|
1434
|
-
* @type {?}
|
1435
|
-
*/
|
1436
|
-
TdChipsComponent.prototype.compareWith;
|
1437
|
-
/**
|
1438
|
-
* @type {?}
|
1439
|
-
* @private
|
1440
|
-
*/
|
1441
|
-
TdChipsComponent.prototype._elementRef;
|
1442
|
-
/**
|
1443
|
-
* @type {?}
|
1444
|
-
* @private
|
1445
|
-
*/
|
1446
|
-
TdChipsComponent.prototype._renderer;
|
1447
|
-
/**
|
1448
|
-
* @type {?}
|
1449
|
-
* @private
|
1450
|
-
*/
|
1451
|
-
TdChipsComponent.prototype._document;
|
1452
|
-
}
|
1453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvdmFsZW50L2NvcmUvY2hpcHMvIiwic291cmNlcyI6WyJjaGlwcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUVWLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUdqQixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFHVCxHQUFHLEdBRUosTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RSxPQUFPLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFlLGFBQWEsRUFBeUIseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVySDtJQUdxQyxtQ0FBdUI7SUFDMUQseUJBQVksV0FBNkIsRUFBRSxnQkFBa0M7ZUFDM0Usa0JBQU0sV0FBVyxFQUFFLGdCQUFnQixDQUFDO0lBQ3RDLENBQUM7O2dCQU5GLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQzs7OztnQkF6Q0MsV0FBVztnQkFDWCxnQkFBZ0I7O0lBNkNsQixzQkFBQztDQUFBLEFBUEQsQ0FHcUMsdUJBQXVCLEdBSTNEO1NBSlksZUFBZTtBQU01QjtJQUdtRCxpREFBdUI7SUFDeEUsdUNBQVksV0FBNkIsRUFBRSxnQkFBa0M7ZUFDM0Usa0JBQU0sV0FBVyxFQUFFLGdCQUFnQixDQUFDO0lBQ3RDLENBQUM7O2dCQU5GLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUscUNBQXFDO2lCQUNoRDs7OztnQkFsREMsV0FBVztnQkFDWCxnQkFBZ0I7O0lBc0RsQixvQ0FBQztDQUFBLEFBUEQsQ0FHbUQsdUJBQXVCLEdBSXpFO1NBSlksNkJBQTZCO0FBTTFDO0lBQ0UscUJBQW1CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO0lBQUcsQ0FBQztJQUM5RCxrQkFBQztBQUFELENBQUMsQUFGRCxJQUVDOzs7O0lBRGEseUNBQTRDOzs7O0FBSTFELE1BQU0sS0FBTyxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBRTFGO0lBZVUsb0NBQWlCO0lBMk96QiwwQkFDVSxXQUF1QixFQUN2QixTQUFvQixFQUNVLFNBQWMsRUFDcEQsa0JBQXFDO1FBSnZDLFlBTUUsa0JBQU0sa0JBQWtCLENBQUMsU0FFMUI7UUFQUyxpQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixlQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ1UsZUFBUyxHQUFULFNBQVMsQ0FBSztRQTVPOUMsdUJBQWlCLEdBQWlCLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDckQsNEJBQXNCLEdBQWlCLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDMUQsa0JBQVksR0FBWSxLQUFLLENBQUM7UUFHOUIsYUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixjQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLG1CQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLFlBQU0sR0FBa0MsU0FBUyxDQUFDO1FBQ2xELG9CQUFjLEdBQXVCLE9BQU8sQ0FBQztRQUM3QyxtQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixrQkFBWSxHQUFZLElBQUksQ0FBQztRQUM3QixjQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGVBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsZUFBUyxHQUFXLENBQUMsQ0FBQztRQUN0Qix1QkFBaUIsR0FBVyxHQUFHLENBQUM7UUFFeEMsb0JBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsNkJBQXVCLEdBQVksS0FBSyxDQUFDOzs7O1FBdUJ6QyxrQkFBWSxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDOzs7OztRQWtJckMsY0FBUSxHQUFXLEdBQUcsQ0FBQzs7Ozs7O1FBd0J0QixTQUFHLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7Ozs7OztRQU9qRCxZQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7Ozs7OztRQU9wRCxpQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDOzs7Ozs7UUFPL0QsZUFBUyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDOzs7Ozs7UUFPdkQsY0FBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDOzs7Ozs7UUF5QnZELGlCQUFXOzs7OztRQUFrQyxVQUFDLEVBQU8sRUFBRSxFQUFPO1lBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDLEVBQUM7UUFWQSxLQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOztJQUNoRixDQUFDO0lBL01ELHNCQUFJLHFDQUFPO1FBSFg7O1dBRUc7Ozs7O1FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQzs7O09BQUE7SUFXRCxzQkFDSSxtQ0FBSzs7OztRQUtUO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JCLENBQUM7UUFaRDs7O1dBR0c7Ozs7Ozs7UUFDSCxVQUNVLEtBQVk7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLENBQUM7OztPQUFBO0lBVUQsc0JBQ0kscUNBQU87Ozs7UUFHWDtZQUNFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDO1FBWEQ7Ozs7V0FJRzs7Ozs7Ozs7UUFDSCxVQUNZLE9BQWdCO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsQ0FBQzs7O09BQUE7SUFVRCxzQkFDSSwyQ0FBYTs7OztRQUdqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM3QixDQUFDO1FBWEQ7Ozs7V0FJRzs7Ozs7Ozs7UUFDSCxVQUNrQixhQUFpQztZQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUN0QyxDQUFDOzs7T0FBQTtJQVNELHNCQUNJLDBDQUFZOzs7O1FBR2hCO1lBQ0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVCLENBQUM7UUFWRDs7O1dBR0c7Ozs7Ozs7UUFDSCxVQUNpQixZQUFxQjtZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNELENBQUM7OztPQUFBO0lBVUQsc0JBQ0ksc0NBQVE7Ozs7UUFHWjtZQUNFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4QixDQUFDO1FBWEQ7Ozs7V0FJRzs7Ozs7Ozs7UUFDSCxVQUNhLFFBQWlCO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQzs7O09BQUE7SUFVRCxzQkFDSSwwQ0FBWTs7OztRQUloQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM1QixDQUFDO1FBWkQ7Ozs7V0FJRzs7Ozs7Ozs7UUFDSCxVQUNpQixZQUFxQjtZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQzs7O09BQUE7SUFTRCxzQkFBSSx3Q0FBVTtRQUpkOzs7V0FHRzs7Ozs7O1FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdDLENBQUM7OztPQUFBO0lBT0Qsc0JBQ0kseUNBQVc7Ozs7UUFHZjtZQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDO1FBWEQ7Ozs7V0FJRzs7Ozs7Ozs7UUFDSCxVQUNnQixXQUFvQjtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQVNELHNCQUFJLDJDQUFhO1FBSmpCOzs7V0FHRzs7Ozs7O1FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzVDLENBQUM7OztPQUFBO0lBS0Qsc0JBQUksZ0RBQWtCO1FBSHRCOztXQUVHOzs7OztRQUNIO1lBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFJLElBQUksQ0FBQyxXQUFXLE9BQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRSxDQUFDOzs7T0FBQTtJQW1CRCxzQkFDSSxtQ0FBSzs7OztRQU9UO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JCLENBQUM7UUFmRDs7OztXQUlHOzs7Ozs7OztRQUNILFVBQ1UsS0FBb0M7WUFDNUMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakYsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0U7UUFDSCxDQUFDOzs7T0FBQTtJQTJDRCxzQkFDSSxzQ0FBUTtRQUpaOztXQUVHOzs7OztRQUNIO1lBRUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QyxDQUFDOzs7T0FBQTtJQXFCRDs7T0FFRzs7Ozs7O0lBRUgsd0NBQWE7Ozs7O0lBRGIsVUFDYyxLQUFpQjtRQUM3QixtRkFBbUY7UUFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7UUFDRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFFSCw0Q0FBaUI7Ozs7O0lBRGpCLFVBQ2tCLEtBQWlCO1FBRG5DLGlCQVNDO1FBUEMsb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLEtBQUssRUFBRTthQUNKLFNBQVMsRUFBRTthQUNYLElBQUk7OztRQUFDO1lBQ0osS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7O0lBRUgsd0NBQWE7Ozs7OztJQURiLFVBQ2MsS0FBWTs7WUFDbEIsV0FBVyxHQUFnQixtQkFBYSxLQUFLLENBQUMsTUFBTSxFQUFBO1FBQzFELElBQUksV0FBVyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDNUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRDs7T0FFRzs7Ozs7O0lBRUgsMENBQWU7Ozs7O0lBRGYsVUFDZ0IsS0FBb0I7UUFEcEMsaUJBdUJDO1FBckJDLFFBQVEsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixLQUFLLEdBQUc7Z0JBQ04sNENBQTRDO2dCQUM1QyxLQUFLLEVBQUU7cUJBQ0osU0FBUyxFQUFFO3FCQUNYLElBQUk7OztnQkFBQztvQkFDSixLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQyxFQUFDLENBQUM7Z0JBQ0wsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO29CQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2lCQUMzQjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2Q7Z0JBQ0QsTUFBTTtZQUNSLFFBQVE7WUFDUixVQUFVO1NBQ1g7SUFDSCxDQUFDOzs7O0lBRUQsbUNBQVE7OztJQUFSO1FBQUEsaUJBT0M7UUFOQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO2FBQ3pELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2pDLFNBQVM7Ozs7UUFBQyxVQUFDLEtBQWE7WUFDdkIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsRUFBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7Ozs7SUFFRCwwQ0FBZTs7O0lBQWY7UUFDRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQzs7OztJQUVELG9DQUFTOzs7SUFBVDtRQUNFLG1EQUFtRDtRQUNuRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs7OztJQUVELHNDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQzs7OztJQUVELDRDQUFpQjs7O0lBQWpCO1FBQ0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELHNEQUFzRDs7Ozs7O0lBQ3RELDJDQUFnQjs7Ozs7SUFBaEIsVUFBaUIsQ0FBVTtRQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHOzs7Ozs7OztJQUNILHlDQUFjOzs7Ozs7O0lBQWQ7O1lBQ00sS0FBVTtRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTs7Z0JBQ2YsZUFBZSxHQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU07Ozs7WUFBQyxVQUFDLE1BQWlCO2dCQUNwRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDdkIsQ0FBQyxFQUFDO1lBQ0YsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDOUIsS0FBSyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQ3hDO1lBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7YUFBTTtZQUNMLHlDQUF5QztZQUN6QyxtQ0FBbUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFO2dCQUMxQyxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM1RDtpQkFBTTtnQkFDTCxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDdkIsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7Ozs7Ozs7SUFDSCxrQ0FBTzs7Ozs7O0lBQVAsVUFBUSxLQUFVO1FBQ2hCOzs7V0FHRztRQUpMLGlCQTBCQztRQXBCQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNqQixTQUFTLEVBQUU7YUFDWCxJQUFJOzs7UUFBQztZQUNKLEtBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixLQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM3QixLQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDLEVBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLDhDQUE4QztRQUM5QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUzs7OztRQUFDLFVBQUMsSUFBUyxJQUFLLE9BQUEsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQTdCLENBQTZCLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMzRSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7OztJQUNILHFDQUFVOzs7Ozs7SUFBVixVQUFXLEtBQWE7O1lBQ2hCLGFBQWEsR0FBVSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDOUIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVEOzs7V0FHRztRQUNILElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxQjthQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzVCO2FBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHOzs7Ozs7O0lBQ0gsMENBQWU7Ozs7OztJQUFmLFVBQWdCLEtBQWlCLEVBQUUsS0FBVTtRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7Ozs7Ozs7SUFDSCwyQ0FBZ0I7Ozs7OztJQUFoQixVQUFpQixLQUFpQixFQUFFLEtBQVU7UUFDNUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7Ozs7SUFFRCx1Q0FBWTs7O0lBQVo7UUFDRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7Ozs7O0lBQ0gsMENBQWU7Ozs7SUFBZjtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNILDZDQUFrQjs7OztJQUFsQjtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7SUFDSCxnQ0FBSzs7Ozs7SUFBTDtRQUNFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzFCO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSCx3Q0FBYTs7Ozs7SUFBYixVQUFjLEtBQW9CO1FBQ2hDLFFBQVEsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixLQUFLLFFBQVE7Z0JBQ1g7OzttQkFHRztnQkFDSCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7O3dCQUNmLFFBQU0sR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07b0JBQzNDLElBQUksUUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7d0JBQ25GLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDL0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQzt3QkFDckMsbUNBQW1DO3dCQUNuQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ3hCO2lCQUNGO2dCQUNELE1BQU07WUFDUixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsdUZBQXVGO2dCQUN2RixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEIsbUNBQW1DO29CQUNuQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQ3hCO2dCQUNELE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLHlGQUF5RjtnQkFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO29CQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3ZCLG1DQUFtQztvQkFDbkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN4QjtnQkFDRCxNQUFNO1lBQ1IsUUFBUTtZQUNSLFVBQVU7U0FDWDtJQUNILENBQUM7SUFFRDs7T0FFRzs7Ozs7OztJQUNILHVDQUFZOzs7Ozs7SUFBWixVQUFhLEtBQW9CLEVBQUUsS0FBYTtRQUM5QyxRQUFRLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDckIsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFNBQVM7Z0JBQ1osMkNBQTJDO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3hCO2dCQUNELE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssVUFBVTtnQkFDYjs7O21CQUdHO2dCQUNILElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtvQkFDZiw0Q0FBNEM7b0JBQzVDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTt3QkFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDMUI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO3FCQUN2QjtpQkFDRjtxQkFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUM1QjtnQkFDRCxtQ0FBbUM7Z0JBQ25DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssV0FBVztnQkFDZDs7O21CQUdHO2dCQUNILElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFO29CQUNsQyw2Q0FBNkM7b0JBQzdDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTt3QkFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDMUI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUN4QjtpQkFDRjtxQkFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzVCO2dCQUNELG1DQUFtQztnQkFDbkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsUUFBUTtZQUNSLFVBQVU7U0FDWDtJQUNILENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCw4Q0FBbUI7Ozs7SUFBbkI7UUFDRSxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCw0Q0FBaUI7Ozs7SUFBakI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRTtZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNILDZDQUFrQjs7OztJQUFsQjtRQUNFLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUtELHNCQUFJLHlDQUFXO1FBSGY7O1dBRUc7Ozs7O1FBQ0g7O2dCQUNRLEtBQUssR0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUN0RCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdEIsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRzs7Ozs7OztJQUNLLHFDQUFVOzs7Ozs7SUFBbEIsVUFBbUIsS0FBYTtRQUM5QixnRUFBZ0U7UUFDaEUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFRCxpQ0FBaUM7Ozs7OztJQUN6QiwwQ0FBZTs7Ozs7SUFBdkI7UUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQ0FBZ0M7Ozs7OztJQUN4Qix5Q0FBYzs7Ozs7SUFBdEI7UUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7OztJQUNLLHVDQUFZOzs7Ozs7SUFBcEI7UUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QjtRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7O0lBQ0ssZ0RBQXFCOzs7Ozs7SUFBN0I7UUFBQSxpQkFrQkM7UUFqQkMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLHlGQUF5RjtZQUN6RixLQUFLLEVBQUU7aUJBQ0osU0FBUyxFQUFFO2lCQUNYLElBQUk7OztZQUFDO2dCQUNKLElBQUksS0FBSSxDQUFDLE9BQU8sSUFBSSxLQUFJLENBQUMsUUFBUSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDN0Qsd0NBQXdDO29CQUN4QyxLQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU87Ozs7b0JBQUMsVUFBQyxNQUFpQjt3QkFDaEQsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQzdCLENBQUMsRUFBQyxDQUFDO29CQUNILDhCQUE4QjtvQkFDOUIsS0FBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDN0MsS0FBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztvQkFDcEMsS0FBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUN4QztZQUNILENBQUMsRUFBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7Ozs7SUFDSyw2Q0FBa0I7Ozs7Ozs7SUFBMUI7UUFBQSxpQkE0QkM7UUEzQkMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQ3RHLElBQUksQ0FDSCxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQ3BDLE1BQU07Ozs7WUFBQyxVQUFDLEtBQWlCOztvQkFDakIsV0FBVyxHQUFnQixtQkFBYSxLQUFLLENBQUMsTUFBTSxFQUFBO2dCQUMxRCxVQUFVOzs7Z0JBQUM7b0JBQ1QsS0FBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLENBQUMsRUFBQyxDQUFDO2dCQUNILE9BQU8sQ0FDTCxLQUFJLENBQUMsT0FBTztvQkFDWixXQUFXLEtBQUssS0FBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhO29CQUM5QyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7b0JBQ3JELENBQUMsS0FBSSxDQUFDLGNBQWMsQ0FDckIsQ0FBQztZQUNKLENBQUMsRUFBQyxDQUNIO2lCQUNBLFNBQVM7OztZQUFDO2dCQUNULElBQUksS0FBSSxDQUFDLE9BQU8sRUFBRTtvQkFDaEIsS0FBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN2QyxLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUIsS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixLQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7aUJBQ3hDO1lBQ0gsQ0FBQyxFQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O2dCQTN1QkYsU0FBUyxTQUFDO29CQUNULFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVTs7OzRCQUFDLGNBQU0sT0FBQSxnQkFBZ0IsRUFBaEIsQ0FBZ0IsRUFBQzs0QkFDL0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7b0JBRTdCLHluRkFBcUM7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztpQkFDaEQ7Ozs7Z0JBakZDLFVBQVU7Z0JBWVYsU0FBUztnREFxVE4sUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFRO2dCQXpUOUIsaUJBQWlCOzs7K0JBaUdoQixTQUFTLFNBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs4QkFDbkMsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUNBQ3BDLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7aUNBQ2xELFlBQVksU0FBQyxPQUFPO2dDQUVwQixZQUFZLFNBQUMsZUFBZTs4Q0FDNUIsWUFBWSxTQUFDLDZCQUE2QjsyQkFHMUMsWUFBWSxTQUFDLFNBQVM7d0JBa0J0QixLQUFLLFNBQUMsT0FBTzswQkFlYixLQUFLLFNBQUMsU0FBUztnQ0FhZixLQUFLLFNBQUMsZUFBZTsrQkFZckIsS0FBSyxTQUFDLGNBQWM7MkJBYXBCLEtBQUssU0FBQyxVQUFVOytCQWFoQixLQUFLLFNBQUMsY0FBYzs4QkFzQnBCLEtBQUssU0FBQyxhQUFhOzhCQThCbkIsS0FBSzsyQkFNTCxLQUFLO3dCQU9MLEtBQUssU0FBQyxPQUFPO3NCQWlCYixNQUFNO3lCQU9OLE1BQU07OEJBT04sTUFBTTs0QkFPTixNQUFNOzJCQU9OLE1BQU07MkJBS04sV0FBVyxTQUFDLGVBQWU7OEJBb0IzQixLQUFLO2dDQU9MLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0NBWWhDLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0NBZXBDLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7a0NBYWhDLFlBQVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0lBb2JyQyx1QkFBQztDQUFBLEFBNXVCRCxDQWVVLGlCQUFpQixHQTZ0QjFCO1NBOXRCWSxnQkFBZ0I7Ozs7OztJQUczQiw2Q0FBNkQ7Ozs7O0lBQzdELGtEQUFrRTs7Ozs7SUFDbEUsd0NBQXNDOzs7OztJQUV0QyxrQ0FBc0I7Ozs7O0lBQ3RCLG1DQUE0Qjs7Ozs7SUFDNUIsb0NBQWtDOzs7OztJQUNsQyx5Q0FBdUM7Ozs7O0lBQ3ZDLGtDQUEwRDs7Ozs7SUFDMUQsMENBQXFEOzs7OztJQUNyRCx5Q0FBc0M7Ozs7O0lBQ3RDLHdDQUFxQzs7Ozs7SUFDckMsb0NBQWtDOzs7OztJQUNsQyxxQ0FBbUM7Ozs7O0lBQ25DLHFDQUE4Qjs7Ozs7SUFDOUIsNkNBQXdDOztJQUV4QywwQ0FBZ0M7O0lBQ2hDLG1EQUF5Qzs7SUFFekMsd0NBQStEOztJQUMvRCx1Q0FBNkQ7O0lBQzdELGdEQUFrRzs7SUFDbEcsMENBQTBEOztJQUUxRCx5Q0FBOEQ7O0lBQzlELHVEQUMyRDs7SUFFM0Qsb0NBQXdEOzs7OztJQVl4RCx3Q0FBOEM7Ozs7OztJQTRIOUMsdUNBQTZCOzs7Ozs7SUFNN0Isb0NBQWdDOzs7Ozs7O0lBd0JoQywrQkFBMkQ7Ozs7Ozs7SUFPM0Qsa0NBQThEOzs7Ozs7O0lBTzlELHVDQUF5RTs7Ozs7OztJQU96RSxxQ0FBaUU7Ozs7Ozs7SUFPakUsb0NBQWdFOzs7Ozs7O0lBeUJoRSx1Q0FFRTs7Ozs7SUFoQkEsdUNBQStCOzs7OztJQUMvQixxQ0FBNEI7Ozs7O0lBQzVCLHFDQUFvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgZm9yd2FyZFJlZixcbiAgRG9DaGVjayxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgT25Jbml0LFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIE9wdGlvbmFsLFxuICBJbmplY3QsXG4gIERpcmVjdGl2ZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBPbkRlc3Ryb3ksXG4gIEhvc3RCaW5kaW5nLFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIFVQX0FSUk9XLFxuICBET1dOX0FSUk9XLFxuICBFU0NBUEUsXG4gIExFRlRfQVJST1csXG4gIFJJR0hUX0FSUk9XLFxuICBERUxFVEUsXG4gIEJBQ0tTUEFDRSxcbiAgRU5URVIsXG4gIFNQQUNFLFxuICBUQUIsXG4gIEhPTUUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBNYXRDaGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRpbWVyLCBtZXJnZSwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSUNhbkRpc2FibGUsIG1peGluRGlzYWJsZWQsIElDb250cm9sVmFsdWVBY2Nlc3NvciwgbWl4aW5Db250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bjb3ZhbGVudC9jb3JlL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZC1jaGlwXW5nLXRlbXBsYXRlJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRDaGlwRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVQb3J0YWxEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGQtYXV0b2NvbXBsZXRlLW9wdGlvbl1uZy10ZW1wbGF0ZScsXG59KVxuZXhwb3J0IGNsYXNzIFRkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVQb3J0YWxEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGRDaGlwc0Jhc2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbn1cblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG5leHBvcnQgY29uc3QgX1RkQ2hpcHNNaXhpbkJhc2UgPSBtaXhpbkNvbnRyb2xWYWx1ZUFjY2Vzc29yKG1peGluRGlzYWJsZWQoVGRDaGlwc0Jhc2UpLCBbXSk7XG5cbkBDb21wb25lbnQoe1xuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRkQ2hpcHNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc2VsZWN0b3I6ICd0ZC1jaGlwcycsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICd2YWx1ZSddLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGRDaGlwc0NvbXBvbmVudFxuICBleHRlbmRzIF9UZENoaXBzTWl4aW5CYXNlXG4gIGltcGxlbWVudHMgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgSUNhbkRpc2FibGUge1xuICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tTdWJzOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gIHByaXZhdGUgX2lucHV0VmFsdWVDaGFuZ2VzU3ViczogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICBwcml2YXRlIF9pc01vdXNlZG93bjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2l0ZW1zOiBhbnlbXTtcbiAgcHJpdmF0ZSBfbGVuZ3RoOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9zdGFja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3JlcXVpcmVNYXRjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jb2xvcjogJ3ByaW1hcnknIHwgJ2FjY2VudCcgfCAnd2FybicgPSAncHJpbWFyeSc7XG4gIHByaXZhdGUgX2lucHV0UG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyA9ICdhZnRlcic7XG4gIHByaXZhdGUgX2NoaXBBZGRpdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX2NoaXBSZW1vdmFsOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF90YWJJbmRleDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdG91Y2hlbmREZWJvdW5jZTogbnVtYmVyID0gMTAwO1xuXG4gIF9pbnRlcm5hbENsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIF9pbnRlcm5hbEFjdGl2YXRlT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBfbmF0aXZlSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoTWF0SW5wdXQsIHsgc3RhdGljOiB0cnVlIH0pIF9pbnB1dENoaWxkOiBNYXRJbnB1dDtcbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSBfYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcbiAgQFZpZXdDaGlsZHJlbihNYXRDaGlwKSBfY2hpcHNDaGlsZHJlbjogUXVlcnlMaXN0PE1hdENoaXA+O1xuXG4gIEBDb250ZW50Q2hpbGQoVGRDaGlwRGlyZWN0aXZlKSBfY2hpcFRlbXBsYXRlOiBUZENoaXBEaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoVGRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUpXG4gIF9hdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZTogVGRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZHJlbihNYXRPcHRpb24pIF9vcHRpb25zOiBRdWVyeUxpc3Q8TWF0T3B0aW9uPjtcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGlzIHRydWUgd2hlbiBhdXRvY29tcGxldGUgaXMgZm9jdXNlZC5cbiAgICovXG4gIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1Db250cm9sIGZvciB0aGUgbWF0SW5wdXQgZWxlbWVudC5cbiAgICovXG4gIGlucHV0Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAvKipcbiAgICogaXRlbXM/OiBhbnlbXVxuICAgKiBSZW5kZXJzIHRoZSBgbWF0LWF1dG9jb21wbGV0ZWAgd2l0aCB0aGUgcHJvdmlkZWQgbGlzdCB0byBkaXNwbGF5IGFzIG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoJ2l0ZW1zJylcbiAgc2V0IGl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5fc2V0Rmlyc3RPcHRpb25BY3RpdmUoKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgaXRlbXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGFja2VkPzogYm9vbGVhblxuICAgKiBTZXQgc3RhY2tlZCBvciBob3Jpem9udGFsIGNoaXBzIGRlcGVuZGluZyBvbiB2YWx1ZS5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoJ3N0YWNrZWQnKVxuICBzZXQgc3RhY2tlZChzdGFja2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc3RhY2tlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShzdGFja2VkKTtcbiAgfVxuICBnZXQgc3RhY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhY2tlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBpbnB1dFBvc2l0aW9uPzogJ2JlZm9yZScgfCAnYWZ0ZXInXG4gICAqIFNldCBpbnB1dCBwb3NpdGlvbiBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaXBzLlxuICAgKiBEZWZhdWx0cyB0byAnYWZ0ZXInLlxuICAgKi9cbiAgQElucHV0KCdpbnB1dFBvc2l0aW9uJylcbiAgc2V0IGlucHV0UG9zaXRpb24oaW5wdXRQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInKSB7XG4gICAgdGhpcy5faW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zaXRpb247XG4gIH1cbiAgZ2V0IGlucHV0UG9zaXRpb24oKTogJ2JlZm9yZScgfCAnYWZ0ZXInIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRQb3NpdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXF1aXJlTWF0Y2g/OiBib29sZWFuXG4gICAqIEJsb2NrcyBjdXN0b20gaW5wdXRzIGFuZCBvbmx5IGFsbG93cyBzZWxlY3Rpb25zIGZyb20gdGhlIGF1dG9jb21wbGV0ZSBsaXN0LlxuICAgKi9cbiAgQElucHV0KCdyZXF1aXJlTWF0Y2gnKVxuICBzZXQgcmVxdWlyZU1hdGNoKHJlcXVpcmVNYXRjaDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVNYXRjaCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXF1aXJlTWF0Y2gpO1xuICB9XG4gIGdldCByZXF1aXJlTWF0Y2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVNYXRjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXF1aXJlZD86IGJvb2xlYW5cbiAgICogVmFsdWUgaXMgc2V0IHRvIHRydWUgaWYgYXQgbGVhc3Qgb25lIGNoaXAgaXMgbmVlZGVkXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlXG4gICAqL1xuICBASW5wdXQoJ3JlcXVpcmVkJylcbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxdWlyZWQpO1xuICB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogY2hpcEFkZGl0aW9uPzogYm9vbGVhblxuICAgKiBEaXNhYmxlcyB0aGUgYWJpbGl0eSB0byBhZGQgY2hpcHMuIFdoZW4gc2V0dGluZyBkaXNhYmxlZCBhcyB0cnVlLCB0aGlzIHdpbGwgYmUgb3ZlcnJpZGVuLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCdjaGlwQWRkaXRpb24nKVxuICBzZXQgY2hpcEFkZGl0aW9uKGNoaXBBZGRpdGlvbjogYm9vbGVhbikge1xuICAgIHRoaXMuX2NoaXBBZGRpdGlvbiA9IGNoaXBBZGRpdGlvbjtcbiAgICB0aGlzLl90b2dnbGVJbnB1dCgpO1xuICB9XG4gIGdldCBjaGlwQWRkaXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaXBBZGRpdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbm90IGluIGRpc2FibGVkIHN0YXRlIGFuZCBpZiBjaGlwQWRkaXRpb24gaXMgc2V0IHRvICd0cnVlJ1xuICAgKiBTdGF0ZXMgaWYgYSBjaGlwIGNhbiBiZSBhZGRlZCBhbmQgaWYgdGhlIGlucHV0IGlzIGF2YWlsYWJsZVxuICAgKi9cbiAgZ2V0IGNhbkFkZENoaXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hpcEFkZGl0aW9uICYmICF0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIGNoaXBSZW1vdmFsPzogYm9vbGVhblxuICAgKiBEaXNhYmxlcyB0aGUgYWJpbGl0eSB0byByZW1vdmUgY2hpcHMuIElmIGl0IGRvZXNuJ3QgZXhpc3QgY2hpcCByZW1tb3ZhbCBkZWZhdWx0cyB0byB0cnVlLlxuICAgKiBXaGVuIHNldHRpbmcgZGlzYWJsZWQgYXMgdHJ1ZSwgdGhpcyB3aWxsIGJlIG92ZXJyaWRlbiB0byBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgnY2hpcFJlbW92YWwnKVxuICBzZXQgY2hpcFJlbW92YWwoY2hpcFJlbW92YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jaGlwUmVtb3ZhbCA9IGNoaXBSZW1vdmFsO1xuICB9XG4gIGdldCBjaGlwUmVtb3ZhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpcFJlbW92YWw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG5vdCBpbiBkaXNhYmxlZCBzdGF0ZSBhbmQgaWYgY2hpcFJlbW92YWwgaXMgc2V0IHRvICd0cnVlJ1xuICAgKiBTdGF0ZXMgaWYgYSBjaGlwIGNhbiBiZSByZW1vdmVkXG4gICAqL1xuICBnZXQgY2FuUmVtb3ZlQ2hpcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGlwUmVtb3ZhbCAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHRoZSBkaXNwbGF5IHBsYWNlaG9sZGVyXG4gICAqL1xuICBnZXQgZGlzcGxheVBsYWNlSG9sZGVyKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNhbkFkZENoaXApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8gYCR7dGhpcy5wbGFjZWhvbGRlcn0gKmAgOiB0aGlzLnBsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gICAqIFBsYWNlaG9sZGVyIGZvciB0aGUgYXV0b2NvbXBsZXRlIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogZGVib3VuY2U/OiBudW1iZXJcbiAgICogRGVib3VuY2UgdGltZW91dCBiZXR3ZWVuIGtleXByZXNzZXMuIERlZmF1bHRzIHRvIDIwMC5cbiAgICovXG4gIEBJbnB1dCgpIGRlYm91bmNlOiBudW1iZXIgPSAyMDA7XG5cbiAgLyoqXG4gICAqIGNvbG9yPzogJ3ByaW1hcnknIHwgJ2FjY2VudCcgfCAnd2FybidcbiAgICogU2V0cyB0aGUgY29sb3IgZm9yIHRoZSBpbnB1dCBhbmQgZm9jdXMvc2VsZWN0ZWQgc3RhdGUgb2YgdGhlIGNoaXBzLlxuICAgKiBEZWZhdWx0cyB0byAncHJpbWFyeSdcbiAgICovXG4gIEBJbnB1dCgnY29sb3InKVxuICBzZXQgY29sb3IoY29sb3I6ICdwcmltYXJ5JyB8ICdhY2NlbnQnIHwgJ3dhcm4nKSB7XG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtYXQtJyArIHRoaXMuX2NvbG9yKTtcbiAgICAgIHRoaXMuX2NvbG9yID0gY29sb3I7XG4gICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtYXQtJyArIHRoaXMuX2NvbG9yKTtcbiAgICB9XG4gIH1cbiAgZ2V0IGNvbG9yKCk6ICdwcmltYXJ5JyB8ICdhY2NlbnQnIHwgJ3dhcm4nIHtcbiAgICByZXR1cm4gdGhpcy5fY29sb3I7XG4gIH1cblxuICAvKipcbiAgICogYWRkPzogZnVuY3Rpb25cbiAgICogTWV0aG9kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBjaGlwIGlzIGFkZGVkLlxuICAgKiBTZW5kcyBjaGlwIHZhbHVlIGFzIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpIGFkZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogcmVtb3ZlPzogZnVuY3Rpb25cbiAgICogTWV0aG9kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBjaGlwIGlzIHJlbW92ZWQuXG4gICAqIFNlbmRzIGNoaXAgdmFsdWUgYXMgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVtb3ZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBpbnB1dENoYW5nZT86IGZ1bmN0aW9uXG4gICAqIE1ldGhvZCB0byBiZSBleGVjdXRlZCB3aGVuIHRoZSB2YWx1ZSBpbiB0aGUgYXV0b2NvbXBsZXRlIGlucHV0IGNoYW5nZXMuXG4gICAqIFNlbmRzIHN0cmluZyB2YWx1ZSBhcyBldmVudC5cbiAgICovXG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogY2hpcEZvY3VzPzogZnVuY3Rpb25cbiAgICogTWV0aG9kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBjaGlwIGlzIGZvY3VzZWQuXG4gICAqIFNlbmRzIGNoaXAgdmFsdWUgYXMgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KCkgY2hpcEZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBibHVyPzogZnVuY3Rpb25cbiAgICogTWV0aG9kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBjaGlwIGlzIGJsdXJyZWQuXG4gICAqIFNlbmRzIGNoaXAgdmFsdWUgYXMgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KCkgY2hpcEJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEhvc3RiaW5kaW5nIHRvIHNldCB0aGUgYTExeSBvZiB0aGUgVGRDaGlwc0NvbXBvbmVudCBkZXBlbmRpbmcgb24gaXRzIHN0YXRlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy5fdGFiSW5kZXg7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihfY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21hdC0nICsgdGhpcy5fY29sb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbXBhcmVXaXRoPyBmdW5jdGlvblxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBjaGlwIHZhbHVlIGFscmVhZHkgZXhpc3RzLlxuICAgKiBEZWZhdWx0cyB0byBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbiA9PT1cbiAgICovXG4gIEBJbnB1dCgpIGNvbXBhcmVXaXRoOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiA9IChvMTogYW55LCBvMjogYW55KSA9PiB7XG4gICAgcmV0dXJuIG8xID09PSBvMjtcbiAgfTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byBob3N0IGZvY3VzIGV2ZW50IHRvIGFjdCBvbiBpdFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbJyRldmVudCddKVxuICBmb2N1c0xpc3RlbmVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgLy8gc2hvdWxkIG9ubHkgZm9jdXMgaWYgaXRzIG5vdCB2aWEgbW91c2Vkb3duIHRvIHByZXZlbnQgY2xhc2hpbmcgd2l0aCBhdXRvY29tcGxldGVcbiAgICBpZiAoIXRoaXMuX2lzTW91c2Vkb3duKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVucyB0byBob3N0IG1vdXNlZG93biBldmVudCB0byBhY3Qgb24gaXRcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG1vdXNlZG93bkxpc3RlbmVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgLy8gc2V0cyBhIGZsYWcgdG8ga25vdyBpZiB0aGVyZSB3YXMgYSBtb3VzZWRvd24gYW5kIHRoZW4gaXQgcmV0dXJucyBpdCBiYWNrIHRvIGZhbHNlXG4gICAgdGhpcy5faXNNb3VzZWRvd24gPSB0cnVlO1xuICAgIHRpbWVyKClcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9pc01vdXNlZG93biA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgY2xpY2tpbmcgb24gOmhvc3Qgb3IgYHRkLWNoaXBzLXdyYXBwZXJgLCB0aGVuIHdlIHN0b3AgdGhlIGNsaWNrIHByb3BhZ2F0aW9uIHNvIHRoZSBhdXRvY29tcGxldGVcbiAgICogZG9lc250IGNsb3NlIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIGNsaWNrTGlzdGVuZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY2xpY2tUYXJnZXQ6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICBpZiAoY2xpY2tUYXJnZXQgPT09IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCB8fCBjbGlja1RhcmdldC5jbGFzc05hbWUuaW5kZXhPZigndGQtY2hpcHMtd3JhcHBlcicpID4gLTEpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVucyB0byBob3N0IGtleWRvd24gZXZlbnQgdG8gYWN0IG9uIGl0IGRlcGVuZGluZyBvbiB0aGUga2V5cHJlc3NcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBrZXlkb3duTGlzdGVuZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgVEFCOlxuICAgICAgICAvLyBpZiB0YWJpbmcgb3V0LCB0aGVuIHVuZm9jdXMgdGhlIGNvbXBvbmVudFxuICAgICAgICB0aW1lcigpXG4gICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGb2N1c2VkU3RhdGUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVTQ0FQRTpcbiAgICAgICAgaWYgKHRoaXMuX2lucHV0Q2hpbGQuZm9jdXNlZCkge1xuICAgICAgICAgIHRoaXMuX25hdGl2ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgIHRoaXMucmVtb3ZlRm9jdXNlZFN0YXRlKCk7XG4gICAgICAgICAgdGhpcy5fY2xvc2VBdXRvY29tcGxldGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZGVmYXVsdFxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0VmFsdWVDaGFuZ2VzU3VicyA9IHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodmFsdWUgPyB2YWx1ZSA6ICcnKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3dhdGNoT3V0c2lkZUNsaWNrKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgLy8gVGhyb3cgb25DaGFuZ2UgZXZlbnQgb25seSBpZiBhcnJheSBjaGFuZ2VzIHNpemUuXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggIT09IHRoaXMuX2xlbmd0aCkge1xuICAgICAgdGhpcy5fbGVuZ3RoID0gdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX291dHNpZGVDbGlja1N1YnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9pbnB1dFZhbHVlQ2hhbmdlc1N1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIF9zZXRJbnRlcm5hbENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2ludGVybmFsQ2xpY2sgPSB0cnVlO1xuICB9XG5cbiAgLyoqIE1ldGhvZCBleGVjdXRlZCB3aGVuIHRoZSBkaXNhYmxlZCB2YWx1ZSBjaGFuZ2VzICovXG4gIG9uRGlzYWJsZWRDaGFuZ2UodjogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3RvZ2dsZUlucHV0KCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGEgbmV3IGNoaXAgZnJvbSB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBJdCBjaGVjayBpZiBbcmVxdWlyZU1hdGNoXSBpcyBlbmFibGVkLCBhbmQgdHJpZXMgdG8gYWRkIHRoZSBmaXJzdCBhY3RpdmUgb3B0aW9uXG4gICAqIGVsc2UgaWYganVzdCBhZGRzIHRoZSB2YWx1ZSB0aGF0cyBvbiB0aGUgaW5wdXRcbiAgICogcmV0dXJucyAndHJ1ZScgaWYgc3VjY2Vzc2Z1bCwgJ2ZhbHNlJyBpZiBpdCBmYWlscy5cbiAgICovXG4gIF9oYW5kbGVBZGRDaGlwKCk6IGJvb2xlYW4ge1xuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIGlmICh0aGlzLnJlcXVpcmVNYXRjaCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zOiBNYXRPcHRpb25bXSA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpLmZpbHRlcigob3B0aW9uOiBNYXRPcHRpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbi5hY3RpdmU7XG4gICAgICB9KTtcbiAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YWx1ZSA9IHNlbGVjdGVkT3B0aW9uc1swXS52YWx1ZTtcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zWzBdLnNldEluYWN0aXZlU3R5bGVzKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgdGhlcmUgaXMgYSBzZWxlY3Rpb24sIHRoZW4gdXNlIHRoYXRcbiAgICAgIC8vIGVsc2UgdXNlIHRoZSBpbnB1dCB2YWx1ZSBhcyBjaGlwXG4gICAgICBpZiAodGhpcy5fYXV0b2NvbXBsZXRlVHJpZ2dlci5hY3RpdmVPcHRpb24pIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLl9hdXRvY29tcGxldGVUcmlnZ2VyLmFjdGl2ZU9wdGlvbi52YWx1ZTtcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlVHJpZ2dlci5hY3RpdmVPcHRpb24uc2V0SW5hY3RpdmVTdHlsZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdGhpcy5faW5wdXRDaGlsZC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2hpcCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRoYXRzIGV4ZWN0dXRlZCB3aGVuIHRyeWluZyB0byBhZGQgYSB2YWx1ZSBhcyBjaGlwXG4gICAqIHJldHVybnMgJ3RydWUnIGlmIHN1Y2Nlc3NmdWwsICdmYWxzZScgaWYgaXQgZmFpbHMuXG4gICAqL1xuICBhZGRDaGlwKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAvKipcbiAgICAgKiBhZGQgYSBkZWJvdW5jZSBtcyBkZWxheSB3aGVuIHJlb3BlbmluZyB0aGUgYXV0b2NvbXBsZXRlIHRvIGdpdmUgaXQgdGltZVxuICAgICAqIHRvIHJlcmVuZGVyIHRoZSBuZXh0IGxpc3QgYW5kIGF0IHRoZSBjb3JyZWN0IHNwb3RcbiAgICAgKi9cblxuICAgIHRoaXMuX2Nsb3NlQXV0b2NvbXBsZXRlKCk7XG4gICAgdGltZXIodGhpcy5kZWJvdW5jZSlcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNldEZvY3VzZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLl9zZXRGaXJzdE9wdGlvbkFjdGl2ZSgpO1xuICAgICAgICB0aGlzLl9vcGVuQXV0b2NvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAvLyBjaGVjayBpZiB2YWx1ZSBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVsXG4gICAgaWYgKHRoaXMudmFsdWUuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IHRoaXMuY29tcGFyZVdpdGgoaXRlbSwgdmFsdWUpKSA+IC0xKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICB0aGlzLmFkZC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdHJ5aW5nIHRvIHJlbW92ZSBhIGNoaXAuXG4gICAqIHJldHVybnMgJ3RydWUnIGlmIHN1Y2Nlc3NmdWwsICdmYWxzZScgaWYgaXQgZmFpbHMuXG4gICAqL1xuICByZW1vdmVDaGlwKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByZW1vdmVkVmFsdWVzOiBhbnlbXSA9IHRoaXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBpZiAocmVtb3ZlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZGVsZXRpbmcgbGFzdCBzaW5nbGUgY2hpcCwgdG8gZm9jdXMgaW5wdXQgYWZ0ZXJ3YXJkc1xuICAgICAqIEVsc2UgY2hlY2sgaWYgaXRzIG5vdCB0aGUgbGFzdCBjaGlwIG9mIHRoZSBsaXN0IHRvIGZvY3VzIHRoZSBuZXh0IG9uZS5cbiAgICAgKi9cbiAgICBpZiAoaW5kZXggPT09IHRoaXMuX3RvdGFsQ2hpcHMgLSAxICYmIGluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLl9pbnB1dENoaWxkLmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmIChpbmRleCA8IHRoaXMuX3RvdGFsQ2hpcHMgLSAxKSB7XG4gICAgICB0aGlzLl9mb2N1c0NoaXAoaW5kZXggKyAxKTtcbiAgICB9IGVsc2UgaWYgKGluZGV4ID4gMCkge1xuICAgICAgdGhpcy5fZm9jdXNDaGlwKGluZGV4IC0gMSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmUuZW1pdChyZW1vdmVkVmFsdWVzWzBdKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGJsdXIgb2YgY2hpcCBhbmQgc2VuZHMgb3V0IGV2ZW50XG4gICAqL1xuICBfaGFuZGxlQ2hpcEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNoaXBCbHVyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgb2YgY2hpcCBhbmQgc2VuZHMgb3V0IGV2ZW50XG4gICAqL1xuICBfaGFuZGxlQ2hpcEZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZXRGb2N1c2VkU3RhdGUoKTtcbiAgICB0aGlzLmNoaXBGb2N1cy5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIF9oYW5kbGVGb2N1cygpOiBib29sZWFuIHtcbiAgICB0aGlzLnNldEZvY3VzZWRTdGF0ZSgpO1xuICAgIHRoaXMuX3NldEZpcnN0T3B0aW9uQWN0aXZlKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmb2N1cyBzdGF0ZSBvZiB0aGUgY29tcG9uZW50XG4gICAqL1xuICBzZXRGb2N1c2VkU3RhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3RhYkluZGV4ID0gLTE7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBmb2N1cyBzdGF0ZSBvZiB0aGUgY29tcG9uZW50XG4gICAqL1xuICByZW1vdmVGb2N1c2VkU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3RhYkluZGV4ID0gMDtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IGZvY3VzIHRoZSBpbnB1dCBvciBmaXJzdCBjaGlwLiBTaW5jZSBpdHMgdGhlIGNvbXBvbmVudCBlbnRyeSBwb2ludFxuICAgKiBkZXBlbmRpbmcgaWYgYSB1c2VyIGNhbiBhZGQgb3IgcmVtb3ZlIGNoaXBzXG4gICAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5BZGRDaGlwKSB7XG4gICAgICB0aGlzLl9pbnB1dENoaWxkLmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZm9jdXNGaXJzdENoaXAoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFzc2VzIHJlbGV2YW50IGlucHV0IGtleSBwcmVzc2VzLlxuICAgKi9cbiAgX2lucHV0S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNpbmNlIHRoZSBmaXJzdCBpdGVtIGlzIGhpZ2hsaWdodGVkIG9uIFtyZXF1aXJlTWF0Y2hdLCB3ZSBuZWVkIHRvIGluYWN0aXZhdGUgaXRcbiAgICAgICAgICogd2hlbiBwcmVzc2luZyB0aGUgdXAga2V5XG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5yZXF1aXJlTWF0Y2gpIHtcbiAgICAgICAgICBjb25zdCBsZW5ndGg6IG51bWJlciA9IHRoaXMuX29wdGlvbnMubGVuZ3RoO1xuICAgICAgICAgIGlmIChsZW5ndGggPiAxICYmIHRoaXMuX29wdGlvbnMudG9BcnJheSgpWzBdLmFjdGl2ZSAmJiB0aGlzLl9pbnRlcm5hbEFjdGl2YXRlT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zLnRvQXJyYXkoKVswXS5zZXRJbmFjdGl2ZVN0eWxlcygpO1xuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxBY3RpdmF0ZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gcHJldmVudCBkZWZhdWx0IHdpbmRvdyBzY3JvbGxpbmdcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgY2FzZSBERUxFVEU6XG4gICAgICBjYXNlIEJBQ0tTUEFDRTpcbiAgICAgICAgdGhpcy5fY2xvc2VBdXRvY29tcGxldGUoKTtcbiAgICAgICAgLyoqIENoZWNrIHRvIHNlZSBpZiBpbnB1dCBpcyBlbXB0eSB3aGVuIHByZXNzaW5nIGxlZnQgYXJyb3cgdG8gbW92ZSB0byB0aGUgbGFzdCBjaGlwICovXG4gICAgICAgIGlmICghdGhpcy5faW5wdXRDaGlsZC52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2ZvY3VzTGFzdENoaXAoKTtcbiAgICAgICAgICAvLyBwcmV2ZW50IGRlZmF1bHQgd2luZG93IHNjcm9sbGluZ1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICB0aGlzLl9jbG9zZUF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAvKiogQ2hlY2sgdG8gc2VlIGlmIGlucHV0IGlzIGVtcHR5IHdoZW4gcHJlc3NpbmcgcmlnaHQgYXJyb3cgdG8gbW92ZSB0byB0aGUgZmlyc3QgY2hpcCAqL1xuICAgICAgICBpZiAoIXRoaXMuX2lucHV0Q2hpbGQudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9mb2N1c0ZpcnN0Q2hpcCgpO1xuICAgICAgICAgIC8vIHByZXZlbnQgZGVmYXVsdCB3aW5kb3cgc2Nyb2xsaW5nXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAvLyBkZWZhdWx0XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBhc3NlcyByZWxldmFudCBjaGlwIGtleSBwcmVzc2VzLlxuICAgKi9cbiAgX2NoaXBLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIERFTEVURTpcbiAgICAgIGNhc2UgQkFDS1NQQUNFOlxuICAgICAgICAvKiogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBkZWxldGUgYSBjaGlwICovXG4gICAgICAgIGlmICh0aGlzLmNhblJlbW92ZUNoaXApIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUNoaXAoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgIGNhc2UgTEVGVF9BUlJPVzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrIHRvIHNlZSBpZiBsZWZ0L2Rvd24gYXJyb3cgd2FzIHByZXNzZWQgd2hpbGUgZm9jdXNpbmcgdGhlIGZpcnN0IGNoaXAgdG8gZm9jdXMgaW5wdXQgbmV4dFxuICAgICAgICAgKiBBbHNvIGNoZWNrIGlmIGlucHV0IHNob3VsZCBiZSBmb2N1c2VkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAvLyBvbmx5IHRyeSB0byB0YXJnZXQgaW5wdXQgaWYgcHJlc3NpbmcgbGVmdFxuICAgICAgICAgIGlmICh0aGlzLmNhbkFkZENoaXAgJiYgZXZlbnQua2V5Q29kZSA9PT0gTEVGVF9BUlJPVykge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDaGlsZC5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0xhc3RDaGlwKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgIHRoaXMuX2ZvY3VzQ2hpcChpbmRleCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgZGVmYXVsdCB3aW5kb3cgc2Nyb2xsaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgY2FzZSBSSUdIVF9BUlJPVzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrIHRvIHNlZSBpZiByaWdodC91cCBhcnJvdyB3YXMgcHJlc3NlZCB3aGlsZSBmb2N1c2luZyB0aGUgbGFzdCBjaGlwIHRvIGZvY3VzIGlucHV0IG5leHRcbiAgICAgICAgICogQWxzbyBjaGVjayBpZiBpbnB1dCBzaG91bGQgYmUgZm9jdXNlZFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLl90b3RhbENoaXBzIC0gMSkge1xuICAgICAgICAgIC8vIG9ubHkgdHJ5IHRvIHRhcmdldCBpbnB1dCBpZiBwcmVzc2luZyByaWdodFxuICAgICAgICAgIGlmICh0aGlzLmNhbkFkZENoaXAgJiYgZXZlbnQua2V5Q29kZSA9PT0gUklHSFRfQVJST1cpIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0Q2hpbGQuZm9jdXMoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNGaXJzdENoaXAoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCB0aGlzLl90b3RhbENoaXBzIC0gMSkge1xuICAgICAgICAgIHRoaXMuX2ZvY3VzQ2hpcChpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgZGVmYXVsdCB3aW5kb3cgc2Nyb2xsaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRlZmF1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHJlbW92ZSBmcm9tIGRpc3BsYXkgdGhlIHZhbHVlIGFkZGVkIGZyb20gdGhlIGF1dG9jb21wbGV0ZSBzaW5jZSBpdCBnb2VzIGRpcmVjdGx5IGFzIGNoaXAuXG4gICAqL1xuICBfcmVtb3ZlSW5wdXREaXNwbGF5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBvcGVuIHRoZSBhdXRvY29tcGxldGUgbWFudWFsbHkgaWYgaXRzIG5vdCBhbHJlYWR5IG9wZW5lZFxuICAgKi9cbiAgX29wZW5BdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hdXRvY29tcGxldGVUcmlnZ2VyLnBhbmVsT3Blbikge1xuICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gY2xvc2UgdGhlIGF1dG9jb21wbGV0ZSBtYW51YWxseSBpZiBpdHMgbm90IGFscmVhZHkgY2xvc2VkXG4gICAqL1xuICBfY2xvc2VBdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2F1dG9jb21wbGV0ZVRyaWdnZXIucGFuZWxPcGVuKSB7XG4gICAgICB0aGlzLl9hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdG90YWwgb2YgY2hpcHNcbiAgICovXG4gIGdldCBfdG90YWxDaGlwcygpOiBudW1iZXIge1xuICAgIGNvbnN0IGNoaXBzOiBNYXRDaGlwW10gPSB0aGlzLl9jaGlwc0NoaWxkcmVuLnRvQXJyYXkoKTtcbiAgICByZXR1cm4gY2hpcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBmb2N1cyBhIGRlc2lyZWQgY2hpcCBieSBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBfZm9jdXNDaGlwKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvKiogY2hlY2sgdG8gc2VlIGlmIGluZGV4IGV4aXN0cyBpbiB0aGUgYXJyYXkgYmVmb3JlIGZvY3VzaW5nICovXG4gICAgaWYgKGluZGV4ID4gLTEgJiYgdGhpcy5fdG90YWxDaGlwcyA+IGluZGV4KSB7XG4gICAgICB0aGlzLl9jaGlwc0NoaWxkcmVuLnRvQXJyYXkoKVtpbmRleF0uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogTWV0aG9kIHRvIGZvY3VzIGZpcnN0IGNoaXAgKi9cbiAgcHJpdmF0ZSBfZm9jdXNGaXJzdENoaXAoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9jdXNDaGlwKDApO1xuICB9XG5cbiAgLyoqIE1ldGhvZCB0byBmb2N1cyBsYXN0IGNoaXAgKi9cbiAgcHJpdmF0ZSBfZm9jdXNMYXN0Q2hpcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c0NoaXAodGhpcy5fdG90YWxDaGlwcyAtIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB0b2dnbGUgdGhlIGRpc2FibGUgc3RhdGUgb2YgaW5wdXRcbiAgICogQ2hlY2tzIGlmIG5vdCBpbiBkaXNhYmxlZCBzdGF0ZSBhbmQgaWYgY2hpcEFkZGl0aW9uIGlzIHNldCB0byAndHJ1ZSdcbiAgICovXG4gIHByaXZhdGUgX3RvZ2dsZUlucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkFkZENoaXApIHtcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLmVuYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZmlyc3Qgb3B0aW9uIGFzIGFjdGl2ZSB0byBsZXQgdGhlIHVzZXIga25vdyB3aGljaCBvbmUgd2lsbCBiZSBhZGRlZCB3aGVuIHByZXNzaW5nIGVudGVyXG4gICAqIE9ubHkgaWYgW3JlcXVpcmVNYXRjaF0gaGFzIGJlZW4gc2V0XG4gICAqL1xuICBwcml2YXRlIF9zZXRGaXJzdE9wdGlvbkFjdGl2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXF1aXJlTWF0Y2gpIHtcbiAgICAgIC8vIG5lZWQgdG8gdXNlIGEgdGltZXIgaGVyZSB0byB3YWl0IHVudGlsIHRoZSBhdXRvY29tcGxldGUgaGFzIGJlZW4gb3BlbmVkIChlbmQgb2YgcXVldWUpXG4gICAgICB0aW1lcigpXG4gICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCAmJiB0aGlzLl9vcHRpb25zICYmIHRoaXMuX29wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gY2xlYW4gdXAgb2YgcHJldmlvdXNseSBhY3RpdmUgb3B0aW9uc1xuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy50b0FycmF5KCkuZm9yRWFjaCgob3B0aW9uOiBNYXRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9uLnNldEluYWN0aXZlU3R5bGVzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHNldCB0aGUgZmlyc3Qgb25lIGFzIGFjdGl2ZVxuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy50b0FycmF5KClbMF0uc2V0QWN0aXZlU3R5bGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9pbnRlcm5hbEFjdGl2YXRlT3B0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoZXMgY2xpY2tzIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudCB0byByZW1vdmUgdGhlIGZvY3VzXG4gICAqIFRoZSBhdXRvY29tcGxldGUgcGFuZWwgaXMgY29uc2lkZXJlZCBpbnNpZGUgdGhlIGNvbXBvbmVudCBzbyB3ZVxuICAgKiBuZWVkIHRvIHVzZSBhIGZsYWcgdG8gZmluZCBvdXQgd2hlbiBpdHMgY2xpY2tlZC5cbiAgICovXG4gIHByaXZhdGUgX3dhdGNoT3V0c2lkZUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kb2N1bWVudCkge1xuICAgICAgdGhpcy5fb3V0c2lkZUNsaWNrU3VicyA9IG1lcmdlKGZyb21FdmVudCh0aGlzLl9kb2N1bWVudCwgJ2NsaWNrJyksIGZyb21FdmVudCh0aGlzLl9kb2N1bWVudCwgJ3RvdWNoZW5kJykpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLl90b3VjaGVuZERlYm91bmNlKSxcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbGlja1RhcmdldDogSFRNTEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkICYmXG4gICAgICAgICAgICAgIGNsaWNrVGFyZ2V0ICE9PSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja1RhcmdldCkgJiZcbiAgICAgICAgICAgICAgIXRoaXMuX2ludGVybmFsQ2xpY2tcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlVHJpZ2dlci5jbG9zZVBhbmVsKCk7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZvY3VzZWRTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|