@cuby-ui/core 0.0.575 → 0.0.577

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.
@@ -36,6 +36,7 @@ export * from './layout';
36
36
  export * from './svg';
37
37
  export * from './tab';
38
38
  export * from './tabs';
39
+ export * from './tree';
39
40
  export * from './textarea';
40
41
  export * from './toggle';
41
42
  export * from './render-dynamic-components';
@@ -16,8 +16,8 @@ export declare class CuiInputNumberComponent implements ControlValueAccessor {
16
16
  protected onChange: CuiOnChange<CuiNullable<number>>;
17
17
  protected onTouched: CuiOnTouched;
18
18
  set precision(value: number);
19
- set min(value: number);
20
- set max(value: number);
19
+ set min(value: CuiNullable<number>);
20
+ set max(value: CuiNullable<number>);
21
21
  protected isDisabled: boolean;
22
22
  protected input: ElementRef<HTMLInputElement>;
23
23
  protected get id(): string | undefined;
@@ -0,0 +1,2 @@
1
+ export { CuiTreeComponent } from './tree.component';
2
+ export * from './tree.options';
@@ -0,0 +1,9 @@
1
+ import type { TemplateRef } from '@angular/core';
2
+ import type { CuiTreeNode, CuiTreeTemplateContext } from './tree.options';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CuiTreeComponent<TData = unknown> {
5
+ readonly nodes: import("@angular/core").InputSignal<CuiTreeNode<TData>[]>;
6
+ readonly nodeTemplate: import("@angular/core").InputSignal<TemplateRef<CuiTreeTemplateContext<TData>>>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiTreeComponent<any>, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiTreeComponent<any>, "cui-tree", never, { "nodes": { "alias": "nodes"; "required": true; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
9
+ }
@@ -0,0 +1,12 @@
1
+ import type { WritableSignal } from '@angular/core';
2
+ export interface CuiTreeNode<TData = unknown> {
3
+ readonly key: string;
4
+ readonly label: string;
5
+ readonly data?: TData;
6
+ readonly children?: CuiTreeNode<TData>[];
7
+ readonly expanded?: WritableSignal<boolean>;
8
+ }
9
+ export interface CuiTreeTemplateContext<TData = unknown> {
10
+ readonly $implicit: CuiTreeNode<TData>;
11
+ readonly level: number;
12
+ }
@@ -36,9 +36,10 @@ export * from './layout';
36
36
  export * from './svg';
37
37
  export * from './tab';
38
38
  export * from './tabs';
39
+ export * from './tree';
39
40
  export * from './textarea';
40
41
  export * from './toggle';
41
42
  export * from './render-dynamic-components';
42
43
  export * from './file-icon';
43
44
  export * from './filter-bar';
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjY29yZGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vYWxlcnQtaGludCc7XG5leHBvcnQgKiBmcm9tICcuL2JhZGdlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFubmVyJztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYnMnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtaGVhZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS1yYW5nZS1jYWxlbmRhcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQtbWVudSc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2hpbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LW51bWJlcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2dob3N0LWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGFzc3dvcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtdGltZSc7XG5leHBvcnQgKiBmcm9tICcuL2xhYmVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGV0dGVyLWJveCc7XG5leHBvcnQgKiBmcm9tICcuLi93aWRnZXRzL3VpL21vZGFsLWhlYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL29wdGlvbnMtYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vcmFkaW8nO1xuZXhwb3J0ICogZnJvbSAnLi9yb290JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vZW1wdHktc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWRlYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC13cmFwcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0JztcbmV4cG9ydCAqIGZyb20gJy4vc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vdGFiJztcbmV4cG9ydCAqIGZyb20gJy4vdGFicyc7XG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhJztcbmV4cG9ydCAqIGZyb20gJy4vdG9nZ2xlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVuZGVyLWR5bmFtaWMtY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtaWNvbic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1iYXInO1xuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjY29yZGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vYWxlcnQtaGludCc7XG5leHBvcnQgKiBmcm9tICcuL2JhZGdlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFubmVyJztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYnMnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtaGVhZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS1yYW5nZS1jYWxlbmRhcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQtbWVudSc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2hpbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LW51bWJlcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2dob3N0LWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGFzc3dvcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtdGltZSc7XG5leHBvcnQgKiBmcm9tICcuL2xhYmVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGV0dGVyLWJveCc7XG5leHBvcnQgKiBmcm9tICcuLi93aWRnZXRzL3VpL21vZGFsLWhlYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL29wdGlvbnMtYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vcmFkaW8nO1xuZXhwb3J0ICogZnJvbSAnLi9yb290JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vZW1wdHktc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWRlYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC13cmFwcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0JztcbmV4cG9ydCAqIGZyb20gJy4vc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vdGFiJztcbmV4cG9ydCAqIGZyb20gJy4vdGFicyc7XG5leHBvcnQgKiBmcm9tICcuL3RyZWUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0YXJlYSc7XG5leHBvcnQgKiBmcm9tICcuL3RvZ2dsZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbmRlci1keW5hbWljLWNvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLWljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXItYmFyJztcbiJdfQ==
@@ -22,11 +22,11 @@ export class CuiInputNumberComponent {
22
22
  this.maskOptions = this.generateMask();
23
23
  }
24
24
  set min(value) {
25
- this._min = value;
25
+ this._min = value ?? this._min;
26
26
  this.maskOptions = this.generateMask();
27
27
  }
28
28
  set max(value) {
29
- this._max = value;
29
+ this._max = value ?? this._max;
30
30
  this.maskOptions = this.generateMask();
31
31
  }
32
32
  get id() {
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
104
104
  type: HostListener,
105
105
  args: ['click']
106
106
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQVVqRyxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBUXFCLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRWxFLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixTQUFJLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLFNBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7S0ErRjVDO0lBMUZHLElBQ1csU0FBUyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FB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MkIsSUFBSSxDQUFDLENBQUM7OEJBZWxHLFNBQVM7c0JBRG5CLEtBQUs7Z0JBT0ssR0FBRztzQkFEYixLQUFLO2dCQU9LLEdBQUc7c0JBRGIsS0FBSztnQkFPSSxVQUFVO3NCQURuQixXQUFXO3VCQUFDLGlCQUFpQjtnQkFJcEIsS0FBSztzQkFEZCxTQUFTO3VCQUFDLE9BQU87Z0JBZ0JKLElBQUk7c0JBRGpCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU1mLE9BQU87c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQThCdEIsT0FBTztzQkFEaEIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yLCBtYXNraXRvUGFyc2VOdW1iZXIgfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHsgQ3VpTnVsbGFibGUsIEN1aU9uQ2hhbmdlLCBDdWlPblRvdWNoZWQgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgY3VpUHJvdmlkZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgdHlwZSB7IEN1aUljb24gfSBmcm9tICdAY3VieS11aS9pY29ucyc7XG5cbmltcG9ydCB7IENVSV9URVhUX0ZJRUxEX0NPTlRST0xMRVIsIENVSV9URVhUX0ZJTEVEX0NPTlRST0xMRVJfUFJPVklERVIgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEN1aVNpemVNZCwgQ3VpU2l6ZVNtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1pbnB1dC1udW1iZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtbnVtYmVyLnN0eWxlLnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtDVUlfVEVYVF9GSUxFRF9DT05UUk9MTEVSX1BST1ZJREVSLCBjdWlQcm92aWRlKE5HX1ZBTFVFX0FDQ0VTU09SLCBDdWlJbnB1dE51bWJlckNvbXBvbmVudCwgdHJ1ZSldXG59KVxuZXhwb3J0IGNsYXNzIEN1aUlucHV0TnVtYmVyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpVGV4dEZpZWxkQ29udHJvbGxlciA9IGluamVjdChDVUlfVEVYVF9GSUVMRF9DT05UUk9MTEVSKTtcblxuICAgIHByb3RlY3RlZCBtYXNrT3B0aW9ucyA9IHRoaXMuZ2VuZXJhdGVNYXNrKCk7XG4gICAgcHJvdGVjdGVkIF9wcmVjaXNpb24gPSAwO1xuICAgIHByb3RlY3RlZCBfbWluID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG4gICAgcHJvdGVjdGVkIF9tYXggPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICBwcm90ZWN0ZWQgdmFsdWUhOiBDdWlOdWxsYWJsZTxzdHJpbmc+O1xuICAgIHByb3RlY3RlZCBvbkNoYW5nZSE6IEN1aU9uQ2hhbmdlPEN1aU51bGxhYmxlPG51bWJlcj4+O1xuICAgIHByb3RlY3RlZCBvblRvdWNoZWQhOiBDdWlPblRvdWNoZWQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcHJlY2lzaW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fcHJlY2lzaW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMubWFza09wdGlvbnMgPSB0aGlzLmdlbmVyYXRlTWFzaygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taW4gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tYXNrT3B0aW9ucyA9IHRoaXMuZ2VuZXJhdGVNYXNrKCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21heCA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1hc2tPcHRpb25zID0gdGhpcy5nZW5lcmF0ZU1hc2soKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9kaXNhYmxlZCcpXG4gICAgcHJvdGVjdGVkIGlzRGlzYWJsZWQhOiBib29sZWFuO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICAgIHByb3RlY3RlZCBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuaWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaWNvbkxlZnQoKTogQ3VpSWNvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuaWNvbkxlZnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgcHJvdGVjdGVkIGdldCBzaXplKCk6IEN1aVNpemVTbSB8IEN1aVNpemVNZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuc2l6ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl93aXRoLWVycm9yJylcbiAgICBwcm90ZWN0ZWQgZ2V0IGlzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuaXNFcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogQ3VpTnVsbGFibGU8bnVtYmVyPik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU/LnRvU3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogQ3VpT25DaGFuZ2U8Q3VpTnVsbGFibGU8bnVtYmVyPj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogQ3VpT25Ub3VjaGVkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSW5wdXQoeyB0YXJnZXQgfTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VNb2RlbCgodGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHJvdGVjdGVkIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlTW9kZWwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UoTnVtYmVyLmlzTmFOKHBhcnNlZFZhbHVlKSA/IG51bGwgOiBwYXJzZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgcHJlY2lzaW9uOiB0aGlzLl9wcmVjaXNpb24sXG4gICAgICAgICAgICBtaW46IHRoaXMuX21pbixcbiAgICAgICAgICAgIG1heDogdGhpcy5fbWF4XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxjdWktc3ZnXG4gICAgKm5nSWY9XCJpY29uTGVmdFwiXG4gICAgW2ljb25dPVwiaWNvbkxlZnRcIlxuICAgIGNvbG9yPVwidmFyKC0tY3VpLWJhc2UtNTAwKVwiXG4+PC9jdWktc3ZnPlxuPGlucHV0XG4gICAgI2lucHV0XG4gICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIFttYXNraXRvXT1cIm1hc2tPcHRpb25zXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgY2xhc3M9XCJjLWlucHV0XCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwib25Ub3VjaGVkKClcIlxuLz5cbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQVVqRyxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBUXFCLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRWxFLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixTQUFJLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLFNBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7S0ErRjVDO0lBMUZHLElBQ1csU0FBUyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FB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Q3BDLENBQUMsa0NBQWtDLEVBQUUsVUFBVSxDQUFDLGlCQUFpQiwyQkFBMkIsSUFBSSxDQUFDLENBQUM7OEJBZWxHLFNBQVM7c0JBRG5CLEtBQUs7Z0JBT0csR0FBRztzQkFEYixLQUFLO2dCQU9LLEdBQUc7c0JBRGIsS0FBSztnQkFPTSxVQUFVO3NCQURuQixXQUFXO3VCQUFDLGlCQUFpQjtnQkFJcEIsS0FBSztzQkFEZCxTQUFTO3VCQUFDLE9BQU87Z0JBZ0JKLElBQUk7c0JBRGpCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU1mLE9BQU87c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQThCdEIsT0FBTztzQkFEaEIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yLCBtYXNraXRvUGFyc2VOdW1iZXIgfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHsgQ3VpTnVsbGFibGUsIEN1aU9uQ2hhbmdlLCBDdWlPblRvdWNoZWQgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgY3VpUHJvdmlkZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgdHlwZSB7IEN1aUljb24gfSBmcm9tICdAY3VieS11aS9pY29ucyc7XG5cbmltcG9ydCB7IENVSV9URVhUX0ZJRUxEX0NPTlRST0xMRVIsIENVSV9URVhUX0ZJTEVEX0NPTlRST0xMRVJfUFJPVklERVIgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEN1aVNpemVNZCwgQ3VpU2l6ZVNtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1pbnB1dC1udW1iZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtbnVtYmVyLnN0eWxlLnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtDVUlfVEVYVF9GSUxFRF9DT05UUk9MTEVSX1BST1ZJREVSLCBjdWlQcm92aWRlKE5HX1ZBTFVFX0FDQ0VTU09SLCBDdWlJbnB1dE51bWJlckNvbXBvbmVudCwgdHJ1ZSldXG59KVxuZXhwb3J0IGNsYXNzIEN1aUlucHV0TnVtYmVyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpVGV4dEZpZWxkQ29udHJvbGxlciA9IGluamVjdChDVUlfVEVYVF9GSUVMRF9DT05UUk9MTEVSKTtcblxuICAgIHByb3RlY3RlZCBtYXNrT3B0aW9ucyA9IHRoaXMuZ2VuZXJhdGVNYXNrKCk7XG4gICAgcHJvdGVjdGVkIF9wcmVjaXNpb24gPSAwO1xuICAgIHByb3RlY3RlZCBfbWluID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG4gICAgcHJvdGVjdGVkIF9tYXggPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICBwcm90ZWN0ZWQgdmFsdWUhOiBDdWlOdWxsYWJsZTxzdHJpbmc+O1xuICAgIHByb3RlY3RlZCBvbkNoYW5nZSE6IEN1aU9uQ2hhbmdlPEN1aU51bGxhYmxlPG51bWJlcj4+O1xuICAgIHByb3RlY3RlZCBvblRvdWNoZWQhOiBDdWlPblRvdWNoZWQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcHJlY2lzaW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fcHJlY2lzaW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMubWFza09wdGlvbnMgPSB0aGlzLmdlbmVyYXRlTWFzaygpO1xuICAgIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbih2YWx1ZTogQ3VpTnVsbGFibGU8bnVtYmVyPikge1xuICAgIHRoaXMuX21pbiA9IHZhbHVlID8/IHRoaXMuX21pbjtcbiAgICB0aGlzLm1hc2tPcHRpb25zID0gdGhpcy5nZW5lcmF0ZU1hc2soKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4KHZhbHVlOiBDdWlOdWxsYWJsZTxudW1iZXI+KSB7XG4gICAgdGhpcy5fbWF4ID0gdmFsdWUgPz8gdGhpcy5fbWF4O1xuICAgIHRoaXMubWFza09wdGlvbnMgPSB0aGlzLmdlbmVyYXRlTWFzaygpO1xuICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9kaXNhYmxlZCcpXG4gICAgcHJvdGVjdGVkIGlzRGlzYWJsZWQhOiBib29sZWFuO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICAgIHByb3RlY3RlZCBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuaWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaWNvbkxlZnQoKTogQ3VpSWNvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuaWNvbkxlZnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgcHJvdGVjdGVkIGdldCBzaXplKCk6IEN1aVNpemVTbSB8IEN1aVNpemVNZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuc2l6ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl93aXRoLWVycm9yJylcbiAgICBwcm90ZWN0ZWQgZ2V0IGlzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIuaXNFcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogQ3VpTnVsbGFibGU8bnVtYmVyPik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU/LnRvU3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogQ3VpT25DaGFuZ2U8Q3VpTnVsbGFibGU8bnVtYmVyPj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogQ3VpT25Ub3VjaGVkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSW5wdXQoeyB0YXJnZXQgfTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VNb2RlbCgodGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHJvdGVjdGVkIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlTW9kZWwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UoTnVtYmVyLmlzTmFOKHBhcnNlZFZhbHVlKSA/IG51bGwgOiBwYXJzZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgcHJlY2lzaW9uOiB0aGlzLl9wcmVjaXNpb24sXG4gICAgICAgICAgICBtaW46IHRoaXMuX21pbixcbiAgICAgICAgICAgIG1heDogdGhpcy5fbWF4XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxjdWktc3ZnXG4gICAgKm5nSWY9XCJpY29uTGVmdFwiXG4gICAgW2ljb25dPVwiaWNvbkxlZnRcIlxuICAgIGNvbG9yPVwidmFyKC0tY3VpLWJhc2UtNTAwKVwiXG4+PC9jdWktc3ZnPlxuPGlucHV0XG4gICAgI2lucHV0XG4gICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIFttYXNraXRvXT1cIm1hc2tPcHRpb25zXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgY2xhc3M9XCJjLWlucHV0XCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwib25Ub3VjaGVkKClcIlxuLz5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { CuiTreeComponent } from './tree.component';
2
+ export * from './tree.options';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvdHJlZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ3VpVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90cmVlLm9wdGlvbnMnO1xuIl19
@@ -0,0 +1,16 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class CuiTreeComponent {
5
+ constructor() {
6
+ this.nodes = input.required();
7
+ this.nodeTemplate = input.required();
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiTreeComponent, isStandalone: true, selector: "cui-tree", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-template\n #branch\n let-items\n let-level=\"level\"\n>\n <ul class=\"list\">\n @for (node of items; track node.key) {\n @let isOpen = node.expanded?.() === true;\n\n <li class=\"item\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate(); context: { $implicit: node, level: level }\" />\n @if (isOpen && node.children?.length) {\n <div class=\"children\">\n <ng-container\n *ngTemplateOutlet=\"branch; context: { $implicit: node.children, level: level + 1 }\"\n />\n </div>\n }\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"branch; context: { $implicit: nodes(), level: 0 }\" />\n", styles: [":host{display:block}.list,.item{display:flex;flex-direction:column;gap:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiTreeComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'cui-tree', standalone: true, imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template\n #branch\n let-items\n let-level=\"level\"\n>\n <ul class=\"list\">\n @for (node of items; track node.key) {\n @let isOpen = node.expanded?.() === true;\n\n <li class=\"item\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate(); context: { $implicit: node, level: level }\" />\n @if (isOpen && node.children?.length) {\n <div class=\"children\">\n <ng-container\n *ngTemplateOutlet=\"branch; context: { $implicit: node.children, level: level + 1 }\"\n />\n </div>\n }\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"branch; context: { $implicit: nodes(), level: 0 }\" />\n", styles: [":host{display:block}.list,.item{display:flex;flex-direction:column;gap:0}\n"] }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvdHJlZS90cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy90cmVlL3RyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWTFFLE1BQU0sT0FBTyxnQkFBZ0I7SUFSN0I7UUFTb0IsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXdCLENBQUM7UUFDL0MsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUE4QyxDQUFDO0tBQy9GOytHQUhZLGdCQUFnQjttR0FBaEIsZ0JBQWdCLG1WQ2Q3QiwrekJBd0JBLHFJRGZjLGdCQUFnQjs7NEZBS2pCLGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFDSSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBDdWlUcmVlTm9kZSwgQ3VpVHJlZVRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4vdHJlZS5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjdWktdHJlZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDdWlUcmVlQ29tcG9uZW50PFREYXRhID0gdW5rbm93bj4ge1xuICAgIHB1YmxpYyByZWFkb25seSBub2RlcyA9IGlucHV0LnJlcXVpcmVkPEN1aVRyZWVOb2RlPFREYXRhPltdPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBub2RlVGVtcGxhdGUgPSBpbnB1dC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjxDdWlUcmVlVGVtcGxhdGVDb250ZXh0PFREYXRhPj4+KCk7XG59XG4iLCI8bmctdGVtcGxhdGVcbiAgICAjYnJhbmNoXG4gICAgbGV0LWl0ZW1zXG4gICAgbGV0LWxldmVsPVwibGV2ZWxcIlxuPlxuICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cbiAgICAgICAgQGZvciAobm9kZSBvZiBpdGVtczsgdHJhY2sgbm9kZS5rZXkpIHtcbiAgICAgICAgICAgIEBsZXQgaXNPcGVuID0gbm9kZS5leHBhbmRlZD8uKCkgPT09IHRydWU7XG5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZVRlbXBsYXRlKCk7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlLCBsZXZlbDogbGV2ZWwgfVwiIC8+XG4gICAgICAgICAgICAgICAgQGlmIChpc09wZW4gJiYgbm9kZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZHJlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJhbmNoOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZS5jaGlsZHJlbiwgbGV2ZWw6IGxldmVsICsgMSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5jaDsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGVzKCksIGxldmVsOiAwIH1cIiAvPlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3RyZWUvdHJlZS5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VpVHJlZU5vZGU8VERhdGEgPSB1bmtub3duPiB7XG4gICAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgICByZWFkb25seSBkYXRhPzogVERhdGE7XG4gICAgcmVhZG9ubHkgY2hpbGRyZW4/OiBDdWlUcmVlTm9kZTxURGF0YT5bXTtcbiAgICByZWFkb25seSBleHBhbmRlZD86IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1aVRyZWVUZW1wbGF0ZUNvbnRleHQ8VERhdGEgPSB1bmtub3duPiB7XG4gICAgcmVhZG9ubHkgJGltcGxpY2l0OiBDdWlUcmVlTm9kZTxURGF0YT47XG4gICAgcmVhZG9ubHkgbGV2ZWw6IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,8 +1,9 @@
1
- import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, forwardRef, inject, input, output, signal } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, forwardRef, inject, input, output, signal, untracked } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
3
  import { CuiLetDirective } from '@cuby-ui/cdk';
4
4
  import { finalize } from 'rxjs';
5
- import { CuiButtonModule, CuiIconButtonModule, CuiSvgModule } from '../../../../../components';
5
+ import { CuiButtonModule, CuiDialogService, CuiIconButtonModule, CuiSvgModule } from '../../../../../components';
6
+ import { CuiDeleteModalComponent } from '../../../delete-modal';
6
7
  import { CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN } from '../../models';
7
8
  import { CuiCategoryTreeStateService } from '../../services';
8
9
  import { CuiCategoriesTreeListComponent } from '../categories-tree-list';
@@ -16,12 +17,12 @@ export class CuiCategoryTreeItemComponent {
16
17
  this.destroyRef = inject(DestroyRef);
17
18
  this.categoriesDataSourceService = inject(CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN);
18
19
  this.categoryTreeStateService = inject(CuiCategoryTreeStateService);
20
+ this.cuiDialogService = inject(CuiDialogService);
19
21
  this.isDeleteSupported = !!this.categoriesDataSourceService.delete;
20
22
  this.storageChildren = signal([]);
21
23
  this.areChildrenOpened = signal(false);
22
24
  this.isSubcategoryCreating = signal(false);
23
25
  this.isSubcategoryCreationLoading = signal(false);
24
- this.isDeleting = signal(false);
25
26
  this.openCloseButtonIcon = computed(() => this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight');
26
27
  this.doChildrenExist = computed(() => this.storage().children.length || this.storageChildren().length);
27
28
  this.isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());
@@ -30,7 +31,8 @@ export class CuiCategoryTreeItemComponent {
30
31
  this.isTitleEdit = computed(() => this.categoryTreeStateService.editingId() === this.storage().id);
31
32
  this.isCreateCategoryControlVisible = computed(() => (this.categoryTreeStateService.creatingParentId() === this.storage().id && this.isSubcategoryCreating()) ||
32
33
  this.isSubcategoryCreationLoading());
33
- this.isEmpty = computed(() => !this.storage().elements.length && !this.storage().children.length && !this.storageChildren().length);
34
+ this.isEmpty = computed(() => !this.storage().elements.length &&
35
+ (this.areChildrenOpened() ? !this.storageChildren().length : !this.storage().children.length));
34
36
  this.categoryTitle = signal('');
35
37
  this.category = computed(() => ({
36
38
  ...this.storage(),
@@ -97,42 +99,54 @@ export class CuiCategoryTreeItemComponent {
97
99
  onDelete(event) {
98
100
  event.stopPropagation();
99
101
  const deleteRequest = this.categoriesDataSourceService.delete;
100
- if (!deleteRequest || !this.isEmpty() || this.isDeleting()) {
102
+ if (!deleteRequest) {
101
103
  return;
102
104
  }
103
- this.isDeleting.set(true);
104
- deleteRequest
105
- .call(this.categoriesDataSourceService, this.storage().id)
106
- .pipe(finalize(() => this.isDeleting.set(false)), takeUntilDestroyed(this.destroyRef))
107
- .subscribe(() => this.deleted.emit(this.storage().id));
105
+ this.cuiDialogService
106
+ .open(CuiDeleteModalComponent, {
107
+ data: {
108
+ title: 'DELETE_CATEGORY_QUESTION',
109
+ content: ['ACTION_WILL_DELETE_CATEGORY'],
110
+ delete: () => deleteRequest.call(this.categoriesDataSourceService, this.storage().id)
111
+ }
112
+ })
113
+ .pipe(takeUntilDestroyed(this.destroyRef))
114
+ .subscribe((data) => {
115
+ if (data?.canceled) {
116
+ return;
117
+ }
118
+ this.deleted.emit(this.storage().id);
119
+ });
108
120
  }
109
121
  onChildDeleted(id) {
110
122
  this.storageChildren.update((children) => children.filter((child) => child.id !== id));
111
123
  }
112
124
  initStorageChildren() {
113
- effect(() => {
114
- if (!this.areChildrenOpened() || this.storageChildren().length) {
115
- return;
116
- }
117
- const storage = this.storage();
118
- const children = storage.children;
119
- if (!children.length) {
120
- return;
121
- }
122
- if (typeof children[0] !== 'string') {
123
- this.storageChildren.set(children);
125
+ const effectRef = effect(() => {
126
+ if (!this.areChildrenOpened()) {
124
127
  return;
125
128
  }
126
- this.categoriesDataSourceService
127
- .loadChildren(storage.id)
128
- .pipe(takeUntilDestroyed(this.destroyRef))
129
- .subscribe((storages) => {
130
- this.storageChildren.set(storages);
131
- });
129
+ effectRef.destroy();
130
+ untracked(() => this.loadChildren());
132
131
  }, { allowSignalWrites: true });
133
132
  }
133
+ loadChildren() {
134
+ const storage = this.storage();
135
+ const children = storage.children;
136
+ if (!children.length) {
137
+ return;
138
+ }
139
+ if (typeof children[0] !== 'string') {
140
+ this.storageChildren.set(children);
141
+ return;
142
+ }
143
+ this.categoriesDataSourceService
144
+ .loadChildren(storage.id)
145
+ .pipe(takeUntilDestroyed(this.destroyRef))
146
+ .subscribe((storages) => this.storageChildren.set(storages));
147
+ }
134
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCategoryTreeItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCategoryTreeItemComponent, isStandalone: true, selector: "cui-category-tree-item", inputs: { storage: { classPropertyName: "storage", publicName: "storage", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { deleted: "deleted" }, ngImport: i0, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"category__open-close-button\"\n [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"category__title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"category__add-subcategory-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"category__add-subcategory-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [disabled]=\"!isEmpty() || isDeleting()\"\n class=\"category__add-subcategory-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}}.category:active{background:var(--cui-base-10)}.category__open-close-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:4px;margin:4px 0}@media (hover: hover){.category__open-close-button:hover{background:var(--cui-base-100)}}.category__open-close-button:active{background:var(--cui-base-100)}.category__open-close-button_hidden{visibility:hidden}.category__title{flex:1;text-align:start;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.category__add-subcategory-button{--cui-base-50: var(--cui-base-200)}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CuiButtonModule) }, { kind: "component", type: i0.forwardRef(() => i1.CuiButtonComponent), selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiIconButtonModule) }, { kind: "directive", type: i0.forwardRef(() => CuiLetDirective), selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiSvgModule) }, { kind: "component", type: i0.forwardRef(() => i2.CuiSvgComponent), selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoryTreeFormComponent), selector: "cui-category-tree-form", inputs: ["isDisabled", "defaultTitle"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCreateCategoryTreeItemComponent), selector: "cui-create-category-tree-item", inputs: ["isDisabled"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoriesTreeListComponent), selector: "cui-categories-tree-list", inputs: ["storages"], outputs: ["deleted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCategoryTreeItemComponent, isStandalone: true, selector: "cui-category-tree-item", inputs: { storage: { classPropertyName: "storage", publicName: "storage", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { deleted: "deleted" }, ngImport: i0, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"toggle-button\"\n [class.toggle-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"button edit-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"button add-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n class=\"button delete-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}.category:hover .delete-button{display:inline-block}}.category:active{background:var(--cui-base-10)}.toggle-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:4px;margin:4px 0}@media (hover: hover){.toggle-button:hover{background:var(--cui-base-100)}}.toggle-button:active{background:var(--cui-base-100)}.toggle-button_hidden{visibility:hidden}.title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:start}.button{--cui-base-50: var(--cui-base-200)}@media (hover: hover){.delete-button{display:none}}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CuiButtonModule) }, { kind: "component", type: i0.forwardRef(() => i1.CuiButtonComponent), selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiIconButtonModule) }, { kind: "directive", type: i0.forwardRef(() => CuiLetDirective), selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiSvgModule) }, { kind: "component", type: i0.forwardRef(() => i2.CuiSvgComponent), selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoryTreeFormComponent), selector: "cui-category-tree-form", inputs: ["isDisabled", "defaultTitle"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCreateCategoryTreeItemComponent), selector: "cui-create-category-tree-item", inputs: ["isDisabled"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoriesTreeListComponent), selector: "cui-categories-tree-list", inputs: ["storages"], outputs: ["deleted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
136
150
  }
137
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCategoryTreeItemComponent, decorators: [{
138
152
  type: Component,
@@ -144,6 +158,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
144
158
  CuiCategoryTreeFormComponent,
145
159
  CuiCreateCategoryTreeItemComponent,
146
160
  forwardRef(() => CuiCategoriesTreeListComponent)
147
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"category__open-close-button\"\n [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"category__title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"category__add-subcategory-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"category__add-subcategory-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [disabled]=\"!isEmpty() || isDeleting()\"\n class=\"category__add-subcategory-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}}.category:active{background:var(--cui-base-10)}.category__open-close-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:4px;margin:4px 0}@media (hover: hover){.category__open-close-button:hover{background:var(--cui-base-100)}}.category__open-close-button:active{background:var(--cui-base-100)}.category__open-close-button_hidden{visibility:hidden}.category__title{flex:1;text-align:start;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.category__add-subcategory-button{--cui-base-50: var(--cui-base-200)}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"] }]
161
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"toggle-button\"\n [class.toggle-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"button edit-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"button add-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n class=\"button delete-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}.category:hover .delete-button{display:inline-block}}.category:active{background:var(--cui-base-10)}.toggle-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:4px;margin:4px 0}@media (hover: hover){.toggle-button:hover{background:var(--cui-base-100)}}.toggle-button:active{background:var(--cui-base-100)}.toggle-button_hidden{visibility:hidden}.title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:start}.button{--cui-base-50: var(--cui-base-200)}@media (hover: hover){.delete-button{display:none}}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"] }]
148
162
  }], ctorParameters: () => [] });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jYXRlZ29yaWVzLXRyZWUvY29tcG9uZW50cy9jYXRlZ29yeS10cmVlLWl0ZW0vY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jYXRlZ29yaWVzLXRyZWUvY29tcG9uZW50cy9jYXRlZ29yeS10cmVlLWl0ZW0vY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUcvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFN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QTRCLDRQQ3pDekMsbXlGQWtGQSxnNUJEdERRLGVBQWUsNlFBQ2YsbUJBQW1CLG9EQUNuQixlQUFlLDZGQUNmLFlBQVksa05BQ1osNEJBQTRCLGtLQUM1QixrQ0FBa0MseUpBQ2pCLDhCQUE4Qjs7NEZBTzFDLDRCQUE0QjtrQkFoQnhDLFNBQVM7K0JBQ0ksd0JBQXdCLFdBQ3pCO3dCQUNMLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osNEJBQTRCO3dCQUM1QixrQ0FBa0M7d0JBQ2xDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztxQkFDbkQsY0FDVyxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ3VpTGV0RGlyZWN0aXZlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB0eXBlIHsgVHJlZVN0cnVjdCB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XG5pbXBvcnQgdHlwZSB7IEN1aUljb24gfSBmcm9tICdAY3VieS11aS9pY29ucyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDdWlCdXR0b25Nb2R1bGUsIEN1aUljb25CdXR0b25Nb2R1bGUsIEN1aVN2Z01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ1VJX0NBVEVHT1JJRVNfVFJFRV9EQVRBX1NPVVJDRV9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEN1aUNhdGVnb3J5VHJlZVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEN1aUNhdGVnb3JpZXNUcmVlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NhdGVnb3JpZXMtdHJlZS1saXN0JztcbmltcG9ydCB7IEN1aUNhdGVnb3J5VHJlZUZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9jYXRlZ29yeS10cmVlLWZvcm0nO1xuaW1wb3J0IHsgQ3VpQ3JlYXRlQ2F0ZWdvcnlUcmVlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1jYXRlZ29yeS10cmVlLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1jYXRlZ29yeS10cmVlLWl0ZW0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQnV0dG9uTW9kdWxlLFxuICAgICAgICBDdWlJY29uQnV0dG9uTW9kdWxlLFxuICAgICAgICBDdWlMZXREaXJlY3RpdmUsXG4gICAgICAgIEN1aVN2Z01vZHVsZSxcbiAgICAgICAgQ3VpQ2F0ZWdvcnlUcmVlRm9ybUNvbXBvbmVudCxcbiAgICAgICAgQ3VpQ3JlYXRlQ2F0ZWdvcnlUcmVlSXRlbUNvbXBvbmVudCxcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBDdWlDYXRlZ29yaWVzVHJlZUxpc3RDb21wb25lbnQpXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXRlZ29yeS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYXRlZ29yeS10cmVlLWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEN1aUNhdGVnb3J5VHJlZUl0ZW1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3JpZXNEYXRhU291cmNlU2VydmljZSA9IGluamVjdChDVUlfQ0FURUdPUklFU19UUkVFX0RBVEFfU09VUkNFX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlID0gaW5qZWN0KEN1aUNhdGVnb3J5VHJlZVN0YXRlU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEZWxldGVTdXBwb3J0ZWQgPSAhIXRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlLmRlbGV0ZTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdG9yYWdlQ2hpbGRyZW4gPSBzaWduYWw8VHJlZVN0cnVjdFtdPihbXSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyZUNoaWxkcmVuT3BlbmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTdWJjYXRlZ29yeUNyZWF0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRGVsZXRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcGVuQ2xvc2VCdXR0b25JY29uID0gY29tcHV0ZWQ8Q3VpSWNvbj4oKCkgPT5cbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpID8gJ2N1aUljb25DaGV2cm9uRG93bicgOiAnY3VpSWNvbkNoZXZyb25SaWdodCdcbiAgICApO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkb0NoaWxkcmVuRXhpc3QgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zdG9yYWdlKCkuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMuc3RvcmFnZUNoaWxkcmVuKCkubGVuZ3RoXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPcGVuQ2xvc2VCdXR0b25IaWRkZW4gPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5kb0NoaWxkcmVuRXhpc3QoKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JhZ2VJY29uID0gY29tcHV0ZWQ8Q3VpSWNvbj4oKCkgPT5cbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpICYmIHRoaXMuZG9DaGlsZHJlbkV4aXN0KCkgPyAnY3VpSWNvbkZvbGRlck9wZW4nIDogJ2N1aUljb25Gb2xkZXInXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxpZ25JdGVtcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmlzVGl0bGVFZGl0KCkgPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJykpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1RpdGxlRWRpdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmVkaXRpbmdJZCgpID09PSB0aGlzLnN0b3JhZ2UoKS5pZCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQ3JlYXRlQ2F0ZWdvcnlDb250cm9sVmlzaWJsZSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgKHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNyZWF0aW5nUGFyZW50SWQoKSA9PT0gdGhpcy5zdG9yYWdlKCkuaWQgJiYgdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpbmcoKSkgfHxcbiAgICAgICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZygpXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNFbXB0eSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiAhdGhpcy5zdG9yYWdlKCkuZWxlbWVudHMubGVuZ3RoICYmICF0aGlzLnN0b3JhZ2UoKS5jaGlsZHJlbi5sZW5ndGggJiYgIXRoaXMuc3RvcmFnZUNoaWxkcmVuKCkubGVuZ3RoXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnlUaXRsZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnkgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICAuLi50aGlzLnN0b3JhZ2UoKSxcbiAgICAgICAgdGl0bGU6IHRoaXMuY2F0ZWdvcnlUaXRsZSgpIHx8IHRoaXMuc3RvcmFnZSgpLnRpdGxlXG4gICAgfSkpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHN0b3JhZ2UgPSBpbnB1dC5yZXF1aXJlZDxUcmVlU3RydWN0PigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5pdFN0b3JhZ2VDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblNlbGVjdENhdGVnb3J5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhdGVnb3J5VHJlZVN0YXRlU2VydmljZS5zZXRDdXJyZW50Q2F0ZWdvcnkodGhpcy5jYXRlZ29yeSgpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Ub2dnbGVDaGlsZHJlbihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLmFyZUNoaWxkcmVuT3BlbmVkLnVwZGF0ZSgodmFsdWUpID0+ICF2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXJlQ2hpbGRyZW5PcGVuZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UaXRsZUNoYW5nZWQodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2FuY2VsVGl0bGVFZGl0KCk7XG5cbiAgICAgICAgaWYgKHRpdGxlID09PSB0aGlzLmNhdGVnb3J5KCkudGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlVGl0bGUodGhpcy5zdG9yYWdlKCkuaWQsIHRpdGxlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5VGl0bGUuc2V0KHRpdGxlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhdGVnb3J5KCkuaWQgPT09IHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNhdGVnb3J5KCk/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnNldEN1cnJlbnRDYXRlZ29yeSh0aGlzLmNhdGVnb3J5KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0YXJ0VGl0bGVFZGl0KGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnNldEVkaXRpbmdJZCh0aGlzLnN0b3JhZ2UoKS5pZCk7XG4gICAgICAgIHRoaXMub25DcmVhdGluZ1N1YmNhdGVnb3J5Q2FuY2VsZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DYW5jZWxUaXRsZUVkaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNsZWFyRWRpdGluZ0lkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU3RhcnRDcmVhdGluZ1N1YmNhdGVnb3J5KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnN0YXJ0Q3JlYXRpbmdDaGlsZE9mKHRoaXMuc3RvcmFnZSgpLmlkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DcmVhdGVOZXdTdWJjYXRlZ29yeSh0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlQ2hpbGQodGhpcy5zdG9yYWdlKCkuaWQsIHRpdGxlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpb25Mb2FkaW5nLnNldChmYWxzZSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdG9yYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlQ2hpbGRyZW4udXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBzdG9yYWdlXSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DcmVhdGluZ1N1YmNhdGVnb3J5Q2FuY2VsZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNsZWFyQ3JlYXRpbmcoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25EZWxldGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgZGVsZXRlUmVxdWVzdCA9IHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlLmRlbGV0ZTtcblxuICAgICAgICBpZiAoIWRlbGV0ZVJlcXVlc3QgfHwgIXRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuaXNEZWxldGluZygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzRGVsZXRpbmcuc2V0KHRydWUpO1xuICAgICAgICBkZWxldGVSZXF1ZXN0XG4gICAgICAgICAgICAuY2FsbCh0aGlzLmNhdGVnb3JpZXNEYXRhU291cmNlU2VydmljZSwgdGhpcy5zdG9yYWdlKCkuaWQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzRGVsZXRpbmcuc2V0KGZhbHNlKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kZWxldGVkLmVtaXQodGhpcy5zdG9yYWdlKCkuaWQpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DaGlsZERlbGV0ZWQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JhZ2VDaGlsZHJlbi51cGRhdGUoKGNoaWxkcmVuKSA9PiBjaGlsZHJlbi5maWx0ZXIoKGNoaWxkKSA9PiBjaGlsZC5pZCAhPT0gaWQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTdG9yYWdlQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYXJlQ2hpbGRyZW5PcGVuZWQoKSB8fCB0aGlzLnN0b3JhZ2VDaGlsZHJlbigpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuc3RvcmFnZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gc3RvcmFnZS5jaGlsZHJlbjtcblxuICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuWzBdICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2VDaGlsZHJlbi5zZXQoY2hpbGRyZW4gYXMgVHJlZVN0cnVjdFtdKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzRGF0YVNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmxvYWRDaGlsZHJlbihzdG9yYWdlLmlkKVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RvcmFnZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZUNoaWxkcmVuLnNldChzdG9yYWdlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKmN1aUxldD1cImNhdGVnb3J5KCkgYXMgc3RhZ2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiYWxpZ25JdGVtcygpXCJcbiAgICAgICAgY2xhc3M9XCJjYXRlZ29yeVwiXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdENhdGVnb3J5KClcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImNhdGVnb3J5X19vcGVuLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICBbY2xhc3MuY2F0ZWdvcnlfX29wZW4tY2xvc2UtYnV0dG9uX2hpZGRlbl09XCJpc09wZW5DbG9zZUJ1dHRvbkhpZGRlbigpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZUNoaWxkcmVuKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8Y3VpLXN2Z1xuICAgICAgICAgICAgICAgIFtpY29uXT1cIm9wZW5DbG9zZUJ1dHRvbkljb24oKVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ2YXIoLS1jdWktYmFzZS01MDApXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8Y3VpLXN2Z1xuICAgICAgICAgICAgW2ljb25dPVwic3RvcmFnZUljb24oKVwiXG4gICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS1iYXNlLTUwMClcIlxuICAgICAgICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChpc1RpdGxlRWRpdCgpKSB7XG4gICAgICAgICAgICA8Y3VpLWNhdGVnb3J5LXRyZWUtZm9ybVxuICAgICAgICAgICAgICAgIFtkZWZhdWx0VGl0bGVdPVwic3RhZ2UudGl0bGVcIlxuICAgICAgICAgICAgICAgIChjcmVhdGVkKT1cIm9uVGl0bGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjYW5jZWxlZCk9XCJvbkNhbmNlbFRpdGxlRWRpdCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXRlZ29yeV9fdGl0bGVcIj57eyBzdGFnZS50aXRsZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGN1aUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInh4c1wiXG4gICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25FZGl0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhdGVnb3J5X19hZGQtc3ViY2F0ZWdvcnktYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydFRpdGxlRWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uUGx1c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYXRlZ29yeV9fYWRkLXN1YmNhdGVnb3J5LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3RhcnRDcmVhdGluZ1N1YmNhdGVnb3J5KCRldmVudClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChpc0RlbGV0ZVN1cHBvcnRlZCkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY3VpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwieHhzXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25UcmFzaFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFbXB0eSgpIHx8IGlzRGVsZXRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2F0ZWdvcnlfX2FkZC1zdWJjYXRlZ29yeS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9idXR0b24+XG4gICAgPGRpdlxuICAgICAgICBbaGlkZGVuXT1cIiFhcmVDaGlsZHJlbk9wZW5lZCgpXCJcbiAgICAgICAgY2xhc3M9XCJsaXN0LXdyYXBwZXJcIlxuICAgID5cbiAgICAgICAgPGN1aS1jYXRlZ29yaWVzLXRyZWUtbGlzdFxuICAgICAgICAgICAgW3N0b3JhZ2VzXT1cInN0b3JhZ2VDaGlsZHJlbigpXCJcbiAgICAgICAgICAgIChkZWxldGVkKT1cIm9uQ2hpbGREZWxldGVkKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICBAaWYgKGlzQ3JlYXRlQ2F0ZWdvcnlDb250cm9sVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8Y3VpLWNyZWF0ZS1jYXRlZ29yeS10cmVlLWl0ZW1cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNyZWF0ZS1jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAoY3JlYXRlZCk9XCJvbkNyZWF0ZU5ld1N1YmNhdGVnb3J5KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjYW5jZWxlZCk9XCJvbkNyZWF0aW5nU3ViY2F0ZWdvcnlDYW5jZWxlZCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jYXRlZ29yaWVzLXRyZWUvY29tcG9uZW50cy9jYXRlZ29yeS10cmVlLWl0ZW0vY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jYXRlZ29yaWVzLXRyZWUvY29tcG9uZW50cy9jYXRlZ29yeS10cmVlLWl0ZW0vY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFP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QUMsQ0FBQztZQUVuRCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQywyQkFBMkI7YUFDM0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQzsrR0F4TFEsNEJBQTRCO21HQUE1Qiw0QkFBNEIsNFBDM0N6QyxxcEZBaUZBLDI1QkRuRFEsZUFBZSw2UUFDZixtQkFBbUIsb0RBQ25CLGVBQWUsNkZBQ2YsWUFBWSxrTkFDWiw0QkFBNEIsa0tBQzVCLGtDQUFrQyx5SkFDakIsOEJBQThCOzs0RkFPMUMsNEJBQTRCO2tCQWhCeEMsU0FBUzsrQkFDSSx3QkFBd0IsV0FDekI7d0JBQ0wsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWiw0QkFBNEI7d0JBQzVCLGtDQUFrQzt3QkFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDhCQUE4QixDQUFDO3FCQUNuRCxjQUNXLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgZWZmZWN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ3VpTGV0RGlyZWN0aXZlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB0eXBlIHsgVHJlZVN0cnVjdCB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XG5pbXBvcnQgdHlwZSB7IEN1aUljb24gfSBmcm9tICdAY3VieS11aS9pY29ucyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDdWlCdXR0b25Nb2R1bGUsIEN1aURpYWxvZ1NlcnZpY2UsIEN1aUljb25CdXR0b25Nb2R1bGUsIEN1aVN2Z01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9kZWxldGUtbW9kYWwnO1xuaW1wb3J0IHsgQ1VJX0NBVEVHT1JJRVNfVFJFRV9EQVRBX1NPVVJDRV9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEN1aUNhdGVnb3J5VHJlZVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEN1aUNhdGVnb3JpZXNUcmVlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NhdGVnb3JpZXMtdHJlZS1saXN0JztcbmltcG9ydCB7IEN1aUNhdGVnb3J5VHJlZUZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9jYXRlZ29yeS10cmVlLWZvcm0nO1xuaW1wb3J0IHsgQ3VpQ3JlYXRlQ2F0ZWdvcnlUcmVlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1jYXRlZ29yeS10cmVlLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1jYXRlZ29yeS10cmVlLWl0ZW0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQnV0dG9uTW9kdWxlLFxuICAgICAgICBDdWlJY29uQnV0dG9uTW9kdWxlLFxuICAgICAgICBDdWlMZXREaXJlY3RpdmUsXG4gICAgICAgIEN1aVN2Z01vZHVsZSxcbiAgICAgICAgQ3VpQ2F0ZWdvcnlUcmVlRm9ybUNvbXBvbmVudCxcbiAgICAgICAgQ3VpQ3JlYXRlQ2F0ZWdvcnlUcmVlSXRlbUNvbXBvbmVudCxcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBDdWlDYXRlZ29yaWVzVHJlZUxpc3RDb21wb25lbnQpXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXRlZ29yeS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYXRlZ29yeS10cmVlLWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEN1aUNhdGVnb3J5VHJlZUl0ZW1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3JpZXNEYXRhU291cmNlU2VydmljZSA9IGluamVjdChDVUlfQ0FURUdPUklFU19UUkVFX0RBVEFfU09VUkNFX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlID0gaW5qZWN0KEN1aUNhdGVnb3J5VHJlZVN0YXRlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlEaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEN1aURpYWxvZ1NlcnZpY2UpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRGVsZXRlU3VwcG9ydGVkID0gISF0aGlzLmNhdGVnb3JpZXNEYXRhU291cmNlU2VydmljZS5kZWxldGU7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmFnZUNoaWxkcmVuID0gc2lnbmFsPFRyZWVTdHJ1Y3RbXT4oW10pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhcmVDaGlsZHJlbk9wZW5lZCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU3ViY2F0ZWdvcnlDcmVhdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU3ViY2F0ZWdvcnlDcmVhdGlvbkxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcGVuQ2xvc2VCdXR0b25JY29uID0gY29tcHV0ZWQ8Q3VpSWNvbj4oKCkgPT5cbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpID8gJ2N1aUljb25DaGV2cm9uRG93bicgOiAnY3VpSWNvbkNoZXZyb25SaWdodCdcbiAgICApO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkb0NoaWxkcmVuRXhpc3QgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zdG9yYWdlKCkuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMuc3RvcmFnZUNoaWxkcmVuKCkubGVuZ3RoXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPcGVuQ2xvc2VCdXR0b25IaWRkZW4gPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5kb0NoaWxkcmVuRXhpc3QoKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JhZ2VJY29uID0gY29tcHV0ZWQ8Q3VpSWNvbj4oKCkgPT5cbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpICYmIHRoaXMuZG9DaGlsZHJlbkV4aXN0KCkgPyAnY3VpSWNvbkZvbGRlck9wZW4nIDogJ2N1aUljb25Gb2xkZXInXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxpZ25JdGVtcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmlzVGl0bGVFZGl0KCkgPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJykpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1RpdGxlRWRpdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmVkaXRpbmdJZCgpID09PSB0aGlzLnN0b3JhZ2UoKS5pZCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQ3JlYXRlQ2F0ZWdvcnlDb250cm9sVmlzaWJsZSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgKHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNyZWF0aW5nUGFyZW50SWQoKSA9PT0gdGhpcy5zdG9yYWdlKCkuaWQgJiYgdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpbmcoKSkgfHxcbiAgICAgICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZygpXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNFbXB0eSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgIXRoaXMuc3RvcmFnZSgpLmVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICAgICAgKHRoaXMuYXJlQ2hpbGRyZW5PcGVuZWQoKSA/ICF0aGlzLnN0b3JhZ2VDaGlsZHJlbigpLmxlbmd0aCA6ICF0aGlzLnN0b3JhZ2UoKS5jaGlsZHJlbi5sZW5ndGgpXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnlUaXRsZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnkgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICAuLi50aGlzLnN0b3JhZ2UoKSxcbiAgICAgICAgdGl0bGU6IHRoaXMuY2F0ZWdvcnlUaXRsZSgpIHx8IHRoaXMuc3RvcmFnZSgpLnRpdGxlXG4gICAgfSkpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHN0b3JhZ2UgPSBpbnB1dC5yZXF1aXJlZDxUcmVlU3RydWN0PigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5pdFN0b3JhZ2VDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblNlbGVjdENhdGVnb3J5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhdGVnb3J5VHJlZVN0YXRlU2VydmljZS5zZXRDdXJyZW50Q2F0ZWdvcnkodGhpcy5jYXRlZ29yeSgpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Ub2dnbGVDaGlsZHJlbihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLmFyZUNoaWxkcmVuT3BlbmVkLnVwZGF0ZSgodmFsdWUpID0+ICF2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXJlQ2hpbGRyZW5PcGVuZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UaXRsZUNoYW5nZWQodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2FuY2VsVGl0bGVFZGl0KCk7XG5cbiAgICAgICAgaWYgKHRpdGxlID09PSB0aGlzLmNhdGVnb3J5KCkudGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlVGl0bGUodGhpcy5zdG9yYWdlKCkuaWQsIHRpdGxlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5VGl0bGUuc2V0KHRpdGxlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhdGVnb3J5KCkuaWQgPT09IHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNhdGVnb3J5KCk/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnNldEN1cnJlbnRDYXRlZ29yeSh0aGlzLmNhdGVnb3J5KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0YXJ0VGl0bGVFZGl0KGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnNldEVkaXRpbmdJZCh0aGlzLnN0b3JhZ2UoKS5pZCk7XG4gICAgICAgIHRoaXMub25DcmVhdGluZ1N1YmNhdGVnb3J5Q2FuY2VsZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DYW5jZWxUaXRsZUVkaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNsZWFyRWRpdGluZ0lkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU3RhcnRDcmVhdGluZ1N1YmNhdGVnb3J5KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnN0YXJ0Q3JlYXRpbmdDaGlsZE9mKHRoaXMuc3RvcmFnZSgpLmlkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DcmVhdGVOZXdTdWJjYXRlZ29yeSh0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlQ2hpbGQodGhpcy5zdG9yYWdlKCkuaWQsIHRpdGxlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpb25Mb2FkaW5nLnNldChmYWxzZSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdG9yYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlQ2hpbGRyZW4udXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBzdG9yYWdlXSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DcmVhdGluZ1N1YmNhdGVnb3J5Q2FuY2VsZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNsZWFyQ3JlYXRpbmcoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25EZWxldGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgZGVsZXRlUmVxdWVzdCA9IHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlLmRlbGV0ZTtcblxuICAgICAgICBpZiAoIWRlbGV0ZVJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VpRGlhbG9nU2VydmljZVxuICAgICAgICAgICAgLm9wZW4oQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnREVMRVRFX0NBVEVHT1JZX1FVRVNUSU9OJyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogWydBQ1RJT05fV0lMTF9ERUxFVEVfQ0FURUdPUlknXSxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlOiAoKSA9PiBkZWxldGVSZXF1ZXN0LmNhbGwodGhpcy5jYXRlZ29yaWVzRGF0YVNvdXJjZVNlcnZpY2UsIHRoaXMuc3RvcmFnZSgpLmlkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YT8uY2FuY2VsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlZC5lbWl0KHRoaXMuc3RvcmFnZSgpLmlkKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNoaWxkRGVsZXRlZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmFnZUNoaWxkcmVuLnVwZGF0ZSgoY2hpbGRyZW4pID0+IGNoaWxkcmVuLmZpbHRlcigoY2hpbGQpID0+IGNoaWxkLmlkICE9PSBpZCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFN0b3JhZ2VDaGlsZHJlbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWZmZWN0UmVmID0gZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlZmZlY3RSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmxvYWRDaGlsZHJlbigpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRDaGlsZHJlbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuc3RvcmFnZSgpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHN0b3JhZ2UuY2hpbGRyZW47XG5cbiAgICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW5bMF0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VDaGlsZHJlbi5zZXQoY2hpbGRyZW4gYXMgVHJlZVN0cnVjdFtdKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzRGF0YVNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAgIC5sb2FkQ2hpbGRyZW4oc3RvcmFnZS5pZClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RvcmFnZXMpID0+IHRoaXMuc3RvcmFnZUNoaWxkcmVuLnNldChzdG9yYWdlcykpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKmN1aUxldD1cImNhdGVnb3J5KCkgYXMgc3RhZ2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiYWxpZ25JdGVtcygpXCJcbiAgICAgICAgY2xhc3M9XCJjYXRlZ29yeVwiXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdENhdGVnb3J5KClcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgW2NsYXNzLnRvZ2dsZS1idXR0b25faGlkZGVuXT1cImlzT3BlbkNsb3NlQnV0dG9uSGlkZGVuKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2hpbGRyZW4oJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxjdWktc3ZnXG4gICAgICAgICAgICAgICAgW2ljb25dPVwib3BlbkNsb3NlQnV0dG9uSWNvbigpXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS1iYXNlLTUwMClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxjdWktc3ZnXG4gICAgICAgICAgICBbaWNvbl09XCJzdG9yYWdlSWNvbigpXCJcbiAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLWJhc2UtNTAwKVwiXG4gICAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAvPlxuICAgICAgICBAaWYgKGlzVGl0bGVFZGl0KCkpIHtcbiAgICAgICAgICAgIDxjdWktY2F0ZWdvcnktdHJlZS1mb3JtXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRUaXRsZV09XCJzdGFnZS50aXRsZVwiXG4gICAgICAgICAgICAgICAgKGNyZWF0ZWQpPVwib25UaXRsZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNhbmNlbGVkKT1cIm9uQ2FuY2VsVGl0bGVFZGl0KClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgc3RhZ2UudGl0bGUgfX08L3NwYW4+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uRWRpdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gZWRpdC1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN0YXJ0VGl0bGVFZGl0KCRldmVudClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGN1aUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInh4c1wiXG4gICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25QbHVzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBhZGQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydENyZWF0aW5nU3ViY2F0ZWdvcnkoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICBAaWYgKGlzRGVsZXRlU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvblRyYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2XG4gICAgICAgIFtoaWRkZW5dPVwiIWFyZUNoaWxkcmVuT3BlbmVkKClcIlxuICAgICAgICBjbGFzcz1cImxpc3Qtd3JhcHBlclwiXG4gICAgPlxuICAgICAgICA8Y3VpLWNhdGVnb3JpZXMtdHJlZS1saXN0XG4gICAgICAgICAgICBbc3RvcmFnZXNdPVwic3RvcmFnZUNoaWxkcmVuKClcIlxuICAgICAgICAgICAgKGRlbGV0ZWQpPVwib25DaGlsZERlbGV0ZWQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoaXNDcmVhdGVDYXRlZ29yeUNvbnRyb2xWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgIDxjdWktY3JlYXRlLWNhdGVnb3J5LXRyZWUtaXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3JlYXRlLWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJpc1N1YmNhdGVnb3J5Q3JlYXRpb25Mb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgIChjcmVhdGVkKT1cIm9uQ3JlYXRlTmV3U3ViY2F0ZWdvcnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNhbmNlbGVkKT1cIm9uQ3JlYXRpbmdTdWJjYXRlZ29yeUNhbmNlbGVkKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=