@cuby-ui/core 0.0.491 → 0.0.493

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.
Files changed (33) hide show
  1. package/esm2022/widgets/ui/criterion-info/criterion-info.component.mjs +21 -12
  2. package/esm2022/widgets/ui/criterion-info-form/criterion-info-form.component.mjs +27 -15
  3. package/esm2022/widgets/ui/criterion-info-form/criterion-info-form.options.mjs +1 -1
  4. package/esm2022/widgets/ui/criterion-readonly-info/criterion-readonly-info.component.mjs +26 -21
  5. package/esm2022/widgets/ui/index.mjs +8 -4
  6. package/esm2022/widgets/ui/instruction-info/instruction-info.component.mjs +11 -12
  7. package/esm2022/widgets/ui/instruction-info-form/instruction-info-form.component.mjs +18 -12
  8. package/esm2022/widgets/ui/instruction-readonly-info/instruction-readonly-info.component.mjs +26 -21
  9. package/esm2022/widgets/ui/utility-modal/components/criterion-modal-create/criterion-modal-create.component.mjs +4 -3
  10. package/esm2022/widgets/ui/utility-modal/components/index.mjs +3 -1
  11. package/esm2022/widgets/ui/utility-modal/components/instruction-modal-create/instruction-modal-create.component.mjs +4 -4
  12. package/esm2022/widgets/ui/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.mjs +13 -7
  13. package/esm2022/widgets/ui/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.mjs +11 -5
  14. package/esm2022/widgets/ui/utility-modal/utility-modal.options.mjs +1 -1
  15. package/esm2022/widgets/ui/utility-thumbnail/utility-thumbnail.component.mjs +6 -7
  16. package/fesm2022/cuby-ui-core.mjs +245 -201
  17. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  18. package/package.json +4 -4
  19. package/widgets/ui/criterion-info/criterion-info.component.d.ts +6 -7
  20. package/widgets/ui/criterion-info-form/criterion-info-form.component.d.ts +6 -2
  21. package/widgets/ui/criterion-info-form/criterion-info-form.options.d.ts +2 -0
  22. package/widgets/ui/criterion-readonly-info/criterion-readonly-info.component.d.ts +10 -9
  23. package/widgets/ui/index.d.ts +7 -3
  24. package/widgets/ui/instruction-info/instruction-info.component.d.ts +2 -4
  25. package/widgets/ui/instruction-info-form/instruction-info-form.component.d.ts +2 -2
  26. package/widgets/ui/instruction-readonly-info/instruction-readonly-info.component.d.ts +10 -9
  27. package/widgets/ui/utility-modal/components/criterion-modal-create/criterion-modal-create.component.d.ts +3 -1
  28. package/widgets/ui/utility-modal/components/index.d.ts +2 -0
  29. package/widgets/ui/utility-modal/components/instruction-modal-create/instruction-modal-create.component.d.ts +3 -2
  30. package/widgets/ui/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.d.ts +10 -3
  31. package/widgets/ui/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.d.ts +10 -3
  32. package/widgets/ui/utility-modal/utility-modal.options.d.ts +3 -3
  33. package/widgets/ui/utility-thumbnail/utility-thumbnail.component.d.ts +2 -3
@@ -4,11 +4,10 @@ export { CuiLinearLoaderComponent } from './linear-loader';
4
4
  export { CuiDeleteModalComponent } from './delete-modal';
5
5
  export { CuiCategoriesComponent, CuiSelectedCategoryService } from './categories';
6
6
  export { CuiChecklistBlockComponent } from './checklist-block';
7
- export { CuiInstructionReadonlyInfoComponent } from './instruction-readonly-info';
8
- export { CuiCriterionInfoComponent } from './criterion-info';
9
- export { CuiInstructionInfoComponent } from './instruction-info';
10
7
  export { CuiGeneralControlErrorHintComponent } from './general-control-error-hint';
11
8
  export { CuiFramerPreviewComponent } from './framer-preview';
9
+ export * from './criterion-info';
10
+ export * from './instruction-info';
12
11
  export * from './instruction-info-form';
13
12
  export * from './select-modal';
14
13
  export * from './storage-list';
@@ -26,5 +25,10 @@ export * from './resources-block';
26
25
  export * from './utility-info-readonly';
27
26
  export * from './inserted';
28
27
  export * from './instruction-readonly-info';
28
+ export * from './criterion-readonly-info';
29
29
  export * from './button-change-theme';
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdWkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBZSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEN1aVN0YXRlZExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc3RhdGVkLWxvYWRlcic7XG5leHBvcnQgeyBDdWlDaXJjbGVMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2NpcmNsZS1sb2FkZXInO1xuZXhwb3J0IHsgQ3VpTGluZWFyTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9saW5lYXItbG9hZGVyJztcbmV4cG9ydCB7IEN1aURlbGV0ZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxldGUtbW9kYWwnO1xuZXhwb3J0IHsgQ3VpQ2F0ZWdvcmllc0NvbXBvbmVudCwgQ3VpU2VsZWN0ZWRDYXRlZ29yeVNlcnZpY2UgfSBmcm9tICcuL2NhdGVnb3JpZXMnO1xuZXhwb3J0IHsgQ3VpQ2hlY2tsaXN0QmxvY2tDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrbGlzdC1ibG9jayc7XG5leHBvcnQgeyBDdWlJbnN0cnVjdGlvblJlYWRvbmx5SW5mb0NvbXBvbmVudCB9IGZyb20gJy4vaW5zdHJ1Y3Rpb24tcmVhZG9ubHktaW5mbyc7XG5leHBvcnQgeyBDdWlDcml0ZXJpb25JbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9jcml0ZXJpb24taW5mbyc7XG5leHBvcnQgeyBDdWlJbnN0cnVjdGlvbkluZm9Db21wb25lbnQgfSBmcm9tICcuL2luc3RydWN0aW9uLWluZm8nO1xuZXhwb3J0IHsgQ3VpR2VuZXJhbENvbnRyb2xFcnJvckhpbnRDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyYWwtY29udHJvbC1lcnJvci1oaW50JztcbmV4cG9ydCB7IEN1aUZyYW1lclByZXZpZXdDb21wb25lbnQsIEN1aUltYWdlVXJsIH0gZnJvbSAnLi9mcmFtZXItcHJldmlldyc7XG5leHBvcnQgKiBmcm9tICcuL2luc3RydWN0aW9uLWluZm8tZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC1tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JhZ2UtbGlzdCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdHktbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLWFjdGlvbi1jb250ZXh0LW1lbnUnO1xuZXhwb3J0ICogZnJvbSAnLi9hc3NpZ25lZS1yb2xlLWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9hc3NpZ25lZS1yb2xlcy10YWJzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwtZGl2aWRlZC1zZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwtaGVhZGVyLWluc2VydGVkLWJ1dHRvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC1pbmZvLXRhYic7XG5leHBvcnQgKiBmcm9tICcuL21vZGFsLW9wZXJhdGlvbi1wYXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwtcmVzb3VyY2VzLXRhYic7XG5leHBvcnQgKiBmcm9tICcuL3JlbmRlci1keW5hbWljLW1vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2VzLWJsb2NrJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbGl0eS1pbmZvLXJlYWRvbmx5JztcbmV4cG9ydCAqIGZyb20gJy4vaW5zZXJ0ZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnN0cnVjdGlvbi1yZWFkb25seS1pbmZvJztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLWNoYW5nZS10aGVtZSdcbiJdfQ==
30
+ export * from './criterion-info-form';
31
+ export * from './utility-modal';
32
+ export * from './utility-readonly-thumbnail';
33
+ export * from './utility-thumbnail';
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdWkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBZSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ3VpU3RhdGVkTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zdGF0ZWQtbG9hZGVyJztcbmV4cG9ydCB7IEN1aUNpcmNsZUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY2lyY2xlLWxvYWRlcic7XG5leHBvcnQgeyBDdWlMaW5lYXJMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2xpbmVhci1sb2FkZXInO1xuZXhwb3J0IHsgQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2RlbGV0ZS1tb2RhbCc7XG5leHBvcnQgeyBDdWlDYXRlZ29yaWVzQ29tcG9uZW50LCBDdWlTZWxlY3RlZENhdGVnb3J5U2VydmljZSB9IGZyb20gJy4vY2F0ZWdvcmllcyc7XG5leHBvcnQgeyBDdWlDaGVja2xpc3RCbG9ja0NvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tsaXN0LWJsb2NrJztcbmV4cG9ydCB7IEN1aUdlbmVyYWxDb250cm9sRXJyb3JIaW50Q29tcG9uZW50IH0gZnJvbSAnLi9nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludCc7XG5leHBvcnQgeyBDdWlGcmFtZXJQcmV2aWV3Q29tcG9uZW50LCBDdWlJbWFnZVVybCB9IGZyb20gJy4vZnJhbWVyLXByZXZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi9jcml0ZXJpb24taW5mbyc7XG5leHBvcnQgKiBmcm9tICcuL2luc3RydWN0aW9uLWluZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9pbnN0cnVjdGlvbi1pbmZvLWZvcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QtbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlLWxpc3QnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsaXR5LW1vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1hY3Rpb24tY29udGV4dC1tZW51JztcbmV4cG9ydCAqIGZyb20gJy4vYXNzaWduZWUtcm9sZS1pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vYXNzaWduZWUtcm9sZXMtdGFicyc7XG5leHBvcnQgKiBmcm9tICcuL21vZGFsLWRpdmlkZWQtc2VjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL21vZGFsLWhlYWRlci1pbnNlcnRlZC1idXR0b25zJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwtaW5mby10YWInO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC1vcGVyYXRpb24tcGFydCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGFsLXJlc291cmNlcy10YWInO1xuZXhwb3J0ICogZnJvbSAnLi9yZW5kZXItZHluYW1pYy1tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc291cmNlcy1ibG9jayc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdHktaW5mby1yZWFkb25seSc7XG5leHBvcnQgKiBmcm9tICcuL2luc2VydGVkJztcbmV4cG9ydCAqIGZyb20gJy4vaW5zdHJ1Y3Rpb24tcmVhZG9ubHktaW5mbyc7XG5leHBvcnQgKiBmcm9tICcuL2NyaXRlcmlvbi1yZWFkb25seS1pbmZvJztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLWNoYW5nZS10aGVtZSdcbmV4cG9ydCAqIGZyb20gJy4vY3JpdGVyaW9uLWluZm8tZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdHktbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsaXR5LXJlYWRvbmx5LXRodW1ibmFpbCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdHktdGh1bWJuYWlsJztcbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, input, model, output, signal, untracked, viewChild } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { TranslocoModule, TranslocoService } from '@jsverse/transloco';
4
- import { finalize, forkJoin } from 'rxjs';
5
3
  import { CuiTreeStructNavigatorApiService } from '@cuby-ui/api';
6
4
  import { CuiIdService } from '@cuby-ui/cdk';
5
+ import { TranslocoModule, TranslocoService } from '@jsverse/transloco';
6
+ import { finalize, forkJoin } from 'rxjs';
7
7
  import { CuiBadgeModule, CuiButtonModule, CuiDialogModule, CuiFormFieldModule, CuiLabelModule, CuiSvgModule } from '../../../components';
8
8
  import { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';
9
9
  import { CuiInstructionInfoFormComponent } from '../instruction-info-form';
@@ -32,8 +32,7 @@ export class CuiInstructionInfoComponent {
32
32
  this.selectTitle = computed(() => this.category()?.title || this.translocoService.translate('SELECT') + '...');
33
33
  this.element = viewChild('scrollContent');
34
34
  this.instruction = model();
35
- this.tools = input.required();
36
- this.editorResourceUrl = input.required();
35
+ this.config = input.required();
37
36
  this.validationChanged = output();
38
37
  this.instructionCreated = output();
39
38
  this.initConfigEffect();
@@ -76,7 +75,7 @@ export class CuiInstructionInfoComponent {
76
75
  if (!element) {
77
76
  return;
78
77
  }
79
- this.editorConfig.set({ tools: this.tools(), element });
78
+ this.editorConfig.set({ ...this.config(), element });
80
79
  });
81
80
  }
82
81
  initCategory() {
@@ -85,7 +84,7 @@ export class CuiInstructionInfoComponent {
85
84
  return;
86
85
  }
87
86
  this.treeStructNavigatorApiService
88
- .getCategory(storageObjectId, "INSTRUCTION_STORAGE" /* TreeStructType.Instruction */)
87
+ .getCategory(storageObjectId, "INSTRUCTION_STORAGE" /* TreeStructType.Instruction */, this.config().requestOptions)
89
88
  .pipe(takeUntilDestroyed(this.destroyRef))
90
89
  .subscribe((category) => {
91
90
  this.skipCategoryChange = true;
@@ -105,7 +104,7 @@ export class CuiInstructionInfoComponent {
105
104
  movableItemId: targetId,
106
105
  treeStructTargetItemId: categoryId,
107
106
  treeStructMovableItemId: prevCategoryId
108
- })
107
+ }, this.config().requestOptions)
109
108
  .subscribe(() => this.prevCategoryId.set(categoryId));
110
109
  }
111
110
  createInstruction(categoryId) {
@@ -113,7 +112,7 @@ export class CuiInstructionInfoComponent {
113
112
  this.prevCategoryId.set(categoryId);
114
113
  }
115
114
  changeTitle(value, instructionId) {
116
- return this.instructionApiService.changeTitle(instructionId, value).pipe(finalize(() => this.instruction.update((prev) => ({
115
+ return this.instructionApiService.changeTitle(instructionId, value, this.config().requestOptions).pipe(finalize(() => this.instruction.update((prev) => ({
117
116
  ...prev,
118
117
  storageElement: { ...prev.storageElement, title: value }
119
118
  }))));
@@ -122,13 +121,13 @@ export class CuiInstructionInfoComponent {
122
121
  if (!this.instructionApiService.changeDescription) {
123
122
  throw new Error('Change description not implemented');
124
123
  }
125
- return this.instructionApiService.changeDescription(instructionId, value).pipe(finalize(() => this.instruction.update((prev) => ({
124
+ return this.instructionApiService.changeDescription(instructionId, value, this.config().requestOptions).pipe(finalize(() => this.instruction.update((prev) => ({
126
125
  ...prev,
127
126
  storageElement: { ...prev.storageElement, shortDescription: value }
128
127
  }))));
129
128
  }
130
129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionInfoComponent, isStandalone: true, selector: "cui-instruction-info", inputs: { instruction: { classPropertyName: "instruction", publicName: "instruction", isSignal: true, isRequired: false, transformFunction: null }, tools: { classPropertyName: "tools", publicName: "tools", isSignal: true, isRequired: true, transformFunction: null }, editorResourceUrl: { classPropertyName: "editorResourceUrl", publicName: "editorResourceUrl", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { instruction: "instructionChange", validationChanged: "validationChanged", instructionCreated: "instructionCreated" }, providers: [CuiSelectedCategoryService], viewQueries: [{ propertyName: "element", first: true, predicate: ["scrollContent"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"wrapper\"\n *transloco=\"let t\"\n>\n <div\n #scrollContent\n class=\"content content_scrollable\"\n >\n <div class=\"category\">\n <cui-form-field>\n <label\n cuiLabel\n [for]=\"categoryId\"\n [isRequired]=\"true\"\n >\n {{ t('SELECT_CATEGORY') }}\n </label>\n <cui-categories\n [buttonId]=\"categoryId\"\n [treeStructType]=\"TYPE\"\n >\n <div class=\"select\">\n <span [style.color]=\"labelColor()\">\n {{ selectTitle() }}\n </span>\n\n <cui-svg icon=\"cuiIconChevronDown\" />\n </div>\n </cui-categories>\n </cui-form-field>\n </div>\n\n @let instructionData = instruction();\n @let editorConfigData = editorConfig();\n\n @if (editorConfigData && instructionData) {\n <cui-instruction-info-form\n [config]=\"editorConfigData\"\n [baseResourceUrl]=\"editorResourceUrl()\"\n [title]=\"instructionData.storageElement.title\"\n [description]=\"instructionData.storageElement.shortDescription\"\n [framerId]=\"instructionData.storageElement.framerInstructionId\"\n class=\"utility\"\n (isFormValidChanged)=\"onFormValidationChanged($event)\"\n (formChanged)=\"onFormChanged($event, instructionData.id)\"\n />\n }\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;height:100%}.content{height:calc(100vh - 109px)}.content_scrollable{overflow:auto}.category{padding-top:16px;padding-right:23px;padding-left:23px}.select{padding:7px 13px;font-weight:400;font-size:14px;line-height:20px;display:flex;justify-content:space-between;height:36px;border-radius:8px;border:1px solid var(--cui-base-200);color:var(--cui-base-900);background:var(--cui-input)}.utility{--editor-height: none}\n"], dependencies: [{ kind: "ngmodule", type: CuiBadgeModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiCategoriesComponent, selector: "cui-categories", inputs: ["treeStructType", "buttonId", "disabled", "context"] }, { kind: "ngmodule", type: CuiDialogModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: i1.CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiInstructionInfoFormComponent, selector: "cui-instruction-info-form", inputs: ["title", "description", "framerId", "baseResourceUrl", "config"], outputs: ["formChanged", "isFormValidChanged"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: i2.CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i3.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionInfoComponent, isStandalone: true, selector: "cui-instruction-info", inputs: { instruction: { classPropertyName: "instruction", publicName: "instruction", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { instruction: "instructionChange", validationChanged: "validationChanged", instructionCreated: "instructionCreated" }, providers: [CuiSelectedCategoryService], viewQueries: [{ propertyName: "element", first: true, predicate: ["scrollContent"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"wrapper\"\n *transloco=\"let t\"\n>\n <div\n #scrollContent\n class=\"content content_scrollable\"\n >\n <div class=\"category\">\n <cui-form-field>\n <label\n cuiLabel\n [for]=\"categoryId\"\n [isRequired]=\"true\"\n >\n {{ t('SELECT_CATEGORY') }}\n </label>\n <cui-categories\n [buttonId]=\"categoryId\"\n [treeStructType]=\"TYPE\"\n >\n <div class=\"select\">\n <span [style.color]=\"labelColor()\">\n {{ selectTitle() }}\n </span>\n\n <cui-svg icon=\"cuiIconChevronDown\" />\n </div>\n </cui-categories>\n </cui-form-field>\n </div>\n\n @let instructionData = instruction();\n @let editorConfigData = editorConfig();\n\n @if (editorConfigData && instructionData) {\n <cui-instruction-info-form\n [config]=\"editorConfigData\"\n [title]=\"instructionData.storageElement.title\"\n [description]=\"instructionData.storageElement.shortDescription\"\n [framerId]=\"instructionData.storageElement.framerInstructionId\"\n class=\"utility\"\n (isFormValidChanged)=\"onFormValidationChanged($event)\"\n (formChanged)=\"onFormChanged($event, instructionData.id)\"\n />\n }\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;height:100%}.content{height:calc(100vh - 109px)}.content_scrollable{overflow:auto}.category{padding-top:16px;padding-right:23px;padding-left:23px}.select{padding:7px 13px;font-weight:400;font-size:14px;line-height:20px;display:flex;justify-content:space-between;height:36px;border-radius:8px;border:1px solid var(--cui-base-200);color:var(--cui-base-900);background:var(--cui-input)}.utility{--editor-height: none}\n"], dependencies: [{ kind: "ngmodule", type: CuiBadgeModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiCategoriesComponent, selector: "cui-categories", inputs: ["treeStructType", "buttonId", "disabled", "context"] }, { kind: "ngmodule", type: CuiDialogModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: i1.CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiInstructionInfoFormComponent, selector: "cui-instruction-info-form", inputs: ["title", "description", "framerId", "config"], outputs: ["formChanged", "isFormValidChanged"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: i2.CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i3.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
132
131
  }
133
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionInfoComponent, decorators: [{
134
133
  type: Component,
@@ -142,6 +141,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
142
141
  CuiLabelModule,
143
142
  CuiSvgModule,
144
143
  TranslocoModule
145
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CuiSelectedCategoryService], template: "<div\n class=\"wrapper\"\n *transloco=\"let t\"\n>\n <div\n #scrollContent\n class=\"content content_scrollable\"\n >\n <div class=\"category\">\n <cui-form-field>\n <label\n cuiLabel\n [for]=\"categoryId\"\n [isRequired]=\"true\"\n >\n {{ t('SELECT_CATEGORY') }}\n </label>\n <cui-categories\n [buttonId]=\"categoryId\"\n [treeStructType]=\"TYPE\"\n >\n <div class=\"select\">\n <span [style.color]=\"labelColor()\">\n {{ selectTitle() }}\n </span>\n\n <cui-svg icon=\"cuiIconChevronDown\" />\n </div>\n </cui-categories>\n </cui-form-field>\n </div>\n\n @let instructionData = instruction();\n @let editorConfigData = editorConfig();\n\n @if (editorConfigData && instructionData) {\n <cui-instruction-info-form\n [config]=\"editorConfigData\"\n [baseResourceUrl]=\"editorResourceUrl()\"\n [title]=\"instructionData.storageElement.title\"\n [description]=\"instructionData.storageElement.shortDescription\"\n [framerId]=\"instructionData.storageElement.framerInstructionId\"\n class=\"utility\"\n (isFormValidChanged)=\"onFormValidationChanged($event)\"\n (formChanged)=\"onFormChanged($event, instructionData.id)\"\n />\n }\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;height:100%}.content{height:calc(100vh - 109px)}.content_scrollable{overflow:auto}.category{padding-top:16px;padding-right:23px;padding-left:23px}.select{padding:7px 13px;font-weight:400;font-size:14px;line-height:20px;display:flex;justify-content:space-between;height:36px;border-radius:8px;border:1px solid var(--cui-base-200);color:var(--cui-base-900);background:var(--cui-input)}.utility{--editor-height: none}\n"] }]
144
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CuiSelectedCategoryService], template: "<div\n class=\"wrapper\"\n *transloco=\"let t\"\n>\n <div\n #scrollContent\n class=\"content content_scrollable\"\n >\n <div class=\"category\">\n <cui-form-field>\n <label\n cuiLabel\n [for]=\"categoryId\"\n [isRequired]=\"true\"\n >\n {{ t('SELECT_CATEGORY') }}\n </label>\n <cui-categories\n [buttonId]=\"categoryId\"\n [treeStructType]=\"TYPE\"\n >\n <div class=\"select\">\n <span [style.color]=\"labelColor()\">\n {{ selectTitle() }}\n </span>\n\n <cui-svg icon=\"cuiIconChevronDown\" />\n </div>\n </cui-categories>\n </cui-form-field>\n </div>\n\n @let instructionData = instruction();\n @let editorConfigData = editorConfig();\n\n @if (editorConfigData && instructionData) {\n <cui-instruction-info-form\n [config]=\"editorConfigData\"\n [title]=\"instructionData.storageElement.title\"\n [description]=\"instructionData.storageElement.shortDescription\"\n [framerId]=\"instructionData.storageElement.framerInstructionId\"\n class=\"utility\"\n (isFormValidChanged)=\"onFormValidationChanged($event)\"\n (formChanged)=\"onFormChanged($event, instructionData.id)\"\n />\n }\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;height:100%}.content{height:calc(100vh - 109px)}.content_scrollable{overflow:auto}.category{padding-top:16px;padding-right:23px;padding-left:23px}.select{padding:7px 13px;font-weight:400;font-size:14px;line-height:20px;display:flex;justify-content:space-between;height:36px;border-radius:8px;border:1px solid var(--cui-base-200);color:var(--cui-base-900);background:var(--cui-input)}.utility{--editor-height: none}\n"] }]
146
145
  }], ctorParameters: () => [] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24taW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdWkvaW5zdHJ1Y3Rpb24taW5mby9pbnN0cnVjdGlvbi1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9pbnN0cnVjdGlvbi1pbmZvL2luc3RydWN0aW9uLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQThCLE1BQU0sY0FBYyxDQUFDO0FBRTVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsWUFBWSxFQUNmLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25GLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBdUIsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0FBcUJwRixNQUFNLE9BQU8sMkJBQTJCO0lBbUNwQztRQWxDaUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyw4QkFBeUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMvRCxrQ0FBNkIsR0FBRyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN6RSwwQkFBcUIsR0FBRyxNQUFNLENBQW1DLDJCQUEyQixDQUFDLENBQUM7UUFFNUYsU0FBSSwwREFBOEI7UUFHN0MsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTFDLGFBQVEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDO1FBQ25ELGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUNuRCxpQkFBWSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxDQUFDLENBQUM7UUFDMUQsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUN6RSxDQUFDO1FBQ2lCLGdCQUFXLEdBQUcsUUFBUSxDQUNyQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUNwRixDQUFDO1FBRWlCLFlBQU8sR0FBRyxTQUFTLENBQTBCLGVBQWUsQ0FBQyxDQUFDO1FBRWpFLGdCQUFXLEdBQUcsS0FBSyxFQUE4QixDQUFDO1FBQ2xELFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDbkMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRTdDLHNCQUFpQixHQUFHLE1BQU0sRUFBVyxDQUFDO1FBQ3RDLHVCQUFrQixHQUFHLE1BQU0sRUFBVSxDQUFDO1FBR2xELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFUyxhQUFhLENBQUMsTUFBeUMsRUFBRSxhQUFxQjtRQUNwRixNQUFNLE9BQU8sR0FBZ0Y7WUFDekYsS0FBSyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7WUFDaEUsV0FBVyxFQUFFLENBQUMsV0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUM7U0FDM0YsQ0FBQztRQUVGLFFBQVEsQ0FDSixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzVCLE9BQU8sQ0FBQyxHQUFxQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQXFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDdEcsQ0FDSjthQUNJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVTLHVCQUF1QixDQUFDLE9BQWdCO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sd0JBQXdCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO2dCQUVoQyxPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksd0JBQXdCLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUU5RCxPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxDQUFDO1lBRTlDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDWCxPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFlBQVk7UUFDaEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsNkJBQTZCO2FBQzdCLFdBQVcsQ0FBQyxlQUFlLHlEQUE2QjthQUN4RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFzQixDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sY0FBYyxDQUFDLFVBQWtCLEVBQUUsUUFBZ0I7UUFDdkQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLDZCQUE2QjthQUNqRCxXQUFXLENBQUM7WUFDVCxJQUFJLGlFQUErQjtZQUNuQyxhQUFhLEVBQUUsUUFBUTtZQUN2QixzQkFBc0IsRUFBRSxVQUFVO1lBQ2xDLHVCQUF1QixFQUFFLGNBQWM7U0FDMUMsQ0FBQzthQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxVQUFrQjtRQUN4QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBYSxFQUFFLGFBQXFCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNwRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0IsR0FBRyxJQUFLO1lBQ1IsY0FBYyxFQUFFLEVBQUUsR0FBRyxJQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7U0FDNUQsQ0FBQyxDQUFDLENBQ04sQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWEsRUFBRSxhQUFxQjtRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMxRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0IsR0FBRyxJQUFLO1lBQ1IsY0FBYyxFQUFFLEVBQUUsR0FBRyxJQUFLLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtTQUN2RSxDQUFDLENBQUMsQ0FDTixDQUNKLENBQUM7SUFDTixDQUFDOytHQWpLUSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw0bUJBRnpCLENBQUMsMEJBQTBCLENBQUMsb0pDeEQzQyx1ckRBaURBLHFnQkRQUSxjQUFjLDhCQUNkLGVBQWUsK0JBQ2Ysc0JBQXNCLHlIQUN0QixlQUFlLDhCQUNmLGtCQUFrQixrSEFDbEIsK0JBQStCLGdNQUMvQixjQUFjLHNJQUNkLFlBQVksdUtBQ1osZUFBZTs7NEZBUVYsMkJBQTJCO2tCQW5CdkMsU0FBUzsrQkFDSSxzQkFBc0IsV0FDdkI7d0JBQ0wsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLCtCQUErQjt3QkFDL0IsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGVBQWU7cUJBQ2xCLGNBQ1csSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG1vZGVsLFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IEluc3RydWN0aW9uLCBTdG9yYWdlT2JqZWN0LCBUcmVlU3RydWN0IH0gZnJvbSAnQGN1YnktdWkvYXBpJztcbmltcG9ydCB7IEN1aVRyZWVTdHJ1Y3ROYXZpZ2F0b3JBcGlTZXJ2aWNlLCBNb3ZpbmdUeXBlLCBUcmVlU3RydWN0VHlwZSB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IEN1aUlkU2VydmljZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5cbmltcG9ydCB7XG4gICAgQ3VpQmFkZ2VNb2R1bGUsXG4gICAgQ3VpQnV0dG9uTW9kdWxlLFxuICAgIEN1aURpYWxvZ01vZHVsZSxcbiAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgQ3VpU3ZnTW9kdWxlXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ3VpQ2F0ZWdvcmllc0NvbXBvbmVudCwgQ3VpU2VsZWN0ZWRDYXRlZ29yeVNlcnZpY2UgfSBmcm9tICcuLi9jYXRlZ29yaWVzJztcbmltcG9ydCB7IEN1aUVkaXRvckNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2VkaXRvcic7XG5pbXBvcnQgdHlwZSB7IEN1aVRvb2xzIH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yJztcbmltcG9ydCB7IEN1aUluc3RydWN0aW9uSW5mb0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9pbnN0cnVjdGlvbi1pbmZvLWZvcm0nO1xuaW1wb3J0IHR5cGUgeyBDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXMgfSBmcm9tICcuLi9pbnN0cnVjdGlvbi1pbmZvLWZvcm0nO1xuaW1wb3J0IHsgVVRJTElUWV9NT0RBTF9TRVJWSUNFX1RPS0VOLCBVdGlsaXR5TW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbGl0eS1tb2RhbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VpLWluc3RydWN0aW9uLWluZm8nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQmFkZ2VNb2R1bGUsXG4gICAgICAgIEN1aUJ1dHRvbk1vZHVsZSxcbiAgICAgICAgQ3VpQ2F0ZWdvcmllc0NvbXBvbmVudCxcbiAgICAgICAgQ3VpRGlhbG9nTW9kdWxlLFxuICAgICAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIEN1aUluc3RydWN0aW9uSW5mb0Zvcm1Db21wb25lbnQsXG4gICAgICAgIEN1aUxhYmVsTW9kdWxlLFxuICAgICAgICBDdWlTdmdNb2R1bGUsXG4gICAgICAgIFRyYW5zbG9jb01vZHVsZVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5zdHJ1Y3Rpb24taW5mby5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5zdHJ1Y3Rpb24taW5mby5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0N1aVNlbGVjdGVkQ2F0ZWdvcnlTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBDdWlJbnN0cnVjdGlvbkluZm9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlJZFNlcnZpY2UgPSBpbmplY3QoQ3VpSWRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUNhdGVnb3JpZXNNb2RhbFNlcnZpY2UgPSBpbmplY3QoQ3VpU2VsZWN0ZWRDYXRlZ29yeVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJlZVN0cnVjdE5hdmlnYXRvckFwaVNlcnZpY2UgPSBpbmplY3QoQ3VpVHJlZVN0cnVjdE5hdmlnYXRvckFwaVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5zdHJ1Y3Rpb25BcGlTZXJ2aWNlID0gaW5qZWN0PFV0aWxpdHlNb2RhbFNlcnZpY2U8SW5zdHJ1Y3Rpb24+PihVVElMSVRZX01PREFMX1NFUlZJQ0VfVE9LRU4pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFRZUEUgPSBUcmVlU3RydWN0VHlwZS5JbnN0cnVjdGlvbjtcblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgc2tpcENhdGVnb3J5Q2hhbmdlID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnlJZCA9IHRoaXMuY3VpSWRTZXJ2aWNlLmdlbmVyYXRlKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnkgPSB0aGlzLmN1aUNhdGVnb3JpZXNNb2RhbFNlcnZpY2UuY2F0ZWdvcnk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRm9ybVZhbGlkID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJldkNhdGVnb3J5SWQgPSBzaWduYWw8Q3VpTnVsbGFibGU8c3RyaW5nPj4obnVsbCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVkaXRvckNvbmZpZyA9IHNpZ25hbDxDdWlOdWxsYWJsZTxDdWlFZGl0b3JDb25maWc+PihudWxsKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFiZWxDb2xvciA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuY2F0ZWdvcnkoKT8udGl0bGUgPyAndmFyKC0tY3VpLWJhc2UtOTAwKScgOiAndmFyKC0tY3VpLWJhc2UtNDAwKSdcbiAgICApO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RUaXRsZSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiB0aGlzLmNhdGVnb3J5KCk/LnRpdGxlIHx8IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ1NFTEVDVCcpICsgJy4uLidcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdzY3JvbGxDb250ZW50Jyk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5zdHJ1Y3Rpb24gPSBtb2RlbDxTdG9yYWdlT2JqZWN0PEluc3RydWN0aW9uPj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHMgPSBpbnB1dC5yZXF1aXJlZDxDdWlUb29scz4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yUmVzb3VyY2VVcmwgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsaWRhdGlvbkNoYW5nZWQgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5zdHJ1Y3Rpb25DcmVhdGVkID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXRDb25maWdFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5pbml0Q2F0ZWdvcnlFZmZlY3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdENhdGVnb3J5KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9ybUNoYW5nZWQodmFsdWVzOiBQYXJ0aWFsPEN1aUluc3RydWN0aW9uRm9ybVZhbHVlcz4sIGluc3RydWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBSZWNvcmQ8a2V5b2YgQ3VpSW5zdHJ1Y3Rpb25Gb3JtVmFsdWVzLCAodmFsdWU6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTx2b2lkPj4gPSB7XG4gICAgICAgICAgICB0aXRsZTogKHRpdGxlOiBzdHJpbmcpID0+IHRoaXMuY2hhbmdlVGl0bGUodGl0bGUsIGluc3RydWN0aW9uSWQpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IChkZXNjcmlwdGlvbjogc3RyaW5nKSA9PiB0aGlzLmNoYW5nZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLCBpbnN0cnVjdGlvbklkKVxuICAgICAgICB9O1xuXG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWVzKS5tYXAoKGtleSkgPT5cbiAgICAgICAgICAgICAgICBhY3Rpb25zW2tleSBhcyBrZXlvZiBDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXNdKHZhbHVlc1trZXkgYXMga2V5b2YgQ3VpSW5zdHJ1Y3Rpb25Gb3JtVmFsdWVzXSB8fCAnJylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9ybVZhbGlkYXRpb25DaGFuZ2VkKGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Zvcm1WYWxpZC5zZXQoaXNWYWxpZCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkNoYW5nZWQuZW1pdChpc1ZhbGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRDYXRlZ29yeUVmZmVjdCgpOiB2b2lkIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeSgpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZU9iamVjdEluc3RydWN0aW9uID0gdW50cmFja2VkKHRoaXMuaW5zdHJ1Y3Rpb24pO1xuXG4gICAgICAgICAgICBpZiAoIWNhdGVnb3J5IHx8IHRoaXMuc2tpcENhdGVnb3J5Q2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwQ2F0ZWdvcnlDaGFuZ2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2VPYmplY3RJbnN0cnVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2F0ZWdvcnkoY2F0ZWdvcnkuaWQsIHN0b3JhZ2VPYmplY3RJbnN0cnVjdGlvbi5pZCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdHJ1Y3Rpb24oY2F0ZWdvcnkuaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRDb25maWdFZmZlY3QoKTogdm9pZCB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50KCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5lZGl0b3JDb25maWcuc2V0KHsgdG9vbHM6IHRoaXMudG9vbHMoKSwgZWxlbWVudCB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Q2F0ZWdvcnkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VPYmplY3RJZCA9IHRoaXMuaW5zdHJ1Y3Rpb24oKT8uaWQ7XG5cbiAgICAgICAgaWYgKCFzdG9yYWdlT2JqZWN0SWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJlZVN0cnVjdE5hdmlnYXRvckFwaVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRDYXRlZ29yeShzdG9yYWdlT2JqZWN0SWQsIFRyZWVTdHJ1Y3RUeXBlLkluc3RydWN0aW9uKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2tpcENhdGVnb3J5Q2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZDYXRlZ29yeUlkLnNldChjYXRlZ29yeS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdWlDYXRlZ29yaWVzTW9kYWxTZXJ2aWNlLnNldEN1cnJlbnRDYXRlZ29yeShjYXRlZ29yeSBhcyBUcmVlU3RydWN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlQ2F0ZWdvcnkoY2F0ZWdvcnlJZDogc3RyaW5nLCB0YXJnZXRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZDYXRlZ29yeUlkID0gdW50cmFja2VkKHRoaXMucHJldkNhdGVnb3J5SWQpO1xuXG4gICAgICAgIGlmICghcHJldkNhdGVnb3J5SWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudHJlZVN0cnVjdE5hdmlnYXRvckFwaVNlcnZpY2VcbiAgICAgICAgICAgIC5tb3ZlRWxlbWVudCh7XG4gICAgICAgICAgICAgICAgdHlwZTogTW92aW5nVHlwZS5UQVJHRVRfVFJFRV9TVFJVQ1QsXG4gICAgICAgICAgICAgICAgbW92YWJsZUl0ZW1JZDogdGFyZ2V0SWQsXG4gICAgICAgICAgICAgICAgdHJlZVN0cnVjdFRhcmdldEl0ZW1JZDogY2F0ZWdvcnlJZCxcbiAgICAgICAgICAgICAgICB0cmVlU3RydWN0TW92YWJsZUl0ZW1JZDogcHJldkNhdGVnb3J5SWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMucHJldkNhdGVnb3J5SWQuc2V0KGNhdGVnb3J5SWQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUluc3RydWN0aW9uKGNhdGVnb3J5SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmluc3RydWN0aW9uQ3JlYXRlZC5lbWl0KGNhdGVnb3J5SWQpO1xuICAgICAgICB0aGlzLnByZXZDYXRlZ29yeUlkLnNldChjYXRlZ29yeUlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZVRpdGxlKHZhbHVlOiBzdHJpbmcsIGluc3RydWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0cnVjdGlvbkFwaVNlcnZpY2UuY2hhbmdlVGl0bGUoaW5zdHJ1Y3Rpb25JZCwgdmFsdWUpLnBpcGUoXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdHJ1Y3Rpb24udXBkYXRlKChwcmV2KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5wcmV2ISxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUVsZW1lbnQ6IHsgLi4ucHJldiEuc3RvcmFnZUVsZW1lbnQsIHRpdGxlOiB2YWx1ZSB9XG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXNjcmlwdGlvbih2YWx1ZTogc3RyaW5nLCBpbnN0cnVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RydWN0aW9uQXBpU2VydmljZS5jaGFuZ2VEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFuZ2UgZGVzY3JpcHRpb24gbm90IGltcGxlbWVudGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5pbnN0cnVjdGlvbkFwaVNlcnZpY2UuY2hhbmdlRGVzY3JpcHRpb24oaW5zdHJ1Y3Rpb25JZCwgdmFsdWUpLnBpcGUoXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdHJ1Y3Rpb24udXBkYXRlKChwcmV2KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5wcmV2ISxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUVsZW1lbnQ6IHsgLi4ucHJldiEuc3RvcmFnZUVsZW1lbnQsIHNob3J0RGVzY3JpcHRpb246IHZhbHVlIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJ3cmFwcGVyXCJcbiAgICAqdHJhbnNsb2NvPVwibGV0IHRcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgI3Njcm9sbENvbnRlbnRcbiAgICAgICAgY2xhc3M9XCJjb250ZW50IGNvbnRlbnRfc2Nyb2xsYWJsZVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgIDxjdWktZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY3VpTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJjYXRlZ29yeUlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdTRUxFQ1RfQ0FURUdPUlknKSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGN1aS1jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25JZF09XCJjYXRlZ29yeUlkXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyZWVTdHJ1Y3RUeXBlXT1cIlRZUEVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImxhYmVsQ29sb3IoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdFRpdGxlKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGN1aS1zdmcgaWNvbj1cImN1aUljb25DaGV2cm9uRG93blwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvY3VpLWNhdGVnb3JpZXM+XG4gICAgICAgICAgICA8L2N1aS1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAbGV0IGluc3RydWN0aW9uRGF0YSA9IGluc3RydWN0aW9uKCk7XG4gICAgICAgIEBsZXQgZWRpdG9yQ29uZmlnRGF0YSA9IGVkaXRvckNvbmZpZygpO1xuXG4gICAgICAgIEBpZiAoZWRpdG9yQ29uZmlnRGF0YSAmJiBpbnN0cnVjdGlvbkRhdGEpIHtcbiAgICAgICAgICAgIDxjdWktaW5zdHJ1Y3Rpb24taW5mby1mb3JtXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJlZGl0b3JDb25maWdEYXRhXCJcbiAgICAgICAgICAgICAgICBbYmFzZVJlc291cmNlVXJsXT1cImVkaXRvclJlc291cmNlVXJsKClcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpbnN0cnVjdGlvbkRhdGEuc3RvcmFnZUVsZW1lbnQudGl0bGVcIlxuICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJpbnN0cnVjdGlvbkRhdGEuc3RvcmFnZUVsZW1lbnQuc2hvcnREZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgW2ZyYW1lcklkXT1cImluc3RydWN0aW9uRGF0YS5zdG9yYWdlRWxlbWVudC5mcmFtZXJJbnN0cnVjdGlvbklkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInV0aWxpdHlcIlxuICAgICAgICAgICAgICAgIChpc0Zvcm1WYWxpZENoYW5nZWQpPVwib25Gb3JtVmFsaWRhdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGZvcm1DaGFuZ2VkKT1cIm9uRm9ybUNoYW5nZWQoJGV2ZW50LCBpbnN0cnVjdGlvbkRhdGEuaWQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24taW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdWkvaW5zdHJ1Y3Rpb24taW5mby9pbnN0cnVjdGlvbi1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9pbnN0cnVjdGlvbi1pbmZvL2luc3RydWN0aW9uLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBOEIsTUFBTSxjQUFjLENBQUM7QUFFNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsWUFBWSxFQUNmLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFB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Q2Ysc0JBQXNCLHlIQUN0QixlQUFlLDhCQUNmLGtCQUFrQixrSEFDbEIsK0JBQStCLDZLQUMvQixjQUFjLHNJQUNkLFlBQVksdUtBQ1osZUFBZTs7NEZBUVYsMkJBQTJCO2tCQW5CdkMsU0FBUzsrQkFDSSxzQkFBc0IsV0FDdkI7d0JBQ0wsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLCtCQUErQjt3QkFDL0IsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGVBQWU7cUJBQ2xCLGNBQ1csSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG1vZGVsLFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB0eXBlIHsgSW5zdHJ1Y3Rpb24sIFN0b3JhZ2VPYmplY3QsIFRyZWVTdHJ1Y3QgfSBmcm9tICdAY3VieS11aS9hcGknO1xuaW1wb3J0IHsgQ3VpVHJlZVN0cnVjdE5hdmlnYXRvckFwaVNlcnZpY2UsIE1vdmluZ1R5cGUsIFRyZWVTdHJ1Y3RUeXBlIH0gZnJvbSAnQGN1YnktdWkvYXBpJztcbmltcG9ydCB0eXBlIHsgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgQ3VpSWRTZXJ2aWNlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgQ3VpQmFkZ2VNb2R1bGUsXG4gICAgQ3VpQnV0dG9uTW9kdWxlLFxuICAgIEN1aURpYWxvZ01vZHVsZSxcbiAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgQ3VpU3ZnTW9kdWxlXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ3VpRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yJztcbmltcG9ydCB7IEN1aUNhdGVnb3JpZXNDb21wb25lbnQsIEN1aVNlbGVjdGVkQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQgdHlwZSB7IEN1aUluc3RydWN0aW9uRm9ybVZhbHVlcyB9IGZyb20gJy4uL2luc3RydWN0aW9uLWluZm8tZm9ybSc7XG5pbXBvcnQgeyBDdWlJbnN0cnVjdGlvbkluZm9Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5zdHJ1Y3Rpb24taW5mby1mb3JtJztcbmltcG9ydCB7IFVUSUxJVFlfTU9EQUxfU0VSVklDRV9UT0tFTiwgVXRpbGl0eU1vZGFsU2VydmljZSB9IGZyb20gJy4uL3V0aWxpdHktbW9kYWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1pbnN0cnVjdGlvbi1pbmZvJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEN1aUJhZGdlTW9kdWxlLFxuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUNhdGVnb3JpZXNDb21wb25lbnQsXG4gICAgICAgIEN1aURpYWxvZ01vZHVsZSxcbiAgICAgICAgQ3VpRm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBDdWlJbnN0cnVjdGlvbkluZm9Gb3JtQ29tcG9uZW50LFxuICAgICAgICBDdWlMYWJlbE1vZHVsZSxcbiAgICAgICAgQ3VpU3ZnTW9kdWxlLFxuICAgICAgICBUcmFuc2xvY29Nb2R1bGVcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2luc3RydWN0aW9uLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2luc3RydWN0aW9uLWluZm8uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtDdWlTZWxlY3RlZENhdGVnb3J5U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ3VpSW5zdHJ1Y3Rpb25JbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpSWRTZXJ2aWNlID0gaW5qZWN0KEN1aUlkU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlDYXRlZ29yaWVzTW9kYWxTZXJ2aWNlID0gaW5qZWN0KEN1aVNlbGVjdGVkQ2F0ZWdvcnlTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyZWVTdHJ1Y3ROYXZpZ2F0b3JBcGlTZXJ2aWNlID0gaW5qZWN0KEN1aVRyZWVTdHJ1Y3ROYXZpZ2F0b3JBcGlTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RydWN0aW9uQXBpU2VydmljZSA9IGluamVjdDxVdGlsaXR5TW9kYWxTZXJ2aWNlPEluc3RydWN0aW9uPj4oVVRJTElUWV9NT0RBTF9TRVJWSUNFX1RPS0VOKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBUWVBFID0gVHJlZVN0cnVjdFR5cGUuSW5zdHJ1Y3Rpb247XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHNraXBDYXRlZ29yeUNoYW5nZSA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhdGVnb3J5SWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhdGVnb3J5ID0gdGhpcy5jdWlDYXRlZ29yaWVzTW9kYWxTZXJ2aWNlLmNhdGVnb3J5O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0Zvcm1WYWxpZCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByZXZDYXRlZ29yeUlkID0gc2lnbmFsPEN1aU51bGxhYmxlPHN0cmluZz4+KG51bGwpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlZGl0b3JDb25maWcgPSBzaWduYWw8Q3VpTnVsbGFibGU8Q3VpRWRpdG9yQ29uZmlnPj4obnVsbCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxhYmVsQ29sb3IgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICB0aGlzLmNhdGVnb3J5KCk/LnRpdGxlID8gJ3ZhcigtLWN1aS1iYXNlLTkwMCknIDogJ3ZhcigtLWN1aS1iYXNlLTQwMCknXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0VGl0bGUgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5jYXRlZ29yeSgpPy50aXRsZSB8fCB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdTRUxFQ1QnKSArICcuLi4nXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+Pignc2Nyb2xsQ29udGVudCcpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGluc3RydWN0aW9uID0gbW9kZWw8U3RvcmFnZU9iamVjdDxJbnN0cnVjdGlvbj4+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEN1aUVkaXRvckNvbmZpZz4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSB2YWxpZGF0aW9uQ2hhbmdlZCA9IG91dHB1dDxib29sZWFuPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbnN0cnVjdGlvbkNyZWF0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5pdENvbmZpZ0VmZmVjdCgpO1xuICAgICAgICB0aGlzLmluaXRDYXRlZ29yeUVmZmVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0Q2F0ZWdvcnkoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtQ2hhbmdlZCh2YWx1ZXM6IFBhcnRpYWw8Q3VpSW5zdHJ1Y3Rpb25Gb3JtVmFsdWVzPiwgaW5zdHJ1Y3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IFJlY29yZDxrZXlvZiBDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXMsICh2YWx1ZTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPHZvaWQ+PiA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAodGl0bGU6IHN0cmluZykgPT4gdGhpcy5jaGFuZ2VUaXRsZSh0aXRsZSwgaW5zdHJ1Y3Rpb25JZCksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogKGRlc2NyaXB0aW9uOiBzdHJpbmcpID0+IHRoaXMuY2hhbmdlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24sIGluc3RydWN0aW9uSWQpXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZXMpLm1hcCgoa2V5KSA9PlxuICAgICAgICAgICAgICAgIGFjdGlvbnNba2V5IGFzIGtleW9mIEN1aUluc3RydWN0aW9uRm9ybVZhbHVlc10odmFsdWVzW2tleSBhcyBrZXlvZiBDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXNdIHx8ICcnKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtVmFsaWRhdGlvbkNoYW5nZWQoaXNWYWxpZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRm9ybVZhbGlkLnNldChpc1ZhbGlkKTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uQ2hhbmdlZC5lbWl0KGlzVmFsaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdENhdGVnb3J5RWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5KCk7XG4gICAgICAgICAgICBjb25zdCBzdG9yYWdlT2JqZWN0SW5zdHJ1Y3Rpb24gPSB1bnRyYWNrZWQodGhpcy5pbnN0cnVjdGlvbik7XG5cbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkgfHwgdGhpcy5za2lwQ2F0ZWdvcnlDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBDYXRlZ29yeUNoYW5nZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RvcmFnZU9iamVjdEluc3RydWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDYXRlZ29yeShjYXRlZ29yeS5pZCwgc3RvcmFnZU9iamVjdEluc3RydWN0aW9uLmlkKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVJbnN0cnVjdGlvbihjYXRlZ29yeS5pZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdENvbmZpZ0VmZmVjdCgpOiB2b2lkIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQoKT8ubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmVkaXRvckNvbmZpZy5zZXQoeyAuLi50aGlzLmNvbmZpZygpLCBlbGVtZW50IH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRDYXRlZ29yeSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZU9iamVjdElkID0gdGhpcy5pbnN0cnVjdGlvbigpPy5pZDtcblxuICAgICAgICBpZiAoIXN0b3JhZ2VPYmplY3RJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlU3RydWN0TmF2aWdhdG9yQXBpU2VydmljZVxuICAgICAgICAgICAgLmdldENhdGVnb3J5KHN0b3JhZ2VPYmplY3RJZCwgVHJlZVN0cnVjdFR5cGUuSW5zdHJ1Y3Rpb24sIHRoaXMuY29uZmlnKCkucmVxdWVzdE9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwQ2F0ZWdvcnlDaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldkNhdGVnb3J5SWQuc2V0KGNhdGVnb3J5LmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1aUNhdGVnb3JpZXNNb2RhbFNlcnZpY2Uuc2V0Q3VycmVudENhdGVnb3J5KGNhdGVnb3J5IGFzIFRyZWVTdHJ1Y3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcsIHRhcmdldElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldkNhdGVnb3J5SWQgPSB1bnRyYWNrZWQodGhpcy5wcmV2Q2F0ZWdvcnlJZCk7XG5cbiAgICAgICAgaWYgKCFwcmV2Q2F0ZWdvcnlJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50cmVlU3RydWN0TmF2aWdhdG9yQXBpU2VydmljZVxuICAgICAgICAgICAgLm1vdmVFbGVtZW50KHtcbiAgICAgICAgICAgICAgICB0eXBlOiBNb3ZpbmdUeXBlLlRBUkdFVF9UUkVFX1NUUlVDVCxcbiAgICAgICAgICAgICAgICBtb3ZhYmxlSXRlbUlkOiB0YXJnZXRJZCxcbiAgICAgICAgICAgICAgICB0cmVlU3RydWN0VGFyZ2V0SXRlbUlkOiBjYXRlZ29yeUlkLFxuICAgICAgICAgICAgICAgIHRyZWVTdHJ1Y3RNb3ZhYmxlSXRlbUlkOiBwcmV2Q2F0ZWdvcnlJZFxuICAgICAgICAgICAgfSwgdGhpcy5jb25maWcoKS5yZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5wcmV2Q2F0ZWdvcnlJZC5zZXQoY2F0ZWdvcnlJZCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSW5zdHJ1Y3Rpb24oY2F0ZWdvcnlJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5zdHJ1Y3Rpb25DcmVhdGVkLmVtaXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgIHRoaXMucHJldkNhdGVnb3J5SWQuc2V0KGNhdGVnb3J5SWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlVGl0bGUodmFsdWU6IHN0cmluZywgaW5zdHJ1Y3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluc3RydWN0aW9uQXBpU2VydmljZS5jaGFuZ2VUaXRsZShpbnN0cnVjdGlvbklkLCB2YWx1ZSwgdGhpcy5jb25maWcoKS5yZXF1ZXN0T3B0aW9ucykucGlwZShcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0cnVjdGlvbi51cGRhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXYhLFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlRWxlbWVudDogeyAuLi5wcmV2IS5zdG9yYWdlRWxlbWVudCwgdGl0bGU6IHZhbHVlIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZURlc2NyaXB0aW9uKHZhbHVlOiBzdHJpbmcsIGluc3RydWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuaW5zdHJ1Y3Rpb25BcGlTZXJ2aWNlLmNoYW5nZURlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5nZSBkZXNjcmlwdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluc3RydWN0aW9uQXBpU2VydmljZS5jaGFuZ2VEZXNjcmlwdGlvbihpbnN0cnVjdGlvbklkLCB2YWx1ZSwgdGhpcy5jb25maWcoKS5yZXF1ZXN0T3B0aW9ucykucGlwZShcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0cnVjdGlvbi51cGRhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXYhLFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlRWxlbWVudDogeyAuLi5wcmV2IS5zdG9yYWdlRWxlbWVudCwgc2hvcnREZXNjcmlwdGlvbjogdmFsdWUgfVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cIndyYXBwZXJcIlxuICAgICp0cmFuc2xvY289XCJsZXQgdFwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjc2Nyb2xsQ29udGVudFxuICAgICAgICBjbGFzcz1cImNvbnRlbnQgY29udGVudF9zY3JvbGxhYmxlXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeVwiPlxuICAgICAgICAgICAgPGN1aS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjdWlMYWJlbFxuICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNhdGVnb3J5SWRcIlxuICAgICAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ1NFTEVDVF9DQVRFR09SWScpIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8Y3VpLWNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvbklkXT1cImNhdGVnb3J5SWRcIlxuICAgICAgICAgICAgICAgICAgICBbdHJlZVN0cnVjdFR5cGVdPVwiVFlQRVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwibGFiZWxDb2xvcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0VGl0bGUoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y3VpLXN2ZyBpY29uPVwiY3VpSWNvbkNoZXZyb25Eb3duXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9jdWktY2F0ZWdvcmllcz5cbiAgICAgICAgICAgIDwvY3VpLWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBsZXQgaW5zdHJ1Y3Rpb25EYXRhID0gaW5zdHJ1Y3Rpb24oKTtcbiAgICAgICAgQGxldCBlZGl0b3JDb25maWdEYXRhID0gZWRpdG9yQ29uZmlnKCk7XG5cbiAgICAgICAgQGlmIChlZGl0b3JDb25maWdEYXRhICYmIGluc3RydWN0aW9uRGF0YSkge1xuICAgICAgICAgICAgPGN1aS1pbnN0cnVjdGlvbi1pbmZvLWZvcm1cbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImVkaXRvckNvbmZpZ0RhdGFcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpbnN0cnVjdGlvbkRhdGEuc3RvcmFnZUVsZW1lbnQudGl0bGVcIlxuICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJpbnN0cnVjdGlvbkRhdGEuc3RvcmFnZUVsZW1lbnQuc2hvcnREZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgW2ZyYW1lcklkXT1cImluc3RydWN0aW9uRGF0YS5zdG9yYWdlRWxlbWVudC5mcmFtZXJJbnN0cnVjdGlvbklkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInV0aWxpdHlcIlxuICAgICAgICAgICAgICAgIChpc0Zvcm1WYWxpZENoYW5nZWQpPVwib25Gb3JtVmFsaWRhdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGZvcm1DaGFuZ2VkKT1cIm9uRm9ybUNoYW5nZWQoJGV2ZW50LCBpbnN0cnVjdGlvbkRhdGEuaWQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,14 +1,14 @@
1
1
  import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
3
  import { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';
4
+ import { CuiFrameApiService, CuiResourceApiService } from '@cuby-ui/api';
5
+ import { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';
4
6
  import { TranslocoDirective } from '@jsverse/transloco';
5
7
  import { debounceTime, map, pairwise, startWith } from 'rxjs';
6
- import { CuiFrameApiService } from '@cuby-ui/api';
7
- import { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';
8
8
  import { CuiAccordionModule, CuiButtonModule, CuiFormFieldModule, CuiHintModule, CuiInputModule, CuiLabelModule } from '../../../components';
9
+ import { CuiEditorBlockComponent } from '../../../editor';
9
10
  import { cuiCreateDefaultValidators } from '../../../utils';
10
11
  import { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';
11
- import { CuiEditorBlockComponent } from '../../../editor';
12
12
  import { CuiUtilityThumbnailComponent } from '../utility-thumbnail';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "../../../components/form-field/form-field.component";
@@ -32,6 +32,7 @@ export class CuiInstructionInfoFormComponent {
32
32
  this.destroy = inject(DestroyRef);
33
33
  this.formBuilder = inject(NonNullableFormBuilder);
34
34
  this.frameApiService = inject(CuiFrameApiService);
35
+ this.resourceApiService = inject(CuiResourceApiService);
35
36
  this.cuiIdService = inject(CuiIdService);
36
37
  this.CONTROL_DELAY = 500;
37
38
  this.titleId = this.cuiIdService.generate();
@@ -47,7 +48,6 @@ export class CuiInstructionInfoFormComponent {
47
48
  this.title = input.required();
48
49
  this.description = input.required();
49
50
  this.framerId = input.required();
50
- this.baseResourceUrl = input.required();
51
51
  this.config = input.required();
52
52
  this.formChanged = output();
53
53
  this.isFormValidChanged = output();
@@ -87,7 +87,7 @@ export class CuiInstructionInfoFormComponent {
87
87
  if (!frameId) {
88
88
  return;
89
89
  }
90
- this.frameApiService.getFrame(frameId).subscribe((frame) => {
90
+ this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {
91
91
  frame.fragments.forEach((fragment) => {
92
92
  if (fragment.type === "J_TEXT" /* FragmentType.jText */) {
93
93
  this.editorId.set(fragment?.id);
@@ -112,12 +112,18 @@ export class CuiInstructionInfoFormComponent {
112
112
  return changedFields;
113
113
  }
114
114
  setResourceFile(resource) {
115
- const url = this.baseResourceUrl() + resource.fileId;
116
- this.thumbnail.set(resource);
117
- if (!url || resource?.name?.split('.').pop() !== 'mp4') {
115
+ if (!resource.fileId) {
118
116
  return;
119
117
  }
120
- this.getCaptureFromVideo(url);
118
+ this.resourceApiService.get(resource.fileId, this.config().requestOptions)
119
+ .pipe(takeUntilDestroyed(this.destroy), map((url) => URL.createObjectURL(url)))
120
+ .subscribe((url) => {
121
+ this.thumbnail.set({ ...resource, resource: url });
122
+ if (!url || resource?.name?.split('.').pop() !== 'mp4') {
123
+ return;
124
+ }
125
+ this.getCaptureFromVideo(url);
126
+ });
121
127
  }
122
128
  getCaptureFromVideo(url, file) {
123
129
  takeCaptureFromVideo(url).then((capture) => {
@@ -132,7 +138,7 @@ export class CuiInstructionInfoFormComponent {
132
138
  return !this.isDescriptionEmpty() && !this.form.invalid;
133
139
  }
134
140
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionInfoFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionInfoFormComponent, isStandalone: true, selector: "cui-instruction-info-form", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, baseResourceUrl: { classPropertyName: "baseResourceUrl", publicName: "baseResourceUrl", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formChanged: "formChanged", isFormValidChanged: "isFormValidChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-utility-thumbnail\n [baseResourceUrl]=\"baseResourceUrl()\"\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiEditorBlockComponent, selector: "cui-editor-block", inputs: ["title", "editorId", "config", "required"], outputs: ["editorEmpty"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: i1.CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: i2.CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: i3.CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: i4.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i5.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: i6.CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "component", type: CuiUtilityThumbnailComponent, selector: "cui-utility-thumbnail", inputs: ["thumbnail", "framerId", "baseResourceUrl"], outputs: ["thumbnailChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionInfoFormComponent, isStandalone: true, selector: "cui-instruction-info-form", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formChanged: "formChanged", isFormValidChanged: "isFormValidChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-utility-thumbnail\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiEditorBlockComponent, selector: "cui-editor-block", inputs: ["title", "editorId", "config", "required"], outputs: ["editorEmpty"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: i1.CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: i2.CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: i3.CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: i4.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i5.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: i6.CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "component", type: CuiUtilityThumbnailComponent, selector: "cui-utility-thumbnail", inputs: ["thumbnail", "framerId"], outputs: ["thumbnailChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
136
142
  }
137
143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionInfoFormComponent, decorators: [{
138
144
  type: Component,
@@ -148,6 +154,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
148
154
  CuiUtilityThumbnailComponent,
149
155
  ReactiveFormsModule,
150
156
  TranslocoDirective
151
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-utility-thumbnail\n [baseResourceUrl]=\"baseResourceUrl()\"\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"] }]
157
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-utility-thumbnail\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"] }]
152
158
  }], ctorParameters: () => [] });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9pbnN0cnVjdGlvbi1pbmZvLWZvcm0vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9pbnN0cnVjdGlvbi1pbmZvLWZvcm0vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0sY0FBYyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2QsY0FBYyxFQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFB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O0lBQzVELENBQUM7K0dBMUpRLCtCQUErQjttR0FBL0IsK0JBQStCLG0wQkM5QzVDLG9vRUFvRUEsMlVEdkNRLGtCQUFrQiw4QkFDbEIsZUFBZSwrQkFDZix1QkFBdUIsMklBQ3ZCLGtCQUFrQixrSEFDbEIsbUNBQW1DLDRHQUNuQyxhQUFhLDhCQUNiLGNBQWMsb2ZBQ2QsY0FBYyx1SUFDZCw0QkFBNEIscUpBQzVCLG1CQUFtQiwwVEFDbkIsa0JBQWtCOzs0RkFPYiwrQkFBK0I7a0JBcEIzQyxTQUFTOytCQUNJLDJCQUEyQixXQUM1Qjt3QkFDTCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLG1DQUFtQzt3QkFDbkMsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsNEJBQTRCO3dCQUM1QixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDckIsY0FDVyxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlRnJhZ21lbnQgfSBmcm9tICdAY3VieS11aS9hcGknO1xuaW1wb3J0IHsgQ3VpRnJhbWVBcGlTZXJ2aWNlLCBGcmFnbWVudFR5cGUgfSBmcm9tICdAY3VieS11aS9hcGknO1xuaW1wb3J0IHR5cGUgeyBDdWlOdWxsYWJsZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgeyBDdWlJZFNlcnZpY2UsIHRha2VDYXB0dXJlRnJvbVZpZGVvIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcblxuaW1wb3J0IHtcbiAgICBDdWlBY2NvcmRpb25Nb2R1bGUsXG4gICAgQ3VpQnV0dG9uTW9kdWxlLFxuICAgIEN1aUZvcm1GaWVsZE1vZHVsZSxcbiAgICBDdWlIaW50TW9kdWxlLFxuICAgIEN1aUlucHV0TW9kdWxlLFxuICAgIEN1aUxhYmVsTW9kdWxlXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgY3VpQ3JlYXRlRGVmYXVsdFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDdWlHZW5lcmFsQ29udHJvbEVycm9ySGludENvbXBvbmVudCB9IGZyb20gJy4uL2dlbmVyYWwtY29udHJvbC1lcnJvci1oaW50JztcbmltcG9ydCB7IEN1aUVkaXRvckJsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yJztcbmltcG9ydCB0eXBlIHsgQ3VpRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yJztcbmltcG9ydCB7IEN1aVV0aWxpdHlUaHVtYm5haWxDb21wb25lbnQgfSBmcm9tICcuLi91dGlsaXR5LXRodW1ibmFpbCc7XG5cbmltcG9ydCB0eXBlIHsgQ3VpSW5zdHJ1Y3Rpb25Gb3JtR3JvdXAsIEN1aUluc3RydWN0aW9uRm9ybVZhbHVlcyB9IGZyb20gJy4vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1pbnN0cnVjdGlvbi1pbmZvLWZvcm0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUVkaXRvckJsb2NrQ29tcG9uZW50LFxuICAgICAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIEN1aUdlbmVyYWxDb250cm9sRXJyb3JIaW50Q29tcG9uZW50LFxuICAgICAgICBDdWlIaW50TW9kdWxlLFxuICAgICAgICBDdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgICAgIEN1aVV0aWxpdHlUaHVtYm5haWxDb21wb25lbnQsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRyYW5zbG9jb0RpcmVjdGl2ZVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDdWlJbnN0cnVjdGlvbkluZm9Gb3JtQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChOb25OdWxsYWJsZUZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZyYW1lQXBpU2VydmljZSA9IGluamVjdChDdWlGcmFtZUFwaVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpSWRTZXJ2aWNlID0gaW5qZWN0KEN1aUlkU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ09OVFJPTF9ERUxBWSA9IDUwMDtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB0aXRsZUlkID0gdGhpcy5jdWlJZFNlcnZpY2UuZ2VuZXJhdGUoKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzY3JpcHRpb25JZCA9IHRoaXMuY3VpSWRTZXJ2aWNlLmdlbmVyYXRlKCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwPEN1aUluc3RydWN0aW9uRm9ybUdyb3VwPih7XG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woJycsIGN1aUNyZWF0ZURlZmF1bHRWYWxpZGF0b3JzKHsgYXN5bmNEZWxheTogdGhpcy5DT05UUk9MX0RFTEFZIH0pKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCgnJywgY3VpQ3JlYXRlRGVmYXVsdFZhbGlkYXRvcnMoeyBhc3luY0RlbGF5OiB0aGlzLkNPTlRST0xfREVMQVkgfSkpXG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgaGVhZGluZzogQ3VpTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEZXNjcmlwdGlvbkVtcHR5ID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdG9ySWQgPSBzaWduYWw8Q3VpTnVsbGFibGU8c3RyaW5nPj4obnVsbCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRodW1ibmFpbCA9IHNpZ25hbDxDdWlOdWxsYWJsZTxSZXNvdXJjZUZyYWdtZW50Pj4obnVsbCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBmcmFtZXJJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYmFzZVJlc291cmNlVXJsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxDdWlFZGl0b3JDb25maWc+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybUNoYW5nZWQgPSBvdXRwdXQ8UGFydGlhbDxDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXM+PigpO1xuICAgIHB1YmxpYyByZWFkb25seSBpc0Zvcm1WYWxpZENoYW5nZWQgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICAgIHByb3RlY3RlZCBnZXQgY29udHJvbHMoKTogQ3VpSW5zdHJ1Y3Rpb25Gb3JtR3JvdXAge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaXNUaXRsZUVycm9yKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9scy50aXRsZS5pbnZhbGlkICYmIHRoaXMuY29udHJvbHMudGl0bGUuZGlydHk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc0Rlc2NyaXB0aW9uRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLmRlc2NyaXB0aW9uLmludmFsaWQgJiYgdGhpcy5jb250cm9scy5kZXNjcmlwdGlvbi5kaXJ0eTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbml0VXRpbGl0eUVmZmVjdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkVkaXRvckVtcHR5KGlzRW1wdHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Rlc2NyaXB0aW9uRW1wdHkuc2V0KGlzRW1wdHkpO1xuICAgICAgICB0aGlzLmlzRm9ybVZhbGlkQ2hhbmdlZC5lbWl0KHRoaXMuY2hlY2tGb3JtVmFsaWRhdGlvbigpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRVdGlsaXR5RWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlZmZlY3RSZWYgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRpdGxlKCk7XG5cbiAgICAgICAgICAgIGlmICghdGl0bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdEZvcm1TdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRGcmFtZUZyYWdtZW50cygpO1xuICAgICAgICAgICAgZWZmZWN0UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Rm9ybVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7IHRpdGxlOiB0aGlzLnRpdGxlKCksIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uKCkgfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pc0Zvcm1WYWxpZENoYW5nZWQuZW1pdCh0aGlzLmNoZWNrRm9ybVZhbGlkYXRpb24oKSkpO1xuXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3kpLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmZvcm0udmFsdWUpLFxuICAgICAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuQ09OVFJPTF9ERUxBWSksXG4gICAgICAgICAgICAgICAgbWFwKChbcHJldiwgY3VycmVudF0pID0+IHRoaXMuY29tcGFyZUZvcm1WYWx1ZXMoW3ByZXYsIGN1cnJlbnRdKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DaGFuZ2VkLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RnJhbWVGcmFnbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZyYW1lSWQgPSB0aGlzLmZyYW1lcklkKCk7XG5cbiAgICAgICAgaWYgKCFmcmFtZUlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZyYW1lQXBpU2VydmljZS5nZXRGcmFtZShmcmFtZUlkKS5zdWJzY3JpYmUoKGZyYW1lKSA9PiB7XG4gICAgICAgICAgICBmcmFtZS5mcmFnbWVudHMuZm9yRWFjaCgoZnJhZ21lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSA9PT0gRnJhZ21lbnRUeXBlLmpUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9ySWQuc2V0KGZyYWdtZW50Py5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgPT09IEZyYWdtZW50VHlwZS5yZXNvdXJjZUZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXNvdXJjZUZpbGUoZnJhZ21lbnQgYXMgUmVzb3VyY2VGcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcGFyZUZvcm1WYWx1ZXMoW1xuICAgICAgICBwcmV2R3JvdXAsXG4gICAgICAgIGN1cnJlbnRHcnVvcFxuICAgIF06IFBhcnRpYWw8Q3VpSW5zdHJ1Y3Rpb25Gb3JtVmFsdWVzPltdKTogUGFydGlhbDxDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXM+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRHcnVvcCkgYXMgKGtleW9mIEN1aUluc3RydWN0aW9uRm9ybVZhbHVlcylbXTtcbiAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IHByZXZHcm91cFtrZXldO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGN1cnJlbnRHcnVvcFtrZXldO1xuXG4gICAgICAgICAgICBpZiAocHJldiA9PT0gY3VycmVudCB8fCB0aGlzLmNvbnRyb2xzW2tleV0uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2hhbmdlZEZpZWxkc1trZXldID0gY3VycmVudDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRGaWVsZHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRSZXNvdXJjZUZpbGUocmVzb3VyY2U6IFJlc291cmNlRnJhZ21lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5iYXNlUmVzb3VyY2VVcmwoKSArIHJlc291cmNlLmZpbGVJZCE7XG5cbiAgICAgICAgdGhpcy50aHVtYm5haWwuc2V0KHJlc291cmNlKTtcblxuICAgICAgICBpZiAoIXVybCB8fCByZXNvdXJjZT8ubmFtZT8uc3BsaXQoJy4nKS5wb3AoKSAhPT0gJ21wNCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdHVyZUZyb21WaWRlbyh1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2FwdHVyZUZyb21WaWRlbyh1cmw6IHN0cmluZywgZmlsZT86IEZpbGUpOiB2b2lkIHtcbiAgICAgICAgdGFrZUNhcHR1cmVGcm9tVmlkZW8odXJsKS50aGVuKChjYXB0dXJlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbC51cGRhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucHJldiEsXG4gICAgICAgICAgICAgICAgbmFtZTogKGZpbGU/Lm5hbWUgPz8gcHJldj8ubmFtZSkhLFxuICAgICAgICAgICAgICAgIHJlc291cmNlOiBjYXB0dXJlXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGb3JtVmFsaWRhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRGVzY3JpcHRpb25FbXB0eSgpICYmICF0aGlzLmZvcm0uaW52YWxpZDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdFwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8Y3VpLWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBjdWlMYWJlbFxuICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtmb3JdPVwidGl0bGVJZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdCgnVElUTEUnKSB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgPGN1aS1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgW2N1aVRleHRGaWVsZElkXT1cInRpdGxlSWRcIlxuICAgICAgICAgICAgICAgIFtjdWlUZXh0RmllbGRQbGFjZWhvbGRlcl09XCJ0KCdBRERfQV9USVRMRScpXCJcbiAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCJpc1RpdGxlRXJyb3JcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLnRpdGxlXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIEBpZiAoaXNUaXRsZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgPGN1aS1nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludFxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJmb3JtLmNvbnRyb2xzLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzVmlzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2N1aS1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxjdWktZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGN1aUxhYmVsXG4gICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJkZXNjcmlwdGlvbklkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0KCdTSE9SVF9ERVNDUklQVElPTicpIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICA8Y3VpLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSWRdPVwiZGVzY3JpcHRpb25JZFwiXG4gICAgICAgICAgICAgICAgY3VpVGV4dEZpZWxkUGxhY2Vob2xkZXI9XCJ7eyB0KCdTSE9SVF9ERVNDUklQVElPTicpIH19Li4uXCJcbiAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCJpc0Rlc2NyaXB0aW9uRXJyb3JcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIEBpZiAoaXNEZXNjcmlwdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgPGN1aS1nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludFxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJmb3JtLmNvbnRyb2xzLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzVmlzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2N1aS1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxjdWktdXRpbGl0eS10aHVtYm5haWxcbiAgICAgICAgICAgIFtiYXNlUmVzb3VyY2VVcmxdPVwiYmFzZVJlc291cmNlVXJsKClcIlxuICAgICAgICAgICAgW2ZyYW1lcklkXT1cImZyYW1lcklkKClcIlxuICAgICAgICAgICAgWyh0aHVtYm5haWwpXT1cInRodW1ibmFpbFwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGlmIChlZGl0b3JJZCgpOyBhcyBlZGl0b3JJZCkge1xuICAgICAgICAgICAgPGN1aS1lZGl0b3ItYmxvY2tcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZm9ybS5jb250cm9scy50aXRsZS52YWx1ZSB8fCB0aXRsZSgpXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZygpXCJcbiAgICAgICAgICAgICAgICBbZWRpdG9ySWRdPVwiZWRpdG9ySWRcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRvclwiXG4gICAgICAgICAgICAgICAgKGVkaXRvckVtcHR5KT1cIm9uRWRpdG9yRW1wdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9pbnN0cnVjdGlvbi1pbmZvLWZvcm0vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9pbnN0cnVjdGlvbi1pbmZvLWZvcm0vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFnQixNQUFNLGNBQWMsQ0FBQztBQUV2RixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2QsY0FBYyxFQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUF3QnBFLE1BQU0sT0FBTywrQkFBK0I7SUE4QnhDLElBQWMsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFjLFlBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFjLGtCQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEYsQ0FBQztJQUVEO1FBekNpQixZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuRCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVsQyxrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUVwQixZQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0MsU0FBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUEwQjtZQUN0RSxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLDBCQUEwQixDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ25HLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsMEJBQTBCLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDNUcsQ0FBQyxDQUFDO1FBRU8sWUFBTyxHQUF3QixJQUFJLENBQUM7UUFFM0IsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxNQUFNLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBQzdDLGNBQVMsR0FBRyxNQUFNLENBQWdDLElBQUksQ0FBQyxDQUFDO1FBRTNELFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDdkMsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNwQyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBbUIsQ0FBQztRQUUzQyxnQkFBVyxHQUFHLE1BQU0sRUFBcUMsQ0FBQztRQUMxRCx1QkFBa0IsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQWVuRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRVMsYUFBYSxDQUFDLE9BQWdCO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxpQkFBaUI7UUFDckIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFM0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNULE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHFCQUFxQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFbkcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2FBQ2xCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9FLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTthQUNqQixJQUFJLENBQ0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDMUIsUUFBUSxFQUFFLEVBQ1YsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDaEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQ3BFO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxRQUFRLENBQUMsSUFBSSxzQ0FBdUIsRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7Z0JBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxvREFBOEIsRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQTRCLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8saUJBQWlCLENBQUMsQ0FDdEIsU0FBUyxFQUNULFlBQVksQ0FDc0I7UUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQXVDLENBQUM7UUFDN0UsTUFBTSxhQUFhLEdBQTRCLEVBQUUsQ0FBQztRQUVsRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVsQyxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakQsT0FBTztZQUNYLENBQUM7WUFFRCxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUEwQjtRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDckUsSUFBSSxDQUNELGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDaEMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3pDO2FBQ0EsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRW5ELElBQUksQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3JELE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxJQUFXO1FBQ2hELG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QixHQUFHLElBQUs7Z0JBQ1IsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFFO2dCQUNqQyxRQUFRLEVBQUUsT0FBTzthQUNwQixDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM1RCxDQUFDOytHQW5LUSwrQkFBK0I7bUdBQS9CLCtCQUErQiw4cUJDOUM1Qywra0VBbUVBLDJVRHRDUSxrQkFBa0IsOEJBQ2xCLGVBQWUsK0JBQ2YsdUJBQXVCLDJJQUN2QixrQkFBa0Isa0hBQ2xCLG1DQUFtQyw0R0FDbkMsYUFBYSw4QkFDYixjQUFjLG9mQUNkLGNBQWMsdUlBQ2QsNEJBQTRCLGtJQUM1QixtQkFBbUIsMFRBQ25CLGtCQUFrQjs7NEZBT2IsK0JBQStCO2tCQXBCM0MsU0FBUzsrQkFDSSwyQkFBMkIsV0FDNUI7d0JBQ0wsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQixtQ0FBbUM7d0JBQ25DLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLDRCQUE0Qjt3QkFDNUIsbUJBQW1CO3dCQUNuQixrQkFBa0I7cUJBQ3JCLGNBQ1csSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTm9uTnVsbGFibGVGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VGcmFnbWVudCB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XG5pbXBvcnQgeyBDdWlGcmFtZUFwaVNlcnZpY2UsIEN1aVJlc291cmNlQXBpU2VydmljZSwgRnJhZ21lbnRUeXBlIH0gZnJvbSAnQGN1YnktdWkvYXBpJztcbmltcG9ydCB0eXBlIHsgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgQ3VpSWRTZXJ2aWNlLCB0YWtlQ2FwdHVyZUZyb21WaWRlbyB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgeyBUcmFuc2xvY29EaXJlY3RpdmUgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBDdWlBY2NvcmRpb25Nb2R1bGUsXG4gICAgQ3VpQnV0dG9uTW9kdWxlLFxuICAgIEN1aUZvcm1GaWVsZE1vZHVsZSxcbiAgICBDdWlIaW50TW9kdWxlLFxuICAgIEN1aUlucHV0TW9kdWxlLFxuICAgIEN1aUxhYmVsTW9kdWxlXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBDdWlFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi8uLi9lZGl0b3InO1xuaW1wb3J0IHsgQ3VpRWRpdG9yQmxvY2tDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lZGl0b3InO1xuaW1wb3J0IHsgY3VpQ3JlYXRlRGVmYXVsdFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDdWlHZW5lcmFsQ29udHJvbEVycm9ySGludENvbXBvbmVudCB9IGZyb20gJy4uL2dlbmVyYWwtY29udHJvbC1lcnJvci1oaW50JztcbmltcG9ydCB7IEN1aVV0aWxpdHlUaHVtYm5haWxDb21wb25lbnQgfSBmcm9tICcuLi91dGlsaXR5LXRodW1ibmFpbCc7XG5cbmltcG9ydCB0eXBlIHsgQ3VpSW5zdHJ1Y3Rpb25Gb3JtR3JvdXAsIEN1aUluc3RydWN0aW9uRm9ybVZhbHVlcyB9IGZyb20gJy4vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1pbnN0cnVjdGlvbi1pbmZvLWZvcm0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUVkaXRvckJsb2NrQ29tcG9uZW50LFxuICAgICAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIEN1aUdlbmVyYWxDb250cm9sRXJyb3JIaW50Q29tcG9uZW50LFxuICAgICAgICBDdWlIaW50TW9kdWxlLFxuICAgICAgICBDdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgICAgIEN1aVV0aWxpdHlUaHVtYm5haWxDb21wb25lbnQsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRyYW5zbG9jb0RpcmVjdGl2ZVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaW5zdHJ1Y3Rpb24taW5mby1mb3JtLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDdWlJbnN0cnVjdGlvbkluZm9Gb3JtQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChOb25OdWxsYWJsZUZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZyYW1lQXBpU2VydmljZSA9IGluamVjdChDdWlGcmFtZUFwaVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VBcGlTZXJ2aWNlID0gaW5qZWN0KEN1aVJlc291cmNlQXBpU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlJZFNlcnZpY2UgPSBpbmplY3QoQ3VpSWRTZXJ2aWNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBDT05UUk9MX0RFTEFZID0gNTAwO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlSWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXNjcmlwdGlvbklkID0gdGhpcy5jdWlJZFNlcnZpY2UuZ2VuZXJhdGUoKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXA8Q3VpSW5zdHJ1Y3Rpb25Gb3JtR3JvdXA+KHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCgnJywgY3VpQ3JlYXRlRGVmYXVsdFZhbGlkYXRvcnMoeyBhc3luY0RlbGF5OiB0aGlzLkNPTlRST0xfREVMQVkgfSkpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKCcnLCBjdWlDcmVhdGVEZWZhdWx0VmFsaWRhdG9ycyh7IGFzeW5jRGVsYXk6IHRoaXMuQ09OVFJPTF9ERUxBWSB9KSlcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCBoZWFkaW5nOiBDdWlOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0Rlc2NyaXB0aW9uRW1wdHkgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlZGl0b3JJZCA9IHNpZ25hbDxDdWlOdWxsYWJsZTxzdHJpbmc+PihudWxsKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGh1bWJuYWlsID0gc2lnbmFsPEN1aU51bGxhYmxlPFJlc291cmNlRnJhZ21lbnQ+PihudWxsKTtcblxuICAgIHB1YmxpYyByZWFkb25seSB0aXRsZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGZyYW1lcklkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxDdWlFZGl0b3JDb25maWc+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybUNoYW5nZWQgPSBvdXRwdXQ8UGFydGlhbDxDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXM+PigpO1xuICAgIHB1YmxpYyByZWFkb25seSBpc0Zvcm1WYWxpZENoYW5nZWQgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICAgIHByb3RlY3RlZCBnZXQgY29udHJvbHMoKTogQ3VpSW5zdHJ1Y3Rpb25Gb3JtR3JvdXAge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaXNUaXRsZUVycm9yKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9scy50aXRsZS5pbnZhbGlkICYmIHRoaXMuY29udHJvbHMudGl0bGUuZGlydHk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc0Rlc2NyaXB0aW9uRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLmRlc2NyaXB0aW9uLmludmFsaWQgJiYgdGhpcy5jb250cm9scy5kZXNjcmlwdGlvbi5kaXJ0eTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbml0VXRpbGl0eUVmZmVjdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkVkaXRvckVtcHR5KGlzRW1wdHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Rlc2NyaXB0aW9uRW1wdHkuc2V0KGlzRW1wdHkpO1xuICAgICAgICB0aGlzLmlzRm9ybVZhbGlkQ2hhbmdlZC5lbWl0KHRoaXMuY2hlY2tGb3JtVmFsaWRhdGlvbigpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRVdGlsaXR5RWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlZmZlY3RSZWYgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRpdGxlKCk7XG5cbiAgICAgICAgICAgIGlmICghdGl0bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdEZvcm1TdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRGcmFtZUZyYWdtZW50cygpO1xuICAgICAgICAgICAgZWZmZWN0UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Rm9ybVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7IHRpdGxlOiB0aGlzLnRpdGxlKCksIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uKCkgfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pc0Zvcm1WYWxpZENoYW5nZWQuZW1pdCh0aGlzLmNoZWNrRm9ybVZhbGlkYXRpb24oKSkpO1xuXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3kpLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmZvcm0udmFsdWUpLFxuICAgICAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuQ09OVFJPTF9ERUxBWSksXG4gICAgICAgICAgICAgICAgbWFwKChbcHJldiwgY3VycmVudF0pID0+IHRoaXMuY29tcGFyZUZvcm1WYWx1ZXMoW3ByZXYsIGN1cnJlbnRdKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DaGFuZ2VkLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RnJhbWVGcmFnbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZyYW1lSWQgPSB0aGlzLmZyYW1lcklkKCk7XG5cbiAgICAgICAgaWYgKCFmcmFtZUlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZyYW1lQXBpU2VydmljZS5nZXRGcmFtZShmcmFtZUlkLCB0aGlzLmNvbmZpZygpLnJlcXVlc3RPcHRpb25zKS5zdWJzY3JpYmUoKGZyYW1lKSA9PiB7XG4gICAgICAgICAgICBmcmFtZS5mcmFnbWVudHMuZm9yRWFjaCgoZnJhZ21lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSA9PT0gRnJhZ21lbnRUeXBlLmpUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9ySWQuc2V0KGZyYWdtZW50Py5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgPT09IEZyYWdtZW50VHlwZS5yZXNvdXJjZUZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXNvdXJjZUZpbGUoZnJhZ21lbnQgYXMgUmVzb3VyY2VGcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcGFyZUZvcm1WYWx1ZXMoW1xuICAgICAgICBwcmV2R3JvdXAsXG4gICAgICAgIGN1cnJlbnRHcnVvcFxuICAgIF06IFBhcnRpYWw8Q3VpSW5zdHJ1Y3Rpb25Gb3JtVmFsdWVzPltdKTogUGFydGlhbDxDdWlJbnN0cnVjdGlvbkZvcm1WYWx1ZXM+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRHcnVvcCkgYXMgKGtleW9mIEN1aUluc3RydWN0aW9uRm9ybVZhbHVlcylbXTtcbiAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IHByZXZHcm91cFtrZXldO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGN1cnJlbnRHcnVvcFtrZXldO1xuXG4gICAgICAgICAgICBpZiAocHJldiA9PT0gY3VycmVudCB8fCB0aGlzLmNvbnRyb2xzW2tleV0uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2hhbmdlZEZpZWxkc1trZXldID0gY3VycmVudDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRGaWVsZHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRSZXNvdXJjZUZpbGUocmVzb3VyY2U6IFJlc291cmNlRnJhZ21lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFyZXNvdXJjZS5maWxlSWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldChyZXNvdXJjZS5maWxlSWQsIHRoaXMuY29uZmlnKCkucmVxdWVzdE9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSxcbiAgICAgICAgICAgICAgICBtYXAoKHVybCkgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTCh1cmwpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHVtYm5haWwuc2V0KHsgLi4ucmVzb3VyY2UsIHJlc291cmNlOiB1cmwgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXVybCB8fCByZXNvdXJjZT8ubmFtZT8uc3BsaXQoJy4nKS5wb3AoKSAhPT0gJ21wNCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2FwdHVyZUZyb21WaWRlbyh1cmwpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYXB0dXJlRnJvbVZpZGVvKHVybDogc3RyaW5nLCBmaWxlPzogRmlsZSk6IHZvaWQge1xuICAgICAgICB0YWtlQ2FwdHVyZUZyb21WaWRlbyh1cmwpLnRoZW4oKGNhcHR1cmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsLnVwZGF0ZSgocHJldikgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2ISxcbiAgICAgICAgICAgICAgICBuYW1lOiAoZmlsZT8ubmFtZSA/PyBwcmV2Py5uYW1lKSEsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2U6IGNhcHR1cmVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0Zvcm1WYWxpZGF0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNEZXNjcmlwdGlvbkVtcHR5KCkgJiYgIXRoaXMuZm9ybS5pbnZhbGlkO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxjdWktZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGN1aUxhYmVsXG4gICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJ0aXRsZUlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0KCdUSVRMRScpIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICA8Y3VpLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSWRdPVwidGl0bGVJZFwiXG4gICAgICAgICAgICAgICAgW2N1aVRleHRGaWVsZFBsYWNlaG9sZGVyXT1cInQoJ0FERF9BX1RJVExFJylcIlxuICAgICAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJc0Vycm9yXT1cImlzVGl0bGVFcnJvclwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudGl0bGVcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgQGlmIChpc1RpdGxlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICA8Y3VpLWdlbmVyYWwtY29udHJvbC1lcnJvci1oaW50XG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uY29udHJvbHMudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbaXNWaXNpYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvY3VpLWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPGN1aS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY3VpTGFiZWxcbiAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZm9yXT1cImRlc2NyaXB0aW9uSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQoJ1NIT1JUX0RFU0NSSVBUSU9OJykgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgIDxjdWktaW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJZF09XCJkZXNjcmlwdGlvbklkXCJcbiAgICAgICAgICAgICAgICBjdWlUZXh0RmllbGRQbGFjZWhvbGRlcj1cInt7IHQoJ1NIT1JUX0RFU0NSSVBUSU9OJykgfX0uLi5cIlxuICAgICAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJc0Vycm9yXT1cImlzRGVzY3JpcHRpb25FcnJvclwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgQGlmIChpc0Rlc2NyaXB0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICA8Y3VpLWdlbmVyYWwtY29udHJvbC1lcnJvci1oaW50XG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uY29udHJvbHMuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbaXNWaXNpYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvY3VpLWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPGN1aS11dGlsaXR5LXRodW1ibmFpbFxuICAgICAgICAgICAgW2ZyYW1lcklkXT1cImZyYW1lcklkKClcIlxuICAgICAgICAgICAgWyh0aHVtYm5haWwpXT1cInRodW1ibmFpbFwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGlmIChlZGl0b3JJZCgpOyBhcyBlZGl0b3JJZCkge1xuICAgICAgICAgICAgPGN1aS1lZGl0b3ItYmxvY2tcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZm9ybS5jb250cm9scy50aXRsZS52YWx1ZSB8fCB0aXRsZSgpXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZygpXCJcbiAgICAgICAgICAgICAgICBbZWRpdG9ySWRdPVwiZWRpdG9ySWRcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRvclwiXG4gICAgICAgICAgICAgICAgKGVkaXRvckVtcHR5KT1cIm9uRWRpdG9yRW1wdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=