@fundamental-ngx/cdk 0.41.0 → 0.41.1-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/data-source/base/abstract-data-provider.class.d.ts +11 -1
  2. package/data-source/base/base-data-source.class.d.ts +12 -5
  3. package/data-source/models/data-source-provider.d.ts +2 -2
  4. package/data-source/models/data-source.d.ts +1 -1
  5. package/esm2020/data-source/base/abstract-data-provider.class.mjs +19 -3
  6. package/esm2020/data-source/base/base-data-source.class.mjs +33 -20
  7. package/esm2020/data-source/models/data-source-provider.mjs +1 -1
  8. package/esm2020/data-source/models/data-source.mjs +1 -1
  9. package/esm2020/utils/directives/clicked/clicked.directive.mjs +3 -4
  10. package/esm2020/utils/directives/selectable-list/selectable-item.directive.mjs +8 -3
  11. package/esm2020/utils/directives/selectable-list/selection.service.mjs +10 -5
  12. package/fesm2015/fundamental-ngx-cdk-data-source.mjs +50 -21
  13. package/fesm2015/fundamental-ngx-cdk-data-source.mjs.map +1 -1
  14. package/fesm2015/fundamental-ngx-cdk-utils.mjs +17 -7
  15. package/fesm2015/fundamental-ngx-cdk-utils.mjs.map +1 -1
  16. package/fesm2020/fundamental-ngx-cdk-data-source.mjs +50 -21
  17. package/fesm2020/fundamental-ngx-cdk-data-source.mjs.map +1 -1
  18. package/fesm2020/fundamental-ngx-cdk-utils.mjs +17 -7
  19. package/fesm2020/fundamental-ngx-cdk-utils.mjs.map +1 -1
  20. package/fundamental-ngx-cdk-v0.41.1-rc.0.tgz +0 -0
  21. package/package.json +2 -2
  22. package/utils/directives/clicked/clicked.directive.d.ts +4 -4
  23. package/utils/directives/selectable-list/selectable-item.directive.d.ts +4 -2
  24. package/utils/directives/selectable-list/selection.service.d.ts +2 -1
  25. package/fundamental-ngx-cdk-v0.41.0.tgz +0 -0
@@ -18,19 +18,29 @@ export declare abstract class AbstractDataProvider<T> {
18
18
  setMatchingBy(matchingBy: MatchingBy): void;
19
19
  /** @hidden */
20
20
  setMatchingStrategy(strategy: MatchingStrategy): void;
21
+ /** @hidden */
22
+ abstract getTotalItems(params?: Map<string, any>): Observable<number>;
21
23
  }
22
24
  /**
23
25
  * Default data provider class used for other components to extend from.
24
26
  */
25
27
  export declare class DataProvider<T> extends AbstractDataProvider<T> {
26
28
  protected values: Observable<T[]> | T[];
29
+ /** Default limit for the pagination. */
30
+ defaultLimit: number;
27
31
  /** @hidden */
28
32
  constructor(values: Observable<T[]> | T[]);
29
33
  /** @hidden */
30
34
  fetch(params: Map<string, any>): Observable<T[]>;
35
+ /**
36
+ * Returns observable with the number of total items that satisfy the search query.
37
+ * Warning: this is a naive implementation of the number of the filtered items.
38
+ * For real-world scenarios, it is recommended to override this method with its own logic.
39
+ */
40
+ getTotalItems(params: Map<string, any>): Observable<number>;
31
41
  /**
32
42
  * Warning: If you don't supply search Key and you want fulltext search, and you use this
33
- * default implementation be aware that it can perform poorly as it is naive implementation
43
+ * default implementation, be aware that it can perform poorly as it is a naive implementation
34
44
  * that does not do deep compare.
35
45
  */
36
46
  matches(item: T, pattern: string): boolean;
@@ -14,9 +14,9 @@ export declare abstract class BaseDataSource<T> implements DataSourceProvider<T>
14
14
  /** @hidden */
15
15
  protected readonly _dataChanges$: BehaviorSubject<T[]>;
16
16
  /** @hidden */
17
- protected readonly _dataRequested$: Subject<void>;
17
+ protected readonly _dataRequested$: BehaviorSubject<boolean>;
18
18
  /** @hidden */
19
- protected readonly _dataReceived$: Subject<void>;
19
+ protected readonly _dataReceived$: BehaviorSubject<boolean>;
20
20
  /** @hidden */
21
21
  protected readonly _destroy$: Subject<void>;
22
22
  /** @hidden */
@@ -25,19 +25,19 @@ export declare abstract class BaseDataSource<T> implements DataSourceProvider<T>
25
25
  * Emitted when new data has been requested.
26
26
  * @returns Observable
27
27
  */
28
- get dataRequested(): Observable<void>;
28
+ get dataRequested(): Observable<boolean>;
29
29
  /**
30
30
  * Emitted when new data has been received.
31
31
  * @returns Observable
32
32
  */
33
- get dataReceived(): Observable<void>;
33
+ get dataReceived(): Observable<boolean>;
34
34
  /**
35
35
  * Emitted when loading state has been changed.
36
36
  * @returns Observable.
37
37
  */
38
38
  get dataLoading(): Observable<boolean>;
39
39
  /**
40
- * Emits when data from the provides has been changed.
40
+ * Emits when the data from the provider has been changed.
41
41
  * @returns Observable of data source objects.
42
42
  */
43
43
  get dataChanges(): Observable<T[]>;
@@ -50,8 +50,15 @@ export declare abstract class BaseDataSource<T> implements DataSourceProvider<T>
50
50
  * @param end end index.
51
51
  */
52
52
  match(predicate?: string | Map<string, string>, start?: number, end?: number): void;
53
+ /**
54
+ * Returns the Observable of a total items number filtered by the `predicate` param.
55
+ * @param predicate Search query.
56
+ */
57
+ getTotalItems(predicate?: string | Map<string, string>): Observable<number>;
53
58
  /**
54
59
  * Closes the stream
55
60
  */
56
61
  unsubscribe(): void;
62
+ /** @hidden */
63
+ private _getSearchParams;
57
64
  }
@@ -10,11 +10,11 @@ export interface DataSourceProvider<T = any> {
10
10
  /**
11
11
  * Stream emits when new data has been requested.
12
12
  */
13
- dataRequested: Observable<void>;
13
+ dataRequested: Observable<boolean>;
14
14
  /**
15
15
  * Stream emits when new data has been loaded.
16
16
  */
17
- dataReceived: Observable<void>;
17
+ dataReceived: Observable<boolean>;
18
18
  /**
19
19
  * Stream emits when loading state has been changed.
20
20
  */
@@ -3,7 +3,7 @@ import { DataSourceProvider } from './data-source-provider';
3
3
  /**
4
4
  * Acceptable data source types.
5
5
  */
6
- export type DataSource<T = any> = DataSourceProvider<T> | Observable<T[]> | T[];
6
+ export type DataSource<T = any, P extends DataSourceProvider<T> = DataSourceProvider<T>> = P | Observable<T[]> | T[];
7
7
  /**
8
8
  * Data source parser is a special class that parses incoming data into appropriate data source provider.
9
9
  */
@@ -34,12 +34,14 @@ export class DataProvider extends AbstractDataProvider {
34
34
  constructor(values) {
35
35
  super();
36
36
  this.values = values;
37
+ /** Default limit for the pagination. */
38
+ this.defaultLimit = 50;
37
39
  }
38
40
  /** @hidden */
39
41
  fetch(params) {
40
42
  const observable = isObservable(this.values) ? this.values : of(this.values);
41
43
  const queryString = params.get('query');
42
- const limit = params.get('limit') || 50;
44
+ const limit = params.get('limit') || this.defaultLimit;
43
45
  if (!queryString || queryString === '*') {
44
46
  return observable.pipe(map((items) => this.withLimit(items, limit)));
45
47
  }
@@ -58,9 +60,23 @@ export class DataProvider extends AbstractDataProvider {
58
60
  return result;
59
61
  }));
60
62
  }
63
+ /**
64
+ * Returns observable with the number of total items that satisfy the search query.
65
+ * Warning: this is a naive implementation of the number of the filtered items.
66
+ * For real-world scenarios, it is recommended to override this method with its own logic.
67
+ */
68
+ getTotalItems(params) {
69
+ const observable = isObservable(this.values) ? this.values : of(this.values);
70
+ const queryString = params.get('query');
71
+ if (!queryString) {
72
+ return observable.pipe(map((items) => items.length));
73
+ }
74
+ const toLowerPattern = queryString.toLowerCase();
75
+ return observable.pipe(map((items) => items.filter((item) => this.matches(item, toLowerPattern)).length));
76
+ }
61
77
  /**
62
78
  * Warning: If you don't supply search Key and you want fulltext search, and you use this
63
- * default implementation be aware that it can perform poorly as it is naive implementation
79
+ * default implementation, be aware that it can perform poorly as it is a naive implementation
64
80
  * that does not do deep compare.
65
81
  */
66
82
  matches(item, pattern) {
@@ -123,4 +139,4 @@ export class DataProvider extends AbstractDataProvider {
123
139
  return data;
124
140
  }
125
141
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGF0YS1wcm92aWRlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvZGF0YS1zb3VyY2UvYmFzZS9hYnN0cmFjdC1kYXRhLXByb3ZpZGVyLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFDSCwwQ0FBMEMsRUFDMUMsWUFBWSxFQUNaLFlBQVksRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBdUIsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVwRjs7R0FFRztBQUNILE1BQU0sT0FBZ0Isb0JBQW9CO0lBQTFDO1FBSUksY0FBYztRQUNKLHNCQUFpQixHQUFxQixnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFFN0UsY0FBYztRQUNKLGdCQUFXLEdBQXNCLElBQUksQ0FBQztJQWtCcEQsQ0FBQztJQWRHLGNBQWM7SUFDZCxZQUFZLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztJQUNkLGFBQWEsQ0FBQyxVQUFzQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztJQUNkLG1CQUFtQixDQUFDLFFBQTBCO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBZ0IsU0FBUSxvQkFBdUI7SUFDeEQsY0FBYztJQUNkLFlBQXNCLE1B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LEVBQUU7Z0JBQ2hDLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO2lCQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNqRTtpQkFBTSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUMvRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzlDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1YsT0FBTyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjO0lBQ04sU0FBUyxDQUFDLElBQWMsRUFBRSxLQUFjO1FBQzVDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc0pzT2JqZWN0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBnZXRNYXRjaGluZ1N0cmF0ZWd5U3RhcnRzV2l0aFBlclRlcm1SZXFleHAsXG4gICAgb2JqZWN0VG9OYW1lLFxuICAgIG9iamVjdFZhbHVlcyxcbiAgICBQcm92aWRlclBhcmFtc1xufSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRjaEJ5LCBNYXRjaGluZ0J5LCBNYXRjaGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vbW9kZWxzL21hdGNoaW5nLXN0cmF0ZWd5JztcblxuLyoqXG4gKiBCYXNlIGRhdGEgcHJvdmlkZXIgY2xhc3MuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERhdGFQcm92aWRlcjxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2tleVBhdGg6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tYXRjaGluZ1N0cmF0ZWd5OiBNYXRjaGluZ1N0cmF0ZWd5ID0gTWF0Y2hpbmdTdHJhdGVneS5TVEFSVFNfV0lUSDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tYXRjaGluZ0J5OiBNYXRjaGluZ0J5IHwgbnVsbCA9IG51bGw7XG5cbiAgICBhYnN0cmFjdCBmZXRjaChwYXJhbXM6IFByb3ZpZGVyUGFyYW1zLCBzdGFydD86IG51bWJlciwgZW5kPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRMb29rdXBLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5UGF0aCA9IGtleTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldE1hdGNoaW5nQnkobWF0Y2hpbmdCeTogTWF0Y2hpbmdCeSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tYXRjaGluZ0J5ID0gbWF0Y2hpbmdCeTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldE1hdGNoaW5nU3RyYXRlZ3koc3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWF0Y2hpbmdTdHJhdGVneSA9IHN0cmF0ZWd5O1xuICAgIH1cbn1cblxuLyoqXG4gKiBEZWZhdWx0IGRhdGEgcHJvdmlkZXIgY2xhc3MgdXNlZCBmb3Igb3RoZXIgY29tcG9uZW50cyB0byBleHRlbmQgZnJvbS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFQcm92aWRlcjxUPiBleHRlbmRzIEFic3RyYWN0RGF0YVByb3ZpZGVyPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB2YWx1ZXM6IE9ic2VydmFibGU8VFtdPiB8IFRbXSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZmV0Y2gocGFyYW1zOiBNYXA8c3RyaW5nLCBhbnk+KTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9IGlzT2JzZXJ2YWJsZSh0aGlzLnZhbHVlcykgPyB0aGlzLnZhbHVlcyA6IG9mKHRoaXMudmFsdWVzKTtcblxuICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHBhcmFtcy5nZXQoJ3F1ZXJ5Jyk7XG4gICAgICAgIGNvbnN0IGxpbWl0ID0gcGFyYW1zLmdldCgnbGltaXQnKSB8fCA1MDtcblxuICAgICAgICBpZiAoIXF1ZXJ5U3RyaW5nIHx8IHF1ZXJ5U3RyaW5nID09PSAnKicpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlLnBpcGUobWFwKChpdGVtcykgPT4gdGhpcy53aXRoTGltaXQoaXRlbXMsIGxpbWl0KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG9Mb3dlclBhdHRlcm4gPSBxdWVyeVN0cmluZy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoZXMoaXRlbSwgdG9Mb3dlclBhdHRlcm4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXYXJuaW5nOiBJZiB5b3UgZG9uJ3Qgc3VwcGx5IHNlYXJjaCBLZXkgYW5kIHlvdSB3YW50IGZ1bGx0ZXh0IHNlYXJjaCwgYW5kIHlvdSB1c2UgdGhpc1xuICAgICAqIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYmUgYXdhcmUgdGhhdCBpdCBjYW4gIHBlcmZvcm0gcG9vcmx5IGFzIGl0IGlzIG5haXZlIGltcGxlbWVudGF0aW9uXG4gICAgICogdGhhdCBkb2VzIG5vdCBkbyBkZWVwIGNvbXBhcmUuXG4gICAgICovXG4gICAgbWF0Y2hlcyhpdGVtOiBULCBwYXR0ZXJuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLl9tYXRjaGluZ0J5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBmaXJzdEJ5LCBzZWNvbmRhcnlCeSB9ID0gdGhpcy5fbWF0Y2hpbmdCeTtcblxuICAgICAgICBsZXQgbWF0Y2hlZCA9IHRoaXMubWF0Y2hlc0J5KGl0ZW0sIHBhdHRlcm4sIGZpcnN0QnkpO1xuICAgICAgICBpZiAoIW1hdGNoZWQgJiYgc2Vjb25kYXJ5QnkpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0aGlzLm1hdGNoZXNCeShpdGVtLCBwYXR0ZXJuLCBzZWNvbmRhcnlCeSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1hdGNoZXNCeShpdGVtOiBhbnksIHBhdHRlcm46IHN0cmluZywgbWF0Y2hpbmdCeTogTWF0Y2hCeSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGlzSnNPYmplY3QoaXRlbSkgJiYgbWF0Y2hpbmdCeSA/IG1hdGNoaW5nQnkoaXRlbSkgOiBpdGVtO1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmNhbGwoaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc09iamVjdFZhbHVlKGl0ZW0sIHBhdHRlcm4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX21hdGNoaW5nU3RyYXRlZ3kgPT09IE1hdGNoaW5nU3RyYXRlZ3kuU1RBUlRTX1dJVEhfUEVSX1RFUk0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcWV4cCA9IGdldE1hdGNoaW5nU3RyYXRlZ3lTdGFydHNXaXRoUGVyVGVybVJlcWV4cChwYXR0ZXJuKTtcbiAgICAgICAgICAgIHJldHVybiAhIXBhdHRlcm4gJiYgISF2YWx1ZSAmJiAhIXZhbHVlLm1hdGNoKHJlcWV4cCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbWF0Y2hpbmdTdHJhdGVneSA9PT0gTWF0Y2hpbmdTdHJhdGVneS5TVEFSVFNfV0lUSCkge1xuICAgICAgICAgICAgcmV0dXJuICEhcGF0dGVybiAmJiAhIXZhbHVlICYmIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHBhdHRlcm4udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbWF0Y2hpbmdTdHJhdGVneSA9PT0gTWF0Y2hpbmdTdHJhdGVneS5DT05UQUlOUykge1xuICAgICAgICAgICAgcmV0dXJuICEhcGF0dGVybiAmJiAhIXZhbHVlICYmIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHBhdHRlcm4pID4gLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gISFwYXR0ZXJuICYmICEhdmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSBwYXR0ZXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgaGFzT2JqZWN0VmFsdWUob2JqOiBhbnksIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBvYmplY3RWYWx1ZXMob2JqKTtcbiAgICAgICAgY29uc3QgcGFyZW50T2JqID0gb2JqZWN0VG9OYW1lKG9iaik7XG4gICAgICAgIGNvbnN0IGxlbmd0aDIgPSB2YWx1ZXMuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghaXNKc09iamVjdCh2YWx1ZSkgJiYgIWlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHBhdHRlcm4pICE9PSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkgJiYgb2JqZWN0VG9OYW1lKHZhbHVlKSAhPT0gcGFyZW50T2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzT2JqZWN0VmFsdWUodmFsdWUsIHBhdHRlcm4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGxlbmd0aDIgPiAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB3aXRoTGltaXQoZGF0YTogQXJyYXk8VD4sIGxpbWl0PzogbnVtYmVyKTogQXJyYXk8VD4ge1xuICAgICAgICBpZiAobGltaXQgJiYgZGF0YS5sZW5ndGggPiBsaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEuc2xpY2UoMCwgbGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGF0YS1wcm92aWRlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvZGF0YS1zb3VyY2UvYmFzZS9hYnN0cmFjdC1kYXRhLXByb3ZpZGVyLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFDSCwwQ0FBMEMsRUFDMUMsWUFBWSxFQUNaLFlBQVksRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBdUIsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVwRjs7R0FFRztBQUNILE1BQU0sT0FBZ0Isb0JBQW9CO0lBQTFDO1FBSUksY0FBYztRQUNKLHNCQUFpQixHQUFxQixnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFFN0UsY0FBYztRQUNKLGdCQUFXLEdBQXNCLElBQUksQ0FBQztJQXFCcEQsQ0FBQztJQWpCRyxjQUFjO0lBQ2QsWUFBWSxDQUFDLEdBQVc7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7SUFDZCxhQUFhLENBQUMsVUFBc0I7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7SUFDZCxtQkFBbUIsQ0FBQyxRQUEwQjtRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLENBQUM7Q0FJSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQWdCLFNBQVEsb0JBQXVCO0lBR3hELGNBQWM7SUFDZCxZQUFzQixN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U0FBUyxFQUFFO2dCQUMvRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzlDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1YsT0FBTyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjO0lBQ04sU0FBUyxDQUFDLElBQWMsRUFBRSxLQUFjO1FBQzVDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc0pzT2JqZWN0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBnZXRNYXRjaGluZ1N0cmF0ZWd5U3RhcnRzV2l0aFBlclRlcm1SZXFleHAsXG4gICAgb2JqZWN0VG9OYW1lLFxuICAgIG9iamVjdFZhbHVlcyxcbiAgICBQcm92aWRlclBhcmFtc1xufSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRjaEJ5LCBNYXRjaGluZ0J5LCBNYXRjaGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vbW9kZWxzL21hdGNoaW5nLXN0cmF0ZWd5JztcblxuLyoqXG4gKiBCYXNlIGRhdGEgcHJvdmlkZXIgY2xhc3MuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERhdGFQcm92aWRlcjxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2tleVBhdGg6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tYXRjaGluZ1N0cmF0ZWd5OiBNYXRjaGluZ1N0cmF0ZWd5ID0gTWF0Y2hpbmdTdHJhdGVneS5TVEFSVFNfV0lUSDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tYXRjaGluZ0J5OiBNYXRjaGluZ0J5IHwgbnVsbCA9IG51bGw7XG5cbiAgICBhYnN0cmFjdCBmZXRjaChwYXJhbXM6IFByb3ZpZGVyUGFyYW1zLCBzdGFydD86IG51bWJlciwgZW5kPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRMb29rdXBLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5UGF0aCA9IGtleTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldE1hdGNoaW5nQnkobWF0Y2hpbmdCeTogTWF0Y2hpbmdCeSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tYXRjaGluZ0J5ID0gbWF0Y2hpbmdCeTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldE1hdGNoaW5nU3RyYXRlZ3koc3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWF0Y2hpbmdTdHJhdGVneSA9IHN0cmF0ZWd5O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWJzdHJhY3QgZ2V0VG90YWxJdGVtcyhwYXJhbXM/OiBNYXA8c3RyaW5nLCBhbnk+KTogT2JzZXJ2YWJsZTxudW1iZXI+O1xufVxuXG4vKipcbiAqIERlZmF1bHQgZGF0YSBwcm92aWRlciBjbGFzcyB1c2VkIGZvciBvdGhlciBjb21wb25lbnRzIHRvIGV4dGVuZCBmcm9tLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YVByb3ZpZGVyPFQ+IGV4dGVuZHMgQWJzdHJhY3REYXRhUHJvdmlkZXI8VD4ge1xuICAgIC8qKiBEZWZhdWx0IGxpbWl0IGZvciB0aGUgcGFnaW5hdGlvbi4gKi9cbiAgICBwdWJsaWMgZGVmYXVsdExpbWl0ID0gNTA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdmFsdWVzOiBPYnNlcnZhYmxlPFRbXT4gfCBUW10pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZldGNoKHBhcmFtczogTWFwPHN0cmluZywgYW55Pik6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGUgPSBpc09ic2VydmFibGUodGhpcy52YWx1ZXMpID8gdGhpcy52YWx1ZXMgOiBvZih0aGlzLnZhbHVlcyk7XG5cbiAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXMuZ2V0KCdxdWVyeScpO1xuICAgICAgICBjb25zdCBsaW1pdCA9IHBhcmFtcy5nZXQoJ2xpbWl0JykgfHwgdGhpcy5kZWZhdWx0TGltaXQ7XG5cbiAgICAgICAgaWYgKCFxdWVyeVN0cmluZyB8fCBxdWVyeVN0cmluZyA9PT0gJyonKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKG1hcCgoaXRlbXMpID0+IHRoaXMud2l0aExpbWl0KGl0ZW1zLCBsaW1pdCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvTG93ZXJQYXR0ZXJuID0gcXVlcnlTdHJpbmcudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaGVzKGl0ZW0sIHRvTG93ZXJQYXR0ZXJuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+PSBsaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBvYnNlcnZhYmxlIHdpdGggdGhlIG51bWJlciBvZiB0b3RhbCBpdGVtcyB0aGF0IHNhdGlzZnkgdGhlIHNlYXJjaCBxdWVyeS5cbiAgICAgKiBXYXJuaW5nOiB0aGlzIGlzIGEgbmFpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG51bWJlciBvZiB0aGUgZmlsdGVyZWQgaXRlbXMuXG4gICAgICogRm9yIHJlYWwtd29ybGQgc2NlbmFyaW9zLCBpdCBpcyByZWNvbW1lbmRlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCB3aXRoIGl0cyBvd24gbG9naWMuXG4gICAgICovXG4gICAgZ2V0VG90YWxJdGVtcyhwYXJhbXM6IE1hcDxzdHJpbmcsIGFueT4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlID0gaXNPYnNlcnZhYmxlKHRoaXMudmFsdWVzKSA/IHRoaXMudmFsdWVzIDogb2YodGhpcy52YWx1ZXMpO1xuICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHBhcmFtcy5nZXQoJ3F1ZXJ5Jyk7XG5cbiAgICAgICAgaWYgKCFxdWVyeVN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGUucGlwZShtYXAoKGl0ZW1zKSA9PiBpdGVtcy5sZW5ndGgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvTG93ZXJQYXR0ZXJuID0gcXVlcnlTdHJpbmcudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKG1hcCgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5tYXRjaGVzKGl0ZW0sIHRvTG93ZXJQYXR0ZXJuKSkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2FybmluZzogSWYgeW91IGRvbid0IHN1cHBseSBzZWFyY2ggS2V5IGFuZCB5b3Ugd2FudCBmdWxsdGV4dCBzZWFyY2gsIGFuZCB5b3UgdXNlIHRoaXNcbiAgICAgKiBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBiZSBhd2FyZSB0aGF0IGl0IGNhbiBwZXJmb3JtIHBvb3JseSBhcyBpdCBpcyBhIG5haXZlIGltcGxlbWVudGF0aW9uXG4gICAgICogdGhhdCBkb2VzIG5vdCBkbyBkZWVwIGNvbXBhcmUuXG4gICAgICovXG4gICAgbWF0Y2hlcyhpdGVtOiBULCBwYXR0ZXJuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLl9tYXRjaGluZ0J5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBmaXJzdEJ5LCBzZWNvbmRhcnlCeSB9ID0gdGhpcy5fbWF0Y2hpbmdCeTtcblxuICAgICAgICBsZXQgbWF0Y2hlZCA9IHRoaXMubWF0Y2hlc0J5KGl0ZW0sIHBhdHRlcm4sIGZpcnN0QnkpO1xuICAgICAgICBpZiAoIW1hdGNoZWQgJiYgc2Vjb25kYXJ5QnkpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0aGlzLm1hdGNoZXNCeShpdGVtLCBwYXR0ZXJuLCBzZWNvbmRhcnlCeSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1hdGNoZXNCeShpdGVtOiBhbnksIHBhdHRlcm46IHN0cmluZywgbWF0Y2hpbmdCeTogTWF0Y2hCeSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGlzSnNPYmplY3QoaXRlbSkgJiYgbWF0Y2hpbmdCeSA/IG1hdGNoaW5nQnkoaXRlbSkgOiBpdGVtO1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmNhbGwoaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc09iamVjdFZhbHVlKGl0ZW0sIHBhdHRlcm4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX21hdGNoaW5nU3RyYXRlZ3kgPT09IE1hdGNoaW5nU3RyYXRlZ3kuU1RBUlRTX1dJVEhfUEVSX1RFUk0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcWV4cCA9IGdldE1hdGNoaW5nU3RyYXRlZ3lTdGFydHNXaXRoUGVyVGVybVJlcWV4cChwYXR0ZXJuKTtcbiAgICAgICAgICAgIHJldHVybiAhIXBhdHRlcm4gJiYgISF2YWx1ZSAmJiAhIXZhbHVlLm1hdGNoKHJlcWV4cCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbWF0Y2hpbmdTdHJhdGVneSA9PT0gTWF0Y2hpbmdTdHJhdGVneS5TVEFSVFNfV0lUSCkge1xuICAgICAgICAgICAgcmV0dXJuICEhcGF0dGVybiAmJiAhIXZhbHVlICYmIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHBhdHRlcm4udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbWF0Y2hpbmdTdHJhdGVneSA9PT0gTWF0Y2hpbmdTdHJhdGVneS5DT05UQUlOUykge1xuICAgICAgICAgICAgcmV0dXJuICEhcGF0dGVybiAmJiAhIXZhbHVlICYmIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHBhdHRlcm4pID4gLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gISFwYXR0ZXJuICYmICEhdmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSBwYXR0ZXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgaGFzT2JqZWN0VmFsdWUob2JqOiBhbnksIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBvYmplY3RWYWx1ZXMob2JqKTtcbiAgICAgICAgY29uc3QgcGFyZW50T2JqID0gb2JqZWN0VG9OYW1lKG9iaik7XG4gICAgICAgIGNvbnN0IGxlbmd0aDIgPSB2YWx1ZXMuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghaXNKc09iamVjdCh2YWx1ZSkgJiYgIWlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHBhdHRlcm4pICE9PSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkgJiYgb2JqZWN0VG9OYW1lKHZhbHVlKSAhPT0gcGFyZW50T2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzT2JqZWN0VmFsdWUodmFsdWUsIHBhdHRlcm4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGxlbmd0aDIgPiAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB3aXRoTGltaXQoZGF0YTogQXJyYXk8VD4sIGxpbWl0PzogbnVtYmVyKTogQXJyYXk8VD4ge1xuICAgICAgICBpZiAobGltaXQgJiYgZGF0YS5sZW5ndGggPiBsaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEuc2xpY2UoMCwgbGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cbiJdfQ==
@@ -23,7 +23,7 @@ export class BaseDataSource {
23
23
  return this._dataLoading$.asObservable();
24
24
  }
25
25
  /**
26
- * Emits when data from the provides has been changed.
26
+ * Emits when the data from the provider has been changed.
27
27
  * @returns Observable of data source objects.
28
28
  */
29
29
  get dataChanges() {
@@ -39,9 +39,9 @@ export class BaseDataSource {
39
39
  /** @hidden */
40
40
  this._dataChanges$ = new BehaviorSubject([]);
41
41
  /** @hidden */
42
- this._dataRequested$ = new Subject();
42
+ this._dataRequested$ = new BehaviorSubject(false);
43
43
  /** @hidden */
44
- this._dataReceived$ = new Subject();
44
+ this._dataReceived$ = new BehaviorSubject(false);
45
45
  /** @hidden */
46
46
  this._destroy$ = new Subject();
47
47
  /** @hidden */
@@ -54,36 +54,32 @@ export class BaseDataSource {
54
54
  * @param end end index.
55
55
  */
56
56
  match(predicate = new Map(), start = 0, end = Infinity) {
57
- this._dataRequested$.next();
57
+ this._dataRequested$.next(true);
58
58
  this._dataLoading$.next(true);
59
- const searchParam = new Map();
60
- if (typeof predicate === 'string') {
61
- searchParam.set('query', predicate);
62
- }
63
- else if (predicate instanceof Map) {
64
- predicate.forEach((v, k) => searchParam.set(k, v));
65
- }
66
- else {
67
- throw new Error('DataSource.match() predicate can only accepts string and Map');
68
- }
69
- if (!searchParam.has('limit') && !this.limitless) {
70
- searchParam.set('limit', BaseDataSource.MaxLimit);
71
- }
59
+ const searchParam = this._getSearchParams(predicate);
72
60
  this.dataProvider
73
61
  .fetch(searchParam, start, end)
74
62
  .pipe(takeUntil(this._destroy$))
75
63
  .subscribe({
76
64
  next: (result) => {
77
- this._dataReceived$.next();
65
+ this._dataReceived$.next(true);
78
66
  this._dataLoading$.next(false);
79
67
  this._dataChanges$.next(result);
80
68
  },
81
69
  error: () => {
82
- this._dataReceived$.next();
70
+ this._dataReceived$.next(false);
83
71
  this._dataLoading$.next(false);
84
72
  }
85
73
  });
86
74
  }
75
+ /**
76
+ * Returns the Observable of a total items number filtered by the `predicate` param.
77
+ * @param predicate Search query.
78
+ */
79
+ getTotalItems(predicate = new Map()) {
80
+ const searchParam = this._getSearchParams(predicate);
81
+ return this.dataProvider.getTotalItems(searchParam);
82
+ }
87
83
  /**
88
84
  * Closes the stream
89
85
  */
@@ -91,9 +87,26 @@ export class BaseDataSource {
91
87
  this._destroy$.next();
92
88
  this._destroy$.complete();
93
89
  }
90
+ /** @hidden */
91
+ _getSearchParams(predicate) {
92
+ const searchParam = new Map();
93
+ if (typeof predicate === 'string') {
94
+ searchParam.set('query', predicate);
95
+ }
96
+ else if (predicate instanceof Map) {
97
+ predicate.forEach((v, k) => searchParam.set(k, v));
98
+ }
99
+ else {
100
+ throw new Error('DataSource.match() predicate can only accepts string and Map');
101
+ }
102
+ if (!searchParam.has('limit') && !this.limitless) {
103
+ searchParam.set('limit', BaseDataSource.MaxLimit);
104
+ }
105
+ return searchParam;
106
+ }
94
107
  }
95
108
  /**
96
109
  * Max limit of items to be returned.
97
110
  */
98
111
  BaseDataSource.MaxLimit = 5;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYXRhLXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvZGF0YS1zb3VyY2UvYmFzZS9iYXNlLWRhdGEtc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzQyxNQUFNLE9BQWdCLGNBQWM7SUF1QmhDOzs7T0FHRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBNkIsWUFBdUM7UUFBdkMsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBbERwRTs7V0FFRztRQUNILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsY0FBYztRQUNLLGtCQUFhLEdBQXlCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLGNBQWM7UUFDSyxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDekQsY0FBYztRQUNLLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN4RCxjQUFjO1FBQ0ssY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbkQsY0FBYztRQUNLLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFtQ0EsQ0FBQztJQUV4RTs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxZQUEwQyxJQUFJLEdBQUcsRUFBa0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRO1FBQ2hHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU5QixJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvQixXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN2QzthQUFNLElBQUksU0FBUyxZQUFZLEdBQUcsRUFBRTtZQUNqQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzlDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksQ0FBQyxZQUFZO2FBQ1osS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7QUF0R0Q7O0dBRUc7QUFDYSx1QkFBUSxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVByb3ZpZGVyIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEFic3RyYWN0RGF0YVByb3ZpZGVyIH0gZnJvbSAnLi9hYnN0cmFjdC1kYXRhLXByb3ZpZGVyLmNsYXNzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEYXRhU291cmNlPFQ+IGltcGxlbWVudHMgRGF0YVNvdXJjZVByb3ZpZGVyPFQ+IHtcbiAgICAvKipcbiAgICAgKiBNYXggbGltaXQgb2YgaXRlbXMgdG8gYmUgcmV0dXJuZWQuXG4gICAgICovXG4gICAgc3RhdGljIHJlYWRvbmx5IE1heExpbWl0ID0gNTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIGxpbWl0IG9mIG1heCBpdGVtcy5cbiAgICAgKi9cbiAgICBsaW1pdGxlc3MgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhQ2hhbmdlcyQ6IEJlaGF2aW9yU3ViamVjdDxUW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGF0YVJlcXVlc3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhUmVjZWl2ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlXG4gICAgICovXG4gICAgZ2V0IGRhdGFSZXF1ZXN0ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUmVxdWVzdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gbmV3IGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIGdldCBkYXRhUmVjZWl2ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUmVjZWl2ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBsb2FkaW5nIHN0YXRlIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZS5cbiAgICAgKi9cbiAgICBnZXQgZGF0YUxvYWRpbmcoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhTG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBkYXRhIGZyb20gdGhlIHByb3ZpZGVzIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiBkYXRhIHNvdXJjZSBvYmplY3RzLlxuICAgICAqL1xuICAgIGdldCBkYXRhQ2hhbmdlcygpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUNoYW5nZXMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHVibGljIGRhdGFQcm92aWRlcjogQWJzdHJhY3REYXRhUHJvdmlkZXI8YW55Pikge31cblxuICAgIC8qKlxuICAgICAqIFNlYXJjaGVzIHRocm91Z2ggdGhlIGRhdGEgc291cmNlIHdpdGggZGVmaW5lZCBwYXJhbWV0ZXJzLlxuICAgICAqIEBwYXJhbSBwcmVkaWNhdGUgU2VhcmNoIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBpbmRleC5cbiAgICAgKiBAcGFyYW0gZW5kIGVuZCBpbmRleC5cbiAgICAgKi9cbiAgICBtYXRjaChwcmVkaWNhdGU6IHN0cmluZyB8IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLCBzdGFydCA9IDAsIGVuZCA9IEluZmluaXR5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGFSZXF1ZXN0ZWQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgc2VhcmNoUGFyYW0uc2V0KCdxdWVyeScsIHByZWRpY2F0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJlZGljYXRlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBwcmVkaWNhdGUuZm9yRWFjaCgodiwgaykgPT4gc2VhcmNoUGFyYW0uc2V0KGssIHYpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGF0YVNvdXJjZS5tYXRjaCgpIHByZWRpY2F0ZSBjYW4gb25seSBhY2NlcHRzIHN0cmluZyBhbmQgTWFwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNlYXJjaFBhcmFtLmhhcygnbGltaXQnKSAmJiAhdGhpcy5saW1pdGxlc3MpIHtcbiAgICAgICAgICAgIHNlYXJjaFBhcmFtLnNldCgnbGltaXQnLCBCYXNlRGF0YVNvdXJjZS5NYXhMaW1pdCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRhdGFQcm92aWRlclxuICAgICAgICAgICAgLmZldGNoKHNlYXJjaFBhcmFtLCBzdGFydCwgZW5kKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhUmVjZWl2ZWQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhQ2hhbmdlcyQubmV4dChyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YVJlY2VpdmVkJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIHN0cmVhbVxuICAgICAqL1xuICAgIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYXRhLXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvZGF0YS1zb3VyY2UvYmFzZS9iYXNlLWRhdGEtc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzQyxNQUFNLE9BQWdCLGNBQWM7SUF1QmhDOzs7T0FHRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBNkIsWUFBdUM7UUFBdkMsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBbERwRTs7V0FFRztRQUNILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsY0FBYztRQUNLLGtCQUFhLEdBQXlCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLGNBQWM7UUFDSyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLGNBQWM7UUFDSyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLGNBQWM7UUFDSyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVuRCxjQUFjO1FBQ0ssa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQW1DQSxDQUFDO0lBRXhFOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFlBQTBDLElBQUksR0FBRyxFQUFrQixFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVE7UUFDaEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxZQUFZO2FBQ1osS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxZQUEwQyxJQUFJLEdBQUcsRUFBa0I7UUFDN0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXJELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQixDQUFDLFNBQXVDO1FBQzVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFFM0MsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDL0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDdkM7YUFBTSxJQUFJLFNBQVMsWUFBWSxHQUFHLEVBQUU7WUFDakMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztTQUNuRjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM5QyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOztBQXZIRDs7R0FFRztBQUNhLHVCQUFRLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU291cmNlUHJvdmlkZXIgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhUHJvdmlkZXIgfSBmcm9tICcuL2Fic3RyYWN0LWRhdGEtcHJvdmlkZXIuY2xhc3MnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZURhdGFTb3VyY2U8VD4gaW1wbGVtZW50cyBEYXRhU291cmNlUHJvdmlkZXI8VD4ge1xuICAgIC8qKlxuICAgICAqIE1heCBsaW1pdCBvZiBpdGVtcyB0byBiZSByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBzdGF0aWMgcmVhZG9ubHkgTWF4TGltaXQgPSA1O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBlbmFibGUgbGltaXQgb2YgbWF4IGl0ZW1zLlxuICAgICAqL1xuICAgIGxpbWl0bGVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFDaGFuZ2VzJDogQmVoYXZpb3JTdWJqZWN0PFRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhUmVxdWVzdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhUmVjZWl2ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBuZXcgZGF0YSBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIGdldCBkYXRhUmVxdWVzdGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVJlcXVlc3RlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGVcbiAgICAgKi9cbiAgICBnZXQgZGF0YVJlY2VpdmVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVJlY2VpdmVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gbG9hZGluZyBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUuXG4gICAgICovXG4gICAgZ2V0IGRhdGFMb2FkaW5nKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlIGRhdGEgZnJvbSB0aGUgcHJvdmlkZXIgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGRhdGEgc291cmNlIG9iamVjdHMuXG4gICAgICovXG4gICAgZ2V0IGRhdGFDaGFuZ2VzKCk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0YVByb3ZpZGVyOiBBYnN0cmFjdERhdGFQcm92aWRlcjxhbnk+KSB7fVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoZXMgdGhyb3VnaCB0aGUgZGF0YSBzb3VyY2Ugd2l0aCBkZWZpbmVkIHBhcmFtZXRlcnMuXG4gICAgICogQHBhcmFtIHByZWRpY2F0ZSBTZWFyY2ggcXVlcnkuXG4gICAgICogQHBhcmFtIHN0YXJ0IHN0YXJ0IGluZGV4LlxuICAgICAqIEBwYXJhbSBlbmQgZW5kIGluZGV4LlxuICAgICAqL1xuICAgIG1hdGNoKHByZWRpY2F0ZTogc3RyaW5nIHwgTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCksIHN0YXJ0ID0gMCwgZW5kID0gSW5maW5pdHkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGF0YVJlcXVlc3RlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtID0gdGhpcy5fZ2V0U2VhcmNoUGFyYW1zKHByZWRpY2F0ZSk7XG5cbiAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIC5mZXRjaChzZWFyY2hQYXJhbSwgc3RhcnQsIGVuZClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzdWx0OiBUW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YVJlY2VpdmVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2VzJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhUmVjZWl2ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgT2JzZXJ2YWJsZSBvZiBhIHRvdGFsIGl0ZW1zIG51bWJlciBmaWx0ZXJlZCBieSB0aGUgYHByZWRpY2F0ZWAgcGFyYW0uXG4gICAgICogQHBhcmFtIHByZWRpY2F0ZSBTZWFyY2ggcXVlcnkuXG4gICAgICovXG4gICAgZ2V0VG90YWxJdGVtcyhwcmVkaWNhdGU6IHN0cmluZyB8IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW0gPSB0aGlzLl9nZXRTZWFyY2hQYXJhbXMocHJlZGljYXRlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhUHJvdmlkZXIuZ2V0VG90YWxJdGVtcyhzZWFyY2hQYXJhbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBzdHJlYW1cbiAgICAgKi9cbiAgICB1bnN1YnNjcmliZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2VhcmNoUGFyYW1zKHByZWRpY2F0ZTogc3RyaW5nIHwgTWFwPHN0cmluZywgc3RyaW5nPik6IE1hcDxzdHJpbmcsIGFueT4ge1xuICAgICAgICBjb25zdCBzZWFyY2hQYXJhbSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzZWFyY2hQYXJhbS5zZXQoJ3F1ZXJ5JywgcHJlZGljYXRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmVkaWNhdGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgIHByZWRpY2F0ZS5mb3JFYWNoKCh2LCBrKSA9PiBzZWFyY2hQYXJhbS5zZXQoaywgdikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhU291cmNlLm1hdGNoKCkgcHJlZGljYXRlIGNhbiBvbmx5IGFjY2VwdHMgc3RyaW5nIGFuZCBNYXAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VhcmNoUGFyYW0uaGFzKCdsaW1pdCcpICYmICF0aGlzLmxpbWl0bGVzcykge1xuICAgICAgICAgICAgc2VhcmNoUGFyYW0uc2V0KCdsaW1pdCcsIEJhc2VEYXRhU291cmNlLk1heExpbWl0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWFyY2hQYXJhbTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2RhdGEtc291cmNlL21vZGVscy9kYXRhLXNvdXJjZS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIERhdGEgc291cmNlIHByb3ZpZGVyIGNsYXNzIGNvbnRyb2xzIHRoZSBkYXRhIHN0cmVhbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlUHJvdmlkZXI8VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgZGF0YSBzdHJlYW0uXG4gICAgICovXG4gICAgdW5zdWJzY3JpYmUoKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSBlbWl0cyB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAgICAgKi9cbiAgICBkYXRhUmVxdWVzdGVkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIFN0cmVhbSBlbWl0cyB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIGxvYWRlZC5cbiAgICAgKi9cbiAgICBkYXRhUmVjZWl2ZWQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgLyoqXG4gICAgICogU3RyZWFtIGVtaXRzIHdoZW4gbG9hZGluZyBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqL1xuICAgIGRhdGFMb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgZGF0YUNoYW5nZXM6IE9ic2VydmFibGU8VFtdPjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2RhdGEtc291cmNlL21vZGVscy9kYXRhLXNvdXJjZS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIERhdGEgc291cmNlIHByb3ZpZGVyIGNsYXNzIGNvbnRyb2xzIHRoZSBkYXRhIHN0cmVhbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlUHJvdmlkZXI8VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgZGF0YSBzdHJlYW0uXG4gICAgICovXG4gICAgdW5zdWJzY3JpYmUoKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSBlbWl0cyB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAgICAgKi9cbiAgICBkYXRhUmVxdWVzdGVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKlxuICAgICAqIFN0cmVhbSBlbWl0cyB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIGxvYWRlZC5cbiAgICAgKi9cbiAgICBkYXRhUmVjZWl2ZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqXG4gICAgICogU3RyZWFtIGVtaXRzIHdoZW4gbG9hZGluZyBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqL1xuICAgIGRhdGFMb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgZGF0YUNoYW5nZXM6IE9ic2VydmFibGU8VFtdPjtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2RhdGEtc291cmNlL21vZGVscy9kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVByb3ZpZGVyIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1wcm92aWRlcic7XG5cbi8qKlxuICogQWNjZXB0YWJsZSBkYXRhIHNvdXJjZSB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YVNvdXJjZTxUID0gYW55PiA9IERhdGFTb3VyY2VQcm92aWRlcjxUPiB8IE9ic2VydmFibGU8VFtdPiB8IFRbXTtcblxuLyoqXG4gKiBEYXRhIHNvdXJjZSBwYXJzZXIgaXMgYSBzcGVjaWFsIGNsYXNzIHRoYXQgcGFyc2VzIGluY29taW5nIGRhdGEgaW50byBhcHByb3ByaWF0ZSBkYXRhIHNvdXJjZSBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlUGFyc2VyPFQgPSBhbnksIFAgZXh0ZW5kcyBEYXRhU291cmNlUHJvdmlkZXI8VD4gPSBEYXRhU291cmNlUHJvdmlkZXI8VD4+IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoaWNoIGRhdGEgcHJvdmlkZXIgY2xhc3MgdG8gaW5pdGlhdGUuXG4gICAgICogQHBhcmFtIHNvdXJjZSBkYXRhIHNvdXJjZSB0byBiZSBwYXJzZWQuXG4gICAgICovXG4gICAgcGFyc2Uoc291cmNlOiBEYXRhU291cmNlPFQ+KTogUCB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2RhdGEtc291cmNlL21vZGVscy9kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVByb3ZpZGVyIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1wcm92aWRlcic7XG5cbi8qKlxuICogQWNjZXB0YWJsZSBkYXRhIHNvdXJjZSB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YVNvdXJjZTxUID0gYW55LCBQIGV4dGVuZHMgRGF0YVNvdXJjZVByb3ZpZGVyPFQ+ID0gRGF0YVNvdXJjZVByb3ZpZGVyPFQ+PiA9IFAgfCBPYnNlcnZhYmxlPFRbXT4gfCBUW107XG5cbi8qKlxuICogRGF0YSBzb3VyY2UgcGFyc2VyIGlzIGEgc3BlY2lhbCBjbGFzcyB0aGF0IHBhcnNlcyBpbmNvbWluZyBkYXRhIGludG8gYXBwcm9wcmlhdGUgZGF0YSBzb3VyY2UgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVNvdXJjZVBhcnNlcjxUID0gYW55LCBQIGV4dGVuZHMgRGF0YVNvdXJjZVByb3ZpZGVyPFQ+ID0gRGF0YVNvdXJjZVByb3ZpZGVyPFQ+PiB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGljaCBkYXRhIHByb3ZpZGVyIGNsYXNzIHRvIGluaXRpYXRlLlxuICAgICAqIEBwYXJhbSBzb3VyY2UgZGF0YSBzb3VyY2UgdG8gYmUgcGFyc2VkLlxuICAgICAqL1xuICAgIHBhcnNlKHNvdXJjZTogRGF0YVNvdXJjZTxUPik6IFAgfCB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  import { Directive, EventEmitter, Output } from '@angular/core';
2
- import { Observable } from 'rxjs';
3
2
  import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
4
3
  import * as i0 from "@angular/core";
5
4
  export class DeprecatedClickedDirective extends DeprecatedSelector {
@@ -28,8 +27,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
28
27
  export class ClickedDirective {
29
28
  constructor() {
30
29
  /**
31
- * FdkClicked output. Sole purpose of existence of this directive is to just silence Angular Language Service.
32
- * This is only viable solution, since NO_ERRORS_SCHEMA silences everything and valuable exception might slip
30
+ * FdkClicked output. The sole purpose of the existence of this directive is to just silence Angular Language Service.
31
+ * This is the only viable solution, since NO_ERRORS_SCHEMA silences everything and valuable exception might slip
33
32
  * through your eyes.
34
33
  */
35
34
  this.fdkClicked = new EventEmitter();
@@ -49,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
49
48
  }], propDecorators: { fdkClicked: [{
50
49
  type: Output
51
50
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2tlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvY2xpY2tlZC9jbGlja2VkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFhekMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGtCQUFrQjs7dUhBQXJELDBCQUEwQjsyR0FBMUIsMEJBQTBCLDBEQVB4QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQztTQUM5RDtLQUNKOzJGQUVRLDBCQUEwQjtrQkFYdEMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDO3lCQUM5RDtxQkFDSjtpQkFDSjs7QUFNRCxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBUUk7Ozs7V0FJRztRQUNPLGVBQVUsR0FBMkMsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQUNyRjs7QUFWRzs7R0FFRztBQUNJLDBCQUFTLEdBQUcsWUFBWSxDQUFDOzZHQUp2QixnQkFBZ0I7aUdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUg1QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxjQUFjO2lCQUMzQjs4QkFXYSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZuQ2xpY2tlZF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0NsaWNrZWRdJywgJ1tmbkNsaWNrZWRdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZENsaWNrZWREaXJlY3RpdmUgZXh0ZW5kcyBEZXByZWNhdGVkU2VsZWN0b3Ige31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrQ2xpY2tlZF0nXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrZWREaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEV2ZW50IG5hbWUuXG4gICAgICovXG4gICAgc3RhdGljIGV2ZW50TmFtZSA9ICdmZGtDbGlja2VkJztcbiAgICAvKipcbiAgICAgKiBGZGtDbGlja2VkIG91dHB1dC4gU29sZSBwdXJwb3NlIG9mIGV4aXN0ZW5jZSBvZiB0aGlzIGRpcmVjdGl2ZSBpcyB0byBqdXN0IHNpbGVuY2UgQW5ndWxhciBMYW5ndWFnZSBTZXJ2aWNlLlxuICAgICAqIFRoaXMgaXMgb25seSB2aWFibGUgc29sdXRpb24sIHNpbmNlIE5PX0VSUk9SU19TQ0hFTUEgc2lsZW5jZXMgZXZlcnl0aGluZyBhbmQgdmFsdWFibGUgZXhjZXB0aW9uIG1pZ2h0IHNsaXBcbiAgICAgKiB0aHJvdWdoIHlvdXIgZXllcy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmRrQ2xpY2tlZDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2tlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvY2xpY2tlZC9jbGlja2VkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7O0FBYXpDLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxrQkFBa0I7O3VIQUFyRCwwQkFBMEI7MkdBQTFCLDBCQUEwQiwwREFQeEI7UUFDUDtZQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUM7U0FDOUQ7S0FDSjsyRkFFUSwwQkFBMEI7a0JBWHRDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQzt5QkFDOUQ7cUJBQ0o7aUJBQ0o7O0FBTUQsTUFBTSxPQUFPLGdCQUFnQjtJQUg3QjtRQVFJOzs7O1dBSUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQThCLENBQUM7S0FDekU7O0FBVkc7O0dBRUc7QUFDSSwwQkFBUyxHQUFHLFlBQVksQ0FBQzs2R0FKdkIsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztpQkFDM0I7OEJBV2EsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRGVwcmVjYXRlZFNlbGVjdG9yLFxuICAgIEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgIGdldERlcHJlY2F0ZWRNb2RlbFxufSBmcm9tICcuLi8uLi9kZXByZWNhdGVkLXNlbGVjdG9yLmNsYXNzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmbkNsaWNrZWRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtDbGlja2VkXScsICdbZm5DbGlja2VkXScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRDbGlja2VkRGlyZWN0aXZlIGV4dGVuZHMgRGVwcmVjYXRlZFNlbGVjdG9yIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0NsaWNrZWRdJ1xufSlcbmV4cG9ydCBjbGFzcyBDbGlja2VkRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBFdmVudCBuYW1lLlxuICAgICAqL1xuICAgIHN0YXRpYyBldmVudE5hbWUgPSAnZmRrQ2xpY2tlZCc7XG4gICAgLyoqXG4gICAgICogRmRrQ2xpY2tlZCBvdXRwdXQuIFRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhlIGV4aXN0ZW5jZSBvZiB0aGlzIGRpcmVjdGl2ZSBpcyB0byBqdXN0IHNpbGVuY2UgQW5ndWxhciBMYW5ndWFnZSBTZXJ2aWNlLlxuICAgICAqIFRoaXMgaXMgdGhlIG9ubHkgdmlhYmxlIHNvbHV0aW9uLCBzaW5jZSBOT19FUlJPUlNfU0NIRU1BIHNpbGVuY2VzIGV2ZXJ5dGhpbmcgYW5kIHZhbHVhYmxlIGV4Y2VwdGlvbiBtaWdodCBzbGlwXG4gICAgICogdGhyb3VnaCB5b3VyIGV5ZXMuXG4gICAgICovXG4gICAgQE91dHB1dCgpIGZka0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PigpO1xufVxuIl19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectorRef, Directive, ElementRef, Inject, Input, Optional, Output } from '@angular/core';
1
+ import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';
2
2
  import { merge, Observable } from 'rxjs';
3
3
  import { SelectableItemToken } from './selectable-item.token';
4
4
  import { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';
@@ -47,6 +47,8 @@ export class SelectableItemDirective {
47
47
  this.selectionService = selectionService;
48
48
  this._elementRef = _elementRef;
49
49
  this._cd = _cd;
50
+ /** Event emitted when selection state being changed for selectable item. */
51
+ this.selected = new EventEmitter();
50
52
  /** @hidden */
51
53
  this._selected = false;
52
54
  /** @hidden */
@@ -78,6 +80,7 @@ export class SelectableItemDirective {
78
80
  }
79
81
  htmlElement.setAttribute('aria-selected', `${isSelected}`);
80
82
  }
83
+ this.selected.emit(isSelected);
81
84
  }
82
85
  /** @hidden */
83
86
  elementRef() {
@@ -107,7 +110,7 @@ export class SelectableItemDirective {
107
110
  }
108
111
  }
109
112
  SelectableItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectableItemDirective, deps: [{ token: FDK_SELECTABLE_ITEM_PROVIDER, optional: true }, { token: i1.FdkDisabledProvider }, { token: i2.FdkReadonlyProvider }, { token: i3.SelectionService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i4.FdkClickedProvider }], target: i0.ɵɵFactoryTarget.Directive });
110
- SelectableItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: SelectableItemDirective, isStandalone: true, selector: "[fdkSelectableItem]", inputs: { value: "value", fdkSelectableItem: "fdkSelectableItem" }, outputs: { clicked: "clicked" }, providers: [
113
+ SelectableItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: SelectableItemDirective, isStandalone: true, selector: "[fdkSelectableItem]", inputs: { value: "value", fdkSelectableItem: "fdkSelectableItem" }, outputs: { clicked: "clicked", selected: "selected" }, providers: [
111
114
  {
112
115
  provide: SelectableItemToken,
113
116
  useExisting: SelectableItemDirective
@@ -143,5 +146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
143
146
  type: Input
144
147
  }], clicked: [{
145
148
  type: Output
149
+ }], selected: [{
150
+ type: Output
146
151
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEQsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFnQjVFLE1BQU0sT0FBTyx1QkFBdUI7SUFHaEMsY0FBYztJQUNkLElBQ0ksS0FBSyxDQUFDLEdBQWM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksS0FBSztRQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQzlC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Qyw0QkFBNEI7eU9BN0NwQyxLQUFLO3NCQURSLEtBQUs7Z0JBYUYsaUJBQWlCO3NCQURwQixLQUFLO2dCQXNCTixPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1Ub2tlbiB9IGZyb20gJy4vc2VsZWN0YWJsZS1pdGVtLnRva2VuJztcbmltcG9ydCB7IEZES19TRUxFQ1RBQkxFX0lURU1fUFJPVklERVIgfSBmcm9tICcuL3NlbGVjdGFibGUtbGlzdC50b2tlbnMnO1xuaW1wb3J0IHsgRmRrRGlzYWJsZWRQcm92aWRlciB9IGZyb20gJy4uL2Rpc2FibGVkJztcbmltcG9ydCB7IEZka1JlYWRvbmx5UHJvdmlkZXIgfSBmcm9tICcuLi9yZWFkb25seSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGZGtDbGlja2VkUHJvdmlkZXIgfSBmcm9tICcuLi9jbGlja2VkJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrU2VsZWN0YWJsZUl0ZW1dJyxcbiAgICBleHBvcnRBczogJ2Zka1NlbGVjdGFibGVJdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTZWxlY3RhYmxlSXRlbVRva2VuLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdGFibGVJdGVtRGlyZWN0aXZlXG4gICAgICAgIH0sXG4gICAgICAgIEZka1JlYWRvbmx5UHJvdmlkZXIsXG4gICAgICAgIEZka0Rpc2FibGVkUHJvdmlkZXIsXG4gICAgICAgIEZka0NsaWNrZWRQcm92aWRlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmU8RWxlbWVudFR5cGUgZXh0ZW5kcyBFbGVtZW50ID0gSFRNTEVsZW1lbnQsIFZhbHVlVHlwZSA9IGFueT5cbiAgICBpbXBsZW1lbnRzIFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT5cbntcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbDogVmFsdWVUeXBlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogVmFsdWVUeXBlIHtcbiAgICAgICAgaWYgKHRoaXMucHJvdmlkZXIgJiYgdGhpcy5wcm92aWRlci52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRrU2VsZWN0YWJsZUl0ZW0odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBpc1NlbGVjdGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAoaXNTZWxlY3RhYmxlICE9PSB0aGlzLl9zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RhYmxlID0gaXNTZWxlY3RhYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGZka1NlbGVjdGFibGVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgc2VsZWN0YWJsZSA9IHRoaXMuX3NlbGVjdGFibGU7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm92aWRlcj8uZmRrU2VsZWN0YWJsZUl0ZW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZWxlY3RhYmxlID0gdGhpcy5wcm92aWRlci5mZGtTZWxlY3RhYmxlSXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgc2VsZWN0YWJsZSAmJlxuICAgICAgICAgICAgKCF0aGlzLmRpc2FibGVkJCB8fCAhdGhpcy5kaXNhYmxlZCQ/LmZka0Rpc2FibGVkKSAmJlxuICAgICAgICAgICAgKCF0aGlzLnJlYWRvbmx5JCB8fCAhdGhpcy5yZWFkb25seSQ/LmZka1JlYWRvbmx5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2xpY2tlZDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlITogVmFsdWVUeXBlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGFibGUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChGREtfU0VMRUNUQUJMRV9JVEVNX1BST1ZJREVSKVxuICAgICAgICBwcml2YXRlIHByb3ZpZGVyOiBQYXJ0aWFsPFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4+LFxuICAgICAgICBwcml2YXRlIGRpc2FibGVkJDogRmRrRGlzYWJsZWRQcm92aWRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSQ6IEZka1JlYWRvbmx5UHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgc2VsZWN0aW9uU2VydmljZTogU2VsZWN0aW9uU2VydmljZTxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPixcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxFbGVtZW50VHlwZT4sXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgX2NsaWNrZWQ6IEZka0NsaWNrZWRQcm92aWRlclxuICAgICkge1xuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0aGlzLnByb3ZpZGVyPy5jbGlja2VkIHx8IF9jbGlja2VkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Rpc2FibGluZ0V2ZW50cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0U2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnByb3ZpZGVyPy5nZXRTZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0U2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRTZWxlY3RlZChpc1NlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByb3ZpZGVyPy5zZXRTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5wcm92aWRlci5zZXRTZWxlY3RlZChpc1NlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gaXNTZWxlY3RlZDtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgeyBjbGFzc0xpc3QgfSA9IGh0bWxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBjbGFzc0xpc3QuYWRkKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjbGFzc0xpc3QucmVtb3ZlKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaHRtbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgYCR7aXNTZWxlY3RlZH1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmPEVsZW1lbnRUeXBlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9EaXNhYmxpbmdFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpc2FibGluZ0V2ZW50cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj5bXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCQpIHtcbiAgICAgICAgICAgIGRpc2FibGluZ0V2ZW50cyQucHVzaCh0aGlzLmRpc2FibGVkJCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkkKSB7XG4gICAgICAgICAgICBkaXNhYmxpbmdFdmVudHMkLnB1c2godGhpcy5yZWFkb25seSQpO1xuICAgICAgICB9XG4gICAgICAgIG1lcmdlKC4uLmRpc2FibGluZ0V2ZW50cyQpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91cGRhdGVTZWxlY3Rpb25BbmRTZWxlY3RhYmxlV2F0Y2hlcigpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGlvbkFuZFNlbGVjdGFibGVXYXRjaGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCQ/LmZka0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RJdGVtKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGFibGVXYXRjaGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVTZWxlY3RhYmxlV2F0Y2hlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmxpc3RlblRvSXRlbUludGVyYWN0aW9ucygpO1xuICAgIH1cbn1cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBZ0I1RSxNQUFNLE9BQU8sdUJBQXVCO0lBR2hDLGNBQWM7SUFDZCxJQUNJLEtBQUssQ0FBQyxHQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUss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bUI7NEJBQzVCLFdBQVcseUJBQXlCO3lCQUN2Qzt3QkFDRCxtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3FCQUNyQjtpQkFDSjs7MEJBc0RRLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsNEJBQTRCO3lPQWpEcEMsS0FBSztzQkFEUixLQUFLO2dCQWFGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFzQk4sT0FBTztzQkFETixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdGFibGVJdGVtVG9rZW4gfSBmcm9tICcuL3NlbGVjdGFibGUtaXRlbS50b2tlbic7XG5pbXBvcnQgeyBGREtfU0VMRUNUQUJMRV9JVEVNX1BST1ZJREVSIH0gZnJvbSAnLi9zZWxlY3RhYmxlLWxpc3QudG9rZW5zJztcbmltcG9ydCB7IEZka0Rpc2FibGVkUHJvdmlkZXIgfSBmcm9tICcuLi9kaXNhYmxlZCc7XG5pbXBvcnQgeyBGZGtSZWFkb25seVByb3ZpZGVyIH0gZnJvbSAnLi4vcmVhZG9ubHknO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmRrQ2xpY2tlZFByb3ZpZGVyIH0gZnJvbSAnLi4vY2xpY2tlZCc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka1NlbGVjdGFibGVJdGVtXScsXG4gICAgZXhwb3J0QXM6ICdmZGtTZWxlY3RhYmxlSXRlbScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogU2VsZWN0YWJsZUl0ZW1Ub2tlbixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICBGZGtSZWFkb25seVByb3ZpZGVyLFxuICAgICAgICBGZGtEaXNhYmxlZFByb3ZpZGVyLFxuICAgICAgICBGZGtDbGlja2VkUHJvdmlkZXJcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdGFibGVJdGVtRGlyZWN0aXZlPEVsZW1lbnRUeXBlIGV4dGVuZHMgRWxlbWVudCA9IEhUTUxFbGVtZW50LCBWYWx1ZVR5cGUgPSBhbnk+XG4gICAgaW1wbGVtZW50cyBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+XG57XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWw6IFZhbHVlVHlwZSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbDtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IFZhbHVlVHlwZSB7XG4gICAgICAgIGlmICh0aGlzLnByb3ZpZGVyICYmIHRoaXMucHJvdmlkZXIudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZka1NlbGVjdGFibGVJdGVtKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0YWJsZSAhPT0gdGhpcy5fc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0YWJsZSA9IGlzU2VsZWN0YWJsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBmZGtTZWxlY3RhYmxlSXRlbSgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHNlbGVjdGFibGUgPSB0aGlzLl9zZWxlY3RhYmxlO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvdmlkZXI/LmZka1NlbGVjdGFibGVJdGVtICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc2VsZWN0YWJsZSA9IHRoaXMucHJvdmlkZXIuZmRrU2VsZWN0YWJsZUl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHNlbGVjdGFibGUgJiZcbiAgICAgICAgICAgICghdGhpcy5kaXNhYmxlZCQgfHwgIXRoaXMuZGlzYWJsZWQkPy5mZGtEaXNhYmxlZCkgJiZcbiAgICAgICAgICAgICghdGhpcy5yZWFkb25seSQgfHwgIXRoaXMucmVhZG9ubHkkPy5mZGtSZWFkb25seSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNsaWNrZWQ6IE9ic2VydmFibGU8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+O1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBzZWxlY3Rpb24gc3RhdGUgYmVpbmcgY2hhbmdlZCBmb3Igc2VsZWN0YWJsZSBpdGVtLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWx1ZSE6IFZhbHVlVHlwZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3RhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoRkRLX1NFTEVDVEFCTEVfSVRFTV9QUk9WSURFUilcbiAgICAgICAgcHJpdmF0ZSBwcm92aWRlcjogUGFydGlhbDxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+PixcbiAgICAgICAgcHJpdmF0ZSBkaXNhYmxlZCQ6IEZka0Rpc2FibGVkUHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkkOiBGZGtSZWFkb25seVByb3ZpZGVyLFxuICAgICAgICBwcml2YXRlIHNlbGVjdGlvblNlcnZpY2U6IFNlbGVjdGlvblNlcnZpY2U8RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4sXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8RWxlbWVudFR5cGU+LFxuICAgICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIF9jbGlja2VkOiBGZGtDbGlja2VkUHJvdmlkZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5jbGlja2VkID0gdGhpcy5wcm92aWRlcj8uY2xpY2tlZCB8fCBfY2xpY2tlZC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9EaXNhYmxpbmdFdmVudHMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5wcm92aWRlcj8uZ2V0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLmdldFNlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0U2VsZWN0ZWQoaXNTZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm92aWRlcj8uc2V0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvdmlkZXIuc2V0U2VsZWN0ZWQoaXNTZWxlY3RlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XG4gICAgICAgICAgICBjb25zdCBodG1sRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHsgY2xhc3NMaXN0IH0gPSBodG1sRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgY2xhc3NMaXN0LmFkZCgnaXMtc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGh0bWxFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGAke2lzU2VsZWN0ZWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoaXNTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8RWxlbWVudFR5cGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0Rpc2FibGluZ0V2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlzYWJsaW5nRXZlbnRzJDogT2JzZXJ2YWJsZTxib29sZWFuPltdID0gW107XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkJCkge1xuICAgICAgICAgICAgZGlzYWJsaW5nRXZlbnRzJC5wdXNoKHRoaXMuZGlzYWJsZWQkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSQpIHtcbiAgICAgICAgICAgIGRpc2FibGluZ0V2ZW50cyQucHVzaCh0aGlzLnJlYWRvbmx5JCk7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2UoLi4uZGlzYWJsaW5nRXZlbnRzJCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZVNlbGVjdGlvbkFuZFNlbGVjdGFibGVXYXRjaGVyKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlU2VsZWN0aW9uQW5kU2VsZWN0YWJsZVdhdGNoZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkJD8uZmRrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdEl0ZW0odGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0YWJsZVdhdGNoZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGFibGVXYXRjaGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UubGlzdGVuVG9JdGVtSW50ZXJhY3Rpb25zKCk7XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
- import { ChangeDetectorRef, Injectable } from '@angular/core';
1
+ import { ChangeDetectorRef, Injectable, QueryList } from '@angular/core';
2
2
  import { coerceArray } from '@angular/cdk/coercion';
3
- import { combineLatest, merge, ReplaySubject, Subject, switchMap } from 'rxjs';
3
+ import { combineLatest, isObservable, merge, of, ReplaySubject, Subject, switchMap } from 'rxjs';
4
4
  import { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';
5
5
  import equal from 'fast-deep-equal';
6
6
  import * as i0 from "@angular/core";
@@ -35,8 +35,13 @@ export class SelectionService {
35
35
  /**
36
36
  * Initialize watcher for selection changes and user interactions
37
37
  * */
38
- initialize(queryList) {
39
- this._items$ = queryList.changes.pipe(startWith(queryList), map((items) => items.toArray()), shareReplay(1));
38
+ initialize(list) {
39
+ if (list instanceof QueryList) {
40
+ this._items$ = list.changes.pipe(startWith(list), map((items) => items.toArray()), shareReplay(1));
41
+ }
42
+ else {
43
+ this._items$ = isObservable(list) ? list : of(list);
44
+ }
40
45
  this.listenToItemInteractions();
41
46
  }
42
47
  /**
@@ -132,4 +137,4 @@ SelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ver
132
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectionService, decorators: [{
133
138
  type: Injectable
134
139
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1saXN0L3NlbGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDOztBQUtwQyxNQUFNLE9BQU8sZ0JBQWdCO0lBbUJ6QixjQUFjO0lBQ2QsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFkMUMsY0FBYztRQUNOLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBcUMsQ0FBQyxDQUFDLENBQUM7UUFLM0UsY0FBYztRQUNOLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3hDLGNBQWM7UUFDTixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QyxjQUFjO1FBQ04sV0FBTSxHQUFnQixFQUFFLENBQUM7UUFJN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFDM0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQVksQ0FBQyxDQUFD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UUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQixDQUFDLEtBQW9EO1FBQzNFLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQXNELENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQixDQUFDLE1BQTRDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7NkdBdEtRLGdCQUFnQjtpSEFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlSXRlbVRva2VuIH0gZnJvbSAnLi9zZWxlY3RhYmxlLWl0ZW0udG9rZW4nO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGUsIFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbiB9IGZyb20gJy4vc2VsZWN0LWNvbXBvbmVudC1yb290LnRva2VuJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvblNlcnZpY2U8RWxlbWVudFR5cGUgZXh0ZW5kcyBFbGVtZW50LCBWYWx1ZVR5cGUgPSBFbGVtZW50VHlwZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdmFsdWUkOiBPYnNlcnZhYmxlPFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPFZhbHVlVHlwZT4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pdGVtcyQhOiBPYnNlcnZhYmxlPFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT5bXT47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWx1ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxWYWx1ZVR5cGU+PigxKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25vcm1hbGl6ZWRWYWx1ZSQ6IE9ic2VydmFibGU8VmFsdWVUeXBlW10+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcm9vdENvbXBvbmVudCE6IFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbjxFbGVtZW50VHlwZT47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbGVhciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsdWU6IFZhbHVlVHlwZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICB0aGlzLl9ub3JtYWxpemVkVmFsdWUkID0gdGhpcy5fdmFsdWUkLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChlcXVhbCksXG4gICAgICAgICAgICBtYXAoKHYpID0+IGNvZXJjZUFycmF5PFZhbHVlVHlwZT4odikpLFxuICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gKHRoaXMuX2lzTXVsdGlwbGVNb2RlID8gdmFsdWUgOiBbdmFsdWVbMF1dKSksXG4gICAgICAgICAgICBtYXAoKGNvZXJjZWQ6IFZhbHVlVHlwZVtdKSA9PiBjb2VyY2VkLmZpbHRlcihCb29sZWFuKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXplZFZhbHVlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgodmFsKSA9PiAodGhpcy5fdmFsdWUgPSB2YWwpKTtcbiAgICAgICAgdGhpcy52YWx1ZSQgPSB0aGlzLl9ub3JtYWxpemVkVmFsdWUkLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHYpID0+IHRoaXMuX2dldFByb3BlclZhbHVlcyh2IGFzIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPikpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBtYWluIHNlbGVjdCBjb21wb25lbnQsIHdoaWNoIGhvbGRzIGNvbmZpZ1xuICAgICAqICovXG4gICAgcmVnaXN0ZXJSb290Q29tcG9uZW50KHJvb3RDb21wb25lbnQ6IFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbjxFbGVtZW50VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcm9vdENvbXBvbmVudCA9IHJvb3RDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgbGlzdGVuZXJzXG4gICAgICovXG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsZWFyJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSB3YXRjaGVyIGZvciBzZWxlY3Rpb24gY2hhbmdlcyBhbmQgdXNlciBpbnRlcmFjdGlvbnNcbiAgICAgKiAqL1xuICAgIGluaXRpYWxpemUocXVlcnlMaXN0OiBRdWVyeUxpc3Q8U2VsZWN0YWJsZUl0ZW1Ub2tlbjxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXRlbXMkID0gcXVlcnlMaXN0LmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChxdWVyeUxpc3QpLFxuICAgICAgICAgICAgbWFwKChpdGVtczogUXVlcnlMaXN0PFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4+KSA9PiBpdGVtcy50b0FycmF5KCkpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5saXN0ZW5Ub0l0ZW1JbnRlcmFjdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIFZhbHVlLCBvbiB3aGljaCBzZXJ2aWNlIGxvb2tzIGF0IGFuZCB1cGRhdGVzIFVJIGFjY29yZGluZ2x5XG4gICAgICogKi9cbiAgICBzZXRWYWx1ZSh2OiBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUkLm5leHQodik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXRWYWx1ZSgpOiBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVyVmFsdWVzKHRoaXMuX3ZhbHVlIGFzIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnQgbGlzdGVuaW5nIGZvciBpdGVtIGludGVyYWN0aW9ucy4gV2lsbCBkZXN0cm95KCkgZmlyc3QuXG4gICAgICogV2lsbCBzaWxlbnRseSBjb250aW51ZSBpZiBzZXJ2aWNlIHdhcyBub3QgaW5pdGlhbGl6ZWQgZmlyc3QuXG4gICAgICogKi9cbiAgICBsaXN0ZW5Ub0l0ZW1JbnRlcmFjdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUkID0gbWVyZ2UodGhpcy5fZGVzdHJveSQsIHRoaXMuX2NsZWFyJCk7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtcyQpIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zJFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiBpdGVtcy5maWx0ZXIoKGl0bSkgPT4gaXRtLmZka1NlbGVjdGFibGVJdGVtICE9PSBmYWxzZSkpLFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGl0ZW1zOiBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWNrZWRFdmVudHMkID0gaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmNsaWNrZWQucGlwZShtYXAoKCkgPT4gaXRlbSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi5jbGlja2VkRXZlbnRzJCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKGNsaWNrZWRJdGVtKSA9PiB0aGlzLl9pdGVtQ2xpY2tlZChjbGlja2VkSXRlbSkpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodW5zdWJzY3JpYmUkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9ub3JtYWxpemVkVmFsdWUkLCB0aGlzLl9pdGVtcyRdKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YXAoKFt2YWx1ZSwgaXRlbXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuc29tZSgoaXRtKSA9PiBpdG0uZ2V0U2VsZWN0ZWQoKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5fcm9vdENvbXBvbmVudC50b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5fZ2V0U2VsZWN0ZWRWYWx1ZXMoaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jvb3RDb21wb25lbnQub25DaGFuZ2Uoc2VsZWN0ZWRWYWx1ZXMgYXMgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUkLm5leHQoc2VsZWN0ZWRWYWx1ZXMgYXMgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFNlbGVjdGVkKHZhbHVlLmluY2x1ZGVzKGl0ZW0udmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHVuc3Vic2NyaWJlJClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2VsZWN0SXRlbShpdGVtOiBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+KTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmZka1NlbGVjdGFibGVJdGVtICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsOiBWYWx1ZVR5cGVbXSA9IFtpdGVtLnZhbHVlLCAuLi50aGlzLl92YWx1ZV07XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJWYWx1ZXMgPSB0aGlzLl9nZXRQcm9wZXJWYWx1ZXModmFsIGFzIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPik7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSQubmV4dChwcm9wZXJWYWx1ZXMpO1xuICAgICAgICAgICAgdGhpcy5fcm9vdENvbXBvbmVudC5vbkNoYW5nZShwcm9wZXJWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkZXNlbGVjdEl0ZW0oaXRlbTogU2VsZWN0YWJsZUl0ZW1Ub2tlbjxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPik6IHZvaWQge1xuICAgICAgICBjb25zdCBjYW5CZURlc2VsZWN0ZWQgPSB0aGlzLl9yb290Q29tcG9uZW50LnRvZ2dsZSB8fCAodGhpcy5faXNNdWx0aXBsZU1vZGUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID4gMSk7XG4gICAgICAgIGlmIChjYW5CZURlc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbDogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+ID0gdGhpcy5fdmFsdWUuZmlsdGVyKFxuICAgICAgICAgICAgICAgICh2KSA9PiB2ICE9PSBpdGVtLnZhbHVlXG4gICAgICAgICAgICApIGFzIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPjtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlclZhbHVlcyA9IHRoaXMuX2dldFByb3BlclZhbHVlcyh2YWwpO1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUkLm5leHQocHJvcGVyVmFsdWVzKTtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3RDb21wb25lbnQub25DaGFuZ2UocHJvcGVyVmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzTXVsdGlwbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdENvbXBvbmVudC5tdWx0aXBsZSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2l0ZW1DbGlja2VkKGl0ZW06IFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSB0aGlzLl92YWx1ZS5pbmNsdWRlcyhpdGVtLnZhbHVlKTtcbiAgICAgICAgaWYgKHdhc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWRWYWx1ZXMoaXRlbXM6IFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT5bXSk6IEVsZW1lbnRUeXBlIHwgRWxlbWVudFR5cGVbXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gaXRlbXMuZmlsdGVyKChpdG0pID0+IGl0bS5nZXRTZWxlY3RlZCgpKS5tYXAoKGl0bSkgPT4gaXRtLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlclZhbHVlcyhzZWxlY3RlZFZhbHVlcyBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0UHJvcGVyVmFsdWVzKHZhbHVlczogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+KTogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTXVsdGlwbGVNb2RlID8gdmFsdWVzIDogdmFsdWVzWzBdO1xuICAgIH1cbn1cbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1saXN0L3NlbGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7O0FBVXBDLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQnpCLGNBQWM7SUFDZCxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWQxQyxjQUFjO1FBQ04sWUFBTyxHQUFHLElBQUksYUFBYSxDQUFxQyxDQUFDLENBQUMsQ0FBQztRQUszRSxjQUFjO1FBQ04sY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDeEMsY0FBYztRQUNOLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3RDLGNBQWM7UUFDTixXQUFNLEdBQWdCLEVBQUUsQ0FBQztRQUk3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUMzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUs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Q0FBQztTQUM5QztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBWSxlQUFlO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjO0lBQ04sWUFBWSxDQUFDLElBQWlEO1FBQ2xFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQixDQUFDLEtBQW9EO1FBQzNFLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQXNELENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQixDQUFDLE1BQTRDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7NkdBMUtRLGdCQUFnQjtpSEFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlSXRlbVRva2VuIH0gZnJvbSAnLi9zZWxlY3RhYmxlLWl0ZW0udG9rZW4nO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGUsIFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbiB9IGZyb20gJy4vc2VsZWN0LWNvbXBvbmVudC1yb290LnRva2VuJztcblxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uSXRlbXNMaXN0PEVsZW1lbnRUeXBlIGV4dGVuZHMgRWxlbWVudCwgVmFsdWVUeXBlID0gRWxlbWVudFR5cGU+ID1cbiAgICB8IFF1ZXJ5TGlzdDxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+PlxuICAgIHwgT2JzZXJ2YWJsZTxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W10+XG4gICAgfCBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W107XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TZXJ2aWNlPEVsZW1lbnRUeXBlIGV4dGVuZHMgRWxlbWVudCwgVmFsdWVUeXBlID0gRWxlbWVudFR5cGU+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbHVlJDogT2JzZXJ2YWJsZTxTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxWYWx1ZVR5cGU+PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXRlbXMkITogT2JzZXJ2YWJsZTxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W10+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsdWUkID0gbmV3IFJlcGxheVN1YmplY3Q8U2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VmFsdWVUeXBlPj4oMSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ub3JtYWxpemVkVmFsdWUkOiBPYnNlcnZhYmxlPFZhbHVlVHlwZVtdPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jvb3RDb21wb25lbnQhOiBTZWxlY3RDb21wb25lbnRSb290VG9rZW48RWxlbWVudFR5cGU+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xlYXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlOiBWYWx1ZVR5cGVbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXplZFZhbHVlJCA9IHRoaXMuX3ZhbHVlJC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoZXF1YWwpLFxuICAgICAgICAgICAgbWFwKCh2KSA9PiBjb2VyY2VBcnJheTxWYWx1ZVR5cGU+KHYpKSxcbiAgICAgICAgICAgIG1hcCgodmFsdWUpID0+ICh0aGlzLl9pc011bHRpcGxlTW9kZSA/IHZhbHVlIDogW3ZhbHVlWzBdXSkpLFxuICAgICAgICAgICAgbWFwKChjb2VyY2VkOiBWYWx1ZVR5cGVbXSkgPT4gY29lcmNlZC5maWx0ZXIoQm9vbGVhbikpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZWRWYWx1ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbCkgPT4gKHRoaXMuX3ZhbHVlID0gdmFsKSk7XG4gICAgICAgIHRoaXMudmFsdWUkID0gdGhpcy5fbm9ybWFsaXplZFZhbHVlJC5waXBlKFxuICAgICAgICAgICAgbWFwKCh2KSA9PiB0aGlzLl9nZXRQcm9wZXJWYWx1ZXModiBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgbWFpbiBzZWxlY3QgY29tcG9uZW50LCB3aGljaCBob2xkcyBjb25maWdcbiAgICAgKiAqL1xuICAgIHJlZ2lzdGVyUm9vdENvbXBvbmVudChyb290Q29tcG9uZW50OiBTZWxlY3RDb21wb25lbnRSb290VG9rZW48RWxlbWVudFR5cGU+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvb3RDb21wb25lbnQgPSByb290Q29tcG9uZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGxpc3RlbmVyc1xuICAgICAqL1xuICAgIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbGVhciQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgd2F0Y2hlciBmb3Igc2VsZWN0aW9uIGNoYW5nZXMgYW5kIHVzZXIgaW50ZXJhY3Rpb25zXG4gICAgICogKi9cbiAgICBpbml0aWFsaXplKGxpc3Q6IFNlbGVjdGlvbkl0ZW1zTGlzdDxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAobGlzdCBpbnN0YW5jZW9mIFF1ZXJ5TGlzdCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXMkID0gbGlzdC5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKGxpc3QpLFxuICAgICAgICAgICAgICAgIG1hcCgoaXRlbXM6IFF1ZXJ5TGlzdDxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+PikgPT4gaXRlbXMudG9BcnJheSgpKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zJCA9IGlzT2JzZXJ2YWJsZShsaXN0KSA/IGxpc3QgOiBvZihsaXN0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpc3RlblRvSXRlbUludGVyYWN0aW9ucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgVmFsdWUsIG9uIHdoaWNoIHNlcnZpY2UgbG9va3MgYXQgYW5kIHVwZGF0ZXMgVUkgYWNjb3JkaW5nbHlcbiAgICAgKiAqL1xuICAgIHNldFZhbHVlKHY6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPik6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZSQubmV4dCh2KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlKCk6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJWYWx1ZXModGhpcy5fdmFsdWUgYXMgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFydCBsaXN0ZW5pbmcgZm9yIGl0ZW0gaW50ZXJhY3Rpb25zLiBXaWxsIGRlc3Ryb3koKSBmaXJzdC5cbiAgICAgKiBXaWxsIHNpbGVudGx5IGNvbnRpbnVlIGlmIHNlcnZpY2Ugd2FzIG5vdCBpbml0aWFsaXplZCBmaXJzdC5cbiAgICAgKiAqL1xuICAgIGxpc3RlblRvSXRlbUludGVyYWN0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICBjb25zdCB1bnN1YnNjcmliZSQgPSBtZXJnZSh0aGlzLl9kZXN0cm95JCwgdGhpcy5fY2xlYXIkKTtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1zJCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXMkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoaXRtKSA9PiBpdG0uZmRrU2VsZWN0YWJsZUl0ZW0gIT09IGZhbHNlKSksXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoaXRlbXM6IFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT5bXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpY2tlZEV2ZW50cyQgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uY2xpY2tlZC5waXBlKG1hcCgoKSA9PiBpdGVtKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlKC4uLmNsaWNrZWRFdmVudHMkKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoY2xpY2tlZEl0ZW0pID0+IHRoaXMuX2l0ZW1DbGlja2VkKGNsaWNrZWRJdGVtKSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh1bnN1YnNjcmliZSQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX25vcm1hbGl6ZWRWYWx1ZSQsIHRoaXMuX2l0ZW1zJF0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoW3ZhbHVlLCBpdGVtc10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zb21lKChpdG0pID0+IGl0bS5nZXRTZWxlY3RlZCgpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLl9yb290Q29tcG9uZW50LnRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLl9nZXRTZWxlY3RlZFZhbHVlcyhpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm9vdENvbXBvbmVudC5vbkNoYW5nZShzZWxlY3RlZFZhbHVlcyBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSQubmV4dChzZWxlY3RlZFZhbHVlcyBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0U2VsZWN0ZWQodmFsdWUuaW5jbHVkZXMoaXRlbS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodW5zdWJzY3JpYmUkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3RJdGVtKGl0ZW06IFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW0uZmRrU2VsZWN0YWJsZUl0ZW0gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWw6IFZhbHVlVHlwZVtdID0gW2l0ZW0udmFsdWUsIC4uLnRoaXMuX3ZhbHVlXTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlclZhbHVlcyA9IHRoaXMuX2dldFByb3BlclZhbHVlcyh2YWwgYXMgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+KTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlJC5uZXh0KHByb3BlclZhbHVlcyk7XG4gICAgICAgICAgICB0aGlzLl9yb290Q29tcG9uZW50Lm9uQ2hhbmdlKHByb3BlclZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRlc2VsZWN0SXRlbShpdGVtOiBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbkJlRGVzZWxlY3RlZCA9IHRoaXMuX3Jvb3RDb21wb25lbnQudG9nZ2xlIHx8ICh0aGlzLl9pc011bHRpcGxlTW9kZSAmJiB0aGlzLl92YWx1ZS5sZW5ndGggPiAxKTtcbiAgICAgICAgaWYgKGNhbkJlRGVzZWxlY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgdmFsOiBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4gPSB0aGlzLl92YWx1ZS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHYpID0+IHYgIT09IGl0ZW0udmFsdWVcbiAgICAgICAgICAgICkgYXMgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+O1xuICAgICAgICAgICAgY29uc3QgcHJvcGVyVmFsdWVzID0gdGhpcy5fZ2V0UHJvcGVyVmFsdWVzKHZhbCk7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSQubmV4dChwcm9wZXJWYWx1ZXMpO1xuICAgICAgICAgICAgdGhpcy5fcm9vdENvbXBvbmVudC5vbkNoYW5nZShwcm9wZXJWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfaXNNdWx0aXBsZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290Q29tcG9uZW50Lm11bHRpcGxlID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXRlbUNsaWNrZWQoaXRlbTogU2VsZWN0YWJsZUl0ZW1Ub2tlbjxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPik6IHZvaWQge1xuICAgICAgICBjb25zdCB3YXNTZWxlY3RlZCA9IHRoaXMuX3ZhbHVlLmluY2x1ZGVzKGl0ZW0udmFsdWUpO1xuICAgICAgICBpZiAod2FzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZFZhbHVlcyhpdGVtczogU2VsZWN0YWJsZUl0ZW1Ub2tlbjxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPltdKTogRWxlbWVudFR5cGUgfCBFbGVtZW50VHlwZVtdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSBpdGVtcy5maWx0ZXIoKGl0bSkgPT4gaXRtLmdldFNlbGVjdGVkKCkpLm1hcCgoaXRtKSA9PiBpdG0udmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVyVmFsdWVzKHNlbGVjdGVkVmFsdWVzIGFzIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRQcm9wZXJWYWx1ZXModmFsdWVzOiBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pOiBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aXBsZU1vZGUgPyB2YWx1ZXMgOiB2YWx1ZXNbMF07XG4gICAgfVxufVxuIl19