@ng-atomic/components 18.2.0 → 18.4.0
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/atoms/smart-menu-button/smart-menu-button.atom.d.ts +3 -3
- package/components.module.d.ts +6 -1
- package/esm2022/atoms/icon/icon.atom.mjs +2 -2
- package/esm2022/atoms/smart-menu-button/smart-menu-button.atom.mjs +77 -114
- package/esm2022/components.module.mjs +7 -3
- package/esm2022/extras/editor/editor.component.mjs +78 -46
- package/esm2022/frames/app/app.frame.mjs +130 -70
- package/esm2022/frames/auto-layout/auto-layout.frame.mjs +29 -7
- package/esm2022/frames/columns/columns.frame.mjs +2 -2
- package/esm2022/frames/divider/divider.frame.mjs +2 -2
- package/esm2022/frames/drawer/drawer.frame.mjs +2 -2
- package/esm2022/frames/entrance/entrance.frame.mjs +2 -2
- package/esm2022/frames/fab/fab.frame.mjs +2 -2
- package/esm2022/frames/frames.module.mjs +3 -3
- package/esm2022/frames/line-up/line-up.animations.mjs +3 -7
- package/esm2022/frames/line-up/line-up.frame.mjs +2 -2
- package/esm2022/frames/loading/loading.frame.mjs +2 -2
- package/esm2022/frames/progress-bar/index.mjs +2 -0
- package/esm2022/frames/progress-bar/ng-atomic-components-frames-progress-bar.mjs +5 -0
- package/esm2022/frames/progress-bar/progress-bar.frame.mjs +53 -0
- package/esm2022/frames/router-outlet/router-outlet.frame.mjs +96 -41
- package/esm2022/frames/scroll/scroll.frame.mjs +32 -14
- package/esm2022/frames/scroll-v2/index.mjs +2 -2
- package/esm2022/frames/side-app/index.mjs +2 -0
- package/esm2022/frames/side-app/ng-atomic-components-frames-side-app.mjs +5 -0
- package/esm2022/frames/side-app/side-app.frame.mjs +74 -0
- package/esm2022/frames/side-nav/side-nav.frame.mjs +27 -21
- package/esm2022/frames/smart-menu/smart-menu.frame.mjs +2 -2
- package/esm2022/frames/tabs/tabs.frame.mjs +13 -7
- package/esm2022/frames/vertical-hide/vertical-hide.frame.mjs +11 -18
- package/esm2022/molecules/action-input-field/action-input-field.molecule.mjs +2 -2
- package/esm2022/molecules/actions-column/actions-column.molecule.mjs +13 -7
- package/esm2022/molecules/checkbox-column/checkbox-column.molecule.mjs +48 -21
- package/esm2022/molecules/date-input-field/date-input-field.molecule.mjs +2 -2
- package/esm2022/molecules/date-range-input-field/date-range-input-field.molecule.mjs +2 -2
- package/esm2022/molecules/file-input-field/file-input-field.molecule.mjs +2 -2
- package/esm2022/molecules/grid-item/grid-item.molecule.mjs +2 -2
- package/esm2022/molecules/list-item/index.mjs +2 -0
- package/esm2022/molecules/list-item/list-item.molecule.mjs +198 -0
- package/esm2022/molecules/list-item/ng-atomic-components-molecules-list-item.mjs +5 -0
- package/esm2022/molecules/loading-box/loading-box.molecule.mjs +2 -2
- package/esm2022/molecules/molecules.module.mjs +4 -1
- package/esm2022/molecules/navigation-list-item/navigation-list-item.molecule.mjs +2 -2
- package/esm2022/molecules/select-input-field/select-input-field.molecule.mjs +9 -5
- package/esm2022/molecules/smart-column/smart-column.molecule.mjs +129 -43
- package/esm2022/molecules/tree-column/tree-column.molecule.mjs +37 -25
- package/esm2022/organisms/action-buttons-section/action-buttons-section.organism.mjs +2 -2
- package/esm2022/organisms/action-input-section/action-input-section.organism.mjs +2 -2
- package/esm2022/organisms/agreement-input-section/agreement-input-section.organism.mjs +3 -3
- package/esm2022/organisms/card-input-section/card-input-section.organism.mjs +2 -2
- package/esm2022/organisms/cvc-and-exp-input-section/cvc-and-exp-input-section.organism.mjs +2 -2
- package/esm2022/organisms/date-input-section/date-input-section.organism.mjs +4 -4
- package/esm2022/organisms/date-range-input-section/date-range-input-section.organism.mjs +4 -4
- package/esm2022/organisms/definition-list/definition-list.organism.mjs +2 -2
- package/esm2022/organisms/file-input-section/file-input-section.organism.mjs +2 -2
- package/esm2022/organisms/filters-section/filters-section.organism.mjs +5 -5
- package/esm2022/organisms/graphql-editor/graphql-editor.organism.mjs +1 -1
- package/esm2022/organisms/grid-cards-section/grid-cards-section.organism.mjs +2 -2
- package/esm2022/organisms/heading/heading.organism.mjs +2 -2
- package/esm2022/{sheets/actions → organisms/list}/index.mjs +2 -2
- package/esm2022/organisms/list/list.organism.mjs +161 -0
- package/esm2022/{sheets/actions/ng-atomic-components-sheets-actions.mjs → organisms/list/ng-atomic-components-organisms-list.mjs} +1 -1
- package/esm2022/organisms/menu-footer/menu-footer.organism.mjs +2 -2
- package/esm2022/organisms/menu-header/menu-header.organism.mjs +2 -2
- package/esm2022/organisms/mermaid-section/mermaid-section.organism.mjs +39 -33
- package/esm2022/organisms/messages-section/messages-section.organism.mjs +2 -2
- package/esm2022/organisms/navigation-list/navigation-list.organism.mjs +2 -2
- package/esm2022/organisms/navigator/navigator.organism.mjs +49 -19
- package/esm2022/organisms/number-input-section/number-input-section.organism.mjs +2 -2
- package/esm2022/organisms/organisms.module.mjs +5 -5
- package/esm2022/organisms/paginator/paginator.organism.mjs +2 -2
- package/esm2022/organisms/password-input-section/password-input-section.organism.mjs +2 -2
- package/esm2022/organisms/select-input-section/select-input-section.organism.mjs +4 -4
- package/esm2022/organisms/selection-list/selection-list.organism.mjs +1 -1
- package/esm2022/organisms/slider-input-section/slider-input-section.organism.mjs +4 -4
- package/esm2022/organisms/social-login-section/social-login-section.organism.mjs +2 -2
- package/esm2022/organisms/table/index.mjs +2 -1
- package/esm2022/organisms/table/table.helpers.mjs +4 -4
- package/esm2022/organisms/table/table.organism.mjs +152 -141
- package/esm2022/organisms/text-input-section/text-input-section.organism.mjs +4 -4
- package/esm2022/organisms/textarea-section/textarea-section.organism.mjs +2 -2
- package/esm2022/organisms/thread-messages-section/thread-messages-section.organism.mjs +2 -2
- package/esm2022/organisms/tree-list/index.mjs +2 -0
- package/esm2022/organisms/tree-list/ng-atomic-components-organisms-tree-list.mjs +5 -0
- package/esm2022/organisms/tree-list/tree-list.organism.mjs +125 -0
- package/esm2022/pages/_index/index.page.mjs +169 -62
- package/esm2022/pages/columns/columns.page.mjs +10 -9
- package/esm2022/pages/form/form.page.mjs +27 -12
- package/esm2022/pages/terms/terms.page.mjs +2 -2
- package/esm2022/templates/_index/index.template.mjs +276 -155
- package/esm2022/templates/background/background.template.mjs +2 -2
- package/esm2022/templates/code-editor/code-editor.template.mjs +52 -15
- package/esm2022/templates/columns/columns.template.mjs +6 -4
- package/esm2022/templates/entrance/entrance.template.mjs +12 -11
- package/esm2022/templates/form/form.builder.mjs +93 -71
- package/esm2022/templates/form/form.template.mjs +47 -28
- package/esm2022/templates/icon-button-menu/icon-button-menu.template.mjs +69 -16
- package/esm2022/templates/menu/menu.template.mjs +2 -2
- package/esm2022/templates/messages/messages.template.mjs +71 -65
- package/esm2022/templates/selection/selection.template.mjs +2 -2
- package/esm2022/templates/settings/settings.template.mjs +2 -2
- package/extras/editor/editor.component.d.ts +19 -10
- package/fesm2022/ng-atomic-components-atoms-icon.mjs +2 -2
- package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs +76 -113
- package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-extras-editor.mjs +79 -47
- package/fesm2022/ng-atomic-components-extras-editor.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-app.mjs +129 -69
- package/fesm2022/ng-atomic-components-frames-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-auto-layout.mjs +29 -7
- package/fesm2022/ng-atomic-components-frames-auto-layout.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-divider.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-drawer.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-entrance.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-fab.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-line-up.mjs +4 -8
- package/fesm2022/ng-atomic-components-frames-line-up.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-loading.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-progress-bar.mjs +60 -0
- package/fesm2022/ng-atomic-components-frames-progress-bar.mjs.map +1 -0
- package/fesm2022/ng-atomic-components-frames-router-outlet.mjs +96 -41
- package/fesm2022/ng-atomic-components-frames-router-outlet.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-scroll-v2.mjs +1 -48
- package/fesm2022/ng-atomic-components-frames-scroll-v2.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-scroll.mjs +31 -13
- package/fesm2022/ng-atomic-components-frames-scroll.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-side-app.mjs +81 -0
- package/fesm2022/ng-atomic-components-frames-side-app.mjs.map +1 -0
- package/fesm2022/ng-atomic-components-frames-side-nav.mjs +26 -20
- package/fesm2022/ng-atomic-components-frames-side-nav.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-smart-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-tabs.mjs +12 -6
- package/fesm2022/ng-atomic-components-frames-tabs.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs +10 -17
- package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs +1 -1
- package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-actions-column.mjs +12 -6
- package/fesm2022/ng-atomic-components-molecules-actions-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs +47 -21
- package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs +1 -1
- package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-grid-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-list-item.mjs +203 -0
- package/fesm2022/ng-atomic-components-molecules-list-item.mjs.map +1 -0
- package/fesm2022/ng-atomic-components-molecules-loading-box.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs +8 -4
- package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-smart-column.mjs +128 -43
- package/fesm2022/ng-atomic-components-molecules-smart-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-tree-column.mjs +36 -24
- package/fesm2022/ng-atomic-components-molecules-tree-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules.mjs +3 -0
- package/fesm2022/ng-atomic-components-molecules.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-agreement-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-agreement-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs +3 -3
- package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs +3 -3
- package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-definition-list.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-filters-section.mjs +4 -4
- package/fesm2022/ng-atomic-components-organisms-filters-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-graphql-editor.mjs +1 -1
- package/fesm2022/ng-atomic-components-organisms-graphql-editor.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-heading.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-list.mjs +166 -0
- package/fesm2022/ng-atomic-components-organisms-list.mjs.map +1 -0
- package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-menu-header.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs +38 -32
- package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-messages-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-navigator.mjs +48 -18
- package/fesm2022/ng-atomic-components-organisms-navigator.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-paginator.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs +3 -3
- package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-selection-list.mjs +1 -1
- package/fesm2022/ng-atomic-components-organisms-selection-list.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs +3 -3
- package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-table.mjs +156 -145
- package/fesm2022/ng-atomic-components-organisms-table.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs +3 -3
- package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-tree-list.mjs +132 -0
- package/fesm2022/ng-atomic-components-organisms-tree-list.mjs.map +1 -0
- package/fesm2022/ng-atomic-components-organisms.mjs +4 -4
- package/fesm2022/ng-atomic-components-organisms.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-_index.mjs +168 -62
- package/fesm2022/ng-atomic-components-pages-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-columns.mjs +9 -8
- package/fesm2022/ng-atomic-components-pages-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-form.mjs +26 -11
- package/fesm2022/ng-atomic-components-pages-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-terms.mjs +1 -1
- package/fesm2022/ng-atomic-components-pages-terms.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-_index.mjs +276 -155
- package/fesm2022/ng-atomic-components-templates-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-background.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-code-editor.mjs +51 -14
- package/fesm2022/ng-atomic-components-templates-code-editor.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-columns.mjs +5 -3
- package/fesm2022/ng-atomic-components-templates-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-entrance.mjs +11 -10
- package/fesm2022/ng-atomic-components-templates-entrance.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-form.mjs +139 -99
- package/fesm2022/ng-atomic-components-templates-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs +68 -15
- package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-messages.mjs +71 -65
- package/fesm2022/ng-atomic-components-templates-messages.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-selection.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-settings.mjs +2 -2
- package/fesm2022/ng-atomic-components.mjs +7 -3
- package/fesm2022/ng-atomic-components.mjs.map +1 -1
- package/frames/app/app.frame.d.ts +13 -1
- package/frames/auto-layout/auto-layout.frame.d.ts +7 -1
- package/frames/progress-bar/index.d.ts +1 -0
- package/frames/progress-bar/progress-bar.frame.d.ts +14 -0
- package/frames/router-outlet/router-outlet.frame.d.ts +20 -9
- package/frames/scroll/scroll.frame.d.ts +5 -1
- package/frames/scroll-v2/index.d.ts +1 -1
- package/frames/side-app/index.d.ts +1 -0
- package/frames/side-app/side-app.frame.d.ts +20 -0
- package/frames/side-nav/side-nav.frame.d.ts +6 -2
- package/frames/tabs/tabs.frame.d.ts +2 -1
- package/frames/vertical-hide/vertical-hide.frame.d.ts +2 -2
- package/molecules/actions-column/actions-column.molecule.d.ts +3 -2
- package/molecules/checkbox-column/checkbox-column.molecule.d.ts +12 -4
- package/molecules/list-item/index.d.ts +1 -0
- package/molecules/list-item/list-item.molecule.d.ts +50 -0
- package/molecules/molecules.module.d.ts +3 -0
- package/molecules/smart-column/smart-column.molecule.d.ts +34 -9
- package/molecules/tree-column/tree-column.molecule.d.ts +6 -2
- package/organisms/list/index.d.ts +1 -0
- package/organisms/{smart-list/smart-list.organism.d.ts → list/list.organism.d.ts} +11 -11
- package/organisms/mermaid-section/mermaid-section.organism.d.ts +10 -10
- package/organisms/navigator/navigator.organism.d.ts +8 -6
- package/organisms/organisms.module.d.ts +1 -1
- package/organisms/table/index.d.ts +1 -0
- package/organisms/table/table.helpers.d.ts +1 -1
- package/organisms/table/table.organism.d.ts +32 -1
- package/organisms/tree-list/index.d.ts +1 -0
- package/organisms/tree-list/tree-list.organism.d.ts +33 -0
- package/package.json +37 -25
- package/pages/_index/index.page.d.ts +72 -43
- package/pages/columns/columns.page.d.ts +5 -2
- package/pages/form/form.page.d.ts +11 -2
- package/templates/_index/index.template.d.ts +40 -11
- package/templates/code-editor/code-editor.template.d.ts +6 -3
- package/templates/entrance/entrance.template.d.ts +1 -1
- package/templates/form/form.builder.d.ts +10 -3
- package/templates/form/form.template.d.ts +2 -1
- package/templates/icon-button-menu/icon-button-menu.template.d.ts +3 -2
- package/templates/messages/messages.template.d.ts +21 -17
- package/esm2022/frames/scroll-v2/scroll.frame.mjs +0 -46
- package/esm2022/organisms/smart-list/index.mjs +0 -2
- package/esm2022/organisms/smart-list/ng-atomic-components-organisms-smart-list.mjs +0 -5
- package/esm2022/organisms/smart-list/smart-list.organism.mjs +0 -218
- package/esm2022/sheets/actions/actions.sheet.mjs +0 -45
- package/esm2022/sheets/index.mjs +0 -3
- package/esm2022/sheets/ng-atomic-components-sheets.mjs +0 -5
- package/esm2022/sheets/sheets.module.mjs +0 -25
- package/esm2022/sheets/sheets.service.mjs +0 -20
- package/fesm2022/ng-atomic-components-organisms-smart-list.mjs +0 -223
- package/fesm2022/ng-atomic-components-organisms-smart-list.mjs.map +0 -1
- package/fesm2022/ng-atomic-components-sheets-actions.mjs +0 -52
- package/fesm2022/ng-atomic-components-sheets-actions.mjs.map +0 -1
- package/fesm2022/ng-atomic-components-sheets.mjs +0 -48
- package/fesm2022/ng-atomic-components-sheets.mjs.map +0 -1
- package/frames/scroll-v2/scroll.frame.d.ts +0 -9
- package/organisms/smart-list/index.d.ts +0 -1
- package/sheets/actions/actions.sheet.d.ts +0 -9
- package/sheets/actions/index.d.ts +0 -1
- package/sheets/index.d.ts +0 -2
- package/sheets/sheets.module.d.ts +0 -11
- package/sheets/sheets.service.d.ts +0 -10
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
var IndexPageStore_1;
|
|
1
2
|
import { __decorate, __metadata } from "tslib";
|
|
2
3
|
import { Component, Directive, InjectionToken, Injector, computed, effect, inject, input, runInInjectionContext, signal } from '@angular/core';
|
|
3
4
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
5
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
5
6
|
import { RouterOutletFrame } from '@ng-atomic/components/frames/router-outlet';
|
|
6
|
-
import { getType, IndexTemplate } from '@ng-atomic/components/templates/_index';
|
|
7
|
+
import { convertToItemsMap, getType, IndexTemplate } from '@ng-atomic/components/templates/_index';
|
|
7
8
|
import { injectAll } from '@ng-atomic/common/stores/entities';
|
|
8
9
|
import { injectModel, injectModelName } from '@ng-atomic/common/pipes/domain';
|
|
9
|
-
import { Effect, InjectableComponent, NgAtomicComponent, _computed, applyToInput, provideEffect } from '@ng-atomic/core';
|
|
10
|
+
import { Effect, InjectableComponent, NgAtomicComponent, TokenizedType, _computed, applyToInput, provideEffect, resolveActions } from '@ng-atomic/core';
|
|
10
11
|
import { buildColumns, injectIndexForm } from '@ng-atomic/components/organisms/table';
|
|
11
12
|
import { injectIsRootPage, injectNavStartActions, injectSideAppNavStartActions, makeConfig, NavActionId } from '@ng-atomic/common/services/ui';
|
|
12
13
|
import { injectEntityIdName } from '@ng-atomic/components/pages/form';
|
|
13
|
-
import { computedRawValue, injectChildRouteParam, injectHasNext } from "@ng-atomic/common/utils";
|
|
14
|
+
import { computedRawValue, injectChildRouteParam, injectHasNext, injectRouteSkip } from "@ng-atomic/common/utils";
|
|
14
15
|
import { AppService } from '@ng-atomic/common/services/app';
|
|
15
16
|
import { IndexPipe } from '@ng-atomic/common/pipes/index';
|
|
16
17
|
import { map } from 'rxjs';
|
|
@@ -18,6 +19,7 @@ import { computedAsync } from 'ngxtension/computed-async';
|
|
|
18
19
|
import { makeInitializerConfig } from '@ng-atomic/common/services/initializer';
|
|
19
20
|
import { FormGroup } from '@angular/forms';
|
|
20
21
|
import { IndexLengthPipe } from '@ng-atomic/common/pipes/index-length';
|
|
22
|
+
import { SheetService } from '@ng-atomic/common/services/sheets';
|
|
21
23
|
import * as i0 from "@angular/core";
|
|
22
24
|
export function injectHighlight(key) {
|
|
23
25
|
const itemId = injectChildRouteParam(key);
|
|
@@ -39,8 +41,44 @@ var ActionId;
|
|
|
39
41
|
ActionId["ADD"] = "[@ng-atomic/components/pages/index] Add";
|
|
40
42
|
ActionId["DETAIL"] = "[@ng-atomic/components/pages/index] Detail";
|
|
41
43
|
ActionId["CLOSE"] = "[@ng-atomic/components/pages/index] Close";
|
|
44
|
+
ActionId["LIST_ITEM_BUTTON_CLICKED"] = "[@ng-atomic/components/pages/index] ListItemButtonClick";
|
|
42
45
|
})(ActionId || (ActionId = {}));
|
|
43
|
-
export
|
|
46
|
+
export function toggleAllSelection(selection, items) {
|
|
47
|
+
if (selection.selected.length === items.length) {
|
|
48
|
+
return new SelectionModel(true, []);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return new SelectionModel(true, items.map(entry => entry.id));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function tryJsonParse(value) {
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(value);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function recoveryFormValue(form, key = 'default') {
|
|
63
|
+
// FormControlの場合とFormGroupの場合で処理を分ける
|
|
64
|
+
if (form instanceof FormGroup) {
|
|
65
|
+
form.patchValue(tryJsonParse(localStorage.getItem(key)));
|
|
66
|
+
form.valueChanges.subscribe(value => {
|
|
67
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const value = localStorage.getItem(key);
|
|
72
|
+
console.debug('loaded:', value);
|
|
73
|
+
form.setValue(value);
|
|
74
|
+
form.valueChanges.subscribe(value => {
|
|
75
|
+
console.debug('value:', value);
|
|
76
|
+
localStorage.setItem(key, value);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let IndexPageStore = class IndexPageStore extends InjectableComponent {
|
|
81
|
+
static { IndexPageStore_1 = this; }
|
|
44
82
|
static { this.ActionId = ActionId; }
|
|
45
83
|
static { this.Config = makeConfig(() => {
|
|
46
84
|
const highlight = injectHighlight(injectEntityIdName());
|
|
@@ -52,7 +90,10 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
52
90
|
style: {
|
|
53
91
|
width: 'var(--page-width-lv3)',
|
|
54
92
|
},
|
|
93
|
+
groupedBy: null,
|
|
94
|
+
groupKeys: [],
|
|
55
95
|
items: [],
|
|
96
|
+
itemsMap: undefined,
|
|
56
97
|
itemActions: (() => []),
|
|
57
98
|
itemsMapper: undefined,
|
|
58
99
|
itemsLength: 0,
|
|
@@ -68,20 +109,30 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
68
109
|
});
|
|
69
110
|
}, ['components', 'pages', 'index']); }
|
|
70
111
|
static provideTypeConfig() {
|
|
71
|
-
return
|
|
112
|
+
return IndexPageStore_1.Config.provide(() => {
|
|
72
113
|
return (config, context) => ({ ...config, type: getType(context) });
|
|
73
114
|
});
|
|
74
115
|
}
|
|
75
116
|
static provideItemsFromRepository() {
|
|
76
|
-
return
|
|
117
|
+
return IndexPageStore_1.Config.provide(() => {
|
|
77
118
|
const Model = injectModel();
|
|
78
119
|
const items = Model ? injectAll(Model) : signal([]);
|
|
79
120
|
return (config) => ({ ...config, items: items() });
|
|
80
121
|
});
|
|
81
122
|
}
|
|
123
|
+
static provideItemActionsConfig() {
|
|
124
|
+
return IndexPageStore_1.Config.provide(() => {
|
|
125
|
+
return (config) => ({
|
|
126
|
+
...config,
|
|
127
|
+
itemActions: (item) => [
|
|
128
|
+
{ id: ActionId.DETAIL, icon: 'open_in_new', name: '詳細', payload: item },
|
|
129
|
+
],
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
82
133
|
static provideSideAppNavStartActions() {
|
|
83
|
-
return
|
|
84
|
-
const isRootPage = injectIsRootPage();
|
|
134
|
+
return IndexPageStore_1.Config.provide(() => {
|
|
135
|
+
const isRootPage = injectIsRootPage('side');
|
|
85
136
|
const navStartActions = injectSideAppNavStartActions(isRootPage);
|
|
86
137
|
return (config) => ({
|
|
87
138
|
...config,
|
|
@@ -89,9 +140,9 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
89
140
|
});
|
|
90
141
|
});
|
|
91
142
|
}
|
|
92
|
-
static { this.Initializer = makeInitializerConfig(
|
|
143
|
+
static { this.Initializer = makeInitializerConfig(IndexPageStore_1); }
|
|
93
144
|
static provideFormInitializer() {
|
|
94
|
-
return
|
|
145
|
+
return IndexPageStore_1.Initializer.provide((store) => {
|
|
95
146
|
const form = injectIndexForm({
|
|
96
147
|
columns: buildColumns([
|
|
97
148
|
'id',
|
|
@@ -104,20 +155,17 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
104
155
|
});
|
|
105
156
|
}
|
|
106
157
|
static provideFormValueStorageInitializer() {
|
|
107
|
-
return
|
|
158
|
+
return IndexPageStore_1.Initializer.provide((store) => {
|
|
108
159
|
const route = inject(ActivatedRoute);
|
|
109
160
|
const paths = route.pathFromRoot.map(r => r?.routeConfig?.path);
|
|
110
161
|
const key = `@ng-atomic/components/pages/index:${paths.filter((path) => !!path).join('/')}`;
|
|
111
|
-
store.form()
|
|
112
|
-
store.form().valueChanges.subscribe(value => {
|
|
113
|
-
localStorage.setItem(key, JSON.stringify(value));
|
|
114
|
-
});
|
|
162
|
+
recoveryFormValue(store.form(), key);
|
|
115
163
|
});
|
|
116
164
|
}
|
|
117
165
|
static provideItemsLengthInitializer() {
|
|
118
166
|
return [
|
|
119
167
|
IndexLengthPipe,
|
|
120
|
-
|
|
168
|
+
IndexPageStore_1.Initializer.provide((store) => {
|
|
121
169
|
const pipe = inject(IndexLengthPipe);
|
|
122
170
|
const formValue = computedRawValue(() => store.form());
|
|
123
171
|
effect(() => {
|
|
@@ -130,7 +178,7 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
130
178
|
static provideItemsMapperInitializer() {
|
|
131
179
|
return [
|
|
132
180
|
IndexPipe,
|
|
133
|
-
|
|
181
|
+
IndexPageStore_1.Initializer.provide((store) => {
|
|
134
182
|
const formValue = computedRawValue(() => store.form());
|
|
135
183
|
const indexPipe = inject(IndexPipe);
|
|
136
184
|
effect(() => {
|
|
@@ -150,23 +198,42 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
150
198
|
}),
|
|
151
199
|
];
|
|
152
200
|
}
|
|
201
|
+
static provideColumnsInitializer(useFactory) {
|
|
202
|
+
return [
|
|
203
|
+
IndexPageStore_1.Initializer.provide((store) => {
|
|
204
|
+
const columns = useFactory();
|
|
205
|
+
const form = injectIndexForm({ columns: buildColumns(columns) });
|
|
206
|
+
applyToInput(store, 'form', form);
|
|
207
|
+
}),
|
|
208
|
+
];
|
|
209
|
+
}
|
|
210
|
+
static provideItemsInitializer(itemsFactory) {
|
|
211
|
+
return [
|
|
212
|
+
IndexPageStore_1.Initializer.provide((store) => {
|
|
213
|
+
const items = itemsFactory();
|
|
214
|
+
effect(() => {
|
|
215
|
+
applyToInput(store, 'items', items);
|
|
216
|
+
}, { allowSignalWrites: true });
|
|
217
|
+
}),
|
|
218
|
+
];
|
|
219
|
+
}
|
|
153
220
|
static provideDefaultInitializer() {
|
|
154
221
|
return [
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
222
|
+
IndexPageStore_1.provideFormInitializer(),
|
|
223
|
+
IndexPageStore_1.provideFormValueStorageInitializer(),
|
|
224
|
+
IndexPageStore_1.provideItemsLengthInitializer(),
|
|
225
|
+
IndexPageStore_1.provideItemsMapperInitializer(),
|
|
159
226
|
];
|
|
160
227
|
}
|
|
161
228
|
static provideBackEffect() {
|
|
162
|
-
return provideEffect(
|
|
229
|
+
return provideEffect(IndexPageStore_1.ActionId.BACK, () => {
|
|
163
230
|
return () => history.back();
|
|
164
231
|
});
|
|
165
232
|
}
|
|
166
233
|
static provideDetailEffect() {
|
|
167
|
-
return provideEffect(
|
|
234
|
+
return provideEffect(IndexPageStore_1.ActionId.DETAIL, () => {
|
|
168
235
|
const app = inject(AppService);
|
|
169
|
-
const store = inject(
|
|
236
|
+
const store = inject(IndexPageStore_1);
|
|
170
237
|
const hasNext = injectHasNext();
|
|
171
238
|
return (item) => {
|
|
172
239
|
app.router.navigate([item.id], {
|
|
@@ -177,7 +244,7 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
177
244
|
});
|
|
178
245
|
}
|
|
179
246
|
static provideAddEffect() {
|
|
180
|
-
return provideEffect(
|
|
247
|
+
return provideEffect(IndexPageStore_1.ActionId.ADD, () => {
|
|
181
248
|
const app = inject(AppService);
|
|
182
249
|
const hasNext = injectHasNext();
|
|
183
250
|
const route = inject(ActivatedRoute);
|
|
@@ -191,7 +258,7 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
191
258
|
}
|
|
192
259
|
static provideCheckboxClickEffect() {
|
|
193
260
|
return provideEffect(IndexTemplate.ActionId.TABLE_CHECKBOX_CLICK, () => {
|
|
194
|
-
const store = inject(
|
|
261
|
+
const store = inject(IndexPageStore_1);
|
|
195
262
|
return (item) => {
|
|
196
263
|
store.selection().toggle(item.id);
|
|
197
264
|
};
|
|
@@ -199,7 +266,7 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
199
266
|
}
|
|
200
267
|
static provideTableHeaderClickEffect() {
|
|
201
268
|
return provideEffect(IndexTemplate.ActionId.TABLE_HEADER_CLICK, () => {
|
|
202
|
-
const store = inject(
|
|
269
|
+
const store = inject(IndexPageStore_1);
|
|
203
270
|
return (key) => {
|
|
204
271
|
const sort = store.form().get(['sort']).value;
|
|
205
272
|
const order = key === sort.key && sort.order === 'asc' ? 'desc' : 'asc';
|
|
@@ -214,43 +281,49 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
214
281
|
});
|
|
215
282
|
}
|
|
216
283
|
static provideHeaderCheckboxClickEffect() {
|
|
217
|
-
return provideEffect(
|
|
218
|
-
const store = inject(
|
|
284
|
+
return provideEffect(IndexPageStore_1.ActionId.HEADER_CHECKBOX_CLICK, () => {
|
|
285
|
+
const store = inject(IndexPageStore_1);
|
|
219
286
|
return () => {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
store.displayedItems().forEach(entry => store.selection().select(entry.id));
|
|
225
|
-
}
|
|
287
|
+
const selection = toggleAllSelection(store.selection(), store.displayedItems());
|
|
288
|
+
applyToInput(store, 'selection', selection);
|
|
226
289
|
};
|
|
227
290
|
});
|
|
228
291
|
}
|
|
229
292
|
static provideDefaultEffects() {
|
|
230
293
|
return [
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
294
|
+
IndexPageStore_1.provideDetailEffect(),
|
|
295
|
+
IndexPageStore_1.provideAddEffect(),
|
|
296
|
+
IndexPageStore_1.provideBackEffect(),
|
|
297
|
+
IndexPageStore_1.provideHeaderCheckboxClickEffect(),
|
|
298
|
+
IndexPageStore_1.provideCheckboxClickEffect(),
|
|
299
|
+
IndexPageStore_1.provideTableHeaderClickEffect(),
|
|
300
|
+
IndexPageStore_1.provideSideNavEffects(),
|
|
301
|
+
];
|
|
302
|
+
}
|
|
303
|
+
static provideDefaultConfig() {
|
|
304
|
+
return [
|
|
305
|
+
IndexPageStore_1.Config.provide(),
|
|
306
|
+
IndexPageStore_1.provideItemActionsConfig(),
|
|
307
|
+
IndexPageStore_1.provideTypeConfig(),
|
|
238
308
|
];
|
|
239
309
|
}
|
|
240
310
|
static provideDefault() {
|
|
241
311
|
return [
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
IndexPageStore.provideDefaultEffects(),
|
|
312
|
+
IndexPageStore_1.provideDefaultConfig(),
|
|
313
|
+
IndexPageStore_1.provideDefaultInitializer(),
|
|
314
|
+
IndexPageStore_1.provideDefaultEffects(),
|
|
246
315
|
];
|
|
247
316
|
}
|
|
248
317
|
constructor() {
|
|
249
318
|
super();
|
|
250
|
-
this.config =
|
|
319
|
+
this.config = IndexPageStore_1.Config.inject();
|
|
320
|
+
this.style = input(_computed(() => this.config().style));
|
|
251
321
|
this.route = inject(ActivatedRoute);
|
|
322
|
+
this.groupedBy = input(_computed(() => this.config().groupedBy));
|
|
323
|
+
this.groupKeys = input(_computed(() => this.config().groupKeys));
|
|
252
324
|
this.type = input(_computed(() => this.config().type));
|
|
253
325
|
this.items = input(_computed(() => this.config().items));
|
|
326
|
+
this.itemsMap = input(_computed(() => convertToItemsMap(this.items())));
|
|
254
327
|
this.itemActions = input(_computed(() => this.config().itemActions));
|
|
255
328
|
this.title = input(_computed(() => this.config().title));
|
|
256
329
|
this.form = input(_computed(() => this.config().form));
|
|
@@ -270,15 +343,24 @@ export class IndexPageStore extends InjectableComponent {
|
|
|
270
343
|
return itemsMapper ? itemsMapper(items) : items;
|
|
271
344
|
});
|
|
272
345
|
this.selectedIds = computedAsync(() => this.selection().changed.pipe(map(() => this.selection()?.selected ?? [])), { initialValue: [] });
|
|
273
|
-
this.selected = computed(() => this.items().filter(entry => this.selectedIds().includes(entry.id)));
|
|
346
|
+
this.selected = computed(() => (this.items() ?? []).filter(entry => this.selectedIds().includes(entry.id)));
|
|
274
347
|
this.isAllSelected = computed(() => {
|
|
275
348
|
return this.displayedItems().every(entry => this.selectedIds().includes(entry.id));
|
|
276
349
|
});
|
|
277
|
-
|
|
350
|
+
this.skip = injectRouteSkip();
|
|
351
|
+
IndexPageStore_1.Initializer.initializeStore(this);
|
|
352
|
+
effect(() => {
|
|
353
|
+
console.debug('itemsMap:', this.itemsMap());
|
|
354
|
+
});
|
|
278
355
|
}
|
|
279
356
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexPageStore, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
280
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: IndexPageStore, isStandalone: true, inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: "itemActions", publicName: "itemActions", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: "highlight", publicName: "highlight", isSignal: true, isRequired: false, transformFunction: null }, navStartActions: { classPropertyName: "navStartActions", publicName: "navStartActions", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: "navEndActions", publicName: "navEndActions", isSignal: true, isRequired: false, transformFunction: null }, filterFunc: { classPropertyName: "filterFunc", publicName: "filterFunc", isSignal: true, isRequired: false, transformFunction: null }, itemsMapper: { classPropertyName: "itemsMapper", publicName: "itemsMapper", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: "tableChildrenKey", publicName: "tableChildrenKey", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: "itemsLength", publicName: "itemsLength", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
|
|
281
|
-
}
|
|
357
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: IndexPageStore, isStandalone: true, inputs: { style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, groupedBy: { classPropertyName: "groupedBy", publicName: "groupedBy", isSignal: true, isRequired: false, transformFunction: null }, groupKeys: { classPropertyName: "groupKeys", publicName: "groupKeys", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, itemsMap: { classPropertyName: "itemsMap", publicName: "itemsMap", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: "itemActions", publicName: "itemActions", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: "highlight", publicName: "highlight", isSignal: true, isRequired: false, transformFunction: null }, navStartActions: { classPropertyName: "navStartActions", publicName: "navStartActions", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: "navEndActions", publicName: "navEndActions", isSignal: true, isRequired: false, transformFunction: null }, filterFunc: { classPropertyName: "filterFunc", publicName: "filterFunc", isSignal: true, isRequired: false, transformFunction: null }, itemsMapper: { classPropertyName: "itemsMapper", publicName: "itemsMapper", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: "tableChildrenKey", publicName: "tableChildrenKey", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: "itemsLength", publicName: "itemsLength", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
|
|
358
|
+
};
|
|
359
|
+
IndexPageStore = IndexPageStore_1 = __decorate([
|
|
360
|
+
TokenizedType(),
|
|
361
|
+
__metadata("design:paramtypes", [])
|
|
362
|
+
], IndexPageStore);
|
|
363
|
+
export { IndexPageStore };
|
|
282
364
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexPageStore, decorators: [{
|
|
283
365
|
type: Directive,
|
|
284
366
|
args: [{ standalone: true }]
|
|
@@ -288,6 +370,7 @@ export class IndexPage extends NgAtomicComponent {
|
|
|
288
370
|
super(...arguments);
|
|
289
371
|
this.store = inject(IndexPageStore);
|
|
290
372
|
this.router = inject(Router);
|
|
373
|
+
this.sheet = inject(SheetService);
|
|
291
374
|
}
|
|
292
375
|
back() {
|
|
293
376
|
this.dispatch({ id: IndexPageStore.ActionId.BACK });
|
|
@@ -301,17 +384,30 @@ export class IndexPage extends NgAtomicComponent {
|
|
|
301
384
|
onCheckboxClick(item) {
|
|
302
385
|
this.dispatch({ id: IndexPageStore.ActionId.HEADER_CHECKBOX_CLICK, payload: item });
|
|
303
386
|
}
|
|
387
|
+
// MEMO(@nontangent): シートのアクションをページに持たせるべきかは要検討。
|
|
388
|
+
onItemButtonClicked(item) {
|
|
389
|
+
const actions = resolveActions(this.store.itemActions(), item);
|
|
390
|
+
this.sheet.openActions(actions).then((action) => {
|
|
391
|
+
this.dispatch({
|
|
392
|
+
id: action.id,
|
|
393
|
+
payload: action.payload,
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
}
|
|
304
397
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
305
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: IndexPage, isStandalone: true, selector: "pages-index", usesInheritance: true, hostDirectives: [{ directive: IndexPageStore, inputs: ["items", "items"] }], ngImport: i0, template: `
|
|
306
|
-
<frames-router-outlet>
|
|
398
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: IndexPage, isStandalone: true, selector: "pages-index", usesInheritance: true, hostDirectives: [{ directive: IndexPageStore, inputs: ["items", "items", "itemsMap", "itemsMap"] }], ngImport: i0, template: `
|
|
399
|
+
<frames-router-outlet [skip]="store.skip()">
|
|
307
400
|
<templates-index
|
|
308
|
-
[style
|
|
401
|
+
[style]="store.style()"
|
|
309
402
|
[title]="store.title()"
|
|
310
403
|
[type]="store.type()"
|
|
311
404
|
[tableChildrenKey]="store.tableChildrenKey()"
|
|
312
405
|
[items]="store.displayedItems()"
|
|
406
|
+
[itemsMap]="store.itemsMap()"
|
|
313
407
|
[itemsLength]="store.itemsLength()"
|
|
314
408
|
[itemActions]="store.itemActions()"
|
|
409
|
+
[groupedBy]="store.groupedBy()"
|
|
410
|
+
[groupKeys]="store.groupKeys()"
|
|
315
411
|
[form]="store.form()"
|
|
316
412
|
[selection]="store.selection()"
|
|
317
413
|
[highlight]="store.highlight()"
|
|
@@ -320,7 +416,7 @@ export class IndexPage extends NgAtomicComponent {
|
|
|
320
416
|
(action)="dispatch($event)"
|
|
321
417
|
/>
|
|
322
418
|
</frames-router-outlet>
|
|
323
|
-
`, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-
|
|
419
|
+
`, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-Xw2p: var(--page-width-lv3);--primary-color-SCOPED-IN-index-Xw2p: var(--primary-color);--on-primary-color-SCOPED-IN-index-Xw2p: var(--on-primary-color);--surface-color-SCOPED-IN-index-Xw2p: var(--surface-color);--on-surface-color-SCOPED-IN-index-Xw2p: var(--on-surface-color);--on-background-color-SCOPED-IN-index-Xw2p: var(--on-background-color);--background-color-SCOPED-IN-index-Xw2p: var(--background-color);--navigator-background-color-SCOPED-IN-index-Xw2p: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-Xw2p: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-Xw2p: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-Xw2p: var(--table-on-background-color)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-Xw2p)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-Xw2p);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-Xw2p);--surface-color: var(--surface-color-SCOPED-IN-index-Xw2p);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-Xw2p);--background-color: var(--background-color-SCOPED-IN-index-Xw2p);--on-background-color: var(--on-background-color-SCOPED-IN-index-Xw2p);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-Xw2p);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-Xw2p);--table-background-color: var(--table-background-color-SCOPED-IN-index-Xw2p);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-Xw2p)}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: IndexTemplate, selector: "templates-index" }] }); }
|
|
324
420
|
}
|
|
325
421
|
__decorate([
|
|
326
422
|
Effect(IndexTemplate.ActionId.BACK),
|
|
@@ -346,22 +442,30 @@ __decorate([
|
|
|
346
442
|
__metadata("design:paramtypes", [Object]),
|
|
347
443
|
__metadata("design:returntype", void 0)
|
|
348
444
|
], IndexPage.prototype, "onCheckboxClick", null);
|
|
445
|
+
__decorate([
|
|
446
|
+
Effect(IndexTemplate.ActionId.LIST_ITEM_BUTTON_CLICKED),
|
|
447
|
+
__metadata("design:type", Function),
|
|
448
|
+
__metadata("design:paramtypes", [Object]),
|
|
449
|
+
__metadata("design:returntype", void 0)
|
|
450
|
+
], IndexPage.prototype, "onItemButtonClicked", null);
|
|
349
451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexPage, decorators: [{
|
|
350
452
|
type: Component,
|
|
351
453
|
args: [{ selector: 'pages-index', standalone: true, imports: [
|
|
352
454
|
RouterOutletFrame,
|
|
353
455
|
IndexTemplate,
|
|
354
|
-
IndexLengthPipe,
|
|
355
456
|
], template: `
|
|
356
|
-
<frames-router-outlet>
|
|
457
|
+
<frames-router-outlet [skip]="store.skip()">
|
|
357
458
|
<templates-index
|
|
358
|
-
[style
|
|
459
|
+
[style]="store.style()"
|
|
359
460
|
[title]="store.title()"
|
|
360
461
|
[type]="store.type()"
|
|
361
462
|
[tableChildrenKey]="store.tableChildrenKey()"
|
|
362
463
|
[items]="store.displayedItems()"
|
|
464
|
+
[itemsMap]="store.itemsMap()"
|
|
363
465
|
[itemsLength]="store.itemsLength()"
|
|
364
466
|
[itemActions]="store.itemActions()"
|
|
467
|
+
[groupedBy]="store.groupedBy()"
|
|
468
|
+
[groupKeys]="store.groupKeys()"
|
|
365
469
|
[form]="store.form()"
|
|
366
470
|
[selection]="store.selection()"
|
|
367
471
|
[highlight]="store.highlight()"
|
|
@@ -373,8 +477,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
373
477
|
`, hostDirectives: [
|
|
374
478
|
{
|
|
375
479
|
directive: IndexPageStore,
|
|
376
|
-
inputs: [
|
|
480
|
+
inputs: [
|
|
481
|
+
'items',
|
|
482
|
+
'itemsMap',
|
|
483
|
+
],
|
|
377
484
|
},
|
|
378
|
-
], styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-
|
|
379
|
-
}], propDecorators: { back: [], close: [], itemClick: [], onCheckboxClick: [] } });
|
|
380
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL19pbmRleC9pbmRleC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQVcsTUFBTSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9JLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxn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a0JULGtCQUVlO3dCQUNkOzRCQUNFLFNBQVMsRUFBRSxjQUFjOzRCQUN6QixNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7eUJBQ2xCO3FCQUNGOzhCQU9TLElBQUksTUFLSixLQUFLLE1BS0wsU0FBUyxNQUtULGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBTaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFJvdXRlck91dGxldEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9yb3V0ZXItb3V0bGV0JztcbmltcG9ydCB7IGdldFR5cGUsIEluZGV4VGVtcGxhdGUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL19pbmRleCc7XG5pbXBvcnQgeyBpbmplY3RBbGwgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zdG9yZXMvZW50aXRpZXMnO1xuaW1wb3J0IHsgaW5qZWN0TW9kZWwsIGluamVjdE1vZGVsTmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RvbWFpbic7XG5pbXBvcnQgeyBBY3Rpb25zLCBFZmZlY3QsIEluamVjdGFibGVDb21wb25lbnQsIE5nQXRvbWljQ29tcG9uZW50LCBfY29tcHV0ZWQsIGFwcGx5VG9JbnB1dCwgcHJvdmlkZUVmZmVjdCB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBidWlsZENvbHVtbnMsIGluamVjdEluZGV4Rm9ybSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvdGFibGUnO1xuaW1wb3J0IHsgaW5qZWN0SXNSb290UGFnZSwgaW5qZWN0TmF2U3RhcnRBY3Rpb25zLCBpbmplY3RTaWRlQXBwTmF2U3RhcnRBY3Rpb25zLCBtYWtlQ29uZmlnLCBOYXZBY3Rpb25JZCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpJztcbmltcG9ydCB7IGluamVjdEVudGl0eUlkTmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9mb3JtJztcbmltcG9ydCB7IGNvbXB1dGVkUmF3VmFsdWUsIGluamVjdENoaWxkUm91dGVQYXJhbSwgaW5qZWN0SGFzTmV4dCB9IGZyb20gXCJAbmctYXRvbWljL2NvbW1vbi91dGlsc1wiO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2FwcCc7XG5pbXBvcnQgeyBJbmRleFBpcGUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9pbmRleCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbXB1dGVkQXN5bmMgfSBmcm9tICduZ3h0ZW5zaW9uL2NvbXB1dGVkLWFzeW5jJztcbmltcG9ydCB7IG1ha2VJbml0aWFsaXplckNvbmZpZyB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2luaXRpYWxpemVyJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5kZXhMZW5ndGhQaXBlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvaW5kZXgtbGVuZ3RoJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhpZ2hsaWdodChrZXk6IHN0cmluZyk6IFNpZ25hbDxTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+PiB7XG4gIGNvbnN0IGl0ZW1JZCA9IGluamVjdENoaWxkUm91dGVQYXJhbShrZXkpO1xuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgaXRlbUlkKCkgPyBbaXRlbUlkKCldIDogW10pKTtcbn1cblxudHlwZSBGaWx0ZXJGdW5jID0gKGl0ZW06IHtpZDogc3RyaW5nfSkgPT4gYm9vbGVhbjtcbmNvbnN0IEZJTFRFUl9GVU5DID0gbmV3IEluamVjdGlvblRva2VuPChpbmplY3Rvcj86IEluamVjdG9yKSA9PiBGaWx0ZXJGdW5jPignRklMVEVSX0ZVTkMnKTtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsdGVyRnVuYyh1c2VGYWN0b3J5OiAoKSA9PiBGaWx0ZXJGdW5jKSB7XG4gIGNvbnN0IHdyYXBwZWQgPSAoKSA9PiAoaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKSA9PiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsIHVzZUZhY3RvcnkpO1xuXHRyZXR1cm4geyBwcm92aWRlOiBGSUxURVJfRlVOQywgdXNlRmFjdG9yeTogd3JhcHBlZCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEZpbHRlckZ1bmMoKSB7XG4gIHJldHVybiAoaW5qZWN0KEZJTFRFUl9GVU5DLCB7b3B0aW9uYWw6IHRydWV9KSA/PyAoKCkgPT4gKCkgPT4gdHJ1ZSkpKCk7XG59XG5cbmVudW0gQWN0aW9uSWQge1xuICBCQUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6cGFnZXMvaW5kZXhdIEJhY2snLFxuICBDSEVDS0JPWF9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBDaGVja2JveENsaWNrJyxcbiAgSEVBREVSX0NIRUNLQk9YX0NMSUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIEhlYWRlckNoZWNrYm94Q2xpY2snLFxuICBBREQgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gQWRkJyxcbiAgREVUQUlMID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIERldGFpbCcsXG4gIENMT1NFID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIENsb3NlJyxcbn1cblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBJbmRleFBhZ2VTdG9yZSBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgc3RhdGljIHJlYWRvbmx5IENvbmZpZyA9IG1ha2VDb25maWcoKCkgPT4ge1xuICAgIGNvbnN0IGhpZ2hsaWdodCA9IGluamVjdEhpZ2hsaWdodChpbmplY3RFbnRpdHlJZE5hbWUoKSk7XG4gICAgY29uc3QgaXNSb290UGFnZSA9IGluamVjdElzUm9vdFBhZ2UoKTtcbiAgICBjb25zdCBuYXZTdGFydEFjdGlvbnMgPSBpbmplY3ROYXZTdGFydEFjdGlvbnMoaXNSb290UGFnZSk7ICBcbiAgICBjb25zdCBmaWx0ZXJGdW5jID0gaW5qZWN0RmlsdGVyRnVuYygpO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGluamVjdE1vZGVsTmFtZSgpO1xuICAgIHJldHVybiAoKSA9PiAoe1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6ICd2YXIoLS1wYWdlLXdpZHRoLWx2MyknLFxuICAgICAgfSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIGl0ZW1BY3Rpb25zOiAoKCkgPT4gW10pIGFzIEFjdGlvbnMsXG4gICAgICBpdGVtc01hcHBlcjogPChpdGVtczogYW55W10pID0+IGFueVtdPnVuZGVmaW5lZCxcbiAgICAgIGl0ZW1zTGVuZ3RoOiAwLFxuICAgICAgZmlsdGVyRnVuYyxcbiAgICAgIHRpdGxlOiBtb2RlbE5hbWUoKSA/IGAke21vZGVsTmFtZSgpfeS4gOimp2AgOiBg5Y+W5b6X5LitLi4uYCxcbiAgICAgIHR5cGU6ICd0YWJsZScsXG4gICAgICBzZWxlY3Rpb246IG5ldyBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+KHRydWUsIFtdKSxcbiAgICAgIGhpZ2hsaWdodDogaGlnaGxpZ2h0KCksXG4gICAgICBmb3JtOiBuZXcgRm9ybUdyb3VwKHt9KSBhcyBBYnN0cmFjdENvbnRyb2wsXG4gICAgICB0YWJsZUNoaWxkcmVuS2V5OiBudWxsLFxuICAgICAgbmF2U3RhcnRBY3Rpb25zOiBuYXZTdGFydEFjdGlvbnMoKSxcbiAgICAgIG5hdkVuZEFjdGlvbnM6IDxBY3Rpb25zPltdLFxuICAgIH0pO1xuICB9LCBbJ2NvbXBvbmVudHMnLCAncGFnZXMnLCAnaW5kZXgnXSk7XG5cbiAgc3RhdGljIHByb3ZpZGVUeXBlQ29uZmlnKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICByZXR1cm4gKGNvbmZpZywgY29udGV4dCkgPT4gKHsuLi5jb25maWcsIHR5cGU6IGdldFR5cGUoY29udGV4dCl9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlSXRlbXNGcm9tUmVwb3NpdG9yeSgpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3QgTW9kZWwgPSBpbmplY3RNb2RlbCgpO1xuICAgICAgY29uc3QgaXRlbXMgPSBNb2RlbCA/IGluamVjdEFsbChNb2RlbCkgOiBzaWduYWwoW10pO1xuICAgICAgcmV0dXJuIChjb25maWcpID0+ICh7Li4uY29uZmlnLCBpdGVtczogaXRlbXMoKX0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVTaWRlQXBwTmF2U3RhcnRBY3Rpb25zKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICBjb25zdCBpc1Jvb3RQYWdlID0gaW5qZWN0SXNSb290UGFnZSgpO1xuICAgICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucyhpc1Jvb3RQYWdlKTtcbiAgICAgIHJldHVybiAoY29uZmlnKSA9PiAoe1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIG5hdlN0YXJ0QWN0aW9uczogbmF2U3RhcnRBY3Rpb25zKCksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBJbml0aWFsaXplciA9IG1ha2VJbml0aWFsaXplckNvbmZpZyhJbmRleFBhZ2VTdG9yZSk7XG4gIHN0YXRpYyBwcm92aWRlRm9ybUluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgZm9ybSA9IGluamVjdEluZGV4Rm9ybSh7XG4gICAgICAgIGNvbHVtbnM6IGJ1aWxkQ29sdW1ucyhbXG4gICAgICAgICAgJ2lkJywgXG4gICAgICAgICAgJ2NyZWF0ZWRBdCcsXG4gICAgICAgICAgJ3VwZGF0ZWRBdCcsXG4gICAgICAgICAgKGl0ZW06IHtpZDogc3RyaW5nfSkgPT4gW3sgaWQ6IEFjdGlvbklkLkRFVEFJTCwgaWNvbjogJ29wZW5faW5fbmV3JywgbmFtZTogJ+ips+e0sCcsIHBheWxvYWQ6IGl0ZW0gfV0sXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdmb3JtJywgZm9ybSk7XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIHByb3ZpZGVGb3JtVmFsdWVTdG9yYWdlSW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICBjb25zdCBwYXRocyA9IHJvdXRlLnBhdGhGcm9tUm9vdC5tYXAociA9PiByPy5yb3V0ZUNvbmZpZz8ucGF0aCk7XG4gICAgICBjb25zdCBrZXkgPSBgQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4OiR7cGF0aHMuZmlsdGVyKChwYXRoKSA9PiAhIXBhdGgpLmpvaW4oJy8nKX1gO1xuICAgICAgc3RvcmUuZm9ybSgpLnBhdGNoVmFsdWUoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIHx8ICd7fScpKTtcbiAgICAgIHN0b3JlLmZvcm0oKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUl0ZW1zTGVuZ3RoSW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4TGVuZ3RoUGlwZSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBpcGUgPSBpbmplY3QoSW5kZXhMZW5ndGhQaXBlKTtcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gY29tcHV0ZWRSYXdWYWx1ZSgoKSA9PiBzdG9yZS5mb3JtKCkpO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGl0ZW1zTGVuZ3RoID0gcGlwZS50cmFuc2Zvcm0oc3RvcmUuaXRlbXMoKSwgZm9ybVZhbHVlKCkpO1xuICAgICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ2l0ZW1zTGVuZ3RoJywgaXRlbXNMZW5ndGgpO1xuICAgICAgICB9LCB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9KTtcbiAgICAgIH0pLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUl0ZW1zTWFwcGVySW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4UGlwZSxcblx0XHRcdEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGZvcm1WYWx1ZSA9IGNvbXB1dGVkUmF3VmFsdWUoKCkgPT4gc3RvcmUuZm9ybSgpKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhQaXBlID0gaW5qZWN0KEluZGV4UGlwZSk7XG5cdFx0XHRcdGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtVmFsdWUoKSBhcyBhbnk7XG5cdFx0XHRcdCAgY29uc3QgaXRlbXNNYXBwZXIgPSAoaXRlbXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zdCBmaWx0ZXJGdW5jcyA9IHN0b3JlLmZpbHRlckZ1bmNzKCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmRlYnVnKCdmaWx0ZXJGdW5jczonLCBmaWx0ZXJGdW5jcyk7XG4gICAgICAgICAgICAvLyBmb3IgKGNvbnN0IGZ1bmMgb2YgZmlsdGVyRnVuY3MgPz8gW10pIHtcbiAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZygnaXRlbXM6JywgaXRlbXMpO1xuICAgICAgICAgICAgLy8gICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihmdW5jKTtcbiAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZygnZmlsdGVyZWRJdGVtczonLCBpdGVtcyk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICByZXR1cm4gaW5kZXhQaXBlLnRyYW5zZm9ybShpdGVtcywgdmFsdWUpO1xuICAgICAgICAgIH07XG5cdFx0XHRcdFx0YXBwbHlUb0lucHV0KHN0b3JlLCAnaXRlbXNNYXBwZXInLCBpdGVtc01hcHBlcik7XG5cdFx0XHRcdH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG5cdFx0XHR9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0SW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVGb3JtSW5pdGlhbGl6ZXIoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVGb3JtVmFsdWVTdG9yYWdlSW5pdGlhbGl6ZXIoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVJdGVtc0xlbmd0aEluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlSXRlbXNNYXBwZXJJbml0aWFsaXplcigpLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUJhY2tFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhQYWdlU3RvcmUuQWN0aW9uSWQuQkFDSywgKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IGhpc3RvcnkuYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZXRhaWxFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhQYWdlU3RvcmUuQWN0aW9uSWQuREVUQUlMLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICBjb25zdCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gICAgICBjb25zdCBoYXNOZXh0ID0gaW5qZWN0SGFzTmV4dCgpO1xuICAgICAgcmV0dXJuIChpdGVtOiB7aWQ6IHN0cmluZ30pID0+IHtcbiAgICAgICAgYXBwLnJvdXRlci5uYXZpZ2F0ZShbaXRlbS5pZF0sIHtcbiAgICAgICAgICByZWxhdGl2ZVRvOiBzdG9yZS5yb3V0ZSxcbiAgICAgICAgICByZXBsYWNlVXJsOiBoYXNOZXh0KCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVBZGRFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhQYWdlU3RvcmUuQWN0aW9uSWQuQURELCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICBjb25zdCBoYXNOZXh0ID0gaW5qZWN0SGFzTmV4dCgpO1xuICAgICAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgYXBwLnJvdXRlci5uYXZpZ2F0ZShbJ25ldyddLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogcm91dGUsXG4gICAgICAgICAgcmVwbGFjZVVybDogISFoYXNOZXh0KCksXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQ2hlY2tib3hDbGlja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFRlbXBsYXRlLkFjdGlvbklkLlRBQkxFX0NIRUNLQk9YX0NMSUNLLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gICAgICByZXR1cm4gKGl0ZW06IHtpZDogc3RyaW5nfSkgPT4ge1xuICAgICAgICBzdG9yZS5zZWxlY3Rpb24oKS50b2dnbGUoaXRlbS5pZCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVUYWJsZUhlYWRlckNsaWNrRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfSEVBREVSX0NMSUNLLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gICAgICByZXR1cm4gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvcnQgPSBzdG9yZS5mb3JtKCkuZ2V0KFsnc29ydCddKS52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBrZXkgPT09IHNvcnQua2V5ICYmIHNvcnQub3JkZXIgPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYyc7XG4gICAgICAgIHN0b3JlLmZvcm0oKS5wYXRjaFZhbHVlKHtzb3J0OiB7a2V5LCBvcmRlcn19KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVNpZGVOYXZFZmZlY3RzKCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KE5hdkFjdGlvbklkLlRPR0dMRV9TSURFX05BViwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IGFwcC5zaWRlTmF2LnRvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVIZWFkZXJDaGVja2JveENsaWNrRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkhFQURFUl9DSEVDS0JPWF9DTElDSywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKHN0b3JlLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgICAgIHN0b3JlLnNlbGVjdGlvbigpLmNsZWFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RvcmUuZGlzcGxheWVkSXRlbXMoKS5mb3JFYWNoKGVudHJ5ID0+IHN0b3JlLnNlbGVjdGlvbigpLnNlbGVjdChlbnRyeS5pZCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURlZmF1bHRFZmZlY3RzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGV0YWlsRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlQWRkRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlQmFja0VmZmVjdCgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUhlYWRlckNoZWNrYm94Q2xpY2tFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVDaGVja2JveENsaWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlVGFibGVIZWFkZXJDbGlja0VmZmVjdCgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZVNpZGVOYXZFZmZlY3RzKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gW1xuICAgICAgSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVUeXBlQ29uZmlnKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdEluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdEVmZmVjdHMoKSxcbiAgICBdO1xuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLmluamVjdCgpO1xuICByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHJlYWRvbmx5IHR5cGUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS50eXBlKSk7XG4gIHJlYWRvbmx5IGl0ZW1zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXMpKTtcbiAgcmVhZG9ubHkgaXRlbUFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtQWN0aW9ucykpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnRpdGxlKSk7XG4gIHJlYWRvbmx5IGZvcm0gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5mb3JtKSk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnNlbGVjdGlvbikpO1xuICByZWFkb25seSBoaWdobGlnaHQgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5oaWdobGlnaHQpKTtcbiAgcmVhZG9ubHkgbmF2U3RhcnRBY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkubmF2U3RhcnRBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IG5hdkVuZEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZFbmRBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IGZpbHRlckZ1bmMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5maWx0ZXJGdW5jKSk7XG4gIHJlYWRvbmx5IGl0ZW1zTWFwcGVyID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXNNYXBwZXIpKTtcbiAgcmVhZG9ubHkgdGFibGVDaGlsZHJlbktleSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnRhYmxlQ2hpbGRyZW5LZXkpKTtcblxuICByZWFkb25seSBpdGVtc0xlbmd0aCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1zTGVuZ3RoKSk7XG4gIHJlYWRvbmx5IGRpc3BsYXllZEl0ZW1zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbXMoKSA/PyBbXTtcbiAgICBjb25zdCBmaWx0ZXJGdW5jID0gdGhpcy5maWx0ZXJGdW5jKCk7XG4gICAgaXRlbXMgPSBmaWx0ZXJGdW5jID8gaXRlbXMuZmlsdGVyKGZpbHRlckZ1bmMpIDogaXRlbXM7XG4gICAgY29uc3QgaXRlbXNNYXBwZXIgPSB0aGlzLml0ZW1zTWFwcGVyKCk7XG4gICAgcmV0dXJuIGl0ZW1zTWFwcGVyID8gaXRlbXNNYXBwZXIoaXRlbXMpIDogaXRlbXM7XG4gIH0pO1xuICByZWFkb25seSBzZWxlY3RlZElkcyA9IGNvbXB1dGVkQXN5bmMoKCkgPT4gdGhpcy5zZWxlY3Rpb24oKS5jaGFuZ2VkLnBpcGUoXG4gICAgbWFwKCgpID0+IHRoaXMuc2VsZWN0aW9uKCk/LnNlbGVjdGVkID8/IFtdKSxcbiAgKSwge2luaXRpYWxWYWx1ZTogW119KTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLml0ZW1zKCkuZmlsdGVyKGVudHJ5ID0+IHRoaXMuc2VsZWN0ZWRJZHMoKS5pbmNsdWRlcyhlbnRyeS5pZCkpKTtcbiAgcmVhZG9ubHkgaXNBbGxTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ZWRJdGVtcygpLmV2ZXJ5KGVudHJ5ID0+IHRoaXMuc2VsZWN0ZWRJZHMoKS5pbmNsdWRlcyhlbnRyeS5pZCkpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLmluaXRpYWxpemVTdG9yZSh0aGlzKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYWdlcy1pbmRleCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJPdXRsZXRGcmFtZSxcbiAgICBJbmRleFRlbXBsYXRlLFxuICAgIEluZGV4TGVuZ3RoUGlwZSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgPGZyYW1lcy1yb3V0ZXItb3V0bGV0PlxuICAgIDx0ZW1wbGF0ZXMtaW5kZXhcbiAgICAgIFtzdHlsZS53aWR0aF09XCJzdG9yZS5jb25maWcoKS5zdHlsZS53aWR0aFwiXG4gICAgICBbdGl0bGVdPVwic3RvcmUudGl0bGUoKVwiXG4gICAgICBbdHlwZV09XCJzdG9yZS50eXBlKClcIlxuICAgICAgW3RhYmxlQ2hpbGRyZW5LZXldPVwic3RvcmUudGFibGVDaGlsZHJlbktleSgpXCJcbiAgICAgIFtpdGVtc109XCJzdG9yZS5kaXNwbGF5ZWRJdGVtcygpXCJcbiAgICAgIFtpdGVtc0xlbmd0aF09XCJzdG9yZS5pdGVtc0xlbmd0aCgpXCJcbiAgICAgIFtpdGVtQWN0aW9uc109XCJzdG9yZS5pdGVtQWN0aW9ucygpXCJcbiAgICAgIFtmb3JtXT1cInN0b3JlLmZvcm0oKVwiXG4gICAgICBbc2VsZWN0aW9uXT1cInN0b3JlLnNlbGVjdGlvbigpXCJcbiAgICAgIFtoaWdobGlnaHRdPVwic3RvcmUuaGlnaGxpZ2h0KClcIlxuICAgICAgW25hdlN0YXJ0QWN0aW9uc109XCJzdG9yZS5uYXZTdGFydEFjdGlvbnMoKVwiXG4gICAgICBbbmF2RW5kQWN0aW9uc109XCJzdG9yZS5uYXZFbmRBY3Rpb25zKClcIlxuICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAvPlxuICA8L2ZyYW1lcy1yb3V0ZXItb3V0bGV0PlxuICBgLFxuICBzdHlsZVVybDogJy4vaW5kZXgucGFnZS5zY3NzJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IEluZGV4UGFnZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbJ2l0ZW1zJ10sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5kZXhQYWdlIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgQEVmZmVjdChJbmRleFRlbXBsYXRlLkFjdGlvbklkLkJBQ0spXG4gIHByb3RlY3RlZCBiYWNrKCkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5CQUNLfSk7XG4gIH1cblxuICBARWZmZWN0KE5hdkFjdGlvbklkLkNMT1NFKVxuICBwcm90ZWN0ZWQgY2xvc2UoKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLkNMT1NFfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuSVRFTV9DTElDSylcbiAgcHJvdGVjdGVkIGl0ZW1DbGljayhpdGVtOiB7aWQ6IHN0cmluZ30pIHtcbiAgICB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuREVUQUlMLCBwYXlsb2FkOiBpdGVtfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfSEVBREVSX0NIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25DaGVja2JveENsaWNrKGl0ZW06IHtpZDogc3RyaW5nfSkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0ssIHBheWxvYWQ6IGl0ZW19KTtcbiAgfVxufVxuIl19
|
|
485
|
+
], styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-Xw2p: var(--page-width-lv3);--primary-color-SCOPED-IN-index-Xw2p: var(--primary-color);--on-primary-color-SCOPED-IN-index-Xw2p: var(--on-primary-color);--surface-color-SCOPED-IN-index-Xw2p: var(--surface-color);--on-surface-color-SCOPED-IN-index-Xw2p: var(--on-surface-color);--on-background-color-SCOPED-IN-index-Xw2p: var(--on-background-color);--background-color-SCOPED-IN-index-Xw2p: var(--background-color);--navigator-background-color-SCOPED-IN-index-Xw2p: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-Xw2p: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-Xw2p: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-Xw2p: var(--table-on-background-color)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-Xw2p)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-Xw2p);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-Xw2p);--surface-color: var(--surface-color-SCOPED-IN-index-Xw2p);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-Xw2p);--background-color: var(--background-color-SCOPED-IN-index-Xw2p);--on-background-color: var(--on-background-color-SCOPED-IN-index-Xw2p);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-Xw2p);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-Xw2p);--table-background-color: var(--table-background-color-SCOPED-IN-index-Xw2p);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-Xw2p)}\n"] }]
|
|
486
|
+
}], propDecorators: { back: [], close: [], itemClick: [], onCheckboxClick: [], onItemButtonClicked: [] } });
|
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL19pbmRleC9pbmRleC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBb0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBWSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBVyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pLLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUs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QUFpQixzRkFDakIsYUFBYTs7QUF5Q0w7SUFEVCxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Ozs7cUNBR25DO0FBR1M7SUFEVCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQzs7OztzQ0FHekI7QUFHUztJQURULE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQzs7OzswQ0FHekM7QUFHUztJQURULE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDOzs7O2dEQUcxRDtBQUlTO0lBRFQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUM7Ozs7b0RBU3ZEOzJGQW5DVSxTQUFTO2tCQXhDckIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQO3dCQUNQLGlCQUFpQjt3QkFDakIsYUFBYTtxQkFDZCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQsa0JBRWU7d0JBQ2Q7NEJBQ0UsU0FBUyxFQUFFLGNBQWM7NEJBQ3pCLE1BQU0sRUFBRTtnQ0FDTixPQUFPO2dDQUNQLFVBQVU7NkJBQ1g7eUJBQ0Y7cUJBQ0Y7OEJBUVMsSUFBSSxNQUtKLEtBQUssTUFLTCxTQUFTLE1BS1QsZUFBZSxNQU1mLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByb3ZpZGVyLCBTaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFJvdXRlck91dGxldEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9yb3V0ZXItb3V0bGV0JztcbmltcG9ydCB7IGNvbnZlcnRUb0l0ZW1zTWFwLCBnZXRUeXBlLCBJbmRleFRlbXBsYXRlLCBJdGVtc01hcCB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvX2luZGV4JztcbmltcG9ydCB7IGluamVjdEFsbCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3N0b3Jlcy9lbnRpdGllcyc7XG5pbXBvcnQgeyBpbmplY3RNb2RlbCwgaW5qZWN0TW9kZWxOYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvZG9tYWluJztcbmltcG9ydCB7IEFjdGlvbnMsIEVmZmVjdCwgSW5qZWN0YWJsZUNvbXBvbmVudCwgTmdBdG9taWNDb21wb25lbnQsIFRva2VuaXplZFR5cGUsIF9jb21wdXRlZCwgYXBwbHlUb0lucHV0LCBwcm92aWRlRWZmZWN0LCByZXNvbHZlQWN0aW9ucyB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBidWlsZENvbHVtbnMsIGluamVjdEluZGV4Rm9ybSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvdGFibGUnO1xuaW1wb3J0IHsgaW5qZWN0SXNSb290UGFnZSwgaW5qZWN0TmF2U3RhcnRBY3Rpb25zLCBpbmplY3RTaWRlQXBwTmF2U3RhcnRBY3Rpb25zLCBtYWtlQ29uZmlnLCBOYXZBY3Rpb25JZCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpJztcbmltcG9ydCB7IGluamVjdEVudGl0eUlkTmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9mb3JtJztcbmltcG9ydCB7IGNvbXB1dGVkUmF3VmFsdWUsIGluamVjdENoaWxkUm91dGVQYXJhbSwgaW5qZWN0SGFzTmV4dCwgaW5qZWN0Um91dGVQYXJhbSwgaW5qZWN0Um91dGVTa2lwIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3V0aWxzXCI7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvYXBwJztcbmltcG9ydCB7IEluZGV4UGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2luZGV4JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29tcHV0ZWRBc3luYyB9IGZyb20gJ25neHRlbnNpb24vY29tcHV0ZWQtYXN5bmMnO1xuaW1wb3J0IHsgbWFrZUluaXRpYWxpemVyQ29uZmlnIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbmRleExlbmd0aFBpcGUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9pbmRleC1sZW5ndGgnO1xuaW1wb3J0IHsgU2hlZXRTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvc2hlZXRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhpZ2hsaWdodChrZXk6IHN0cmluZyk6IFNpZ25hbDxTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+PiB7XG4gIGNvbnN0IGl0ZW1JZCA9IGluamVjdENoaWxkUm91dGVQYXJhbShrZXkpO1xuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgaXRlbUlkKCkgPyBbaXRlbUlkKCldIDogW10pKTtcbn1cblxudHlwZSBGaWx0ZXJGdW5jID0gKGl0ZW06IHtpZDogc3RyaW5nfSkgPT4gYm9vbGVhbjtcbmNvbnN0IEZJTFRFUl9GVU5DID0gbmV3IEluamVjdGlvblRva2VuPChpbmplY3Rvcj86IEluamVjdG9yKSA9PiBGaWx0ZXJGdW5jPignRklMVEVSX0ZVTkMnKTtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsdGVyRnVuYyh1c2VGYWN0b3J5OiAoKSA9PiBGaWx0ZXJGdW5jKSB7XG4gIGNvbnN0IHdyYXBwZWQgPSAoKSA9PiAoaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKSA9PiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsIHVzZUZhY3RvcnkpO1xuXHRyZXR1cm4geyBwcm92aWRlOiBGSUxURVJfRlVOQywgdXNlRmFjdG9yeTogd3JhcHBlZCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEZpbHRlckZ1bmMoKSB7XG4gIHJldHVybiAoaW5qZWN0KEZJTFRFUl9GVU5DLCB7b3B0aW9uYWw6IHRydWV9KSA/PyAoKCkgPT4gKCkgPT4gdHJ1ZSkpKCk7XG59XG5cbmVudW0gQWN0aW9uSWQge1xuICBCQUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6cGFnZXMvaW5kZXhdIEJhY2snLFxuICBDSEVDS0JPWF9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBDaGVja2JveENsaWNrJyxcbiAgSEVBREVSX0NIRUNLQk9YX0NMSUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIEhlYWRlckNoZWNrYm94Q2xpY2snLFxuICBBREQgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gQWRkJyxcbiAgREVUQUlMID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIERldGFpbCcsXG4gIENMT1NFID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIENsb3NlJyxcbiAgTElTVF9JVEVNX0JVVFRPTl9DTElDS0VEID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIExpc3RJdGVtQnV0dG9uQ2xpY2snLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlQWxsU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8c3RyaW5nPiwgaXRlbXM6IHtpZDogc3RyaW5nfVtdKSB7XG4gIGlmIChzZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID09PSBpdGVtcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgW10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBpdGVtcy5tYXAoZW50cnkgPT4gZW50cnkuaWQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cnlKc29uUGFyc2UodmFsdWU6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyeUZvcm1WYWx1ZShmb3JtOiBBYnN0cmFjdENvbnRyb2wsIGtleTogc3RyaW5nID0gJ2RlZmF1bHQnKSB7XG4gIC8vIEZvcm1Db250cm9s44Gu5aC05ZCI44GoRm9ybUdyb3Vw44Gu5aC05ZCI44Gn5Yem55CG44KS5YiG44GR44KLXG4gIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgZm9ybS5wYXRjaFZhbHVlKHRyeUpzb25QYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKSk7XG4gICAgZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgY29uc29sZS5kZWJ1ZygnbG9hZGVkOicsIHZhbHVlKTtcbiAgICBmb3JtLnNldFZhbHVlKHZhbHVlKTtcbiAgICBmb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc29sZS5kZWJ1ZygndmFsdWU6JywgdmFsdWUpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgfSk7XG4gIH1cbn1cblxuQFRva2VuaXplZFR5cGUoKVxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBJbmRleFBhZ2VTdG9yZTxUPiBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgc3RhdGljIHJlYWRvbmx5IENvbmZpZyA9IG1ha2VDb25maWcoKCkgPT4ge1xuICAgIGNvbnN0IGhpZ2hsaWdodCA9IGluamVjdEhpZ2hsaWdodChpbmplY3RFbnRpdHlJZE5hbWUoKSk7XG4gICAgY29uc3QgaXNSb290UGFnZSA9IGluamVjdElzUm9vdFBhZ2UoKTtcbiAgICBjb25zdCBuYXZTdGFydEFjdGlvbnMgPSBpbmplY3ROYXZTdGFydEFjdGlvbnMoaXNSb290UGFnZSk7ICBcbiAgICBjb25zdCBmaWx0ZXJGdW5jID0gaW5qZWN0RmlsdGVyRnVuYygpO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGluamVjdE1vZGVsTmFtZSgpO1xuICAgIHJldHVybiAoKSA9PiAoe1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6ICd2YXIoLS1wYWdlLXdpZHRoLWx2MyknLFxuICAgICAgfSxcbiAgICAgIGdyb3VwZWRCeTogPHN0cmluZz5udWxsLFxuICAgICAgZ3JvdXBLZXlzOiBbXSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIGl0ZW1zTWFwOiA8SXRlbXNNYXA8YW55Pj51bmRlZmluZWQsXG4gICAgICBpdGVtQWN0aW9uczogKCgpID0+IFtdKSBhcyBBY3Rpb25zLFxuICAgICAgaXRlbXNNYXBwZXI6IDwoaXRlbXM6IGFueVtdKSA9PiBhbnlbXT51bmRlZmluZWQsXG4gICAgICBpdGVtc0xlbmd0aDogMCxcbiAgICAgIGZpbHRlckZ1bmMsXG4gICAgICB0aXRsZTogbW9kZWxOYW1lKCkgPyBgJHttb2RlbE5hbWUoKX3kuIDopqdgIDogYOWPluW+l+S4rS4uLmAsXG4gICAgICB0eXBlOiA8J2xpc3QnIHwgJ3RhYmxlJyB8ICdncmlkJz4ndGFibGUnLFxuICAgICAgc2VsZWN0aW9uOiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSksXG4gICAgICBoaWdobGlnaHQ6IGhpZ2hsaWdodCgpLFxuICAgICAgZm9ybTogbmV3IEZvcm1Hcm91cCh7fSkgYXMgQWJzdHJhY3RDb250cm9sLFxuICAgICAgdGFibGVDaGlsZHJlbktleTogbnVsbCxcbiAgICAgIG5hdlN0YXJ0QWN0aW9uczogbmF2U3RhcnRBY3Rpb25zKCksXG4gICAgICBuYXZFbmRBY3Rpb25zOiA8QWN0aW9ucz5bXSxcbiAgICB9KTtcbiAgfSwgWydjb21wb25lbnRzJywgJ3BhZ2VzJywgJ2luZGV4J10pO1xuXG4gIHN0YXRpYyBwcm92aWRlVHlwZUNvbmZpZygpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7Li4uY29uZmlnLCB0eXBlOiBnZXRUeXBlKGNvbnRleHQpfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUl0ZW1zRnJvbVJlcG9zaXRvcnkoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICAgIGNvbnN0IE1vZGVsID0gaW5qZWN0TW9kZWwoKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gTW9kZWwgPyBpbmplY3RBbGwoTW9kZWwpIDogc2lnbmFsKFtdKTtcbiAgICAgIHJldHVybiAoY29uZmlnKSA9PiAoey4uLmNvbmZpZywgaXRlbXM6IGl0ZW1zKCl9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlSXRlbUFjdGlvbnNDb25maWcoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICAgIHJldHVybiAoY29uZmlnKSA9PiAoe1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIGl0ZW1BY3Rpb25zOiAoaXRlbSkgPT4gW1xuICAgICAgICAgIHsgaWQ6IEFjdGlvbklkLkRFVEFJTCwgaWNvbjogJ29wZW5faW5fbmV3JywgbmFtZTogJ+ips+e0sCcsIHBheWxvYWQ6IGl0ZW0gfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVTaWRlQXBwTmF2U3RhcnRBY3Rpb25zKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICBjb25zdCBpc1Jvb3RQYWdlID0gaW5qZWN0SXNSb290UGFnZSgnc2lkZScpO1xuICAgICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucyhpc1Jvb3RQYWdlKTtcbiAgICAgIHJldHVybiAoY29uZmlnKSA9PiAoe1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIG5hdlN0YXJ0QWN0aW9uczogbmF2U3RhcnRBY3Rpb25zKCksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBJbml0aWFsaXplciA9IG1ha2VJbml0aWFsaXplckNvbmZpZyhJbmRleFBhZ2VTdG9yZSk7XG4gIHN0YXRpYyBwcm92aWRlRm9ybUluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgZm9ybSA9IGluamVjdEluZGV4Rm9ybSh7XG4gICAgICAgIGNvbHVtbnM6IGJ1aWxkQ29sdW1ucyhbXG4gICAgICAgICAgJ2lkJywgXG4gICAgICAgICAgJ2NyZWF0ZWRBdCcsXG4gICAgICAgICAgJ3VwZGF0ZWRBdCcsXG4gICAgICAgICAgKGl0ZW06IHtpZDogc3RyaW5nfSkgPT4gW3sgaWQ6IEFjdGlvbklkLkRFVEFJTCwgaWNvbjogJ29wZW5faW5fbmV3JywgbmFtZTogJ+ips+e0sCcsIHBheWxvYWQ6IGl0ZW0gfV0sXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdmb3JtJywgZm9ybSk7XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIHByb3ZpZGVGb3JtVmFsdWVTdG9yYWdlSW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICBjb25zdCBwYXRocyA9IHJvdXRlLnBhdGhGcm9tUm9vdC5tYXAociA9PiByPy5yb3V0ZUNvbmZpZz8ucGF0aCk7XG4gICAgICBjb25zdCBrZXkgPSBgQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4OiR7cGF0aHMuZmlsdGVyKChwYXRoKSA9PiAhIXBhdGgpLmpvaW4oJy8nKX1gO1xuICAgICAgcmVjb3ZlcnlGb3JtVmFsdWUoc3RvcmUuZm9ybSgpLCBrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc0xlbmd0aEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleExlbmd0aFBpcGUsXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBwaXBlID0gaW5qZWN0KEluZGV4TGVuZ3RoUGlwZSk7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGNvbXB1dGVkUmF3VmFsdWUoKCkgPT4gc3RvcmUuZm9ybSgpKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtc0xlbmd0aCA9IHBpcGUudHJhbnNmb3JtKHN0b3JlLml0ZW1zKCksIGZvcm1WYWx1ZSgpKTtcbiAgICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdpdGVtc0xlbmd0aCcsIGl0ZW1zTGVuZ3RoKTtcbiAgICAgICAgfSwge2FsbG93U2lnbmFsV3JpdGVzOiB0cnVlfSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc01hcHBlckluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBpcGUsXG5cdFx0XHRJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBmb3JtVmFsdWUgPSBjb21wdXRlZFJhd1ZhbHVlKCgpID0+IHN0b3JlLmZvcm0oKSk7XG5cdFx0XHRcdGNvbnN0IGluZGV4UGlwZSA9IGluamVjdChJbmRleFBpcGUpO1xuXHRcdFx0XHRlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVZhbHVlKCkgYXMgYW55O1xuXHRcdFx0XHQgIGNvbnN0IGl0ZW1zTWFwcGVyID0gKGl0ZW1zOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgLy8gY29uc3QgZmlsdGVyRnVuY3MgPSBzdG9yZS5maWx0ZXJGdW5jcygpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5kZWJ1ZygnZmlsdGVyRnVuY3M6JywgZmlsdGVyRnVuY3MpO1xuICAgICAgICAgICAgLy8gZm9yIChjb25zdCBmdW5jIG9mIGZpbHRlckZ1bmNzID8/IFtdKSB7XG4gICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoJ2l0ZW1zOicsIGl0ZW1zKTtcbiAgICAgICAgICAgIC8vICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoZnVuYyk7XG4gICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoJ2ZpbHRlcmVkSXRlbXM6JywgaXRlbXMpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgcmV0dXJuIGluZGV4UGlwZS50cmFuc2Zvcm0oaXRlbXMsIHZhbHVlKTtcbiAgICAgICAgICB9O1xuXHRcdFx0XHRcdGFwcGx5VG9JbnB1dChzdG9yZSwgJ2l0ZW1zTWFwcGVyJywgaXRlbXNNYXBwZXIpO1xuXHRcdFx0XHR9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuXHRcdFx0fSksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQ29sdW1uc0luaXRpYWxpemVyKHVzZUZhY3Rvcnk6ICgpID0+IHN0cmluZ1tdKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB1c2VGYWN0b3J5KCk7XG4gICAgICAgIGNvbnN0IGZvcm0gPSBpbmplY3RJbmRleEZvcm0oeyBjb2x1bW5zOiBidWlsZENvbHVtbnMoY29sdW1ucykgfSk7XG4gICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ2Zvcm0nLCBmb3JtKTtcbiAgICAgIH0pLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUl0ZW1zSW5pdGlhbGl6ZXIoaXRlbXNGYWN0b3J5OiAoKSA9PiBhbnlbXSk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IGl0ZW1zRmFjdG9yeSgpO1xuXHRcdFx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRcdGFwcGx5VG9JbnB1dChzdG9yZSwgJ2l0ZW1zJywgaXRlbXMpO1x0XG5cdFx0XHRcdH0sIHthbGxvd1NpZ25hbFdyaXRlczogdHJ1ZX0pO1xuXHRcdFx0fSksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRm9ybUluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRm9ybVZhbHVlU3RvcmFnZUluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlSXRlbXNMZW5ndGhJbml0aWFsaXplcigpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUl0ZW1zTWFwcGVySW5pdGlhbGl6ZXIoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVCYWNrRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkJBQ0ssICgpID0+IHtcbiAgICAgIHJldHVybiAoKSA9PiBoaXN0b3J5LmJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGV0YWlsRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkRFVEFJTCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICAgICAgY29uc3QgaGFzTmV4dCA9IGluamVjdEhhc05leHQoKTtcbiAgICAgIHJldHVybiAoaXRlbToge2lkOiBzdHJpbmd9KSA9PiB7XG4gICAgICAgIGFwcC5yb3V0ZXIubmF2aWdhdGUoW2l0ZW0uaWRdLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogc3RvcmUucm91dGUsXG4gICAgICAgICAgcmVwbGFjZVVybDogaGFzTmV4dCgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQWRkRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkFERCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3QgaGFzTmV4dCA9IGluamVjdEhhc05leHQoKTtcbiAgICAgIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGFwcC5yb3V0ZXIubmF2aWdhdGUoWyduZXcnXSwge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHJvdXRlLFxuICAgICAgICAgIHJlcGxhY2VVcmw6ICEhaGFzTmV4dCgpLFxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUNoZWNrYm94Q2xpY2tFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5UQUJMRV9DSEVDS0JPWF9DTElDSywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICAgICAgcmV0dXJuIChpdGVtOiB7aWQ6IHN0cmluZ30pID0+IHtcbiAgICAgICAgc3RvcmUuc2VsZWN0aW9uKCkudG9nZ2xlKGl0ZW0uaWQpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlVGFibGVIZWFkZXJDbGlja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFRlbXBsYXRlLkFjdGlvbklkLlRBQkxFX0hFQURFUl9DTElDSywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICAgICAgcmV0dXJuIChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBzb3J0ID0gc3RvcmUuZm9ybSgpLmdldChbJ3NvcnQnXSkudmFsdWU7XG4gICAgICAgIGNvbnN0IG9yZGVyID0ga2V5ID09PSBzb3J0LmtleSAmJiBzb3J0Lm9yZGVyID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xuICAgICAgICBzdG9yZS5mb3JtKCkucGF0Y2hWYWx1ZSh7c29ydDoge2tleSwgb3JkZXJ9fSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVTaWRlTmF2RWZmZWN0cygpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChOYXZBY3Rpb25JZC5UT0dHTEVfU0lERV9OQVYsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIHJldHVybiAoKSA9PiBhcHAuc2lkZU5hdi50b2dnbGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlSGVhZGVyQ2hlY2tib3hDbGlja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0ssICgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRvZ2dsZUFsbFNlbGVjdGlvbihzdG9yZS5zZWxlY3Rpb24oKSwgc3RvcmUuZGlzcGxheWVkSXRlbXMoKSk7XG4gICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ3NlbGVjdGlvbicsIHNlbGVjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURlZmF1bHRFZmZlY3RzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGV0YWlsRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlQWRkRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlQmFja0VmZmVjdCgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUhlYWRlckNoZWNrYm94Q2xpY2tFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVDaGVja2JveENsaWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlVGFibGVIZWFkZXJDbGlja0VmZmVjdCgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZVNpZGVOYXZFZmZlY3RzKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdENvbmZpZygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVJdGVtQWN0aW9uc0NvbmZpZygpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZVR5cGVDb25maWcoKSxcbiAgICBdXG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURlZmF1bHQoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVEZWZhdWx0Q29uZmlnKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdEluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdEVmZmVjdHMoKSxcbiAgICBdO1xuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLmluamVjdCgpO1xuICByZWFkb25seSBzdHlsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnN0eWxlKSk7XG4gIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZEJ5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZ3JvdXBlZEJ5KSk7XG4gIHJlYWRvbmx5IGdyb3VwS2V5cyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmdyb3VwS2V5cykpO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudHlwZSkpO1xuICByZWFkb25seSBpdGVtcyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1zKSk7XG4gIHJlYWRvbmx5IGl0ZW1zTWFwID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IGNvbnZlcnRUb0l0ZW1zTWFwKHRoaXMuaXRlbXMoKSkpKTtcbiAgcmVhZG9ubHkgaXRlbUFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtQWN0aW9ucykpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnRpdGxlKSk7XG4gIHJlYWRvbmx5IGZvcm0gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5mb3JtKSk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnNlbGVjdGlvbikpO1xuICByZWFkb25seSBoaWdobGlnaHQgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5oaWdobGlnaHQpKTtcbiAgcmVhZG9ubHkgbmF2U3RhcnRBY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkubmF2U3RhcnRBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IG5hdkVuZEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZFbmRBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IGZpbHRlckZ1bmMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5maWx0ZXJGdW5jKSk7XG4gIHJlYWRvbmx5IGl0ZW1zTWFwcGVyID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXNNYXBwZXIpKTtcbiAgcmVhZG9ubHkgdGFibGVDaGlsZHJlbktleSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnRhYmxlQ2hpbGRyZW5LZXkpKTtcblxuICByZWFkb25seSBpdGVtc0xlbmd0aCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1zTGVuZ3RoKSk7XG4gIHJlYWRvbmx5IGRpc3BsYXllZEl0ZW1zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbXMoKSA/PyBbXTtcbiAgICBjb25zdCBmaWx0ZXJGdW5jID0gdGhpcy5maWx0ZXJGdW5jKCk7XG4gICAgaXRlbXMgPSBmaWx0ZXJGdW5jID8gaXRlbXMuZmlsdGVyKGZpbHRlckZ1bmMpIDogaXRlbXM7XG4gICAgY29uc3QgaXRlbXNNYXBwZXIgPSB0aGlzLml0ZW1zTWFwcGVyKCk7XG4gICAgcmV0dXJuIGl0ZW1zTWFwcGVyID8gaXRlbXNNYXBwZXIoaXRlbXMpIDogaXRlbXM7XG4gIH0pO1xuICByZWFkb25seSBzZWxlY3RlZElkcyA9IGNvbXB1dGVkQXN5bmMoKCkgPT4gdGhpcy5zZWxlY3Rpb24oKS5jaGFuZ2VkLnBpcGUoXG4gICAgbWFwKCgpID0+IHRoaXMuc2VsZWN0aW9uKCk/LnNlbGVjdGVkID8/IFtdKSxcbiAgKSwge2luaXRpYWxWYWx1ZTogW119KTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pdGVtcygpID8/IFtdKS5maWx0ZXIoZW50cnkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmluY2x1ZGVzKGVudHJ5LmlkKSkpO1xuICByZWFkb25seSBpc0FsbFNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZEl0ZW1zKCkuZXZlcnkoZW50cnkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmluY2x1ZGVzKGVudHJ5LmlkKSk7XG4gIH0pO1xuICByZWFkb25seSBza2lwID0gaW5qZWN0Um91dGVTa2lwKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5pbml0aWFsaXplU3RvcmUodGhpcyk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc29sZS5kZWJ1ZygnaXRlbXNNYXA6JywgdGhpcy5pdGVtc01hcCgpKTtcbiAgICB9KVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2VzLWluZGV4JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck91dGxldEZyYW1lLFxuICAgIEluZGV4VGVtcGxhdGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gIDxmcmFtZXMtcm91dGVyLW91dGxldCBbc2tpcF09XCJzdG9yZS5za2lwKClcIj5cbiAgICA8dGVtcGxhdGVzLWluZGV4XG4gICAgICBbc3R5bGVdPVwic3RvcmUuc3R5bGUoKVwiXG4gICAgICBbdGl0bGVdPVwic3RvcmUudGl0bGUoKVwiXG4gICAgICBbdHlwZV09XCJzdG9yZS50eXBlKClcIlxuICAgICAgW3RhYmxlQ2hpbGRyZW5LZXldPVwic3RvcmUudGFibGVDaGlsZHJlbktleSgpXCJcbiAgICAgIFtpdGVtc109XCJzdG9yZS5kaXNwbGF5ZWRJdGVtcygpXCJcbiAgICAgIFtpdGVtc01hcF09XCJzdG9yZS5pdGVtc01hcCgpXCJcbiAgICAgIFtpdGVtc0xlbmd0aF09XCJzdG9yZS5pdGVtc0xlbmd0aCgpXCJcbiAgICAgIFtpdGVtQWN0aW9uc109XCJzdG9yZS5pdGVtQWN0aW9ucygpXCJcbiAgICAgIFtncm91cGVkQnldPVwic3RvcmUuZ3JvdXBlZEJ5KClcIlxuICAgICAgW2dyb3VwS2V5c109XCJzdG9yZS5ncm91cEtleXMoKVwiXG4gICAgICBbZm9ybV09XCJzdG9yZS5mb3JtKClcIlxuICAgICAgW3NlbGVjdGlvbl09XCJzdG9yZS5zZWxlY3Rpb24oKVwiXG4gICAgICBbaGlnaGxpZ2h0XT1cInN0b3JlLmhpZ2hsaWdodCgpXCJcbiAgICAgIFtuYXZTdGFydEFjdGlvbnNdPVwic3RvcmUubmF2U3RhcnRBY3Rpb25zKClcIlxuICAgICAgW25hdkVuZEFjdGlvbnNdPVwic3RvcmUubmF2RW5kQWN0aW9ucygpXCJcbiAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgLz5cbiAgPC9mcmFtZXMtcm91dGVyLW91dGxldD5cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL2luZGV4LnBhZ2Uuc2NzcycsXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAge1xuICAgICAgZGlyZWN0aXZlOiBJbmRleFBhZ2VTdG9yZSxcbiAgICAgIGlucHV0czogW1xuICAgICAgICAnaXRlbXMnLFxuICAgICAgICAnaXRlbXNNYXAnLFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbmRleFBhZ2UgZXh0ZW5kcyBOZ0F0b21pY0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gIHByb3RlY3RlZCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJvdGVjdGVkIHNoZWV0ID0gaW5qZWN0KFNoZWV0U2VydmljZSk7XG5cbiAgQEVmZmVjdChJbmRleFRlbXBsYXRlLkFjdGlvbklkLkJBQ0spXG4gIHByb3RlY3RlZCBiYWNrKCkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5CQUNLfSk7XG4gIH1cblxuICBARWZmZWN0KE5hdkFjdGlvbklkLkNMT1NFKVxuICBwcm90ZWN0ZWQgY2xvc2UoKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLkNMT1NFfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuSVRFTV9DTElDSylcbiAgcHJvdGVjdGVkIGl0ZW1DbGljayhpdGVtOiB7aWQ6IHN0cmluZ30pIHtcbiAgICB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuREVUQUlMLCBwYXlsb2FkOiBpdGVtfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfSEVBREVSX0NIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25DaGVja2JveENsaWNrKGl0ZW06IHtpZDogc3RyaW5nfSkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0ssIHBheWxvYWQ6IGl0ZW19KTtcbiAgfVxuXG4gIC8vIE1FTU8oQG5vbnRhbmdlbnQpOiDjgrfjg7zjg4jjga7jgqLjgq/jgrfjg6fjg7PjgpLjg5rjg7zjgrjjgavmjIHjgZ/jgZvjgovjgbnjgY3jgYvjga/opoHmpJzoqI7jgIJcbiAgQEVmZmVjdChJbmRleFRlbXBsYXRlLkFjdGlvbklkLkxJU1RfSVRFTV9CVVRUT05fQ0xJQ0tFRClcbiAgcHJvdGVjdGVkIG9uSXRlbUJ1dHRvbkNsaWNrZWQoaXRlbTogYW55KSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IHJlc29sdmVBY3Rpb25zKHRoaXMuc3RvcmUuaXRlbUFjdGlvbnMoKSwgaXRlbSk7XG4gICAgdGhpcy5zaGVldC5vcGVuQWN0aW9ucyhhY3Rpb25zKS50aGVuKChhY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2goe1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|