ngx-register-base 1.3.3 → 2.0.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/README.md +10 -0
- package/esm2022/lib/components/checkbox-selector/checkbox-selector.component.mjs +3 -3
- package/esm2022/lib/components/column-settings/column-settings.component.mjs +30 -25
- package/esm2022/lib/components/column-settings/components/column-settings-template/column-settings-template.component.mjs +4 -12
- package/esm2022/lib/components/column-settings/components/reset-settings-form/reset-settings-form.component.mjs +13 -0
- package/esm2022/lib/components/column-settings/consts/column-settings.consts.mjs +9 -9
- package/esm2022/lib/components/filter-button/filter-button.component.mjs +4 -5
- package/esm2022/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.mjs +22 -22
- package/esm2022/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.mjs +9 -6
- package/esm2022/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.mjs +13 -8
- package/esm2022/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.mjs +4 -4
- package/esm2022/lib/components/filters/components/filter-list/filter-list.service.mjs +16 -13
- package/esm2022/lib/components/filters/components/filter-list/filters-section/filters-section.component.mjs +4 -4
- package/esm2022/lib/components/filters/components/filter-list.module.mjs +33 -7
- package/esm2022/lib/components/filters/register-table-filter.component.mjs +5 -4
- package/esm2022/lib/components/filters/register-table-filter.module.mjs +5 -5
- package/esm2022/lib/components/index.mjs +2 -2
- package/esm2022/lib/components/inputs/index.mjs +4 -4
- package/esm2022/lib/components/inputs/param-calendar-year/param-calendar-year.component.mjs +37 -30
- package/esm2022/lib/components/inputs/param-custom/param-custom.component.mjs +3 -3
- package/esm2022/lib/components/inputs/param-date/param-date.component.mjs +27 -15
- package/esm2022/lib/components/inputs/param-date-range/index.mjs +2 -0
- package/esm2022/lib/components/inputs/param-date-range/param-date-range.component.mjs +80 -18
- package/esm2022/lib/components/inputs/param-date-time/param-date-time.component.mjs +65 -30
- package/esm2022/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.component.mjs +406 -0
- package/esm2022/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.consts.mjs +13 -0
- package/esm2022/lib/components/inputs/param-date-time-range/param-date-time-range.component.mjs +31 -34
- package/esm2022/lib/components/inputs/param-dropbox/param-dropbox.component.mjs +126 -0
- package/esm2022/lib/components/inputs/param-month/param-month.component.mjs +40 -9
- package/esm2022/lib/components/inputs/param-month-range/param-month-range.component.mjs +29 -8
- package/esm2022/lib/components/inputs/param-multi-select/param-multi-select.component.mjs +97 -113
- package/esm2022/lib/components/inputs/param-select/param-select.component.mjs +41 -45
- package/esm2022/lib/components/inputs/param-switcher/index.mjs +2 -0
- package/esm2022/lib/components/inputs/param-switcher/param-switcher.component.mjs +61 -11
- package/esm2022/lib/components/inputs/param-switcher/param-switcher.types.mjs +2 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.mjs +7 -25
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.mjs +21 -20
- package/esm2022/lib/components/inputs/param-text/param-text.component.mjs +11 -6
- package/esm2022/lib/components/inputs/param-textarea/param-textarea.component.mjs +5 -3
- package/esm2022/lib/components/inputs/param-toggle/param-toggle.component.mjs +24 -7
- package/esm2022/lib/components/inputs/param-tree/param-tree.component.mjs +3 -3
- package/esm2022/lib/components/inputs/param-tree/services/param-tree.service.mjs +9 -2
- package/esm2022/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.mjs +13 -6
- package/esm2022/lib/components/inputs/param-tree-select/param-tree-select.component.mjs +9 -4
- package/esm2022/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.mjs +9 -5
- package/esm2022/lib/components/inputs/sub-components/param-label-hint-icon/param-label-hint-icon.component.mjs +12 -0
- package/esm2022/lib/components/paginator/paginator.component.mjs +10 -12
- package/esm2022/lib/components/register-table/register-table.component.mjs +31 -12
- package/esm2022/lib/components/search-input/search-input.component.mjs +5 -7
- package/esm2022/lib/components/sliding-panel/sliding-panel.component.mjs +23 -35
- package/esm2022/lib/components/template-modal/index.mjs +3 -0
- package/esm2022/lib/components/template-modal/template-modal.base.mjs +16 -0
- package/esm2022/lib/components/template-modal/template-modal.component.mjs +16 -0
- package/esm2022/lib/core/param/index.mjs +1 -1
- package/esm2022/lib/core/param/param-base.mjs +28 -3
- package/esm2022/lib/core/param/param-date-base.mjs +20 -11
- package/esm2022/lib/core/param/param-select-base.mjs +14 -6
- package/esm2022/lib/core/register-base/register-base.store.mjs +1 -1
- package/esm2022/lib/directives/date/date-time.types.mjs +1 -1
- package/esm2022/lib/providers/index.mjs +2 -0
- package/esm2022/lib/providers/provide-icons.mjs +23 -0
- package/esm2022/lib/services/date-time.service.mjs +1 -38
- package/esm2022/lib/services/dialog/dialog.service.mjs +1 -13
- package/esm2022/lib/services/dialog/dialog.types.mjs +2 -2
- package/esm2022/lib/services/message.service.mjs +48 -0
- package/esm2022/lib/services/validation-message.service.mjs +52 -0
- package/esm2022/lib/store/fast-query-store.service.mjs +16 -1
- package/esm2022/lib/utils/index.mjs +2 -1
- package/esm2022/lib/utils/utils.mjs +17 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-register-base.mjs +1464 -1026
- package/fesm2022/ngx-register-base.mjs.map +1 -1
- package/icons/arrow-turn-up-left.svg +3 -0
- package/icons/check.svg +3 -0
- package/icons/floppy.svg +3 -0
- package/icons/star-empty.svg +10 -0
- package/icons/star-fill.svg +3 -0
- package/icons/trash.svg +3 -0
- package/icons/xmark.svg +3 -0
- package/lib/components/column-settings/column-settings.component.d.ts +9 -9
- package/lib/components/column-settings/components/column-settings-template/column-settings-template.component.d.ts +5 -5
- package/lib/components/{reset-settings-form → column-settings/components/reset-settings-form}/reset-settings-form.component.d.ts +2 -5
- package/lib/components/column-settings/consts/column-settings.consts.d.ts +8 -8
- package/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.d.ts +5 -8
- package/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.d.ts +2 -1
- package/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.d.ts +2 -1
- package/lib/components/filters/components/filter-list/filter-list.service.d.ts +2 -3
- package/lib/components/filters/components/filter-list.module.d.ts +7 -7
- package/lib/components/filters/register-table-filter.component.d.ts +2 -1
- package/lib/components/filters/register-table-filter.module.d.ts +2 -2
- package/lib/components/index.d.ts +1 -1
- package/lib/components/inputs/index.d.ts +3 -4
- package/lib/components/inputs/param-calendar-year/param-calendar-year.component.d.ts +2 -8
- package/lib/components/inputs/param-custom/param-custom.component.d.ts +1 -1
- package/lib/components/inputs/param-date/param-date.component.d.ts +7 -10
- package/lib/components/inputs/param-date-range/index.d.ts +1 -0
- package/lib/components/inputs/param-date-range/param-date-range.component.d.ts +13 -16
- package/lib/components/inputs/param-date-time/param-date-time.component.d.ts +8 -13
- package/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.component.d.ts +96 -0
- package/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.consts.d.ts +12 -0
- package/lib/components/inputs/param-date-time-range/param-date-time-range.component.d.ts +17 -16
- package/lib/components/inputs/param-dropbox/param-dropbox.component.d.ts +31 -0
- package/lib/components/inputs/param-month/param-month.component.d.ts +10 -8
- package/lib/components/inputs/param-month-range/param-month-range.component.d.ts +10 -8
- package/lib/components/inputs/param-multi-select/param-multi-select.component.d.ts +9 -11
- package/lib/components/inputs/param-select/param-select.component.d.ts +9 -12
- package/lib/components/inputs/param-switcher/index.d.ts +2 -0
- package/lib/components/inputs/param-switcher/param-switcher.component.d.ts +21 -5
- package/lib/components/inputs/param-switcher/param-switcher.types.d.ts +7 -0
- package/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.d.ts +3 -2
- package/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.d.ts +5 -4
- package/lib/components/inputs/param-text/param-text.component.d.ts +6 -4
- package/lib/components/inputs/param-textarea/param-textarea.component.d.ts +2 -1
- package/lib/components/inputs/param-toggle/param-toggle.component.d.ts +3 -2
- package/lib/components/inputs/param-tree/services/param-tree.service.d.ts +1 -1
- package/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.d.ts +2 -1
- package/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.d.ts +2 -1
- package/lib/components/inputs/sub-components/param-label-hint-icon/param-label-hint-icon.component.d.ts +5 -0
- package/lib/components/paginator/paginator.component.d.ts +3 -4
- package/lib/components/register-table/register-table.component.d.ts +5 -3
- package/lib/components/sliding-panel/sliding-panel.component.d.ts +8 -8
- package/lib/components/template-modal/index.d.ts +2 -0
- package/lib/components/template-modal/template-modal.base.d.ts +9 -0
- package/lib/components/template-modal/template-modal.component.d.ts +6 -0
- package/lib/core/param/index.d.ts +1 -0
- package/lib/core/param/param-base.d.ts +18 -2
- package/lib/core/param/param-date-base.d.ts +15 -9
- package/lib/core/param/param-select-base.d.ts +12 -7
- package/lib/core/register-base/register-base.store.d.ts +2 -3
- package/lib/directives/date/date-time.types.d.ts +0 -2
- package/lib/providers/index.d.ts +1 -0
- package/lib/providers/provide-icons.d.ts +3 -0
- package/lib/services/date-time.service.d.ts +0 -13
- package/lib/services/dialog/dialog.service.d.ts +1 -3
- package/lib/services/dialog/dialog.types.d.ts +0 -3
- package/lib/services/message.service.d.ts +20 -0
- package/lib/services/validation-message.service.d.ts +14 -0
- package/lib/store/fast-query-store.service.d.ts +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/utils.d.ts +3 -0
- package/package.json +5 -12
- package/public-api.d.ts +1 -0
- package/styles/common-param.less +15 -0
- package/styles/flex.less +5 -1
- package/styles/icons.less +8 -0
- package/styles/modals.less +54 -0
- package/styles/overrides/tui/tui-input.less +94 -121
- package/styles/styles.less +2 -0
- package/esm2022/lib/components/inputs/inputs.module.mjs +0 -166
- package/esm2022/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.mjs +0 -15
- package/esm2022/lib/components/reset-settings-form/reset-settings-form.component.mjs +0 -18
- package/esm2022/lib/components/sliding-panel/sliding-panel.module.mjs +0 -19
- package/esm2022/lib/utils/prizm.shared.module.mjs +0 -284
- package/icons/calendar-blank.svg +0 -10
- package/lib/components/inputs/inputs.module.d.ts +0 -31
- package/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.d.ts +0 -6
- package/lib/components/sliding-panel/sliding-panel.module.d.ts +0 -9
- package/lib/utils/prizm.shared.module.d.ts +0 -14
- /package/icons/{calendar-icon.svg → calendar-date-time.svg} +0 -0
- /package/icons/{calendar-custom.svg → calendar-date.svg} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, input, signal,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, INJECTOR, input, signal, untracked, } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { filter, map, skip } from 'rxjs';
|
|
4
4
|
import { TuiButton, TuiIcon, TuiPopup, TuiScrollbar } from '@taiga-ui/core';
|
|
@@ -12,15 +12,11 @@ import { ICON_CANCEL_CLOSE, ICON_ERASER, ICON_SETTINGS } from './consts/column-s
|
|
|
12
12
|
import { DialogService, ResizeWindowObserverService } from '../../services';
|
|
13
13
|
import { getLastSegmentOfPathName, isNonNull } from '../../utils';
|
|
14
14
|
import { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../consts';
|
|
15
|
-
import { ResetSettingsFormComponent } from '
|
|
15
|
+
import { ResetSettingsFormComponent } from './components/reset-settings-form/reset-settings-form.component';
|
|
16
16
|
import { DividerComponent } from '../divider/divider.component';
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
18
18
|
export class ColumnSettingsComponent {
|
|
19
19
|
constructor() {
|
|
20
|
-
this.resetColumnSettingsRef = viewChild('resetSettings', { read: (TemplateRef) });
|
|
21
|
-
this.resetColumnSettingsFooter = viewChild('resetSettingsFooter', {
|
|
22
|
-
read: (TemplateRef),
|
|
23
|
-
});
|
|
24
20
|
this.defaultSettings = input.required();
|
|
25
21
|
/** Высота всего компонента настроек */
|
|
26
22
|
this.height = input();
|
|
@@ -39,6 +35,8 @@ export class ColumnSettingsComponent {
|
|
|
39
35
|
this.columnsListEnterPredicate = input(() => true);
|
|
40
36
|
/** функция предикат - возможность добавления элемента в лист фикс. справа колонок */
|
|
41
37
|
this.fixedRightListEnterPredicate = input(() => true);
|
|
38
|
+
/** название модуля для сохранения настроек */
|
|
39
|
+
this.pathName = input(null);
|
|
42
40
|
this.openSettings = signal(false);
|
|
43
41
|
this.inputSettings = signal(null);
|
|
44
42
|
this.fixedLeftColumns = computed(() => this.inputSettings()?.stickyLeft ?? []);
|
|
@@ -47,6 +45,7 @@ export class ColumnSettingsComponent {
|
|
|
47
45
|
this.columnsChanges = outputFromObservable(toObservable(this.inputSettings).pipe(skip(1), map((settings) => ({ settings }))));
|
|
48
46
|
this.settingsStore = inject(USER_SETTINGS_LOADER);
|
|
49
47
|
this._dr = inject(DestroyRef);
|
|
48
|
+
this._injector = inject(INJECTOR);
|
|
50
49
|
this._router = inject(Router);
|
|
51
50
|
this._userProfileService = inject(USER_PROFILE_LOADER);
|
|
52
51
|
this._dialogService = inject(DialogService);
|
|
@@ -66,9 +65,21 @@ export class ColumnSettingsComponent {
|
|
|
66
65
|
});
|
|
67
66
|
this.columnListBottomPaddingPx = 8;
|
|
68
67
|
this._idUser = this._userProfileService.getUserProfile().id;
|
|
69
|
-
this._moduleName =
|
|
68
|
+
this._moduleName = computed(() => {
|
|
69
|
+
const pathName = this.pathName();
|
|
70
|
+
return pathName ?? getLastSegmentOfPathName(this._router.url);
|
|
71
|
+
});
|
|
70
72
|
this.setDefaultSettings();
|
|
71
73
|
this._effectOnSetScrollBoxColumnsMaxHeight();
|
|
74
|
+
this.fetchSettingsOnModuleNameChange();
|
|
75
|
+
}
|
|
76
|
+
fetchSettingsOnModuleNameChange() {
|
|
77
|
+
effect(() => {
|
|
78
|
+
const pathName = this.pathName();
|
|
79
|
+
if (pathName) {
|
|
80
|
+
this.fetchSettings(this._idUser, pathName);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
72
83
|
}
|
|
73
84
|
setDefaultSettings() {
|
|
74
85
|
effect(() => {
|
|
@@ -93,7 +104,7 @@ export class ColumnSettingsComponent {
|
|
|
93
104
|
}
|
|
94
105
|
ngOnInit() {
|
|
95
106
|
this.subscribeOnSettings();
|
|
96
|
-
this.fetchSettings(this._idUser, this._moduleName);
|
|
107
|
+
this.fetchSettings(this._idUser, this._moduleName());
|
|
97
108
|
}
|
|
98
109
|
fetchSettings(userId, moduleName) {
|
|
99
110
|
this.settingsStore.fetchUserSettingsByUserId({
|
|
@@ -129,7 +140,7 @@ export class ColumnSettingsComponent {
|
|
|
129
140
|
this.settingsStore.upsertUserSettingsByUserId({
|
|
130
141
|
settings: {
|
|
131
142
|
id: this._columnsSettings?.id,
|
|
132
|
-
module_name: this._moduleName,
|
|
143
|
+
module_name: this._moduleName(),
|
|
133
144
|
settings: {
|
|
134
145
|
...this._columnsSettings?.settings,
|
|
135
146
|
tableFields: settings,
|
|
@@ -148,13 +159,15 @@ export class ColumnSettingsComponent {
|
|
|
148
159
|
}
|
|
149
160
|
openResetDialog() {
|
|
150
161
|
this._dialogService
|
|
151
|
-
.
|
|
152
|
-
closeable: true,
|
|
162
|
+
.openModalTaiga(ResetSettingsFormComponent, {
|
|
153
163
|
width: 466,
|
|
154
|
-
footer: this.resetColumnSettingsFooter(),
|
|
155
164
|
dismissible: true,
|
|
156
|
-
})
|
|
157
|
-
.subscribe()
|
|
165
|
+
}, this._injector)
|
|
166
|
+
.subscribe((shouldReset) => {
|
|
167
|
+
if (shouldReset) {
|
|
168
|
+
this.deleteSettings();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
158
171
|
}
|
|
159
172
|
toggle() {
|
|
160
173
|
this.openSettings.update((isOpen) => !isOpen);
|
|
@@ -183,10 +196,6 @@ export class ColumnSettingsComponent {
|
|
|
183
196
|
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
|
|
184
197
|
}
|
|
185
198
|
}
|
|
186
|
-
toggleVisibility(col) {
|
|
187
|
-
const isHidden = col.status === EColumnStatus.HIDDEN;
|
|
188
|
-
col.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;
|
|
189
|
-
}
|
|
190
199
|
showAllColumns() {
|
|
191
200
|
const settings = this.inputSettings();
|
|
192
201
|
if (!settings) {
|
|
@@ -194,9 +203,6 @@ export class ColumnSettingsComponent {
|
|
|
194
203
|
}
|
|
195
204
|
this._setColumnsStatusRecursive(settings.columns, EColumnStatus.DEFAULT);
|
|
196
205
|
}
|
|
197
|
-
isHiddenColumn(column) {
|
|
198
|
-
return column.status === EColumnStatus.HIDDEN;
|
|
199
|
-
}
|
|
200
206
|
onFixedScrollbarResize([fixedScrollbar]) {
|
|
201
207
|
this.scrollBoxFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);
|
|
202
208
|
}
|
|
@@ -228,7 +234,7 @@ export class ColumnSettingsComponent {
|
|
|
228
234
|
}
|
|
229
235
|
}
|
|
230
236
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnSettingsComponent, isStandalone: true, selector: "sproc-column-settings", inputs: { defaultSettings: { classPropertyName: "defaultSettings", publicName: "defaultSettings", isSignal: true, isRequired: true, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, showLeftListHeader: { classPropertyName: "showLeftListHeader", publicName: "showLeftListHeader", isSignal: true, isRequired: false, transformFunction: null }, showRightListHeader: { classPropertyName: "showRightListHeader", publicName: "showRightListHeader", isSignal: true, isRequired: false, transformFunction: null }, columnsListHeader: { classPropertyName: "columnsListHeader", publicName: "columnsListHeader", isSignal: true, isRequired: false, transformFunction: null }, showFixedRightList: { classPropertyName: "showFixedRightList", publicName: "showFixedRightList", isSignal: true, isRequired: false, transformFunction: null }, fixedLeftListEnterPredicate: { classPropertyName: "fixedLeftListEnterPredicate", publicName: "fixedLeftListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null }, columnsListEnterPredicate: { classPropertyName: "columnsListEnterPredicate", publicName: "columnsListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null }, fixedRightListEnterPredicate: { classPropertyName: "fixedRightListEnterPredicate", publicName: "fixedRightListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { columnsChanges: "columnsChanges" }, providers: [ResizeWindowObserverService], viewQueries: [{ propertyName: "resetColumnSettingsRef", first: true, predicate: ["resetSettings"], descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "resetColumnSettingsFooter", first: true, predicate: ["resetSettingsFooter"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\"></tui-icon>\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\"></tui-icon>\n </button>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\"></tui-icon>\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n \u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043B\u0435\u0432\u0430\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template\n [column]=\"fixedLeftColumn\"\n ></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043F\u0440\u0430\u0432\u0430</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </footer>\n</tui-drawer>\n\n<ng-template #resetSettings>\n <sproc-reset-settings-form></sproc-reset-settings-form>\n</ng-template>\n\n<ng-template #resetSettingsFooter let-completeWith=\"completeWith\">\n <div style=\"width: 100%; display: flex; justify-content: center; gap: 8px\">\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"primary-destructive\"\n size=\"l\"\n (click)=\"deleteSettings(); completeWith(true)\"\n >\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"outline-grayscale\"\n size=\"l\"\n (click)=\"completeWith(false)\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.gray{color:var(--gray-icon)}.column-settings__main-button{width:var(--top-bar-button-width);height:var(--top-bar-button-height);border-radius:2px;padding:10px}.column-settings__main-button:disabled{filter:grayscale(100%)!important;cursor:not-allowed}.column-settings__icon{font-size:16px}.column-settings__popup{top:var(--header-height);width:302px;border-radius:2px 2px 0 0;box-shadow:-1px 0 12px #4753263b}.column-settings__popup .header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 0 0 16px;gap:8px;border-radius:2px 2px 0 0;border-bottom:1px solid var(--stroke1);background:var(--table-header);box-shadow:unset}.column-settings__popup .header__title{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px;color:var(--main-black)}.column-settings__popup .header__buttons{display:flex;align-items:center;gap:4px}.column-settings__popup .header__buttons .reset-button{color:var(--gray-icon)}.column-settings__popup .header__buttons .reset-button:hover{color:var(--main-black)}.column-settings__popup .header__buttons sproc-divider{height:24px}.column-settings__popup .header__buttons .close-button{color:var(--brand-danger-active)}.column-settings__popup .header__buttons .close-button:hover{color:var(--brand-danger-hovered)}.column-settings__popup .column-container{display:flex;flex-direction:column;padding-top:8px;overflow:hidden}.column-settings__popup .column-container .subtitle{display:flex;align-items:center;color:var(--main-black);font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.column-settings__popup .column-container .subtitle--flex-grow-1{flex-grow:1}.column-settings__popup .column-container .show-all{color:var(--text-secondary);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.column-settings__popup .column-container .show-all:hover{cursor:pointer;color:var(--main-black)}.column-settings__popup .footer{display:flex;padding:8px 16px;align-items:center}.column-settings__popup .footer .save-button{width:100%}.column-list{display:flex;flex-direction:column}.column-list__label-container{display:flex;flex-direction:row;align-items:center;padding:0 8px 0 12px;cursor:default}::ng-deep .column-list.cdk-drop-list-dragging .column-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: TuiDrawer, selector: "tui-drawer", inputs: ["direction", "overlay"] }, { kind: "directive", type: TuiPopup, selector: "ng-template[tuiPopup]", inputs: ["tuiPopup"] }, { kind: "component", type: DividerComponent, selector: "sproc-divider", inputs: ["layout"] }, { kind: "component", type: ResetSettingsFormComponent, selector: "sproc-reset-settings-form" }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }, { kind: "component", type: ColumnSettingsTemplateComponent, selector: "sproc-column-settings-template", inputs: ["column", "parent", "expand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
237
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnSettingsComponent, isStandalone: true, selector: "sproc-column-settings", inputs: { defaultSettings: { classPropertyName: "defaultSettings", publicName: "defaultSettings", isSignal: true, isRequired: true, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, showLeftListHeader: { classPropertyName: "showLeftListHeader", publicName: "showLeftListHeader", isSignal: true, isRequired: false, transformFunction: null }, showRightListHeader: { classPropertyName: "showRightListHeader", publicName: "showRightListHeader", isSignal: true, isRequired: false, transformFunction: null }, columnsListHeader: { classPropertyName: "columnsListHeader", publicName: "columnsListHeader", isSignal: true, isRequired: false, transformFunction: null }, showFixedRightList: { classPropertyName: "showFixedRightList", publicName: "showFixedRightList", isSignal: true, isRequired: false, transformFunction: null }, fixedLeftListEnterPredicate: { classPropertyName: "fixedLeftListEnterPredicate", publicName: "fixedLeftListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null }, columnsListEnterPredicate: { classPropertyName: "columnsListEnterPredicate", publicName: "columnsListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null }, fixedRightListEnterPredicate: { classPropertyName: "fixedRightListEnterPredicate", publicName: "fixedRightListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null }, pathName: { classPropertyName: "pathName", publicName: "pathName", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { columnsChanges: "columnsChanges" }, providers: [ResizeWindowObserverService], ngImport: i0, template: "<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\" />\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\" />\n </button>\n <sproc-divider layout=\"vertical\" />\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\" />\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n \u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043B\u0435\u0432\u0430\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template [column]=\"fixedLeftColumn\" />\n }\n </tui-scrollbar>\n </div>\n <sproc-divider />\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\" />\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider />\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043F\u0440\u0430\u0432\u0430</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\" />\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </footer>\n</tui-drawer>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.gray{color:var(--gray-icon)}.column-settings__main-button{width:var(--top-bar-button-width);height:var(--top-bar-button-height);border-radius:2px;padding:10px}.column-settings__main-button:disabled{filter:grayscale(100%)!important;cursor:not-allowed}.column-settings__icon{font-size:16px}.column-settings__popup{top:var(--header-height);width:302px;border-radius:2px 2px 0 0;box-shadow:-1px 0 12px #4753263b}.column-settings__popup .header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 0 0 16px;gap:8px;border-radius:2px 2px 0 0;border-bottom:1px solid var(--stroke1);background:var(--table-header);box-shadow:unset}.column-settings__popup .header__title{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px;color:var(--main-black)}.column-settings__popup .header__buttons{display:flex;align-items:center;gap:4px}.column-settings__popup .header__buttons .reset-button{color:var(--gray-icon)}.column-settings__popup .header__buttons .reset-button:hover{color:var(--main-black)}.column-settings__popup .header__buttons sproc-divider{height:24px}.column-settings__popup .header__buttons .close-button{color:var(--brand-danger-active)}.column-settings__popup .header__buttons .close-button:hover{color:var(--brand-danger-hovered)}.column-settings__popup .column-container{display:flex;flex-direction:column;padding-top:8px;overflow:hidden}.column-settings__popup .column-container .subtitle{display:flex;align-items:center;color:var(--main-black);font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.column-settings__popup .column-container .subtitle--flex-grow-1{flex-grow:1}.column-settings__popup .column-container .show-all{color:var(--text-secondary);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.column-settings__popup .column-container .show-all:hover{cursor:pointer;color:var(--main-black)}.column-settings__popup .footer{display:flex;padding:8px 16px;align-items:center}.column-settings__popup .footer .save-button{width:100%}.column-list{display:flex;flex-direction:column}.column-list__label-container{display:flex;flex-direction:row;align-items:center;padding:0 8px 0 12px;cursor:default}::ng-deep .column-list.cdk-drop-list-dragging .column-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: TuiDrawer, selector: "tui-drawer", inputs: ["direction", "overlay"] }, { kind: "directive", type: TuiPopup, selector: "ng-template[tuiPopup]", inputs: ["tuiPopup"] }, { kind: "component", type: DividerComponent, selector: "sproc-divider", inputs: ["layout"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }, { kind: "component", type: ColumnSettingsTemplateComponent, selector: "sproc-column-settings-template", inputs: ["column", "parent", "expand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
232
238
|
}
|
|
233
239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnSettingsComponent, decorators: [{
|
|
234
240
|
type: Component,
|
|
@@ -238,12 +244,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
238
244
|
TuiDrawer,
|
|
239
245
|
TuiPopup,
|
|
240
246
|
DividerComponent,
|
|
241
|
-
ResetSettingsFormComponent,
|
|
242
247
|
CdkDropList,
|
|
243
248
|
CdkDropListGroup,
|
|
244
249
|
TuiScrollbar,
|
|
245
250
|
WaResizeObserver,
|
|
246
251
|
ColumnSettingsTemplateComponent,
|
|
247
|
-
], providers: [ResizeWindowObserverService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\"></tui-icon>\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\"></tui-icon>\n </button>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\"></tui-icon>\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n \u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043B\u0435\u0432\u0430\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template\n [column]=\"fixedLeftColumn\"\n ></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043F\u0440\u0430\u0432\u0430</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </footer>\n</tui-drawer>\n\n<ng-template #resetSettings>\n <sproc-reset-settings-form></sproc-reset-settings-form>\n</ng-template>\n\n<ng-template #resetSettingsFooter let-completeWith=\"completeWith\">\n <div style=\"width: 100%; display: flex; justify-content: center; gap: 8px\">\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"primary-destructive\"\n size=\"l\"\n (click)=\"deleteSettings(); completeWith(true)\"\n >\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"outline-grayscale\"\n size=\"l\"\n (click)=\"completeWith(false)\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.gray{color:var(--gray-icon)}.column-settings__main-button{width:var(--top-bar-button-width);height:var(--top-bar-button-height);border-radius:2px;padding:10px}.column-settings__main-button:disabled{filter:grayscale(100%)!important;cursor:not-allowed}.column-settings__icon{font-size:16px}.column-settings__popup{top:var(--header-height);width:302px;border-radius:2px 2px 0 0;box-shadow:-1px 0 12px #4753263b}.column-settings__popup .header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 0 0 16px;gap:8px;border-radius:2px 2px 0 0;border-bottom:1px solid var(--stroke1);background:var(--table-header);box-shadow:unset}.column-settings__popup .header__title{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px;color:var(--main-black)}.column-settings__popup .header__buttons{display:flex;align-items:center;gap:4px}.column-settings__popup .header__buttons .reset-button{color:var(--gray-icon)}.column-settings__popup .header__buttons .reset-button:hover{color:var(--main-black)}.column-settings__popup .header__buttons sproc-divider{height:24px}.column-settings__popup .header__buttons .close-button{color:var(--brand-danger-active)}.column-settings__popup .header__buttons .close-button:hover{color:var(--brand-danger-hovered)}.column-settings__popup .column-container{display:flex;flex-direction:column;padding-top:8px;overflow:hidden}.column-settings__popup .column-container .subtitle{display:flex;align-items:center;color:var(--main-black);font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.column-settings__popup .column-container .subtitle--flex-grow-1{flex-grow:1}.column-settings__popup .column-container .show-all{color:var(--text-secondary);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.column-settings__popup .column-container .show-all:hover{cursor:pointer;color:var(--main-black)}.column-settings__popup .footer{display:flex;padding:8px 16px;align-items:center}.column-settings__popup .footer .save-button{width:100%}.column-list{display:flex;flex-direction:column}.column-list__label-container{display:flex;flex-direction:row;align-items:center;padding:0 8px 0 12px;cursor:default}::ng-deep .column-list.cdk-drop-list-dragging .column-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
252
|
+
], providers: [ResizeWindowObserverService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\" />\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\" />\n </button>\n <sproc-divider layout=\"vertical\" />\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\" />\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n \u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043B\u0435\u0432\u0430\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template [column]=\"fixedLeftColumn\" />\n }\n </tui-scrollbar>\n </div>\n <sproc-divider />\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\" />\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider />\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043F\u0440\u0430\u0432\u0430</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\" />\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </footer>\n</tui-drawer>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.gray{color:var(--gray-icon)}.column-settings__main-button{width:var(--top-bar-button-width);height:var(--top-bar-button-height);border-radius:2px;padding:10px}.column-settings__main-button:disabled{filter:grayscale(100%)!important;cursor:not-allowed}.column-settings__icon{font-size:16px}.column-settings__popup{top:var(--header-height);width:302px;border-radius:2px 2px 0 0;box-shadow:-1px 0 12px #4753263b}.column-settings__popup .header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 0 0 16px;gap:8px;border-radius:2px 2px 0 0;border-bottom:1px solid var(--stroke1);background:var(--table-header);box-shadow:unset}.column-settings__popup .header__title{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px;color:var(--main-black)}.column-settings__popup .header__buttons{display:flex;align-items:center;gap:4px}.column-settings__popup .header__buttons .reset-button{color:var(--gray-icon)}.column-settings__popup .header__buttons .reset-button:hover{color:var(--main-black)}.column-settings__popup .header__buttons sproc-divider{height:24px}.column-settings__popup .header__buttons .close-button{color:var(--brand-danger-active)}.column-settings__popup .header__buttons .close-button:hover{color:var(--brand-danger-hovered)}.column-settings__popup .column-container{display:flex;flex-direction:column;padding-top:8px;overflow:hidden}.column-settings__popup .column-container .subtitle{display:flex;align-items:center;color:var(--main-black);font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.column-settings__popup .column-container .subtitle--flex-grow-1{flex-grow:1}.column-settings__popup .column-container .show-all{color:var(--text-secondary);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.column-settings__popup .column-container .show-all:hover{cursor:pointer;color:var(--main-black)}.column-settings__popup .footer{display:flex;padding:8px 16px;align-items:center}.column-settings__popup .footer .save-button{width:100%}.column-list{display:flex;flex-direction:column}.column-list__label-container{display:flex;flex-direction:row;align-items:center;padding:0 8px 0 12px;cursor:default}::ng-deep .column-list.cdk-drop-list-dragging .column-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
248
253
|
}], ctorParameters: () => [] });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUVMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixRQUFRLEdBQ1QsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsYUFBYSxHQUlkLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxF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QUF1QjttR0FBdkIsdUJBQXVCLHVyREFIdkIsQ0FBQywyQkFBMkIsQ0FBQyw4SEFJMkIsV0FBVywySUFFdEUsV0FBVyw2Q0N2RXJCLHlyTEFnS0EsNGxKRDNHSSxTQUFTLG9JQUNULE9BQU8scUZBQ1AsU0FBUyx5RkFDVCxRQUFRLHdGQUNSLGdCQUFnQiw4RUFDaEIsMEJBQTBCLHNFQUMxQixXQUFXLDhmQUNYLGdCQUFnQixxSUFDaEIsWUFBWSw4RUFDWixnQkFBZ0IsK0dBQ2hCLCtCQUErQjs7NEZBS3RCLHVCQUF1QjtrQkFyQm5DLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FHUDt3QkFDUCxTQUFTO3dCQUNULE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLCtCQUErQjtxQkFDaEMsYUFDVSxDQUFDLDJCQUEyQixDQUFDLG1CQUN2Qix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB1bnRyYWNrZWQsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHNraXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpSWNvbiwgVHVpUG9wdXAsIFR1aVNjcm9sbGJhciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aURyYXdlciB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHtcbiAgQ2RrRHJhZ0Ryb3AsXG4gIENka0Ryb3BMaXN0LFxuICBDZGtEcm9wTGlzdEdyb3VwLFxuICBtb3ZlSXRlbUluQXJyYXksXG4gIHRyYW5zZmVyQXJyYXlJdGVtLFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIG91dHB1dEZyb21PYnNlcnZhYmxlLFxuICB0YWtlVW50aWxEZXN0cm95ZWQsXG4gIHRvT2JzZXJ2YWJsZSxcbiAgdG9TaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEVDb2x1bW5TdGF0dXMsXG4gIElDb2x1bW5TZXR0aW5ncyxcbiAgSUNvbHVtblNldHRpbmdzQ2hhbmdlcyxcbiAgSVRhYmxlQ29sdW1uU2V0dGluZ3MsXG59IGZyb20gJy4vdHlwZXMvY29sdW1uLXNldHRpbmdzLnR5cGVzJztcbmltcG9ydCB7IFdhUmVzaXplT2JzZXJ2ZXIgfSBmcm9tICdAbmctd2ViLWFwaXMvcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB7IENvbHVtblNldHRpbmdzVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlL2NvbHVtbi1zZXR0aW5ncy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUNPTl9DQU5DRUxfQ0xPU0UsIElDT05fRVJBU0VSLCBJQ09OX1NFVFRJTkdTIH0gZnJvbSAnLi9jb25zdHMvY29sdW1uLXNldHRpbmdzLmNvbnN0cyc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBSZXNpemVXaW5kb3dPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBnZXRMYXN0U2VnbWVudE9mUGF0aE5hbWUsIGlzTm9uTnVsbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNFVFRJTkdTX1RZUEUsIFVTRVJfUFJPRklMRV9MT0FERVIsIFVTRVJfU0VUVElOR1NfTE9BREVSIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IFJlc2V0U2V0dGluZ3NGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVzZXQtc2V0dGluZ3MtZm9ybS9yZXNldC1zZXR0aW5ncy1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJVHBVc2VyU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Nwcm9jLWNvbHVtbi1zZXR0aW5ncycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tc2V0dGluZ3MuY29tcG9uZW50Lmxlc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIFR1aUJ1dHRvbixcbiAgICBUdWlJY29uLFxuICAgIFR1aURyYXdlcixcbiAgICBUdWlQb3B1cCxcbiAgICBEaXZpZGVyQ29tcG9uZW50LFxuICAgIFJlc2V0U2V0dGluZ3NGb3JtQ29tcG9uZW50LFxuICAgIENka0Ryb3BMaXN0LFxuICAgIENka0Ryb3BMaXN0R3JvdXAsXG4gICAgVHVpU2Nyb2xsYmFyLFxuICAgIFdhUmVzaXplT2JzZXJ2ZXIsXG4gICAgQ29sdW1uU2V0dGluZ3NUZW1wbGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbUmVzaXplV2luZG93T2JzZXJ2ZXJTZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHJlc2V0Q29sdW1uU2V0dGluZ3NSZWYgPSB2aWV3Q2hpbGQoJ3Jlc2V0U2V0dGluZ3MnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmPHVua25vd24+IH0pO1xuICBwdWJsaWMgcmVzZXRDb2x1bW5TZXR0aW5nc0Zvb3RlciA9IHZpZXdDaGlsZCgncmVzZXRTZXR0aW5nc0Zvb3RlcicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcbiAgfSk7XG5cbiAgcHVibGljIGRlZmF1bHRTZXR0aW5ncyA9IGlucHV0LnJlcXVpcmVkPElUYWJsZUNvbHVtblNldHRpbmdzPigpO1xuICAvKiog0JLRi9GB0L7RgtCwINCy0YHQtdCz0L4g0LrQvtC80L/QvtC90LXQvdGC0LAg0L3QsNGB0YLRgNC+0LXQuiAqL1xuICBwdWJsaWMgaGVpZ2h0ID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xuICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIC8qKiDQv9C+0LrQsNC3INC30LDQs9C+0LvQvtCy0LrQsCDQu9C40YHRgtCwINGE0LjQutGBLiDRgdC70LXQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBzaG93TGVmdExpc3RIZWFkZXIgPSBpbnB1dCh0cnVlKTtcbiAgLyoqINC/0L7QutCw0Lcg0LfQsNCz0L7Qu9C+0LLQutCwINC70LjRgdGC0LAg0YTQuNC60YEuINGB0L/RgNCw0LLQsCDQutC+0LvQvtC90L7QuiAqL1xuICBwdWJsaWMgc2hvd1JpZ2h0TGlzdEhlYWRlciA9IGlucHV0KHRydWUpO1xuICAvKiog0LfQsNCz0L7Qu9C+0LLQvtC6INC70LjRgdGC0LAg0YEg0LrQvtC70L7QvdC60LDQvNC4ICjQvdC10YTQuNC60YHQuNGA0L7QstCw0L3QvdGL0LUpICovXG4gIHB1YmxpYyBjb2x1bW5zTGlzdEhlYWRlciA9IGlucHV0KCfQmtC+0LvQvtC90LrQuCcpO1xuICAvKiog0L/QvtC60LDQtyDRhNC40LrRgS4g0YHQv9GA0LDQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBzaG93Rml4ZWRSaWdodExpc3QgPSBpbnB1dChmYWxzZSk7XG4gIC8qKiDRhNGD0L3QutGG0LjRjyDQv9GA0LXQtNC40LrQsNGCIC0g0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQtNC+0LHQsNCy0LvQtdC90LjRjyDRjdC70LXQvNC10L3RgtCwINCyINC70LjRgdGCINGE0LjQutGBLiDRgdC70LXQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBmaXhlZExlZnRMaXN0RW50ZXJQcmVkaWNhdGUgPSBpbnB1dDwoKSA9PiBib29sZWFuPigoKSA9PiB0cnVlKTtcbiAgLyoqINGE0YPQvdC60YbQuNGPINC/0YDQtdC00LjQutCw0YIgLSDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC00L7QsdCw0LLQu9C10L3QuNGPINGN0LvQtdC80LXQvdGC0LAg0LIg0LvQuNGB0YIg0LrQvtC70L7QvdC+0LogKNC90LXRhNC40LrRgdC40YDQvtCy0LDQvdC90YvQtSkgKi9cbiAgcHVibGljIGNvbHVtbnNMaXN0RW50ZXJQcmVkaWNhdGUgPSBpbnB1dDwoKSA9PiBib29sZWFuPigoKSA9PiB0cnVlKTtcbiAgLyoqINGE0YPQvdC60YbQuNGPINC/0YDQtdC00LjQutCw0YIgLSDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC00L7QsdCw0LLQu9C10L3QuNGPINGN0LvQtdC80LXQvdGC0LAg0LIg0LvQuNGB0YIg0YTQuNC60YEuINGB0L/RgNCw0LLQsCDQutC+0LvQvtC90L7QuiAqL1xuICBwdWJsaWMgZml4ZWRSaWdodExpc3RFbnRlclByZWRpY2F0ZSA9IGlucHV0PCgpID0+IGJvb2xlYW4+KCgpID0+IHRydWUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBvcGVuU2V0dGluZ3MgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRTZXR0aW5ncyA9IHNpZ25hbDxJVGFibGVDb2x1bW5TZXR0aW5ncyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZml4ZWRMZWZ0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5wdXRTZXR0aW5ncygpPy5zdGlja3lMZWZ0ID8/IFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0U2V0dGluZ3MoKT8uY29sdW1ucyA/PyBbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaXhlZFJpZ2h0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5wdXRTZXR0aW5ncygpPy5zdGlja3lSaWdodCA/PyBbXSk7XG5cbiAgcHVibGljIGNvbHVtbnNDaGFuZ2VzID0gb3V0cHV0RnJvbU9ic2VydmFibGU8SUNvbHVtblNldHRpbmdzQ2hhbmdlcz4oXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuaW5wdXRTZXR0aW5ncykucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBtYXAoKHNldHRpbmdzKSA9PiAoeyBzZXR0aW5ncyB9KSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNldHRpbmdzU3RvcmUgPSBpbmplY3QoVVNFUl9TRVRUSU5HU19MT0FERVIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlclByb2ZpbGVTZXJ2aWNlID0gaW5qZWN0KFVTRVJfUFJPRklMRV9MT0FERVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNpemVXaW5kb3dPYnNlcnZlciA9IGluamVjdChSZXNpemVXaW5kb3dPYnNlcnZlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpY29uU2V0dGluZ3MgPSBJQ09OX1NFVFRJTkdTO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbkVyYXNlciA9IElDT05fRVJBU0VSO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbkNhbmNlbENsb3NlID0gSUNPTl9DQU5DRUxfQ0xPU0U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtblNldHRpbmdzSGVhZGVySGVpZ2h0UHggPSA0MDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtblNldHRpbmdzU3VidGl0bGVIZWlnaHRQeCA9IDMyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsQm94Rml4ZWRDb2x1bW5zSGVpZ2h0UHggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxCb3hSaWdodEZpeGVkQ29sdW1uc0hlaWdodFB4ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsQm94Rml4ZWRDb2x1bW5zTWF4SGVpZ2h0UHggPSAyODc7XG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5TZXR0aW5nc0Zvb3RlckhlaWdodFB4ID0gNDg7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5MaXN0SGVpZ2h0UHggPSB0b1NpZ25hbChcbiAgICB0aGlzLl9yZXNpemVXaW5kb3dPYnNlcnZlci5pbm5lckhlaWdodCQucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBtYXAoKGlubmVySGVpZ2h0KSA9PiB0aGlzLl9jYWxjQ29sdW1uTGlzdEhlaWdodFB4KGlubmVySGVpZ2h0KSlcbiAgICApLFxuICAgIHtcbiAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy5fY2FsY0NvbHVtbkxpc3RIZWlnaHRQeCh0aGlzLl9yZXNpemVXaW5kb3dPYnNlcnZlci5pbm5lckhlaWdodCgpKSxcbiAgICB9XG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5MaXN0Qm90dG9tUGFkZGluZ1B4ID0gODtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pZFVzZXIgPSB0aGlzLl91c2VyUHJvZmlsZVNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kdWxlTmFtZSA9IGdldExhc3RTZWdtZW50T2ZQYXRoTmFtZSh0aGlzLl9yb3V0ZXIudXJsKTtcblxuICBwcml2YXRlIF9jb2x1bW5zU2V0dGluZ3M6IElUcFVzZXJTZXR0aW5ncyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldERlZmF1bHRTZXR0aW5ncygpO1xuICAgIHRoaXMuX2VmZmVjdE9uU2V0U2Nyb2xsQm94Q29sdW1uc01heEhlaWdodCgpO1xuICB9XG5cbiAgcHVibGljIHNldERlZmF1bHRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNldHRpbmdzID0gdGhpcy5kZWZhdWx0U2V0dGluZ3MoKTtcbiAgICAgIGNvbnN0IGNsb25lZFNldHRpbmdzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWZhdWx0U2V0dGluZ3MpKTtcblxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgdGhpcy5pbnB1dFNldHRpbmdzLnNldChjbG9uZWRTZXR0aW5ncyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2VmZmVjdE9uU2V0U2Nyb2xsQm94Q29sdW1uc01heEhlaWdodCgpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50SGVpZ2h0UHggPSB0aGlzLmNvbHVtbkxpc3RIZWlnaHRQeCgpO1xuICAgICAgY29uc3QgZml4ZWRIZWlnaHRQeCA9IHRoaXMuc2Nyb2xsQm94Rml4ZWRDb2x1bW5zSGVpZ2h0UHgoKTtcbiAgICAgIGNvbnN0IHJpZ2h0Rml4ZWRIZWlnaHRQeCA9IHRoaXMuc2Nyb2xsQm94UmlnaHRGaXhlZENvbHVtbnNIZWlnaHRQeCgpO1xuICAgICAgY29uc3Qgc3VtRml4ZWRIZWlnaHRQeCA9IGZpeGVkSGVpZ2h0UHggKyByaWdodEZpeGVkSGVpZ2h0UHg7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodFB4ID0gdGhpcy5fY2FsY1Njcm9sbEJveENvbHVtbnNNYXhIZWlnaHRQeChwYXJlbnRIZWlnaHRQeCwgc3VtRml4ZWRIZWlnaHRQeCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsQm94Q29sdW1uc01heEhlaWdodFB4LnNldChuZXdIZWlnaHRQeCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZU9uU2V0dGluZ3MoKTtcbiAgICB0aGlzLmZldGNoU2V0dGluZ3ModGhpcy5faWRVc2VyLCB0aGlzLl9tb2R1bGVOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTZXR0aW5ncyh1c2VySWQ6IHN0cmluZywgbW9kdWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXR0aW5nc1N0b3JlLmZldGNoVXNlclNldHRpbmdzQnlVc2VySWQoe1xuICAgICAgdXNlcklkLFxuICAgICAgc2V0dGluZ3NUeXBlOiBTRVRUSU5HU19UWVBFLkNPTFVNTlMsXG4gICAgICBtb2R1bGVOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNldHRpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NTdG9yZS5zZXR0aW5ncyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHNldHRpbmdzKSA9PiBzZXR0aW5ncy5sZW5ndGggPiAwKSxcbiAgICAgICAgbWFwKChbc2V0dGluZ3NdKSA9PiBzZXR0aW5ncyksXG4gICAgICAgIGZpbHRlcigoc2V0dGluZ3MpID0+IGlzTm9uTnVsbChzZXR0aW5ncykpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzZXR0aW5ncykgPT4ge1xuICAgICAgICB0aGlzLl9jb2x1bW5zU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgY29uc3QgeyB0YWJsZUZpZWxkcyB9ID0gc2V0dGluZ3Muc2V0dGluZ3M7XG5cbiAgICAgICAgaWYgKHRhYmxlRmllbGRzKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dFNldHRpbmdzLnNldCh0YWJsZUZpZWxkcyk7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICBjb25zdCBjbG9uZWRTZXR0aW5ncyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0U2V0dGluZ3MoKSkpO1xuICAgIHRoaXMuaW5wdXRTZXR0aW5ncy5zZXQoY2xvbmVkU2V0dGluZ3MpO1xuXG4gICAgaWYgKHRoaXMuX2NvbHVtbnNTZXR0aW5ncykge1xuICAgICAgdGhpcy5zZXR0aW5nc1N0b3JlLmRlbGV0ZVVzZXJTZXR0aW5nc0J5SWQoe1xuICAgICAgICBpZDogdGhpcy5fY29sdW1uc1NldHRpbmdzPy5pZCxcbiAgICAgICAgdXBkYXRlU2V0dGluZ3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2F2ZVNldHRpbmdzKHNldHRpbmdzOiBJVGFibGVDb2x1bW5TZXR0aW5ncyk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NTdG9yZS51cHNlcnRVc2VyU2V0dGluZ3NCeVVzZXJJZCh7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBpZDogdGhpcy5fY29sdW1uc1NldHRpbmdzPy5pZCxcbiAgICAgICAgbW9kdWxlX25hbWU6IHRoaXMuX21vZHVsZU5hbWUsXG4gICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgLi4udGhpcy5fY29sdW1uc1NldHRpbmdzPy5zZXR0aW5ncyxcbiAgICAgICAgICB0YWJsZUZpZWxkczogc2V0dGluZ3MsXG4gICAgICAgIH0sXG4gICAgICAgIHNldHRpbmdzX3R5cGU6IFNFVFRJTkdTX1RZUEUuQ09MVU1OUyxcbiAgICAgIH0sXG4gICAgICB1cGRhdGVTZXR0aW5nczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzYXZlVGFibGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVTZXR0aW5ncyh7XG4gICAgICBzdGlja3lMZWZ0OiB0aGlzLmZpeGVkTGVmdENvbHVtbnMoKSxcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucygpLFxuICAgICAgc3RpY2t5UmlnaHQ6IHRoaXMuZml4ZWRSaWdodENvbHVtbnMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuUmVzZXREaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxuICAgICAgLm9wZW5Nb2RhbCh0aGlzLnJlc2V0Q29sdW1uU2V0dGluZ3NSZWYoKSwge1xuICAgICAgICBjbG9zZWFibGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA0NjYsXG4gICAgICAgIGZvb3RlcjogdGhpcy5yZXNldENvbHVtblNldHRpbmdzRm9vdGVyKCksXG4gICAgICAgIGRpc21pc3NpYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2V0dGluZ3MudXBkYXRlKChpc09wZW4pID0+ICFpc09wZW4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNldHRpbmdzLnNldChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZHJvcEludG9GaXhlZExlZnQoZXZlbnQ6IENka0RyYWdEcm9wPElDb2x1bW5TZXR0aW5nc1tdPik6IHZvaWQge1xuICAgIGNvbnN0IGRyb3BwZWRFbGVtZW50ID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XTtcbiAgICB0aGlzLl9zZXRTdGF0dXNSZWN1cnNpdmUoZHJvcHBlZEVsZW1lbnQsIEVDb2x1bW5TdGF0dXMuU1RJQ0tZKTtcbiAgICB0aGlzLl9tb3ZlRHJvcHBlZEl0ZW0oZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRyb3BJbnRvQ29sdW1ucyhldmVudDogQ2RrRHJhZ0Ryb3A8SUNvbHVtblNldHRpbmdzW10+KTogdm9pZCB7XG4gICAgY29uc3QgZnJvbU90aGVyID0gZXZlbnQucHJldmlvdXNDb250YWluZXIgIT09IGV2ZW50LmNvbnRhaW5lcjtcblxuICAgIGlmIChmcm9tT3RoZXIpIHtcbiAgICAgIGNvbnN0IGRyb3BwZWRFbGVtZW50ID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XTtcbiAgICAgIHRoaXMuX3NldFN0YXR1c1JlY3Vyc2l2ZShkcm9wcGVkRWxlbWVudCwgRUNvbHVtblN0YXR1cy5ERUZBVUxUKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tb3ZlRHJvcHBlZEl0ZW0oZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbW92ZURyb3BwZWRJdGVtKGV2ZW50OiBDZGtEcmFnRHJvcDxJQ29sdW1uU2V0dGluZ3NbXT4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlVmlzaWJpbGl0eShjb2w6IElDb2x1bW5TZXR0aW5ncyk6IHZvaWQge1xuICAgIGNvbnN0IGlzSGlkZGVuID0gY29sLnN0YXR1cyA9PT0gRUNvbHVtblN0YXR1cy5ISURERU47XG4gICAgY29sLnN0YXR1cyA9IGlzSGlkZGVuID8gRUNvbHVtblN0YXR1cy5ERUZBVUxUIDogRUNvbHVtblN0YXR1cy5ISURERU47XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd0FsbENvbHVtbnMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmlucHV0U2V0dGluZ3MoKTtcblxuICAgIGlmICghc2V0dGluZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcign0J3QsNGB0YLRgNC+0LnQutC4INGC0LDQsdC70LjRhtGLINC90LUg0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNC90YsnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRDb2x1bW5zU3RhdHVzUmVjdXJzaXZlKHNldHRpbmdzLmNvbHVtbnMsIEVDb2x1bW5TdGF0dXMuREVGQVVMVCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNIaWRkZW5Db2x1bW4oY29sdW1uOiBJQ29sdW1uU2V0dGluZ3MpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sdW1uLnN0YXR1cyA9PT0gRUNvbHVtblN0YXR1cy5ISURERU47XG4gIH1cblxuICBwcm90ZWN0ZWQgb25GaXhlZFNjcm9sbGJhclJlc2l6ZShbZml4ZWRTY3JvbGxiYXJdOiByZWFkb25seSBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbEJveEZpeGVkQ29sdW1uc0hlaWdodFB4LnNldChmaXhlZFNjcm9sbGJhci5jb250ZW50UmVjdC5oZWlnaHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uUmlnaHRGaXhlZFNjcm9sbGJhclJlc2l6ZShbZml4ZWRTY3JvbGxiYXJdOiByZWFkb25seSBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbEJveFJpZ2h0Rml4ZWRDb2x1bW5zSGVpZ2h0UHguc2V0KGZpeGVkU2Nyb2xsYmFyLmNvbnRlbnRSZWN0LmhlaWdodCk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjQ29sdW1uTGlzdEhlaWdodFB4KHdpbmRvd0lubmVySGVpZ2h0OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1haW5IZWFkZXJQeCA9IDUyO1xuICAgIGNvbnN0IGNvbHVtblNldHRpbmdzSGVhZGVyRm9vdGVyU3VtSGVpZ2h0UHggPVxuICAgICAgdGhpcy5jb2x1bW5TZXR0aW5nc0hlYWRlckhlaWdodFB4ICsgdGhpcy5jb2x1bW5TZXR0aW5nc0Zvb3RlckhlaWdodFB4O1xuXG4gICAgcmV0dXJuIHdpbmRvd0lubmVySGVpZ2h0IC0gbWFpbkhlYWRlclB4IC0gY29sdW1uU2V0dGluZ3NIZWFkZXJGb290ZXJTdW1IZWlnaHRQeDtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGNTY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHgoXG4gICAgcGFyZW50SGVpZ2h0UHg6IG51bWJlcixcbiAgICBmaXhlZFNjcm9sbGJhckhlaWdodFB4OiBudW1iZXJcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCB0d29TdWJ0aXRsZUhlaWdodFB4ID0gMiAqIHRoaXMuY29sdW1uU2V0dGluZ3NTdWJ0aXRsZUhlaWdodFB4O1xuICAgIGNvbnN0IGJvdHRvbVBhZGRpbmdQeCA9IHRoaXMuY29sdW1uTGlzdEJvdHRvbVBhZGRpbmdQeDtcblxuICAgIHJldHVybiBwYXJlbnRIZWlnaHRQeCAtIHR3b1N1YnRpdGxlSGVpZ2h0UHggLSBmaXhlZFNjcm9sbGJhckhlaWdodFB4IC0gYm90dG9tUGFkZGluZ1B4O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U3RhdHVzUmVjdXJzaXZlKGNvbHVtbjogSUNvbHVtblNldHRpbmdzLCBzdGF0dXM6IEVDb2x1bW5TdGF0dXMpOiB2b2lkIHtcbiAgICBjb2x1bW4uc3RhdHVzID0gc3RhdHVzO1xuXG4gICAgaWYgKGNvbHVtbi5jaGlsZHJlbikge1xuICAgICAgdGhpcy5fc2V0Q29sdW1uc1N0YXR1c1JlY3Vyc2l2ZShjb2x1bW4uY2hpbGRyZW4sIHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Q29sdW1uc1N0YXR1c1JlY3Vyc2l2ZShjb2x1bW5zOiBJQ29sdW1uU2V0dGluZ3NbXSwgc3RhdHVzOiBFQ29sdW1uU3RhdHVzKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGNvbF0gb2YgY29sdW1ucy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbHVtbnNbaW5kZXhdID0geyAuLi5jb2wsIHN0YXR1cyB9O1xuXG4gICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNTdGF0dXNSZWN1cnNpdmUoY29sLmNoaWxkcmVuLCBzdGF0dXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0dWlCdXR0b25cbiAgY2xhc3M9XCJjb2x1bW4tc2V0dGluZ3NfX21haW4tYnV0dG9uXCJcbiAgYXBwZWFyYW5jZT1cIm91dGxpbmUtZ3JheXNjYWxlXCJcbiAgc2l6ZT1cIm1cIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIChjbGljayk9XCJ0b2dnbGUoKVwiXG4+XG4gIDx0dWktaWNvbiBjbGFzcz1cImNvbHVtbi1zZXR0aW5nc19faWNvbiBncmF5XCIgW2ljb25dPVwiaWNvblNldHRpbmdzXCI+PC90dWktaWNvbj5cbjwvYnV0dG9uPlxuXG48dHVpLWRyYXdlclxuICAqdHVpUG9wdXA9XCJvcGVuU2V0dGluZ3MoKVwiXG4gIGNsYXNzPVwiY29sdW1uLXNldHRpbmdzX19wb3B1cFwiXG4gIGRpcmVjdGlvbj1cInJpZ2h0XCJcbiAgW292ZXJsYXldPVwidHJ1ZVwiXG4gIChjbGljay5zZWxmKT1cImNsb3NlKClcIlxuPlxuICA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJjb2x1bW5TZXR0aW5nc0hlYWRlckhlaWdodFB4XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJoZWFkZXJfX3RpdGxlXCI+0J3QsNGB0YLRgNC+0LnQutCwINGC0LDQsdC70LjRhtGLPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAoY2xpY2spPVwib3BlblJlc2V0RGlhbG9nKClcIlxuICAgICAgPlxuICAgICAgICA8dHVpLWljb24gY2xhc3M9XCJjb2x1bW4tc2V0dGluZ3NfX2ljb25cIiBbaWNvbl09XCJpY29uRXJhc2VyXCI+PC90dWktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPHNwcm9jLWRpdmlkZXIgbGF5b3V0PVwidmVydGljYWxcIj48L3Nwcm9jLWRpdmlkZXI+XG4gICAgICA8YnV0dG9uIHR1aUljb25CdXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiBhcHBlYXJhbmNlPVwiZmxhdFwiIHNpemU9XCJtXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPHR1aS1pY29uIGNsYXNzPVwiY29sdW1uLXNldHRpbmdzX19pY29uXCIgW2ljb25dPVwiaWNvbkNhbmNlbENsb3NlXCI+PC90dWktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cbiAgPGRpdlxuICAgIGNka0Ryb3BMaXN0R3JvdXBcbiAgICBjbGFzcz1cImNvbHVtbi1jb250YWluZXIgdHVpX190LWNvbnRlbnQtLW5vLWRlZmF1bHQtcGFkZGluZ1wiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJjb2x1bW5MaXN0SGVpZ2h0UHgoKVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjZGtEcm9wTGlzdFxuICAgICAgY2xhc3M9XCJjb2x1bW4tbGlzdFwiXG4gICAgICBbY2RrRHJvcExpc3REYXRhXT1cImZpeGVkTGVmdENvbHVtbnMoKVwiXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BJbnRvRml4ZWRMZWZ0KCRldmVudClcIlxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiZml4ZWRMZWZ0TGlzdEVudGVyUHJlZGljYXRlKClcIlxuICAgID5cbiAgICAgIEBpZiAoc2hvd0xlZnRMaXN0SGVhZGVyKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1saXN0X19sYWJlbC1jb250YWluZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnRpdGxlXCIgW3N0eWxlLmhlaWdodC5weF09XCJjb2x1bW5TZXR0aW5nc1N1YnRpdGxlSGVpZ2h0UHhcIj5cbiAgICAgICAgICAgINCk0LjQutGB0LjRgNC+0LLQsNC90L3Ri9C1INC60L7Qu9C+0L3QutC4INGB0LvQtdCy0LBcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8dHVpLXNjcm9sbGJhclxuICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJzY3JvbGxCb3hGaXhlZENvbHVtbnNNYXhIZWlnaHRQeFwiXG4gICAgICAgICh3YVJlc2l6ZU9ic2VydmVyKT1cIm9uRml4ZWRTY3JvbGxiYXJSZXNpemUoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKGZpeGVkTGVmdENvbHVtbiBvZiBmaXhlZExlZnRDb2x1bW5zKCk7IHRyYWNrIGZpeGVkTGVmdENvbHVtbi5pZCkge1xuICAgICAgICAgIDxzcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGVcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiZml4ZWRMZWZ0Q29sdW1uXCJcbiAgICAgICAgICA+PC9zcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICAgIDwvdHVpLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8c3Byb2MtZGl2aWRlcj48L3Nwcm9jLWRpdmlkZXI+XG4gICAgPGRpdlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIGNsYXNzPVwiY29sdW1uLWxpc3RcIlxuICAgICAgW3N0eWxlLnBhZGRpbmctYm90dG9tLnB4XT1cImNvbHVtbkxpc3RCb3R0b21QYWRkaW5nUHhcIlxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2x1bW5zKClcIlxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wSW50b0NvbHVtbnMoJGV2ZW50KVwiXG4gICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJjb2x1bW5zTGlzdEVudGVyUHJlZGljYXRlKClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tbGlzdF9fbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzdWJ0aXRsZSBzdWJ0aXRsZS0tZmxleC1ncm93LTFcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NTdWJ0aXRsZUhlaWdodFB4XCJcbiAgICAgICAgICA+e3sgY29sdW1uc0xpc3RIZWFkZXIoKSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy1hbGxcIiAoY2xpY2spPVwic2hvd0FsbENvbHVtbnMoKVwiPtCf0L7QutCw0LfQsNGC0Ywg0LLRgdC1PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8dHVpLXNjcm9sbGJhciBbc3R5bGUubWF4LWhlaWdodC5weF09XCJzY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHgoKVwiPlxuICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpOyB0cmFjayBjb2x1bW4uaWQpIHtcbiAgICAgICAgICA8c3Byb2MtY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlIFtjb2x1bW5dPVwiY29sdW1uXCI+PC9zcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICAgIDwvdHVpLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKHNob3dGaXhlZFJpZ2h0TGlzdCgpKSB7XG4gICAgICA8c3Byb2MtZGl2aWRlcj48L3Nwcm9jLWRpdmlkZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNsYXNzPVwiY29sdW1uLWxpc3RcIlxuICAgICAgICBbc3R5bGUucGFkZGluZy1ib3R0b20ucHhdPVwiY29sdW1uTGlzdEJvdHRvbVBhZGRpbmdQeFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZml4ZWRSaWdodENvbHVtbnMoKVwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEludG9Db2x1bW5zKCRldmVudClcIlxuICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJmaXhlZFJpZ2h0TGlzdEVudGVyUHJlZGljYXRlKClcIlxuICAgICAgPlxuICAgICAgICBAaWYgKHNob3dSaWdodExpc3RIZWFkZXIoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tbGlzdF9fbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInN1YnRpdGxlIHN1YnRpdGxlLS1mbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NTdWJ0aXRsZUhlaWdodFB4XCJcbiAgICAgICAgICAgICAgPtCk0LjQutGB0LjRgNC+0LLQsNC90L3Ri9C1INC60L7Qu9C+0L3QutC4INGB0L/RgNCw0LLQsDwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPHR1aS1zY3JvbGxiYXJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJzY3JvbGxCb3hGaXhlZENvbHVtbnNNYXhIZWlnaHRQeFwiXG4gICAgICAgICAgKHdhUmVzaXplT2JzZXJ2ZXIpPVwib25SaWdodEZpeGVkU2Nyb2xsYmFyUmVzaXplKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIGZpeGVkUmlnaHRDb2x1bW5zKCk7IHRyYWNrIGNvbHVtbi5pZCkge1xuICAgICAgICAgICAgPHNwcm9jLWNvbHVtbi1zZXR0aW5ncy10ZW1wbGF0ZSBbY29sdW1uXT1cImNvbHVtblwiPjwvc3Byb2MtY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90dWktc2Nyb2xsYmFyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgPGZvb3RlciBjbGFzcz1cImZvb3RlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NGb290ZXJIZWlnaHRQeFwiPlxuICAgIDxidXR0b25cbiAgICAgIHR1aUJ1dHRvblxuICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICBzaXplPVwibVwiXG4gICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwic2F2ZVRhYmxlU2V0dGluZ3MoKVwiXG4gICAgPlxuICAgICAg0KHQvtGF0YDQsNC90LjRgtGMXG4gICAgPC9idXR0b24+XG4gIDwvZm9vdGVyPlxuPC90dWktZHJhd2VyPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0U2V0dGluZ3M+XG4gIDxzcHJvYy1yZXNldC1zZXR0aW5ncy1mb3JtPjwvc3Byb2MtcmVzZXQtc2V0dGluZ3MtZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVzZXRTZXR0aW5nc0Zvb3RlciBsZXQtY29tcGxldGVXaXRoPVwiY29tcGxldGVXaXRoXCI+XG4gIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogOHB4XCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHVpQnV0dG9uXG4gICAgICBzdHlsZT1cIndpZHRoOiAxOTZweFwiXG4gICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeS1kZXN0cnVjdGl2ZVwiXG4gICAgICBzaXplPVwibFwiXG4gICAgICAoY2xpY2spPVwiZGVsZXRlU2V0dGluZ3MoKTsgY29tcGxldGVXaXRoKHRydWUpXCJcbiAgICA+XG4gICAgICDQodCx0YDQvtGB0LjRgtGMXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHVpQnV0dG9uXG4gICAgICBzdHlsZT1cIndpZHRoOiAxOTZweFwiXG4gICAgICBhcHBlYXJhbmNlPVwib3V0bGluZS1ncmF5c2NhbGVcIlxuICAgICAgc2l6ZT1cImxcIlxuICAgICAgKGNsaWNrKT1cImNvbXBsZXRlV2l0aChmYWxzZSlcIlxuICAgID5cbiAgICAgINCe0YLQvNC10L3QsFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBRUwsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxhQUFhLEdBSWQsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdC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TSxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQWxTVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3ekRBSHZCLENBQUMsMkJBQTJCLENBQUMsMEJDL0QxQyxtd0pBbUlBLDRsSkQvRUksU0FBUyxvSUFDVCxPQUFPLHFGQUNQLFNBQVMseUZBQ1QsUUFBUSx3RkFDUixnQkFBZ0IsOEVBQ2hCLFdBQVcsOGZBQ1gsZ0JBQWdCLHFJQUNoQixZQUFZLDhFQUNaLGdCQUFnQiwrR0FDaEIsK0JBQStCOzs0RkFLdEIsdUJBQXVCO2tCQXBCbkMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUdQO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxTQUFTO3dCQUNULFFBQVE7d0JBQ1IsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLCtCQUErQjtxQkFDaEMsYUFDVSxDQUFDLDJCQUEyQixDQUFDLG1CQUN2Qix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBJTkpFQ1RPUixcbiAgaW5wdXQsXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBza2lwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aUljb24sIFR1aVBvcHVwLCBUdWlTY3JvbGxiYXIgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlEcmF3ZXIgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7XG4gIENka0RyYWdEcm9wLFxuICBDZGtEcm9wTGlzdCxcbiAgQ2RrRHJvcExpc3RHcm91cCxcbiAgbW92ZUl0ZW1JbkFycmF5LFxuICB0cmFuc2ZlckFycmF5SXRlbSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBvdXRwdXRGcm9tT2JzZXJ2YWJsZSxcbiAgdGFrZVVudGlsRGVzdHJveWVkLFxuICB0b09ic2VydmFibGUsXG4gIHRvU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICBFQ29sdW1uU3RhdHVzLFxuICBJQ29sdW1uU2V0dGluZ3MsXG4gIElDb2x1bW5TZXR0aW5nc0NoYW5nZXMsXG4gIElUYWJsZUNvbHVtblNldHRpbmdzLFxufSBmcm9tICcuL3R5cGVzL2NvbHVtbi1zZXR0aW5ncy50eXBlcyc7XG5pbXBvcnQgeyBXYVJlc2l6ZU9ic2VydmVyIH0gZnJvbSAnQG5nLXdlYi1hcGlzL3Jlc2l6ZS1vYnNlcnZlcic7XG5pbXBvcnQgeyBDb2x1bW5TZXR0aW5nc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbHVtbi1zZXR0aW5ncy10ZW1wbGF0ZS9jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IElDT05fQ0FOQ0VMX0NMT1NFLCBJQ09OX0VSQVNFUiwgSUNPTl9TRVRUSU5HUyB9IGZyb20gJy4vY29uc3RzL2NvbHVtbi1zZXR0aW5ncy5jb25zdHMnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgUmVzaXplV2luZG93T2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZ2V0TGFzdFNlZ21lbnRPZlBhdGhOYW1lLCBpc05vbk51bGwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTRVRUSU5HU19UWVBFLCBVU0VSX1BST0ZJTEVfTE9BREVSLCBVU0VSX1NFVFRJTkdTX0xPQURFUiB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBSZXNldFNldHRpbmdzRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXNldC1zZXR0aW5ncy1mb3JtL3Jlc2V0LXNldHRpbmdzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IERpdmlkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElUcFVzZXJTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Byb2MtY29sdW1uLXNldHRpbmdzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1zZXR0aW5ncy5jb21wb25lbnQubGVzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgVHVpQnV0dG9uLFxuICAgIFR1aUljb24sXG4gICAgVHVpRHJhd2VyLFxuICAgIFR1aVBvcHVwLFxuICAgIERpdmlkZXJDb21wb25lbnQsXG4gICAgQ2RrRHJvcExpc3QsXG4gICAgQ2RrRHJvcExpc3RHcm91cCxcbiAgICBUdWlTY3JvbGxiYXIsXG4gICAgV2FSZXNpemVPYnNlcnZlcixcbiAgICBDb2x1bW5TZXR0aW5nc1RlbXBsYXRlQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtSZXNpemVXaW5kb3dPYnNlcnZlclNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZGVmYXVsdFNldHRpbmdzID0gaW5wdXQucmVxdWlyZWQ8SVRhYmxlQ29sdW1uU2V0dGluZ3M+KCk7XG4gIC8qKiDQktGL0YHQvtGC0LAg0LLRgdC10LPQviDQutC+0LzQv9C+0L3QtdC90YLQsCDQvdCw0YHRgtGA0L7QtdC6ICovXG4gIHB1YmxpYyBoZWlnaHQgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgLyoqINC/0L7QutCw0Lcg0LfQsNCz0L7Qu9C+0LLQutCwINC70LjRgdGC0LAg0YTQuNC60YEuINGB0LvQtdCy0LAg0LrQvtC70L7QvdC+0LogKi9cbiAgcHVibGljIHNob3dMZWZ0TGlzdEhlYWRlciA9IGlucHV0KHRydWUpO1xuICAvKiog0L/QvtC60LDQtyDQt9Cw0LPQvtC70L7QstC60LAg0LvQuNGB0YLQsCDRhNC40LrRgS4g0YHQv9GA0LDQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBzaG93UmlnaHRMaXN0SGVhZGVyID0gaW5wdXQodHJ1ZSk7XG4gIC8qKiDQt9Cw0LPQvtC70L7QstC+0Log0LvQuNGB0YLQsCDRgSDQutC+0LvQvtC90LrQsNC80LggKNC90LXRhNC40LrRgdC40YDQvtCy0LDQvdC90YvQtSkgKi9cbiAgcHVibGljIGNvbHVtbnNMaXN0SGVhZGVyID0gaW5wdXQoJ9Ca0L7Qu9C+0L3QutC4Jyk7XG4gIC8qKiDQv9C+0LrQsNC3INGE0LjQutGBLiDRgdC/0YDQsNCy0LAg0LrQvtC70L7QvdC+0LogKi9cbiAgcHVibGljIHNob3dGaXhlZFJpZ2h0TGlzdCA9IGlucHV0KGZhbHNlKTtcbiAgLyoqINGE0YPQvdC60YbQuNGPINC/0YDQtdC00LjQutCw0YIgLSDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC00L7QsdCw0LLQu9C10L3QuNGPINGN0LvQtdC80LXQvdGC0LAg0LIg0LvQuNGB0YIg0YTQuNC60YEuINGB0LvQtdCy0LAg0LrQvtC70L7QvdC+0LogKi9cbiAgcHVibGljIGZpeGVkTGVmdExpc3RFbnRlclByZWRpY2F0ZSA9IGlucHV0PCgpID0+IGJvb2xlYW4+KCgpID0+IHRydWUpO1xuICAvKiog0YTRg9C90LrRhtC40Y8g0L/RgNC10LTQuNC60LDRgiAtINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LTQvtCx0LDQstC70LXQvdC40Y8g0Y3Qu9C10LzQtdC90YLQsCDQsiDQu9C40YHRgiDQutC+0LvQvtC90L7QuiAo0L3QtdGE0LjQutGB0LjRgNC+0LLQsNC90L3Ri9C1KSAqL1xuICBwdWJsaWMgY29sdW1uc0xpc3RFbnRlclByZWRpY2F0ZSA9IGlucHV0PCgpID0+IGJvb2xlYW4+KCgpID0+IHRydWUpO1xuICAvKiog0YTRg9C90LrRhtC40Y8g0L/RgNC10LTQuNC60LDRgiAtINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LTQvtCx0LDQstC70LXQvdC40Y8g0Y3Qu9C10LzQtdC90YLQsCDQsiDQu9C40YHRgiDRhNC40LrRgS4g0YHQv9GA0LDQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBmaXhlZFJpZ2h0TGlzdEVudGVyUHJlZGljYXRlID0gaW5wdXQ8KCkgPT4gYm9vbGVhbj4oKCkgPT4gdHJ1ZSk7XG4gIC8qKiDQvdCw0LfQstCw0L3QuNC1INC80L7QtNGD0LvRjyDQtNC70Y8g0YHQvtGF0YDQsNC90LXQvdC40Y8g0L3QsNGB0YLRgNC+0LXQuiAqL1xuICBwdWJsaWMgcGF0aE5hbWUgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3BlblNldHRpbmdzID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0U2V0dGluZ3MgPSBzaWduYWw8SVRhYmxlQ29sdW1uU2V0dGluZ3MgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpeGVkTGVmdENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0U2V0dGluZ3MoKT8uc3RpY2t5TGVmdCA/PyBbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnB1dFNldHRpbmdzKCk/LmNvbHVtbnMgPz8gW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZml4ZWRSaWdodENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0U2V0dGluZ3MoKT8uc3RpY2t5UmlnaHQgPz8gW10pO1xuXG4gIHB1YmxpYyBjb2x1bW5zQ2hhbmdlcyA9IG91dHB1dEZyb21PYnNlcnZhYmxlPElDb2x1bW5TZXR0aW5nc0NoYW5nZXM+KFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmlucHV0U2V0dGluZ3MpLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgbWFwKChzZXR0aW5ncykgPT4gKHsgc2V0dGluZ3MgfSkpXG4gICAgKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZXR0aW5nc1N0b3JlID0gaW5qZWN0KFVTRVJfU0VUVElOR1NfTE9BREVSKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kciA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSU5KRUNUT1IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlclByb2ZpbGVTZXJ2aWNlID0gaW5qZWN0KFVTRVJfUFJPRklMRV9MT0FERVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNpemVXaW5kb3dPYnNlcnZlciA9IGluamVjdChSZXNpemVXaW5kb3dPYnNlcnZlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpY29uU2V0dGluZ3MgPSBJQ09OX1NFVFRJTkdTO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbkVyYXNlciA9IElDT05fRVJBU0VSO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbkNhbmNlbENsb3NlID0gSUNPTl9DQU5DRUxfQ0xPU0U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtblNldHRpbmdzSGVhZGVySGVpZ2h0UHggPSA0MDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtblNldHRpbmdzU3VidGl0bGVIZWlnaHRQeCA9IDMyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsQm94Rml4ZWRDb2x1bW5zSGVpZ2h0UHggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxCb3hSaWdodEZpeGVkQ29sdW1uc0hlaWdodFB4ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsQm94Rml4ZWRDb2x1bW5zTWF4SGVpZ2h0UHggPSAyODc7XG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5TZXR0aW5nc0Zvb3RlckhlaWdodFB4ID0gNDg7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5MaXN0SGVpZ2h0UHggPSB0b1NpZ25hbChcbiAgICB0aGlzLl9yZXNpemVXaW5kb3dPYnNlcnZlci5pbm5lckhlaWdodCQucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBtYXAoKGlubmVySGVpZ2h0KSA9PiB0aGlzLl9jYWxjQ29sdW1uTGlzdEhlaWdodFB4KGlubmVySGVpZ2h0KSlcbiAgICApLFxuICAgIHtcbiAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy5fY2FsY0NvbHVtbkxpc3RIZWlnaHRQeCh0aGlzLl9yZXNpemVXaW5kb3dPYnNlcnZlci5pbm5lckhlaWdodCgpKSxcbiAgICB9XG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5MaXN0Qm90dG9tUGFkZGluZ1B4ID0gODtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pZFVzZXIgPSB0aGlzLl91c2VyUHJvZmlsZVNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kdWxlTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwYXRoTmFtZSA9IHRoaXMucGF0aE5hbWUoKTtcbiAgICByZXR1cm4gcGF0aE5hbWUgPz8gZ2V0TGFzdFNlZ21lbnRPZlBhdGhOYW1lKHRoaXMuX3JvdXRlci51cmwpO1xuICB9KTtcblxuICBwcml2YXRlIF9jb2x1bW5zU2V0dGluZ3M6IElUcFVzZXJTZXR0aW5ncyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldERlZmF1bHRTZXR0aW5ncygpO1xuICAgIHRoaXMuX2VmZmVjdE9uU2V0U2Nyb2xsQm94Q29sdW1uc01heEhlaWdodCgpO1xuICAgIHRoaXMuZmV0Y2hTZXR0aW5nc09uTW9kdWxlTmFtZUNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIGZldGNoU2V0dGluZ3NPbk1vZHVsZU5hbWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHBhdGhOYW1lID0gdGhpcy5wYXRoTmFtZSgpO1xuICAgICAgaWYgKHBhdGhOYW1lKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hTZXR0aW5ncyh0aGlzLl9pZFVzZXIsIHBhdGhOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWZhdWx0U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHRoaXMuZGVmYXVsdFNldHRpbmdzKCk7XG4gICAgICBjb25zdCBjbG9uZWRTZXR0aW5ncyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFNldHRpbmdzKSk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXRTZXR0aW5ncy5zZXQoY2xvbmVkU2V0dGluZ3MpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9lZmZlY3RPblNldFNjcm9sbEJveENvbHVtbnNNYXhIZWlnaHQoKTogdm9pZCB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudEhlaWdodFB4ID0gdGhpcy5jb2x1bW5MaXN0SGVpZ2h0UHgoKTtcbiAgICAgIGNvbnN0IGZpeGVkSGVpZ2h0UHggPSB0aGlzLnNjcm9sbEJveEZpeGVkQ29sdW1uc0hlaWdodFB4KCk7XG4gICAgICBjb25zdCByaWdodEZpeGVkSGVpZ2h0UHggPSB0aGlzLnNjcm9sbEJveFJpZ2h0Rml4ZWRDb2x1bW5zSGVpZ2h0UHgoKTtcbiAgICAgIGNvbnN0IHN1bUZpeGVkSGVpZ2h0UHggPSBmaXhlZEhlaWdodFB4ICsgcmlnaHRGaXhlZEhlaWdodFB4O1xuXG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdIZWlnaHRQeCA9IHRoaXMuX2NhbGNTY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHgocGFyZW50SGVpZ2h0UHgsIHN1bUZpeGVkSGVpZ2h0UHgpO1xuICAgICAgICB0aGlzLnNjcm9sbEJveENvbHVtbnNNYXhIZWlnaHRQeC5zZXQobmV3SGVpZ2h0UHgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVPblNldHRpbmdzKCk7XG4gICAgdGhpcy5mZXRjaFNldHRpbmdzKHRoaXMuX2lkVXNlciwgdGhpcy5fbW9kdWxlTmFtZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTZXR0aW5ncyh1c2VySWQ6IHN0cmluZywgbW9kdWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXR0aW5nc1N0b3JlLmZldGNoVXNlclNldHRpbmdzQnlVc2VySWQoe1xuICAgICAgdXNlcklkLFxuICAgICAgc2V0dGluZ3NUeXBlOiBTRVRUSU5HU19UWVBFLkNPTFVNTlMsXG4gICAgICBtb2R1bGVOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNldHRpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NTdG9yZS5zZXR0aW5ncyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHNldHRpbmdzKSA9PiBzZXR0aW5ncy5sZW5ndGggPiAwKSxcbiAgICAgICAgbWFwKChbc2V0dGluZ3NdKSA9PiBzZXR0aW5ncyksXG4gICAgICAgIGZpbHRlcigoc2V0dGluZ3MpID0+IGlzTm9uTnVsbChzZXR0aW5ncykpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzZXR0aW5ncykgPT4ge1xuICAgICAgICB0aGlzLl9jb2x1bW5zU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgY29uc3QgeyB0YWJsZUZpZWxkcyB9ID0gc2V0dGluZ3Muc2V0dGluZ3M7XG5cbiAgICAgICAgaWYgKHRhYmxlRmllbGRzKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dFNldHRpbmdzLnNldCh0YWJsZUZpZWxkcyk7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICBjb25zdCBjbG9uZWRTZXR0aW5ncyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0U2V0dGluZ3MoKSkpO1xuICAgIHRoaXMuaW5wdXRTZXR0aW5ncy5zZXQoY2xvbmVkU2V0dGluZ3MpO1xuXG4gICAgaWYgKHRoaXMuX2NvbHVtbnNTZXR0aW5ncykge1xuICAgICAgdGhpcy5zZXR0aW5nc1N0b3JlLmRlbGV0ZVVzZXJTZXR0aW5nc0J5SWQoe1xuICAgICAgICBpZDogdGhpcy5fY29sdW1uc1NldHRpbmdzPy5pZCxcbiAgICAgICAgdXBkYXRlU2V0dGluZ3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2F2ZVNldHRpbmdzKHNldHRpbmdzOiBJVGFibGVDb2x1bW5TZXR0aW5ncyk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NTdG9yZS51cHNlcnRVc2VyU2V0dGluZ3NCeVVzZXJJZCh7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBpZDogdGhpcy5fY29sdW1uc1NldHRpbmdzPy5pZCxcbiAgICAgICAgbW9kdWxlX25hbWU6IHRoaXMuX21vZHVsZU5hbWUoKSxcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAuLi50aGlzLl9jb2x1bW5zU2V0dGluZ3M/LnNldHRpbmdzLFxuICAgICAgICAgIHRhYmxlRmllbGRzOiBzZXR0aW5ncyxcbiAgICAgICAgfSxcbiAgICAgICAgc2V0dGluZ3NfdHlwZTogU0VUVElOR1NfVFlQRS5DT0xVTU5TLFxuICAgICAgfSxcbiAgICAgIHVwZGF0ZVNldHRpbmdzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVUYWJsZVNldHRpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzKHtcbiAgICAgIHN0aWNreUxlZnQ6IHRoaXMuZml4ZWRMZWZ0Q29sdW1ucygpLFxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zKCksXG4gICAgICBzdGlja3lSaWdodDogdGhpcy5maXhlZFJpZ2h0Q29sdW1ucygpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wZW5SZXNldERpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXG4gICAgICAub3Blbk1vZGFsVGFpZ2EoXG4gICAgICAgIFJlc2V0U2V0dGluZ3NGb3JtQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6IDQ2NixcbiAgICAgICAgICBkaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5faW5qZWN0b3JcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHNob3VsZFJlc2V0KSA9PiB7XG4gICAgICAgIGlmIChzaG91bGRSZXNldCkge1xuICAgICAgICAgIHRoaXMuZGVsZXRlU2V0dGluZ3MoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNldHRpbmdzLnVwZGF0ZSgoaXNPcGVuKSA9PiAhaXNPcGVuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5TZXR0aW5ncy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRyb3BJbnRvRml4ZWRMZWZ0KGV2ZW50OiBDZGtEcmFnRHJvcDxJQ29sdW1uU2V0dGluZ3NbXT4pOiB2b2lkIHtcbiAgICBjb25zdCBkcm9wcGVkRWxlbWVudCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF07XG4gICAgdGhpcy5fc2V0U3RhdHVzUmVjdXJzaXZlKGRyb3BwZWRFbGVtZW50LCBFQ29sdW1uU3RhdHVzLlNUSUNLWSk7XG4gICAgdGhpcy5fbW92ZURyb3BwZWRJdGVtKGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkcm9wSW50b0NvbHVtbnMoZXZlbnQ6IENka0RyYWdEcm9wPElDb2x1bW5TZXR0aW5nc1tdPik6IHZvaWQge1xuICAgIGNvbnN0IGZyb21PdGhlciA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXI7XG5cbiAgICBpZiAoZnJvbU90aGVyKSB7XG4gICAgICBjb25zdCBkcm9wcGVkRWxlbWVudCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF07XG4gICAgICB0aGlzLl9zZXRTdGF0dXNSZWN1cnNpdmUoZHJvcHBlZEVsZW1lbnQsIEVDb2x1bW5TdGF0dXMuREVGQVVMVCk7XG4gICAgfVxuXG4gICAgdGhpcy5fbW92ZURyb3BwZWRJdGVtKGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX21vdmVEcm9wcGVkSXRlbShldmVudDogQ2RrRHJhZ0Ryb3A8SUNvbHVtblNldHRpbmdzW10+KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dBbGxDb2x1bW5zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5pbnB1dFNldHRpbmdzKCk7XG5cbiAgICBpZiAoIXNldHRpbmdzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ9Cd0LDRgdGC0YDQvtC50LrQuCDRgtCw0LHQu9C40YbRiyDQvdC1INC40L3QuNGG0LjQsNC70LjQt9C40YDQvtCy0LDQvdGLJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0Q29sdW1uc1N0YXR1c1JlY3Vyc2l2ZShzZXR0aW5ncy5jb2x1bW5zLCBFQ29sdW1uU3RhdHVzLkRFRkFVTFQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRml4ZWRTY3JvbGxiYXJSZXNpemUoW2ZpeGVkU2Nyb2xsYmFyXTogcmVhZG9ubHkgUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxCb3hGaXhlZENvbHVtbnNIZWlnaHRQeC5zZXQoZml4ZWRTY3JvbGxiYXIuY29udGVudFJlY3QuaGVpZ2h0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblJpZ2h0Rml4ZWRTY3JvbGxiYXJSZXNpemUoW2ZpeGVkU2Nyb2xsYmFyXTogcmVhZG9ubHkgUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxCb3hSaWdodEZpeGVkQ29sdW1uc0hlaWdodFB4LnNldChmaXhlZFNjcm9sbGJhci5jb250ZW50UmVjdC5oZWlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY0NvbHVtbkxpc3RIZWlnaHRQeCh3aW5kb3dJbm5lckhlaWdodDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYWluSGVhZGVyUHggPSA1MjtcbiAgICBjb25zdCBjb2x1bW5TZXR0aW5nc0hlYWRlckZvb3RlclN1bUhlaWdodFB4ID1cbiAgICAgIHRoaXMuY29sdW1uU2V0dGluZ3NIZWFkZXJIZWlnaHRQeCArIHRoaXMuY29sdW1uU2V0dGluZ3NGb290ZXJIZWlnaHRQeDtcblxuICAgIHJldHVybiB3aW5kb3dJbm5lckhlaWdodCAtIG1haW5IZWFkZXJQeCAtIGNvbHVtblNldHRpbmdzSGVhZGVyRm9vdGVyU3VtSGVpZ2h0UHg7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjU2Nyb2xsQm94Q29sdW1uc01heEhlaWdodFB4KFxuICAgIHBhcmVudEhlaWdodFB4OiBudW1iZXIsXG4gICAgZml4ZWRTY3JvbGxiYXJIZWlnaHRQeDogbnVtYmVyXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgdHdvU3VidGl0bGVIZWlnaHRQeCA9IDIgKiB0aGlzLmNvbHVtblNldHRpbmdzU3VidGl0bGVIZWlnaHRQeDtcbiAgICBjb25zdCBib3R0b21QYWRkaW5nUHggPSB0aGlzLmNvbHVtbkxpc3RCb3R0b21QYWRkaW5nUHg7XG5cbiAgICByZXR1cm4gcGFyZW50SGVpZ2h0UHggLSB0d29TdWJ0aXRsZUhlaWdodFB4IC0gZml4ZWRTY3JvbGxiYXJIZWlnaHRQeCAtIGJvdHRvbVBhZGRpbmdQeDtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFN0YXR1c1JlY3Vyc2l2ZShjb2x1bW46IElDb2x1bW5TZXR0aW5ncywgc3RhdHVzOiBFQ29sdW1uU3RhdHVzKTogdm9pZCB7XG4gICAgY29sdW1uLnN0YXR1cyA9IHN0YXR1cztcblxuICAgIGlmIChjb2x1bW4uY2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuX3NldENvbHVtbnNTdGF0dXNSZWN1cnNpdmUoY29sdW1uLmNoaWxkcmVuLCBzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldENvbHVtbnNTdGF0dXNSZWN1cnNpdmUoY29sdW1uczogSUNvbHVtblNldHRpbmdzW10sIHN0YXR1czogRUNvbHVtblN0YXR1cyk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW2luZGV4LCBjb2xdIG9mIGNvbHVtbnMuZW50cmllcygpKSB7XG4gICAgICBjb2x1bW5zW2luZGV4XSA9IHsgLi4uY29sLCBzdGF0dXMgfTtcblxuICAgICAgaWYgKGNvbC5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLl9zZXRDb2x1bW5zU3RhdHVzUmVjdXJzaXZlKGNvbC5jaGlsZHJlbiwgc3RhdHVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgdHVpQnV0dG9uXG4gIGNsYXNzPVwiY29sdW1uLXNldHRpbmdzX19tYWluLWJ1dHRvblwiXG4gIGFwcGVhcmFuY2U9XCJvdXRsaW5lLWdyYXlzY2FsZVwiXG4gIHNpemU9XCJtXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAoY2xpY2spPVwidG9nZ2xlKClcIlxuPlxuICA8dHVpLWljb24gY2xhc3M9XCJjb2x1bW4tc2V0dGluZ3NfX2ljb24gZ3JheVwiIFtpY29uXT1cImljb25TZXR0aW5nc1wiIC8+XG48L2J1dHRvbj5cblxuPHR1aS1kcmF3ZXJcbiAgKnR1aVBvcHVwPVwib3BlblNldHRpbmdzKClcIlxuICBjbGFzcz1cImNvbHVtbi1zZXR0aW5nc19fcG9wdXBcIlxuICBkaXJlY3Rpb249XCJyaWdodFwiXG4gIFtvdmVybGF5XT1cInRydWVcIlxuICAoY2xpY2suc2VsZik9XCJjbG9zZSgpXCJcbj5cbiAgPGhlYWRlciBjbGFzcz1cImhlYWRlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NIZWFkZXJIZWlnaHRQeFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyX190aXRsZVwiPtCd0LDRgdGC0YDQvtC50LrQsCDRgtCw0LHQu9C40YbRizwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19idXR0b25zXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgY2xhc3M9XCJyZXNldC1idXR0b25cIlxuICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5SZXNldERpYWxvZygpXCJcbiAgICAgID5cbiAgICAgICAgPHR1aS1pY29uIGNsYXNzPVwiY29sdW1uLXNldHRpbmdzX19pY29uXCIgW2ljb25dPVwiaWNvbkVyYXNlclwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxzcHJvYy1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCIgLz5cbiAgICAgIDxidXR0b24gdHVpSWNvbkJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIGFwcGVhcmFuY2U9XCJmbGF0XCIgc2l6ZT1cIm1cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICA8dHVpLWljb24gY2xhc3M9XCJjb2x1bW4tc2V0dGluZ3NfX2ljb25cIiBbaWNvbl09XCJpY29uQ2FuY2VsQ2xvc2VcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvaGVhZGVyPlxuICA8ZGl2XG4gICAgY2RrRHJvcExpc3RHcm91cFxuICAgIGNsYXNzPVwiY29sdW1uLWNvbnRhaW5lciB0dWlfX3QtY29udGVudC0tbm8tZGVmYXVsdC1wYWRkaW5nXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbHVtbkxpc3RIZWlnaHRQeCgpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNka0Ryb3BMaXN0XG4gICAgICBjbGFzcz1cImNvbHVtbi1saXN0XCJcbiAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZml4ZWRMZWZ0Q29sdW1ucygpXCJcbiAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEludG9GaXhlZExlZnQoJGV2ZW50KVwiXG4gICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJmaXhlZExlZnRMaXN0RW50ZXJQcmVkaWNhdGUoKVwiXG4gICAgPlxuICAgICAgQGlmIChzaG93TGVmdExpc3RIZWFkZXIoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxpc3RfX2xhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbHVtblNldHRpbmdzU3VidGl0bGVIZWlnaHRQeFwiPlxuICAgICAgICAgICAg0KTQuNC60YHQuNGA0L7QstCw0L3QvdGL0LUg0LrQvtC70L7QvdC60Lgg0YHQu9C10LLQsFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDx0dWktc2Nyb2xsYmFyXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cInNjcm9sbEJveEZpeGVkQ29sdW1uc01heEhlaWdodFB4XCJcbiAgICAgICAgKHdhUmVzaXplT2JzZXJ2ZXIpPVwib25GaXhlZFNjcm9sbGJhclJlc2l6ZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoZml4ZWRMZWZ0Q29sdW1uIG9mIGZpeGVkTGVmdENvbHVtbnMoKTsgdHJhY2sgZml4ZWRMZWZ0Q29sdW1uLmlkKSB7XG4gICAgICAgICAgPHNwcm9jLWNvbHVtbi1zZXR0aW5ncy10ZW1wbGF0ZSBbY29sdW1uXT1cImZpeGVkTGVmdENvbHVtblwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvdHVpLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8c3Byb2MtZGl2aWRlciAvPlxuICAgIDxkaXZcbiAgICAgIGNka0Ryb3BMaXN0XG4gICAgICBjbGFzcz1cImNvbHVtbi1saXN0XCJcbiAgICAgIFtzdHlsZS5wYWRkaW5nLWJvdHRvbS5weF09XCJjb2x1bW5MaXN0Qm90dG9tUGFkZGluZ1B4XCJcbiAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sdW1ucygpXCJcbiAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEludG9Db2x1bW5zKCRldmVudClcIlxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiY29sdW1uc0xpc3RFbnRlclByZWRpY2F0ZSgpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxpc3RfX2xhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic3VidGl0bGUgc3VidGl0bGUtLWZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbHVtblNldHRpbmdzU3VidGl0bGVIZWlnaHRQeFwiXG4gICAgICAgICAgPnt7IGNvbHVtbnNMaXN0SGVhZGVyKCkgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctYWxsXCIgKGNsaWNrKT1cInNob3dBbGxDb2x1bW5zKClcIj7Qn9C+0LrQsNC30LDRgtGMINCy0YHQtTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHR1aS1zY3JvbGxiYXIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwic2Nyb2xsQm94Q29sdW1uc01heEhlaWdodFB4KClcIj5cbiAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnMoKTsgdHJhY2sgY29sdW1uLmlkKSB7XG4gICAgICAgICAgPHNwcm9jLWNvbHVtbi1zZXR0aW5ncy10ZW1wbGF0ZSBbY29sdW1uXT1cImNvbHVtblwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvdHVpLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKHNob3dGaXhlZFJpZ2h0TGlzdCgpKSB7XG4gICAgICA8c3Byb2MtZGl2aWRlciAvPlxuICAgICAgPGRpdlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjbGFzcz1cImNvbHVtbi1saXN0XCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmctYm90dG9tLnB4XT1cImNvbHVtbkxpc3RCb3R0b21QYWRkaW5nUHhcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImZpeGVkUmlnaHRDb2x1bW5zKClcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BJbnRvQ29sdW1ucygkZXZlbnQpXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiZml4ZWRSaWdodExpc3RFbnRlclByZWRpY2F0ZSgpXCJcbiAgICAgID5cbiAgICAgICAgQGlmIChzaG93UmlnaHRMaXN0SGVhZGVyKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWxpc3RfX2xhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJzdWJ0aXRsZSBzdWJ0aXRsZS0tZmxleC1ncm93LTFcIlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbHVtblNldHRpbmdzU3VidGl0bGVIZWlnaHRQeFwiXG4gICAgICAgICAgICAgID7QpNC40LrRgdC40YDQvtCy0LDQvdC90YvQtSDQutC+0LvQvtC90LrQuCDRgdC/0YDQsNCy0LA8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDx0dWktc2Nyb2xsYmFyXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwic2Nyb2xsQm94Rml4ZWRDb2x1bW5zTWF4SGVpZ2h0UHhcIlxuICAgICAgICAgICh3YVJlc2l6ZU9ic2VydmVyKT1cIm9uUmlnaHRGaXhlZFNjcm9sbGJhclJlc2l6ZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBmaXhlZFJpZ2h0Q29sdW1ucygpOyB0cmFjayBjb2x1bW4uaWQpIHtcbiAgICAgICAgICAgIDxzcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUgW2NvbHVtbl09XCJjb2x1bW5cIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90dWktc2Nyb2xsYmFyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgPGZvb3RlciBjbGFzcz1cImZvb3RlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NGb290ZXJIZWlnaHRQeFwiPlxuICAgIDxidXR0b25cbiAgICAgIHR1aUJ1dHRvblxuICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICBzaXplPVwibVwiXG4gICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwic2F2ZVRhYmxlU2V0dGluZ3MoKVwiXG4gICAgPlxuICAgICAg0KHQvtGF0YDQsNC90LjRgtGMXG4gICAgPC9idXR0b24+XG4gIDwvZm9vdGVyPlxuPC90dWktZHJhd2VyPlxuIl19
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';
|
|
2
2
|
import { EColumnStatus } from '../../types/column-settings.types';
|
|
3
3
|
import { CdkDrag, CdkDragPlaceholder, CdkDropList, moveItemInArray, transferArrayItem, } from '@angular/cdk/drag-drop';
|
|
4
|
-
import {
|
|
5
|
-
import { TuiHintDirective } from '@taiga-ui/core';
|
|
4
|
+
import { TuiHintDirective, TuiIcon } from '@taiga-ui/core';
|
|
6
5
|
import { ICON_CHEVRONS_RIGHT, ICON_EDITOR_DOTS, ICON_EYE, ICON_EYE_CLOSED, ICON_LOCK, } from '../../consts/column-settings.consts';
|
|
7
6
|
import { TuiExpand } from '@taiga-ui/experimental';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
@@ -64,17 +63,10 @@ export class ColumnSettingsTemplateComponent {
|
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
65
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnSettingsTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnSettingsTemplateComponent, isStandalone: true, selector: "sproc-column-settings-template", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, parent: { classPropertyName: "parent", publicName: "parent", isSignal: true, isRequired: false, transformFunction: null }, expand: { classPropertyName: "expand", publicName: "expand", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let col = column();\n@let isHidden = isHiddenColumn(col);\n@let currentEyeIcon = isHidden ? iconEyeClosed : iconEye;\n@let childrenColumns = col.children ?? [];\n\n<div\n class=\"column-item\"\n [class.hidden]=\"isHidden\"\n cdkDrag\n [cdkDragData]=\"col\"\n (cdkDragStarted)=\"collapseNested()\"\n>\n <
|
|
66
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnSettingsTemplateComponent, isStandalone: true, selector: "sproc-column-settings-template", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, parent: { classPropertyName: "parent", publicName: "parent", isSignal: true, isRequired: false, transformFunction: null }, expand: { classPropertyName: "expand", publicName: "expand", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let col = column();\n@let isHidden = isHiddenColumn(col);\n@let currentEyeIcon = isHidden ? iconEyeClosed : iconEye;\n@let childrenColumns = col.children ?? [];\n\n<div\n class=\"column-item\"\n [class.hidden]=\"isHidden\"\n cdkDrag\n [cdkDragData]=\"col\"\n (cdkDragStarted)=\"collapseNested()\"\n>\n <tui-icon [icon]=\"iconEditorDots\" style=\"width: 16px; height: 32px\" />\n @if (canExpand()) {\n <tui-icon\n class=\"icon-size--16 expanded\"\n [icon]=\"iconChevron\"\n [attr.expanded]=\"expanded()\"\n (click)=\"toggleNested()\"\n />\n }\n <span class=\"column-item__name\">{{ col.name }}</span>\n @if (status() === EColumnStatus.STICKY) {\n <tui-icon\n class=\"icon-size--16 pointer\"\n [icon]=\"iconLock\"\n tuiHint=\"\u041D\u0435\u043B\u044C\u0437\u044F \u0441\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u043A\u0440\u0435\u043F\u043B\u0435\u043D\u043D\u0443\u044E \u043A\u043E\u043B\u043E\u043D\u043A\u0443\"\n />\n } @else {\n <tui-icon\n class=\"icon-size--16 eye-icon\"\n [icon]=\"currentEyeIcon\"\n tuiHint=\"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C/\u0421\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043B\u043E\u043D\u043A\u0443\"\n (click)=\"toggleVisibility(col)\"\n />\n }\n\n <ng-template cdkDragPlaceholder>\n <div class=\"custom-placeholder\"></div>\n </ng-template>\n</div>\n\n@if (canExpand()) {\n <tui-expand\n class=\"nested-columns\"\n cdkDropList\n [expanded]=\"expanded()\"\n [cdkDropListData]=\"childrenColumns\"\n (cdkDropListDropped)=\"dropIntoChildren($event)\"\n >\n @for (childCol of childrenColumns; track childCol.id) {\n <sproc-column-settings-template [column]=\"childCol\" [parent]=\"col\" />\n }\n </tui-expand>\n}\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.column-item{display:flex;align-items:center;padding:0 12px 0 8px;gap:8px;height:32px}.column-item__name{flex-grow:1;color:var(--text-main);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.column-item .pointer{cursor:pointer}.column-item .expanded{cursor:pointer;transition:transform .2s linear}.column-item .expanded[expanded=true]{transform:rotate(90deg);transform-origin:center center}.column-item .eye-icon{cursor:pointer;opacity:0;transition:opacity .2s ease-in-out}.column-item.hidden .eye-icon{opacity:1}.column-item:hover{background:var(--brand-hovered);cursor:ns-resize}.column-item:hover .eye-icon{opacity:1}.nested-columns{margin-left:24px}.custom-placeholder{display:flex;align-items:center;height:32px;padding:0 8px;border:1px dashed #cccccc;border-radius:3px;background-color:#fafafa;box-sizing:border-box;color:#888;font-style:italic;-webkit-user-select:none;user-select:none;width:100%;margin:0}.cdk-drag-preview{display:flex;align-items:center;padding:0 12px 0 8px;gap:8px;height:32px;box-shadow:-1px 0 12px #4753263b;background:var(--main-white)}.cdk-drag-preview__name{flex-grow:1;color:var(--text-main);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.cdk-drag-preview .pointer{cursor:pointer}.cdk-drag-preview .expanded{cursor:pointer;transition:transform .2s linear}.cdk-drag-preview .expanded[expanded=true]{transform:rotate(90deg);transform-origin:center center}.cdk-drag-preview .eye-icon{cursor:pointer;opacity:0;transition:opacity .2s ease-in-out}.cdk-drag-preview.hidden .eye-icon{opacity:1}.cdk-drag-preview:hover{background:var(--brand-hovered);cursor:ns-resize}.cdk-drag-preview:hover .eye-icon{opacity:1}\n"], dependencies: [{ kind: "component", type: ColumnSettingsTemplateComponent, selector: "sproc-column-settings-template", inputs: ["column", "parent", "expand"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: TuiExpand, selector: "tui-expand", inputs: ["expanded"] }, { kind: "directive", type: TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
68
67
|
}
|
|
69
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnSettingsTemplateComponent, decorators: [{
|
|
70
69
|
type: Component,
|
|
71
|
-
args: [{ selector: 'sproc-column-settings-template', standalone: true, imports: [
|
|
72
|
-
NgOptimizedImage,
|
|
73
|
-
CdkDrag,
|
|
74
|
-
CdkDragPlaceholder,
|
|
75
|
-
CdkDropList,
|
|
76
|
-
TuiExpand,
|
|
77
|
-
TuiHintDirective,
|
|
78
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let col = column();\n@let isHidden = isHiddenColumn(col);\n@let currentEyeIcon = isHidden ? iconEyeClosed : iconEye;\n@let childrenColumns = col.children ?? [];\n\n<div\n class=\"column-item\"\n [class.hidden]=\"isHidden\"\n cdkDrag\n [cdkDragData]=\"col\"\n (cdkDragStarted)=\"collapseNested()\"\n>\n <img [ngSrc]=\"iconEditorDots\" [width]=\"16\" [height]=\"32\" alt=\"\" />\n @if (canExpand()) {\n <img\n class=\"expanded\"\n [ngSrc]=\"iconChevron\"\n [width]=\"16\"\n [height]=\"16\"\n [attr.expanded]=\"expanded()\"\n alt=\"\"\n (click)=\"toggleNested()\"\n />\n }\n <span class=\"column-item__name\">{{ col.name }}</span>\n @if (status() === EColumnStatus.STICKY) {\n <img\n class=\"pointer\"\n [ngSrc]=\"iconLock\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"\u041D\u0435\u043B\u044C\u0437\u044F \u0441\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u043A\u0440\u0435\u043F\u043B\u0435\u043D\u043D\u0443\u044E \u043A\u043E\u043B\u043E\u043D\u043A\u0443\"\n />\n } @else {\n <img\n class=\"eye-icon\"\n [ngSrc]=\"currentEyeIcon\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C/\u0421\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043B\u043E\u043D\u043A\u0443\"\n (click)=\"toggleVisibility(col)\"\n />\n }\n\n <ng-template cdkDragPlaceholder>\n <div class=\"custom-placeholder\"></div>\n </ng-template>\n</div>\n\n@if (canExpand()) {\n <tui-expand\n class=\"nested-columns\"\n cdkDropList\n [expanded]=\"expanded()\"\n [cdkDropListData]=\"childrenColumns\"\n (cdkDropListDropped)=\"dropIntoChildren($event)\"\n >\n @for (childCol of childrenColumns; track childCol.id) {\n <sproc-column-settings-template\n [column]=\"childCol\"\n [parent]=\"col\"\n ></sproc-column-settings-template>\n }\n </tui-expand>\n}\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.column-item{display:flex;align-items:center;padding:0 12px 0 8px;gap:8px;height:32px}.column-item__name{flex-grow:1;color:var(--text-main);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.column-item .pointer{cursor:pointer}.column-item .expanded{cursor:pointer;transition:transform .2s linear}.column-item .expanded[expanded=true]{transform:rotate(90deg);transform-origin:center center}.column-item .eye-icon{cursor:pointer;opacity:0;transition:opacity .2s ease-in-out}.column-item.hidden .eye-icon{opacity:1}.column-item:hover{background:var(--brand-hovered);cursor:ns-resize}.column-item:hover .eye-icon{opacity:1}.nested-columns{margin-left:24px}.custom-placeholder{display:flex;align-items:center;height:32px;padding:0 8px;border:1px dashed #cccccc;border-radius:3px;background-color:#fafafa;box-sizing:border-box;color:#888;font-style:italic;-webkit-user-select:none;user-select:none;width:100%;margin:0}.cdk-drag-preview{display:flex;align-items:center;padding:0 12px 0 8px;gap:8px;height:32px;box-shadow:-1px 0 12px #4753263b;background:var(--main-white)}.cdk-drag-preview__name{flex-grow:1;color:var(--text-main);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.cdk-drag-preview .pointer{cursor:pointer}.cdk-drag-preview .expanded{cursor:pointer;transition:transform .2s linear}.cdk-drag-preview .expanded[expanded=true]{transform:rotate(90deg);transform-origin:center center}.cdk-drag-preview .eye-icon{cursor:pointer;opacity:0;transition:opacity .2s ease-in-out}.cdk-drag-preview.hidden .eye-icon{opacity:1}.cdk-drag-preview:hover{background:var(--brand-hovered);cursor:ns-resize}.cdk-drag-preview:hover .eye-icon{opacity:1}\n"] }]
|
|
70
|
+
args: [{ selector: 'sproc-column-settings-template', standalone: true, imports: [CdkDrag, CdkDragPlaceholder, CdkDropList, TuiExpand, TuiHintDirective, TuiIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let col = column();\n@let isHidden = isHiddenColumn(col);\n@let currentEyeIcon = isHidden ? iconEyeClosed : iconEye;\n@let childrenColumns = col.children ?? [];\n\n<div\n class=\"column-item\"\n [class.hidden]=\"isHidden\"\n cdkDrag\n [cdkDragData]=\"col\"\n (cdkDragStarted)=\"collapseNested()\"\n>\n <tui-icon [icon]=\"iconEditorDots\" style=\"width: 16px; height: 32px\" />\n @if (canExpand()) {\n <tui-icon\n class=\"icon-size--16 expanded\"\n [icon]=\"iconChevron\"\n [attr.expanded]=\"expanded()\"\n (click)=\"toggleNested()\"\n />\n }\n <span class=\"column-item__name\">{{ col.name }}</span>\n @if (status() === EColumnStatus.STICKY) {\n <tui-icon\n class=\"icon-size--16 pointer\"\n [icon]=\"iconLock\"\n tuiHint=\"\u041D\u0435\u043B\u044C\u0437\u044F \u0441\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u043A\u0440\u0435\u043F\u043B\u0435\u043D\u043D\u0443\u044E \u043A\u043E\u043B\u043E\u043D\u043A\u0443\"\n />\n } @else {\n <tui-icon\n class=\"icon-size--16 eye-icon\"\n [icon]=\"currentEyeIcon\"\n tuiHint=\"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C/\u0421\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043B\u043E\u043D\u043A\u0443\"\n (click)=\"toggleVisibility(col)\"\n />\n }\n\n <ng-template cdkDragPlaceholder>\n <div class=\"custom-placeholder\"></div>\n </ng-template>\n</div>\n\n@if (canExpand()) {\n <tui-expand\n class=\"nested-columns\"\n cdkDropList\n [expanded]=\"expanded()\"\n [cdkDropListData]=\"childrenColumns\"\n (cdkDropListDropped)=\"dropIntoChildren($event)\"\n >\n @for (childCol of childrenColumns; track childCol.id) {\n <sproc-column-settings-template [column]=\"childCol\" [parent]=\"col\" />\n }\n </tui-expand>\n}\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.column-item{display:flex;align-items:center;padding:0 12px 0 8px;gap:8px;height:32px}.column-item__name{flex-grow:1;color:var(--text-main);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.column-item .pointer{cursor:pointer}.column-item .expanded{cursor:pointer;transition:transform .2s linear}.column-item .expanded[expanded=true]{transform:rotate(90deg);transform-origin:center center}.column-item .eye-icon{cursor:pointer;opacity:0;transition:opacity .2s ease-in-out}.column-item.hidden .eye-icon{opacity:1}.column-item:hover{background:var(--brand-hovered);cursor:ns-resize}.column-item:hover .eye-icon{opacity:1}.nested-columns{margin-left:24px}.custom-placeholder{display:flex;align-items:center;height:32px;padding:0 8px;border:1px dashed #cccccc;border-radius:3px;background-color:#fafafa;box-sizing:border-box;color:#888;font-style:italic;-webkit-user-select:none;user-select:none;width:100%;margin:0}.cdk-drag-preview{display:flex;align-items:center;padding:0 12px 0 8px;gap:8px;height:32px;box-shadow:-1px 0 12px #4753263b;background:var(--main-white)}.cdk-drag-preview__name{flex-grow:1;color:var(--text-main);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.cdk-drag-preview .pointer{cursor:pointer}.cdk-drag-preview .expanded{cursor:pointer;transition:transform .2s linear}.cdk-drag-preview .expanded[expanded=true]{transform:rotate(90deg);transform-origin:center center}.cdk-drag-preview .eye-icon{cursor:pointer;opacity:0;transition:opacity .2s ease-in-out}.cdk-drag-preview.hidden .eye-icon{opacity:1}.cdk-drag-preview:hover{background:var(--brand-hovered);cursor:ns-resize}.cdk-drag-preview:hover .eye-icon{opacity:1}\n"] }]
|
|
79
71
|
}] });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUvY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUvY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRixPQUFPLEVBQ0wsT0FBTyxFQUVQLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixlQUFlLEVBQ2YsU0FBUyxHQUNWLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWlCbkQsTUFBTSxPQUFPLCtCQUErQjtJ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QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxzREFBc0QsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNwRixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoRCxlQUFlLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBTSxDQUFDO1lBQ04saUJBQWlCLENBQ2YsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFDNUIsZUFBZSxFQUNmLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQ25CLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0E1RVUsK0JBQStCO21HQUEvQiwrQkFBK0Isc2RDcEM1QyxpNURBaUVBLHk4SEQ3QmEsK0JBQStCLG1IQVh4QyxnQkFBZ0IsZ1BBQ2hCLE9BQU8sd2NBQ1Asa0JBQWtCLDhGQUNsQixXQUFXLDhmQUNYLFNBQVMsNkVBQ1QsZ0JBQWdCOzs0RkFNUCwrQkFBK0I7a0JBZjNDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1Asa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsZ0JBQWdCO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFQ29sdW1uU3RhdHVzLCBJQ29sdW1uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBlcy9jb2x1bW4tc2V0dGluZ3MudHlwZXMnO1xuaW1wb3J0IHtcbiAgQ2RrRHJhZyxcbiAgQ2RrRHJhZ0Ryb3AsXG4gIENka0RyYWdQbGFjZWhvbGRlcixcbiAgQ2RrRHJvcExpc3QsXG4gIG1vdmVJdGVtSW5BcnJheSxcbiAgdHJhbnNmZXJBcnJheUl0ZW0sXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTmdPcHRpbWl6ZWRJbWFnZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUdWlIaW50RGlyZWN0aXZlIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUNPTl9DSEVWUk9OU19SSUdIVCxcbiAgSUNPTl9FRElUT1JfRE9UUyxcbiAgSUNPTl9FWUUsXG4gIElDT05fRVlFX0NMT1NFRCxcbiAgSUNPTl9MT0NLLFxufSBmcm9tICcuLi8uLi9jb25zdHMvY29sdW1uLXNldHRpbmdzLmNvbnN0cyc7XG5pbXBvcnQgeyBUdWlFeHBhbmQgfSBmcm9tICdAdGFpZ2EtdWkvZXhwZXJpbWVudGFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Byb2MtY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nT3B0aW1pemVkSW1hZ2UsXG4gICAgQ2RrRHJhZyxcbiAgICBDZGtEcmFnUGxhY2Vob2xkZXIsXG4gICAgQ2RrRHJvcExpc3QsXG4gICAgVHVpRXhwYW5kLFxuICAgIFR1aUhpbnREaXJlY3RpdmUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC5sZXNzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmdzVGVtcGxhdGVDb21wb25lbnQge1xuICBwdWJsaWMgY29sdW1uID0gaW5wdXQucmVxdWlyZWQ8SUNvbHVtblNldHRpbmdzPigpO1xuICBwdWJsaWMgcGFyZW50ID0gaW5wdXQ8SUNvbHVtblNldHRpbmdzPigpO1xuICBwdWJsaWMgZXhwYW5kID0gaW5wdXQodHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25FZGl0b3JEb3RzID0gSUNPTl9FRElUT1JfRE9UUztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25DaGV2cm9uID0gSUNPTl9DSEVWUk9OU19SSUdIVDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25FeWUgPSBJQ09OX0VZRTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25FeWVDbG9zZWQgPSBJQ09OX0VZRV9DTE9TRUQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBpY29uTG9jayA9IElDT05fTE9DSztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRUNvbHVtblN0YXR1cyA9IEVDb2x1bW5TdGF0dXM7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sdW1uKCkuc3RhdHVzKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbkV4cGFuZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB3YW50RXhwYW5kID0gdGhpcy5leHBhbmQoKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuY29sdW1uKCkuY2hpbGRyZW4gPz8gW107XG4gICAgY29uc3QgaGF2ZUNoaWxkcmVuID0gY2hpbGRyZW4ubGVuZ3RoID4gMDtcblxuICAgIHJldHVybiB3YW50RXhwYW5kICYmIGhhdmVDaGlsZHJlbjtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIGNvbGxhcHNlTmVzdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVOZXN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZC51cGRhdGUoKHZhbHVlKSA9PiAhdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzSGlkZGVuQ29sdW1uKGNvbHVtbjogSUNvbHVtblNldHRpbmdzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNvbHVtbi5zdGF0dXMgPT09IEVDb2x1bW5TdGF0dXMuSElEREVOO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVZpc2liaWxpdHkoY29sdW1uOiBJQ29sdW1uU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBpc0hpZGRlbiA9IGNvbHVtbi5zdGF0dXMgPT09IEVDb2x1bW5TdGF0dXMuSElEREVOO1xuICAgIGNvbHVtbi5zdGF0dXMgPSBpc0hpZGRlbiA/IEVDb2x1bW5TdGF0dXMuREVGQVVMVCA6IEVDb2x1bW5TdGF0dXMuSElEREVOO1xuXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gY29sdW1uO1xuXG4gICAgLy8g0JXRgdC70Lgg0LXRgdGC0Ywg0LTQvtGH0LXRgNC90LjQtSDRg9C30LvRiyDRgtC+INGD0YHRgtCw0L3QsNCy0LvQuNCy0LDRgtGMINGB0YLQsNGC0YPRgSDRgtC10LrRg9GJ0LXQs9C+INGD0LfQu9CwXG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICBjb2x1bW4uY2hpbGRyZW4gPSBjaGlsZHJlbi5tYXAoKGNoaWxkQ29sdW1uKSA9PiAoeyAuLi5jaGlsZENvbHVtbiwgc3RhdHVzOiBjb2x1bW4uc3RhdHVzIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRDb2x1bW4gPSB0aGlzLnBhcmVudCgpO1xuICAgIGNvbnN0IHBhcmVudENoaWxkcmVuID0gcGFyZW50Q29sdW1uPy5jaGlsZHJlbjtcblxuICAgIGlmIChwYXJlbnRDb2x1bW4gJiYgcGFyZW50Q2hpbGRyZW4gJiYgcGFyZW50Q2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWxsQ2hpbGRyZW5IaWRkZW4gPSBwYXJlbnRDaGlsZHJlbi5ldmVyeShcbiAgICAgICAgKGNoaWxkQ29sdW1uKSA9PiBjaGlsZENvbHVtbi5zdGF0dXMgPT09IEVDb2x1bW5TdGF0dXMuSElEREVOXG4gICAgICApO1xuXG4gICAgICBwYXJlbnRDb2x1bW4uc3RhdHVzID0gYWxsQ2hpbGRyZW5IaWRkZW4gPyBFQ29sdW1uU3RhdHVzLkhJRERFTiA6IEVDb2x1bW5TdGF0dXMuREVGQVVMVDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZHJvcEludG9DaGlsZHJlbihldmVudDogQ2RrRHJhZ0Ryb3A8SUNvbHVtblNldHRpbmdzW10+KTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudENoaWxkcmVuID0gdGhpcy5jb2x1bW4oKS5jaGlsZHJlbjtcblxuICAgIGlmICghY3VycmVudENoaWxkcmVuKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ9Cf0L7Qv9GL0YLQutCwINC/0LXRgNC10LzQtdGB0YLQuNGC0Ywg0LIg0YHRgtC+0LvQsdC10YYg0LHQtdC3INC00L7Rh9C10YDQvdC10LPQviDQvNCw0YHRgdC40LLQsDonLCB0aGlzLmNvbHVtbigpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGN1cnJlbnRDaGlsZHJlbiwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGN1cnJlbnRDaGlsZHJlbixcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiQGxldCBjb2wgPSBjb2x1bW4oKTtcbkBsZXQgaXNIaWRkZW4gPSBpc0hpZGRlbkNvbHVtbihjb2wpO1xuQGxldCBjdXJyZW50RXllSWNvbiA9IGlzSGlkZGVuID8gaWNvbkV5ZUNsb3NlZCA6IGljb25FeWU7XG5AbGV0IGNoaWxkcmVuQ29sdW1ucyA9IGNvbC5jaGlsZHJlbiA/PyBbXTtcblxuPGRpdlxuICBjbGFzcz1cImNvbHVtbi1pdGVtXCJcbiAgW2NsYXNzLmhpZGRlbl09XCJpc0hpZGRlblwiXG4gIGNka0RyYWdcbiAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXG4gIChjZGtEcmFnU3RhcnRlZCk9XCJjb2xsYXBzZU5lc3RlZCgpXCJcbj5cbiAgPGltZyBbbmdTcmNdPVwiaWNvbkVkaXRvckRvdHNcIiBbd2lkdGhdPVwiMTZcIiBbaGVpZ2h0XT1cIjMyXCIgYWx0PVwiXCIgLz5cbiAgQGlmIChjYW5FeHBhbmQoKSkge1xuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwiZXhwYW5kZWRcIlxuICAgICAgW25nU3JjXT1cImljb25DaGV2cm9uXCJcbiAgICAgIFt3aWR0aF09XCIxNlwiXG4gICAgICBbaGVpZ2h0XT1cIjE2XCJcbiAgICAgIFthdHRyLmV4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgICAgYWx0PVwiXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVOZXN0ZWQoKVwiXG4gICAgLz5cbiAgfVxuICA8c3BhbiBjbGFzcz1cImNvbHVtbi1pdGVtX19uYW1lXCI+e3sgY29sLm5hbWUgfX08L3NwYW4+XG4gIEBpZiAoc3RhdHVzKCkgPT09IEVDb2x1bW5TdGF0dXMuU1RJQ0tZKSB7XG4gICAgPGltZ1xuICAgICAgY2xhc3M9XCJwb2ludGVyXCJcbiAgICAgIFtuZ1NyY109XCJpY29uTG9ja1wiXG4gICAgICBbd2lkdGhdPVwiMTZcIlxuICAgICAgW2hlaWdodF09XCIxNlwiXG4gICAgICB0dWlIaW50PVwi0J3QtdC70YzQt9GPINGB0LrRgNGL0YLRjCDQt9Cw0LrRgNC10L/Qu9C10L3QvdGD0Y4g0LrQvtC70L7QvdC60YNcIlxuICAgIC8+XG4gIH0gQGVsc2Uge1xuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwiZXllLWljb25cIlxuICAgICAgW25nU3JjXT1cImN1cnJlbnRFeWVJY29uXCJcbiAgICAgIFt3aWR0aF09XCIxNlwiXG4gICAgICBbaGVpZ2h0XT1cIjE2XCJcbiAgICAgIHR1aUhpbnQ9XCLQn9C+0LrQsNC30LDRgtGML9Ch0LrRgNGL0YLRjCDQutC+0LvQvtC90LrRg1wiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eShjb2wpXCJcbiAgICAvPlxuICB9XG5cbiAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXBsYWNlaG9sZGVyXCI+PC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuQGlmIChjYW5FeHBhbmQoKSkge1xuICA8dHVpLWV4cGFuZFxuICAgIGNsYXNzPVwibmVzdGVkLWNvbHVtbnNcIlxuICAgIGNka0Ryb3BMaXN0XG4gICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY2hpbGRyZW5Db2x1bW5zXCJcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BJbnRvQ2hpbGRyZW4oJGV2ZW50KVwiXG4gID5cbiAgICBAZm9yIChjaGlsZENvbCBvZiBjaGlsZHJlbkNvbHVtbnM7IHRyYWNrIGNoaWxkQ29sLmlkKSB7XG4gICAgICA8c3Byb2MtY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlXG4gICAgICAgIFtjb2x1bW5dPVwiY2hpbGRDb2xcIlxuICAgICAgICBbcGFyZW50XT1cImNvbFwiXG4gICAgICA+PC9zcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGU+XG4gICAgfVxuICA8L3R1aS1leHBhbmQ+XG59XG4iXX0=
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUvY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUvY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRixPQUFPLEVBQ0wsT0FBTyxFQUVQLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsZUFBZSxFQUNmLFNBQVMsR0FDVixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFVbkQsTUFBTSxPQUFPLCtCQUErQjtJQVI1QztRQVNTLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxF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LENBQUMsSUFBSSxDQUFDLHNEQUFzRCxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3BGLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hELGVBQWUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUUsQ0FBQzthQUFNLENBQUM7WUFDTixpQkFBaUIsQ0FDZixLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUM1QixlQUFlLEVBQ2YsS0FBSyxDQUFDLGFBQWEsRUFDbkIsS0FBSyxDQUFDLFlBQVksQ0FDbkIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOytHQTVFVSwrQkFBK0I7bUdBQS9CLCtCQUErQixzZEM1QjVDLHV2REF1REEseThIRDNCYSwrQkFBK0IsbUhBTGhDLE9BQU8sd2NBQUUsa0JBQWtCLDhGQUFFLFdBQVcsOGZBQUUsU0FBUyw2RUFBRSxnQkFBZ0IscUpBQUUsT0FBTzs7NEZBSzdFLCtCQUErQjtrQkFSM0MsU0FBUzsrQkFDRSxnQ0FBZ0MsY0FDOUIsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLG1CQUd4RSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVDb2x1bW5TdGF0dXMsIElDb2x1bW5TZXR0aW5ncyB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbHVtbi1zZXR0aW5ncy50eXBlcyc7XG5pbXBvcnQge1xuICBDZGtEcmFnLFxuICBDZGtEcmFnRHJvcCxcbiAgQ2RrRHJhZ1BsYWNlaG9sZGVyLFxuICBDZGtEcm9wTGlzdCxcbiAgbW92ZUl0ZW1JbkFycmF5LFxuICB0cmFuc2ZlckFycmF5SXRlbSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBUdWlIaW50RGlyZWN0aXZlLCBUdWlJY29uIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUNPTl9DSEVWUk9OU19SSUdIVCxcbiAgSUNPTl9FRElUT1JfRE9UUyxcbiAgSUNPTl9FWUUsXG4gIElDT05fRVlFX0NMT1NFRCxcbiAgSUNPTl9MT0NLLFxufSBmcm9tICcuLi8uLi9jb25zdHMvY29sdW1uLXNldHRpbmdzLmNvbnN0cyc7XG5pbXBvcnQgeyBUdWlFeHBhbmQgfSBmcm9tICdAdGFpZ2EtdWkvZXhwZXJpbWVudGFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Byb2MtY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Nka0RyYWcsIENka0RyYWdQbGFjZWhvbGRlciwgQ2RrRHJvcExpc3QsIFR1aUV4cGFuZCwgVHVpSGludERpcmVjdGl2ZSwgVHVpSWNvbl0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlLmNvbXBvbmVudC5sZXNzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmdzVGVtcGxhdGVDb21wb25lbnQge1xuICBwdWJsaWMgY29sdW1uID0gaW5wdXQucmVxdWlyZWQ8SUNvbHVtblNldHRpbmdzPigpO1xuICBwdWJsaWMgcGFyZW50ID0gaW5wdXQ8SUNvbHVtblNldHRpbmdzPigpO1xuICBwdWJsaWMgZXhwYW5kID0gaW5wdXQodHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25FZGl0b3JEb3RzID0gSUNPTl9FRElUT1JfRE9UUztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25DaGV2cm9uID0gSUNPTl9DSEVWUk9OU19SSUdIVDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25FeWUgPSBJQ09OX0VZRTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25FeWVDbG9zZWQgPSBJQ09OX0VZRV9DTE9TRUQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBpY29uTG9jayA9IElDT05fTE9DSztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRUNvbHVtblN0YXR1cyA9IEVDb2x1bW5TdGF0dXM7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sdW1uKCkuc3RhdHVzKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbkV4cGFuZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB3YW50RXhwYW5kID0gdGhpcy5leHBhbmQoKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuY29sdW1uKCkuY2hpbGRyZW4gPz8gW107XG4gICAgY29uc3QgaGF2ZUNoaWxkcmVuID0gY2hpbGRyZW4ubGVuZ3RoID4gMDtcblxuICAgIHJldHVybiB3YW50RXhwYW5kICYmIGhhdmVDaGlsZHJlbjtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIGNvbGxhcHNlTmVzdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVOZXN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZC51cGRhdGUoKHZhbHVlKSA9PiAhdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzSGlkZGVuQ29sdW1uKGNvbHVtbjogSUNvbHVtblNldHRpbmdzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNvbHVtbi5zdGF0dXMgPT09IEVDb2x1bW5TdGF0dXMuSElEREVOO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVZpc2liaWxpdHkoY29sdW1uOiBJQ29sdW1uU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBpc0hpZGRlbiA9IGNvbHVtbi5zdGF0dXMgPT09IEVDb2x1bW5TdGF0dXMuSElEREVOO1xuICAgIGNvbHVtbi5zdGF0dXMgPSBpc0hpZGRlbiA/IEVDb2x1bW5TdGF0dXMuREVGQVVMVCA6IEVDb2x1bW5TdGF0dXMuSElEREVOO1xuXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gY29sdW1uO1xuXG4gICAgLy8g0JXRgdC70Lgg0LXRgdGC0Ywg0LTQvtGH0LXRgNC90LjQtSDRg9C30LvRiyDRgtC+INGD0YHRgtCw0L3QsNCy0LvQuNCy0LDRgtGMINGB0YLQsNGC0YPRgSDRgtC10LrRg9GJ0LXQs9C+INGD0LfQu9CwXG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICBjb2x1bW4uY2hpbGRyZW4gPSBjaGlsZHJlbi5tYXAoKGNoaWxkQ29sdW1uKSA9PiAoeyAuLi5jaGlsZENvbHVtbiwgc3RhdHVzOiBjb2x1bW4uc3RhdHVzIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRDb2x1bW4gPSB0aGlzLnBhcmVudCgpO1xuICAgIGNvbnN0IHBhcmVudENoaWxkcmVuID0gcGFyZW50Q29sdW1uPy5jaGlsZHJlbjtcblxuICAgIGlmIChwYXJlbnRDb2x1bW4gJiYgcGFyZW50Q2hpbGRyZW4gJiYgcGFyZW50Q2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWxsQ2hpbGRyZW5IaWRkZW4gPSBwYXJlbnRDaGlsZHJlbi5ldmVyeShcbiAgICAgICAgKGNoaWxkQ29sdW1uKSA9PiBjaGlsZENvbHVtbi5zdGF0dXMgPT09IEVDb2x1bW5TdGF0dXMuSElEREVOXG4gICAgICApO1xuXG4gICAgICBwYXJlbnRDb2x1bW4uc3RhdHVzID0gYWxsQ2hpbGRyZW5IaWRkZW4gPyBFQ29sdW1uU3RhdHVzLkhJRERFTiA6IEVDb2x1bW5TdGF0dXMuREVGQVVMVDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZHJvcEludG9DaGlsZHJlbihldmVudDogQ2RrRHJhZ0Ryb3A8SUNvbHVtblNldHRpbmdzW10+KTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudENoaWxkcmVuID0gdGhpcy5jb2x1bW4oKS5jaGlsZHJlbjtcblxuICAgIGlmICghY3VycmVudENoaWxkcmVuKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ9Cf0L7Qv9GL0YLQutCwINC/0LXRgNC10LzQtdGB0YLQuNGC0Ywg0LIg0YHRgtC+0LvQsdC10YYg0LHQtdC3INC00L7Rh9C10YDQvdC10LPQviDQvNCw0YHRgdC40LLQsDonLCB0aGlzLmNvbHVtbigpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGN1cnJlbnRDaGlsZHJlbiwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGN1cnJlbnRDaGlsZHJlbixcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiQGxldCBjb2wgPSBjb2x1bW4oKTtcbkBsZXQgaXNIaWRkZW4gPSBpc0hpZGRlbkNvbHVtbihjb2wpO1xuQGxldCBjdXJyZW50RXllSWNvbiA9IGlzSGlkZGVuID8gaWNvbkV5ZUNsb3NlZCA6IGljb25FeWU7XG5AbGV0IGNoaWxkcmVuQ29sdW1ucyA9IGNvbC5jaGlsZHJlbiA/PyBbXTtcblxuPGRpdlxuICBjbGFzcz1cImNvbHVtbi1pdGVtXCJcbiAgW2NsYXNzLmhpZGRlbl09XCJpc0hpZGRlblwiXG4gIGNka0RyYWdcbiAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXG4gIChjZGtEcmFnU3RhcnRlZCk9XCJjb2xsYXBzZU5lc3RlZCgpXCJcbj5cbiAgPHR1aS1pY29uIFtpY29uXT1cImljb25FZGl0b3JEb3RzXCIgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAzMnB4XCIgLz5cbiAgQGlmIChjYW5FeHBhbmQoKSkge1xuICAgIDx0dWktaWNvblxuICAgICAgY2xhc3M9XCJpY29uLXNpemUtLTE2IGV4cGFuZGVkXCJcbiAgICAgIFtpY29uXT1cImljb25DaGV2cm9uXCJcbiAgICAgIFthdHRyLmV4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZU5lc3RlZCgpXCJcbiAgICAvPlxuICB9XG4gIDxzcGFuIGNsYXNzPVwiY29sdW1uLWl0ZW1fX25hbWVcIj57eyBjb2wubmFtZSB9fTwvc3Bhbj5cbiAgQGlmIChzdGF0dXMoKSA9PT0gRUNvbHVtblN0YXR1cy5TVElDS1kpIHtcbiAgICA8dHVpLWljb25cbiAgICAgIGNsYXNzPVwiaWNvbi1zaXplLS0xNiBwb2ludGVyXCJcbiAgICAgIFtpY29uXT1cImljb25Mb2NrXCJcbiAgICAgIHR1aUhpbnQ9XCLQndC10LvRjNC30Y8g0YHQutGA0YvRgtGMINC30LDQutGA0LXQv9C70LXQvdC90YPRjiDQutC+0LvQvtC90LrRg1wiXG4gICAgLz5cbiAgfSBAZWxzZSB7XG4gICAgPHR1aS1pY29uXG4gICAgICBjbGFzcz1cImljb24tc2l6ZS0tMTYgZXllLWljb25cIlxuICAgICAgW2ljb25dPVwiY3VycmVudEV5ZUljb25cIlxuICAgICAgdHVpSGludD1cItCf0L7QutCw0LfQsNGC0Ywv0KHQutGA0YvRgtGMINC60L7Qu9C+0L3QutGDXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVWaXNpYmlsaXR5KGNvbClcIlxuICAgIC8+XG4gIH1cblxuICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGxhY2Vob2xkZXJcIj48L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG5AaWYgKGNhbkV4cGFuZCgpKSB7XG4gIDx0dWktZXhwYW5kXG4gICAgY2xhc3M9XCJuZXN0ZWQtY29sdW1uc1wiXG4gICAgY2RrRHJvcExpc3RcbiAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWQoKVwiXG4gICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjaGlsZHJlbkNvbHVtbnNcIlxuICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEludG9DaGlsZHJlbigkZXZlbnQpXCJcbiAgPlxuICAgIEBmb3IgKGNoaWxkQ29sIG9mIGNoaWxkcmVuQ29sdW1uczsgdHJhY2sgY2hpbGRDb2wuaWQpIHtcbiAgICAgIDxzcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGUgW2NvbHVtbl09XCJjaGlsZENvbFwiIFtwYXJlbnRdPVwiY29sXCIgLz5cbiAgICB9XG4gIDwvdHVpLWV4cGFuZD5cbn1cbiJdfQ==
|