@dereekb/dbx-firebase 12.6.12 → 12.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/esm2022/lib/model/modules/model/entities/index.mjs +7 -2
  2. package/esm2022/lib/model/modules/model/entities/model.entities.component.mjs +4 -7
  3. package/esm2022/lib/model/modules/model/entities/model.entities.entity.component.mjs +58 -12
  4. package/esm2022/lib/model/modules/model/entities/model.entities.mjs +10 -1
  5. package/esm2022/lib/model/modules/model/entities/model.entities.popover.button.component.mjs +3 -3
  6. package/esm2022/lib/model/modules/model/entities/model.entities.popover.component.mjs +4 -2
  7. package/esm2022/lib/model/modules/model/entities/model.entities.providers.mjs +20 -0
  8. package/esm2022/lib/model/modules/model/entities/model.entities.widget.entity.abstract.directive.mjs +18 -0
  9. package/esm2022/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.mjs +27 -0
  10. package/esm2022/lib/model/modules/model/entities/model.entities.widget.mjs +51 -0
  11. package/esm2022/lib/model/modules/model/entities/model.entities.widget.service.mjs +34 -10
  12. package/esm2022/lib/model/modules/model/index.mjs +2 -1
  13. package/esm2022/lib/model/modules/model/model.key.component.mjs +47 -0
  14. package/esm2022/lib/model/modules/model/model.types.service.mjs +5 -3
  15. package/esm2022/lib/model/modules/store/store.document.mjs +6 -6
  16. package/esm2022/lib/providers.mjs +7 -3
  17. package/fesm2022/dereekb-dbx-firebase.mjs +265 -46
  18. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
  19. package/lib/model/modules/model/entities/index.d.ts +6 -1
  20. package/lib/model/modules/model/entities/model.entities.component.d.ts +3 -6
  21. package/lib/model/modules/model/entities/model.entities.d.ts +7 -0
  22. package/lib/model/modules/model/entities/model.entities.entity.component.d.ts +30 -12
  23. package/lib/model/modules/model/entities/model.entities.providers.d.ts +22 -0
  24. package/lib/model/modules/model/entities/model.entities.widget.d.ts +30 -0
  25. package/lib/model/modules/model/entities/model.entities.widget.entity.abstract.directive.d.ts +12 -0
  26. package/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.d.ts +14 -0
  27. package/lib/model/modules/model/entities/model.entities.widget.service.d.ts +27 -5
  28. package/lib/model/modules/model/index.d.ts +1 -0
  29. package/lib/model/modules/model/model.key.component.d.ts +24 -0
  30. package/lib/model/modules/model/model.types.service.d.ts +4 -3
  31. package/lib/model/modules/store/store.document.d.ts +1 -1
  32. package/lib/providers.d.ts +5 -0
  33. package/package.json +1 -1
@@ -10,19 +10,35 @@ export class DbxFirebaseModelEntitiesWidgetServiceConfig {
10
10
  * Service used to register widgets used for model entities.
11
11
  */
12
12
  export class DbxFirebaseModelEntitiesWidgetService {
13
+ _commonComponentClass;
14
+ _debugComponentClass;
13
15
  _entries = new Map();
14
16
  constructor(initialConfig) {
17
+ this._commonComponentClass = initialConfig?.commonComponentClass;
18
+ this._debugComponentClass = initialConfig?.debugComponentClass;
15
19
  if (initialConfig?.entries) {
16
20
  this.register(initialConfig.entries);
17
21
  }
18
22
  }
23
+ getCommonComponentClass() {
24
+ return this._commonComponentClass;
25
+ }
26
+ setCommonComponentClass(componentClass) {
27
+ this._commonComponentClass = componentClass;
28
+ }
29
+ getDebugComponentClass() {
30
+ return this._debugComponentClass;
31
+ }
32
+ setDebugComponentClass(componentClass) {
33
+ this._debugComponentClass = componentClass;
34
+ }
19
35
  /**
20
36
  * Used to register one or more entries.
21
37
  *
22
38
  * If an entry with the same identity is already registered, this will override it by default.
23
39
  *
24
- * @param entries
25
- * @param override
40
+ * @param entries The entries to register
41
+ * @param override Whether to override existing entries (default: true)
26
42
  */
27
43
  register(entries, override = true) {
28
44
  const entriesArray = asArray(entries);
@@ -37,23 +53,31 @@ export class DbxFirebaseModelEntitiesWidgetService {
37
53
  return Array.from(this._entries.keys());
38
54
  }
39
55
  getWidgetEntry(identity) {
40
- return this._entries.get(identity);
56
+ const entry = this._entries.get(identity);
57
+ return entry
58
+ ? {
59
+ ...entry,
60
+ commonComponentClass: entry.commonComponentClass ?? this._commonComponentClass,
61
+ debugComponentClass: entry.debugComponentClass ?? this._debugComponentClass
62
+ }
63
+ : {
64
+ identity,
65
+ commonComponentClass: this._commonComponentClass,
66
+ debugComponentClass: this._debugComponentClass
67
+ };
41
68
  }
42
69
  getWidgetEntries(identities) {
43
- return filterMaybeArrayValues(mapIterable(identities ?? [], (x) => this._entries.get(x)));
70
+ return filterMaybeArrayValues(mapIterable(identities ?? [], (x) => this.getWidgetEntry(x)));
44
71
  }
45
72
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, deps: [{ token: DbxFirebaseModelEntitiesWidgetServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
46
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, providedIn: 'root' });
73
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService });
47
74
  }
48
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, decorators: [{
49
- type: Injectable,
50
- args: [{
51
- providedIn: 'root'
52
- }]
76
+ type: Injectable
53
77
  }], ctorParameters: () => [{ type: DbxFirebaseModelEntitiesWidgetServiceConfig, decorators: [{
54
78
  type: Optional
55
79
  }, {
56
80
  type: Inject,
57
81
  args: [DbxFirebaseModelEntitiesWidgetServiceConfig]
58
82
  }] }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMud2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL21vZGVsLmVudGl0aWVzLndpZGdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQXVCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBY2xHOztHQUVHO0FBQ0gsTUFBTSxPQUFnQiwyQ0FBMkM7Q0FLaEU7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTyxxQ0FBcUM7SUFDL0IsUUFBUSxHQUFHLElBQUksR0FBRyxFQUErRCxDQUFDO0lBRW5HLFlBQTZFLGFBQTJEO1FBQ3RJLElBQUksYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFFBQVEsQ0FBQyxPQUEwRCxFQUFFLFdBQW9CLElBQUk7UUFDM0YsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM3QixJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO0lBQ1osZ0NBQWdDO1FBQzlCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQztRQUM3QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUE0QztRQUMzRCxPQUFPLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQzt3R0F0Q1UscUNBQXFDLGtCQUdoQiwyQ0FBMkM7NEdBSGhFLHFDQUFxQyxjQUZwQyxNQUFNOzs0RkFFUCxxQ0FBcUM7a0JBSGpELFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFJYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDJDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgTWF5YmUsIGFzQXJyYXksIGZpbHRlck1heWJlQXJyYXlWYWx1ZXMsIG1hcEl0ZXJhYmxlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGaXJlc3RvcmVNb2RlbElkZW50aXR5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldEVudHJ5IHtcbiAgLyoqXG4gICAqIFdpZGdldCB0eXBlIHRvIHJlc3BvbmQgdG8uXG4gICAqL1xuICByZWFkb25seSBpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eTtcbiAgLyoqXG4gICAqIFdpZGdldCBjb21wb25lbnQgY2xhc3MgdG8gdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IFR5cGU8dW5rbm93bj47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm92aWRlZCBpbiB0aGUgcm9vdCBtb2R1bGUgZm9yIGNvbmZpZ3VyaW5nIGVudHJpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEVudHJpZXMgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBhYnN0cmFjdCBlbnRyaWVzOiBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRFbnRyeVtdO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdXNlZCB0byByZWdpc3RlciB3aWRnZXRzIHVzZWQgZm9yIG1vZGVsIGVudGl0aWVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZW50cmllcyA9IG5ldyBNYXA8RmlyZXN0b3JlTW9kZWxJZGVudGl0eSwgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0RW50cnk+KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnKSBpbml0aWFsQ29uZmlnPzogRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0U2VydmljZUNvbmZpZykge1xuICAgIGlmIChpbml0aWFsQ29uZmlnPy5lbnRyaWVzKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKGluaXRpYWxDb25maWcuZW50cmllcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gcmVnaXN0ZXIgb25lIG9yIG1vcmUgZW50cmllcy5cbiAgICpcbiAgICogSWYgYW4gZW50cnkgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQsIHRoaXMgd2lsbCBvdmVycmlkZSBpdCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gZW50cmllc1xuICAgKiBAcGFyYW0gb3ZlcnJpZGVcbiAgICovXG4gIHJlZ2lzdGVyKGVudHJpZXM6IEFycmF5T3JWYWx1ZTxEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRFbnRyeT4sIG92ZXJyaWRlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXNBcnJheSA9IGFzQXJyYXkoZW50cmllcyk7XG5cbiAgICBlbnRyaWVzQXJyYXkuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgIGlmIChvdmVycmlkZSB8fCAhdGhpcy5fZW50cmllcy5oYXMoZW50cnkuaWRlbnRpdHkpKSB7XG4gICAgICAgIHRoaXMuX2VudHJpZXMuc2V0KGVudHJ5LmlkZW50aXR5LCBlbnRyeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBNQVJLOiBHZXRcbiAgZ2V0QWxsUmVnaXN0ZXJlZFdpZGdldElkZW50aXRpZXMoKTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmtleXMoKSk7XG4gIH1cblxuICBnZXRXaWRnZXRFbnRyeShpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eSk6IE1heWJlPERieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldEVudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJpZXMuZ2V0KGlkZW50aXR5KTtcbiAgfVxuXG4gIGdldFdpZGdldEVudHJpZXMoaWRlbnRpdGllczogSXRlcmFibGU8RmlyZXN0b3JlTW9kZWxJZGVudGl0eT4pOiBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRFbnRyeVtdIHtcbiAgICByZXR1cm4gZmlsdGVyTWF5YmVBcnJheVZhbHVlcyhtYXBJdGVyYWJsZShpZGVudGl0aWVzID8/IFtdLCAoeCkgPT4gdGhpcy5fZW50cmllcy5nZXQoeCkpKTtcbiAgfVxufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMud2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL21vZGVsLmVudGl0aWVzLndpZGdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQXVCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBc0JsRzs7R0FFRztBQUNILE1BQU0sT0FBZ0IsMkNBQTJDO0NBYWhFO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUNBQXFDO0lBQ3hDLHFCQUFxQixDQUF1QjtJQUM1QyxvQkFBb0IsQ0FBdUI7SUFFbEMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUErRCxDQUFDO0lBRW5HLFlBQTZFLGFBQTJEO1FBQ3RJLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFhLEVBQUUsb0JBQW9CLENBQUM7UUFDakUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQztRQUUvRCxJQUFJLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsY0FBb0M7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGNBQWMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxjQUFvQztRQUN6RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsUUFBUSxDQUFDLE9BQTBELEVBQUUsV0FBb0IsSUFBSTtRQUMzRixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzdCLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFDWixnQ0FBZ0M7UUFDOUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sS0FBSztZQUNWLENBQUMsQ0FBQztnQkFDRSxHQUFHLEtBQUs7Z0JBQ1Isb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxxQkFBcUI7Z0JBQzlFLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CO2FBQzVFO1lBQ0gsQ0FBQyxDQUFDO2dCQUNFLFFBQVE7Z0JBQ1Isb0JBQW9CLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtnQkFDaEQsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUMvQyxDQUFDO0lBQ1IsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQTRDO1FBQzNELE9BQU8sc0JBQXNCLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7d0dBeEVVLHFDQUFxQyxrQkFNaEIsMkNBQTJDOzRHQU5oRSxxQ0FBcUM7OzRGQUFyQyxxQ0FBcUM7a0JBRGpELFVBQVU7OzBCQU9JLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsMkNBQTJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXJyYXlPclZhbHVlLCBNYXliZSwgYXNBcnJheSwgZmlsdGVyTWF5YmVBcnJheVZhbHVlcywgbWFwSXRlcmFibGUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZpcmVzdG9yZU1vZGVsSWRlbnRpdHkgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0RW50cnkge1xuICAvKipcbiAgICogV2lkZ2V0IHR5cGUgdG8gcmVzcG9uZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5OiBGaXJlc3RvcmVNb2RlbElkZW50aXR5O1xuICAvKipcbiAgICogV2lkZ2V0IGNvbXBvbmVudCB0aGF0IGlzIHNwZWNpZmljIHRvIHRoaXMgZW50aXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgZW50aXR5Q29tcG9uZW50Q2xhc3M/OiBNYXliZTxUeXBlPHVua25vd24+PjtcbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgXCJjb21tb25cIiB3aWRnZXQgY29tcG9uZW50IHVzZWQgZm9yIGFsbCBlbnRpdGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbW1vbkNvbXBvbmVudENsYXNzPzogTWF5YmU8VHlwZTx1bmtub3duPj47XG4gIC8qKlxuICAgKiBPcHRpb25hbCB3aWRnZXQgY29tcG9uZW50IHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhpcyBlbnRpdHkgdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGRlYnVnIGluZm9ybWF0aW9uLCBhbmQgaXMgZGlzcGxheWVkIGFmdGVyIHRoZSBjb21tb24gd2lkZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdDb21wb25lbnRDbGFzcz86IE1heWJlPFR5cGU8dW5rbm93bj4+O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcHJvdmlkZWQgaW4gdGhlIHJvb3QgbW9kdWxlIGZvciBjb25maWd1cmluZyBlbnRyaWVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0U2VydmljZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBFbnRyaWVzIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgYWJzdHJhY3QgZW50cmllczogRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0RW50cnlbXTtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IFwiY29tbW9uXCIgd2lkZ2V0IGNvbXBvbmVudCB1c2VkIGZvciBhbGwgZW50aXRpZXMuXG4gICAqL1xuICBhYnN0cmFjdCBjb21tb25Db21wb25lbnRDbGFzcz86IE1heWJlPFR5cGU8dW5rbm93bj4+O1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgXCJkZWJ1Z1wiIHdpZGdldCBjb21wb25lbnQgdXNlZCBmb3IgYWxsIGVudGl0aWVzLlxuICAgKi9cbiAgYWJzdHJhY3QgZGVidWdDb21wb25lbnRDbGFzcz86IE1heWJlPFR5cGU8dW5rbm93bj4+O1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdXNlZCB0byByZWdpc3RlciB3aWRnZXRzIHVzZWQgZm9yIG1vZGVsIGVudGl0aWVzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0U2VydmljZSB7XG4gIHByaXZhdGUgX2NvbW1vbkNvbXBvbmVudENsYXNzOiBNYXliZTxUeXBlPHVua25vd24+PjtcbiAgcHJpdmF0ZSBfZGVidWdDb21wb25lbnRDbGFzczogTWF5YmU8VHlwZTx1bmtub3duPj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZW50cmllcyA9IG5ldyBNYXA8RmlyZXN0b3JlTW9kZWxJZGVudGl0eSwgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0RW50cnk+KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnKSBpbml0aWFsQ29uZmlnPzogRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0U2VydmljZUNvbmZpZykge1xuICAgIHRoaXMuX2NvbW1vbkNvbXBvbmVudENsYXNzID0gaW5pdGlhbENvbmZpZz8uY29tbW9uQ29tcG9uZW50Q2xhc3M7XG4gICAgdGhpcy5fZGVidWdDb21wb25lbnRDbGFzcyA9IGluaXRpYWxDb25maWc/LmRlYnVnQ29tcG9uZW50Q2xhc3M7XG5cbiAgICBpZiAoaW5pdGlhbENvbmZpZz8uZW50cmllcykge1xuICAgICAgdGhpcy5yZWdpc3Rlcihpbml0aWFsQ29uZmlnLmVudHJpZXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbW1vbkNvbXBvbmVudENsYXNzKCk6IE1heWJlPFR5cGU8dW5rbm93bj4+IHtcbiAgICByZXR1cm4gdGhpcy5fY29tbW9uQ29tcG9uZW50Q2xhc3M7XG4gIH1cblxuICBzZXRDb21tb25Db21wb25lbnRDbGFzcyhjb21wb25lbnRDbGFzczogTWF5YmU8VHlwZTx1bmtub3duPj4pOiB2b2lkIHtcbiAgICB0aGlzLl9jb21tb25Db21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9XG5cbiAgZ2V0RGVidWdDb21wb25lbnRDbGFzcygpOiBNYXliZTxUeXBlPHVua25vd24+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlYnVnQ29tcG9uZW50Q2xhc3M7XG4gIH1cblxuICBzZXREZWJ1Z0NvbXBvbmVudENsYXNzKGNvbXBvbmVudENsYXNzOiBNYXliZTxUeXBlPHVua25vd24+Pik6IHZvaWQge1xuICAgIHRoaXMuX2RlYnVnQ29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHJlZ2lzdGVyIG9uZSBvciBtb3JlIGVudHJpZXMuXG4gICAqXG4gICAqIElmIGFuIGVudHJ5IHdpdGggdGhlIHNhbWUgaWRlbnRpdHkgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCB0aGlzIHdpbGwgb3ZlcnJpZGUgaXQgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQHBhcmFtIGVudHJpZXMgVGhlIGVudHJpZXMgdG8gcmVnaXN0ZXJcbiAgICogQHBhcmFtIG92ZXJyaWRlIFdoZXRoZXIgdG8gb3ZlcnJpZGUgZXhpc3RpbmcgZW50cmllcyAoZGVmYXVsdDogdHJ1ZSlcbiAgICovXG4gIHJlZ2lzdGVyKGVudHJpZXM6IEFycmF5T3JWYWx1ZTxEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRFbnRyeT4sIG92ZXJyaWRlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXNBcnJheSA9IGFzQXJyYXkoZW50cmllcyk7XG5cbiAgICBlbnRyaWVzQXJyYXkuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgIGlmIChvdmVycmlkZSB8fCAhdGhpcy5fZW50cmllcy5oYXMoZW50cnkuaWRlbnRpdHkpKSB7XG4gICAgICAgIHRoaXMuX2VudHJpZXMuc2V0KGVudHJ5LmlkZW50aXR5LCBlbnRyeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBNQVJLOiBHZXRcbiAgZ2V0QWxsUmVnaXN0ZXJlZFdpZGdldElkZW50aXRpZXMoKTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmtleXMoKSk7XG4gIH1cblxuICBnZXRXaWRnZXRFbnRyeShpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eSk6IERieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldEVudHJ5IHtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuX2VudHJpZXMuZ2V0KGlkZW50aXR5KTtcblxuICAgIHJldHVybiBlbnRyeVxuICAgICAgPyB7XG4gICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgY29tbW9uQ29tcG9uZW50Q2xhc3M6IGVudHJ5LmNvbW1vbkNvbXBvbmVudENsYXNzID8/IHRoaXMuX2NvbW1vbkNvbXBvbmVudENsYXNzLFxuICAgICAgICAgIGRlYnVnQ29tcG9uZW50Q2xhc3M6IGVudHJ5LmRlYnVnQ29tcG9uZW50Q2xhc3MgPz8gdGhpcy5fZGVidWdDb21wb25lbnRDbGFzc1xuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBpZGVudGl0eSxcbiAgICAgICAgICBjb21tb25Db21wb25lbnRDbGFzczogdGhpcy5fY29tbW9uQ29tcG9uZW50Q2xhc3MsXG4gICAgICAgICAgZGVidWdDb21wb25lbnRDbGFzczogdGhpcy5fZGVidWdDb21wb25lbnRDbGFzc1xuICAgICAgICB9O1xuICB9XG5cbiAgZ2V0V2lkZ2V0RW50cmllcyhpZGVudGl0aWVzOiBJdGVyYWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5Pik6IERieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldEVudHJ5W10ge1xuICAgIHJldHVybiBmaWx0ZXJNYXliZUFycmF5VmFsdWVzKG1hcEl0ZXJhYmxlKGlkZW50aXRpZXMgPz8gW10sICh4KSA9PiB0aGlzLmdldFdpZGdldEVudHJ5KHgpKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,8 @@
1
1
  export * from './history';
2
2
  export * from './entities';
3
+ export * from './model.key.component';
3
4
  export * from './model.types.service';
4
5
  export * from './model.types.module';
5
6
  export * from './model.types.list.component';
6
7
  export * from './model.types.view.directive';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2hpc3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRpdGllcyc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy5saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLnZpZXcuZGlyZWN0aXZlJztcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaGlzdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2VudGl0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwua2V5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy5saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLnZpZXcuZGlyZWN0aXZlJztcbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { Component, inject, input, computed } from '@angular/core';
2
+ import { twoWayFlatFirestoreModelKey, flatFirestoreModelKey } from '@dereekb/firebase';
3
+ import { DbxFirebaseModelTypesService } from './model.types.service';
4
+ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
5
+ import { switchMap, of } from 'rxjs';
6
+ import { MatIcon } from '@angular/material/icon';
7
+ import { DbxDetailBlockComponent, DbxClickToCopyTextComponent, DbxAnchorComponent, DbxButtonComponent } from '@dereekb/dbx-web';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * An interactive display for a FirestoreModelKey.
11
+ */
12
+ export class DbxFirebaseModelKeyComponent {
13
+ dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);
14
+ modelKey = input();
15
+ oneWayFlatModelKey = computed(() => {
16
+ const modelKey = this.modelKey();
17
+ return modelKey ? flatFirestoreModelKey(modelKey) : undefined;
18
+ });
19
+ twoWayFlatModelKey = computed(() => {
20
+ const modelKey = this.modelKey();
21
+ return modelKey ? twoWayFlatFirestoreModelKey(modelKey) : undefined;
22
+ });
23
+ // Convert signal to observable for types service
24
+ modelKey$ = toObservable(this.modelKey);
25
+ modelTypeInstance$ = this.modelKey$.pipe(switchMap((key) => {
26
+ let result = undefined;
27
+ if (key) {
28
+ result = this.dbxFirebaseModelTypesService.instanceForKey(key);
29
+ }
30
+ return of(result);
31
+ }));
32
+ modelIdentity$ = this.modelTypeInstance$.pipe(switchMap((x) => x?.identity$ ?? of(undefined)));
33
+ typeInfo$ = this.modelTypeInstance$.pipe(switchMap((x) => x?.safeTypeInfo$ ?? of(undefined)));
34
+ modelTypeInstanceSignal = toSignal(this.modelTypeInstance$);
35
+ modelIdentitySignal = toSignal(this.modelIdentity$);
36
+ typeInfoSignal = toSignal(this.typeInfo$);
37
+ typeCanSegueToView = computed(() => this.typeInfoSignal()?.canSegueToView ?? false);
38
+ sref$ = this.modelTypeInstance$.pipe(switchMap((x) => x?.segueRef$ ?? of(undefined)));
39
+ srefSignal = toSignal(this.sref$);
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelKeyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFirebaseModelKeyComponent, isStandalone: true, selector: "dbx-firebase-model-key", inputs: { modelKey: { classPropertyName: "modelKey", publicName: "modelKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-firebase-model-key\">\n @if (modelKey(); as key) {\n <!-- Key Data -->\n <dbx-detail-block icon=\"key\" header=\"Model Key\">\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ key }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"oneWayFlatModelKey()\">(Flat) {{ oneWayFlatModelKey() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"twoWayFlatModelKey()\">(Encoded Flat) {{ twoWayFlatModelKey() }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n\n <!-- Type Info -->\n @if (typeInfoSignal(); as typeInfo) {\n <!-- Model Meta Data -->\n <div>\n <dbx-detail-block [icon]=\"typeInfo.icon\" header=\"Model Type\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.modelType }}</dbx-click-to-copy-text>\n @if (typeInfo.icon) {\n <dbx-click-to-copy-text [copyText]=\"typeInfo.icon\" class=\"dbx-block\">\n Icon:\n <span class=\"dbx-u\">{{ typeInfo.icon }}</span>\n </dbx-click-to-copy-text>\n } @else {\n <span class=\"dbx-notice\">No Icon For Type</span>\n }\n </dbx-detail-block>\n <dbx-detail-block icon=\"dataset\" header=\"Collection Name\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.identity.collectionName }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n </div>\n\n <!-- Segue Info -->\n @if (typeCanSegueToView()) {\n <dbx-detail-block icon=\"arrow_forward\" header=\"Segue To View\">\n <div class=\"dbx-hint dbx-small\">This model has a unique view within the app.</div>\n <dbx-anchor [anchor]=\"srefSignal()\"><dbx-button>Go To View</dbx-button></dbx-anchor>\n </dbx-detail-block>\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Segue View\">\n <span>This type provides no information for segue directly.</span>\n </dbx-detail-block>\n }\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Type Info\">\n <span>There is no type info registered for this model type.</span>\n </dbx-detail-block>\n }\n } @else {\n <div class=\"dbx-firebase-model-key-empty\">No model key provided</div>\n }\n</div>\n", dependencies: [{ kind: "component", type: DbxDetailBlockComponent, selector: "dbx-detail-block", inputs: ["icon", "header", "alignHeader", "bigHeader"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "component", type: DbxClickToCopyTextComponent, selector: "dbx-click-to-copy-text", inputs: ["copyText", "highlighted", "clipboardSnackbarMessagesConfig", "clipboardSnackbarMessagesEnabled", "clickToCopyIcon", "clickIconToCopyOnly"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }] });
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelKeyComponent, decorators: [{
44
+ type: Component,
45
+ args: [{ selector: 'dbx-firebase-model-key', standalone: true, imports: [MatIcon, DbxDetailBlockComponent, DbxButtonComponent, DbxClickToCopyTextComponent, DbxAnchorComponent], template: "<div class=\"dbx-firebase-model-key\">\n @if (modelKey(); as key) {\n <!-- Key Data -->\n <dbx-detail-block icon=\"key\" header=\"Model Key\">\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ key }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"oneWayFlatModelKey()\">(Flat) {{ oneWayFlatModelKey() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"twoWayFlatModelKey()\">(Encoded Flat) {{ twoWayFlatModelKey() }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n\n <!-- Type Info -->\n @if (typeInfoSignal(); as typeInfo) {\n <!-- Model Meta Data -->\n <div>\n <dbx-detail-block [icon]=\"typeInfo.icon\" header=\"Model Type\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.modelType }}</dbx-click-to-copy-text>\n @if (typeInfo.icon) {\n <dbx-click-to-copy-text [copyText]=\"typeInfo.icon\" class=\"dbx-block\">\n Icon:\n <span class=\"dbx-u\">{{ typeInfo.icon }}</span>\n </dbx-click-to-copy-text>\n } @else {\n <span class=\"dbx-notice\">No Icon For Type</span>\n }\n </dbx-detail-block>\n <dbx-detail-block icon=\"dataset\" header=\"Collection Name\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.identity.collectionName }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n </div>\n\n <!-- Segue Info -->\n @if (typeCanSegueToView()) {\n <dbx-detail-block icon=\"arrow_forward\" header=\"Segue To View\">\n <div class=\"dbx-hint dbx-small\">This model has a unique view within the app.</div>\n <dbx-anchor [anchor]=\"srefSignal()\"><dbx-button>Go To View</dbx-button></dbx-anchor>\n </dbx-detail-block>\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Segue View\">\n <span>This type provides no information for segue directly.</span>\n </dbx-detail-block>\n }\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Type Info\">\n <span>There is no type info registered for this model type.</span>\n </dbx-detail-block>\n }\n } @else {\n <div class=\"dbx-firebase-model-key-empty\">No model key provided</div>\n }\n</div>\n" }]
46
+ }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwua2V5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwua2V5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwua2V5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFxQiwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFHLE9BQU8sRUFBRSw0QkFBNEIsRUFBd0MsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHaEk7O0dBRUc7QUFPSCxNQUFNLE9BQU8sNEJBQTRCO0lBQzlCLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBRXBFLFFBQVEsR0FBRyxLQUFLLEVBQXFCLENBQUM7SUFDdEMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFFTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILGlEQUFpRDtJQUN4QyxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDL0MsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDaEIsSUFBSSxNQUFNLEdBQWdELFNBQVMsQ0FBQztRQUVwRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFFTyxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5Rix1QkFBdUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDNUQsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwRCxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUxQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLGNBQWMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUVwRixLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3R0F2Q2hDLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLCtOQ2xCekMsZzRFQWlEQSw0Q0RqQ3FCLHVCQUF1QixxSEFBRSxrQkFBa0IsdVBBQUUsMkJBQTJCLHlOQUFFLGtCQUFrQjs7NEZBRXBHLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FFdEIsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlyZXN0b3JlTW9kZWxLZXksIHR3b1dheUZsYXRGaXJlc3RvcmVNb2RlbEtleSwgZmxhdEZpcmVzdG9yZU1vZGVsS2V5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSwgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlIH0gZnJvbSAnLi9tb2RlbC50eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBEYnhEZXRhaWxCbG9ja0NvbXBvbmVudCwgRGJ4Q2xpY2tUb0NvcHlUZXh0Q29tcG9uZW50LCBEYnhBbmNob3JDb21wb25lbnQsIERieEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcblxuLyoqXG4gKiBBbiBpbnRlcmFjdGl2ZSBkaXNwbGF5IGZvciBhIEZpcmVzdG9yZU1vZGVsS2V5LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtZmlyZWJhc2UtbW9kZWwta2V5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLmtleS5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRJY29uLCBEYnhEZXRhaWxCbG9ja0NvbXBvbmVudCwgRGJ4QnV0dG9uQ29tcG9uZW50LCBEYnhDbGlja1RvQ29weVRleHRDb21wb25lbnQsIERieEFuY2hvckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbEtleUNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UgPSBpbmplY3QoRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgbW9kZWxLZXkgPSBpbnB1dDxGaXJlc3RvcmVNb2RlbEtleT4oKTtcbiAgcmVhZG9ubHkgb25lV2F5RmxhdE1vZGVsS2V5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1vZGVsS2V5ID0gdGhpcy5tb2RlbEtleSgpO1xuICAgIHJldHVybiBtb2RlbEtleSA/IGZsYXRGaXJlc3RvcmVNb2RlbEtleShtb2RlbEtleSkgOiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHR3b1dheUZsYXRNb2RlbEtleSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtb2RlbEtleSA9IHRoaXMubW9kZWxLZXkoKTtcbiAgICByZXR1cm4gbW9kZWxLZXkgPyB0d29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXkobW9kZWxLZXkpIDogdW5kZWZpbmVkO1xuICB9KTtcblxuICAvLyBDb252ZXJ0IHNpZ25hbCB0byBvYnNlcnZhYmxlIGZvciB0eXBlcyBzZXJ2aWNlXG4gIHJlYWRvbmx5IG1vZGVsS2V5JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLm1vZGVsS2V5KTtcblxuICByZWFkb25seSBtb2RlbFR5cGVJbnN0YW5jZSQgPSB0aGlzLm1vZGVsS2V5JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoa2V5KSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBNYXliZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U+ID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5pbnN0YW5jZUZvcktleShrZXkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2YocmVzdWx0KTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IG1vZGVsSWRlbnRpdHkkID0gdGhpcy5tb2RlbFR5cGVJbnN0YW5jZSQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHg/LmlkZW50aXR5JCA/PyBvZih1bmRlZmluZWQpKSk7XG4gIHJlYWRvbmx5IHR5cGVJbmZvJCA9IHRoaXMubW9kZWxUeXBlSW5zdGFuY2UkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4Py5zYWZlVHlwZUluZm8kID8/IG9mKHVuZGVmaW5lZCkpKTtcblxuICByZWFkb25seSBtb2RlbFR5cGVJbnN0YW5jZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMubW9kZWxUeXBlSW5zdGFuY2UkKTtcbiAgcmVhZG9ubHkgbW9kZWxJZGVudGl0eVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMubW9kZWxJZGVudGl0eSQpO1xuICByZWFkb25seSB0eXBlSW5mb1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMudHlwZUluZm8kKTtcblxuICByZWFkb25seSB0eXBlQ2FuU2VndWVUb1ZpZXcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR5cGVJbmZvU2lnbmFsKCk/LmNhblNlZ3VlVG9WaWV3ID8/IGZhbHNlKTtcblxuICByZWFkb25seSBzcmVmJCA9IHRoaXMubW9kZWxUeXBlSW5zdGFuY2UkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4Py5zZWd1ZVJlZiQgPz8gb2YodW5kZWZpbmVkKSkpO1xuICByZWFkb25seSBzcmVmU2lnbmFsID0gdG9TaWduYWwodGhpcy5zcmVmJCk7XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWZpcmViYXNlLW1vZGVsLWtleVwiPlxuICBAaWYgKG1vZGVsS2V5KCk7IGFzIGtleSkge1xuICAgIDwhLS0gS2V5IERhdGEgLS0+XG4gICAgPGRieC1kZXRhaWwtYmxvY2sgaWNvbj1cImtleVwiIGhlYWRlcj1cIk1vZGVsIEtleVwiPlxuICAgICAgPGRieC1jbGljay10by1jb3B5LXRleHQgW2hpZ2hsaWdodGVkXT1cInRydWVcIiBjbGFzcz1cImRieC1ibG9ja1wiPnt7IGtleSB9fTwvZGJ4LWNsaWNrLXRvLWNvcHktdGV4dD5cbiAgICAgIDxkYngtY2xpY2stdG8tY29weS10ZXh0IFtoaWdobGlnaHRlZF09XCJ0cnVlXCIgY2xhc3M9XCJkYngtYmxvY2tcIiBbY29weVRleHRdPVwib25lV2F5RmxhdE1vZGVsS2V5KClcIj4oRmxhdCkge3sgb25lV2F5RmxhdE1vZGVsS2V5KCkgfX08L2RieC1jbGljay10by1jb3B5LXRleHQ+XG4gICAgICA8ZGJ4LWNsaWNrLXRvLWNvcHktdGV4dCBbaGlnaGxpZ2h0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwiZGJ4LWJsb2NrXCIgW2NvcHlUZXh0XT1cInR3b1dheUZsYXRNb2RlbEtleSgpXCI+KEVuY29kZWQgRmxhdCkge3sgdHdvV2F5RmxhdE1vZGVsS2V5KCkgfX08L2RieC1jbGljay10by1jb3B5LXRleHQ+XG4gICAgPC9kYngtZGV0YWlsLWJsb2NrPlxuXG4gICAgPCEtLSBUeXBlIEluZm8gLS0+XG4gICAgQGlmICh0eXBlSW5mb1NpZ25hbCgpOyBhcyB0eXBlSW5mbykge1xuICAgICAgPCEtLSBNb2RlbCBNZXRhIERhdGEgLS0+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGJ4LWRldGFpbC1ibG9jayBbaWNvbl09XCJ0eXBlSW5mby5pY29uXCIgaGVhZGVyPVwiTW9kZWwgVHlwZVwiPlxuICAgICAgICAgIDxkYngtY2xpY2stdG8tY29weS10ZXh0IGNsYXNzPVwiZGJ4LWJsb2NrXCI+e3sgdHlwZUluZm8ubW9kZWxUeXBlIH19PC9kYngtY2xpY2stdG8tY29weS10ZXh0PlxuICAgICAgICAgIEBpZiAodHlwZUluZm8uaWNvbikge1xuICAgICAgICAgICAgPGRieC1jbGljay10by1jb3B5LXRleHQgW2NvcHlUZXh0XT1cInR5cGVJbmZvLmljb25cIiBjbGFzcz1cImRieC1ibG9ja1wiPlxuICAgICAgICAgICAgICBJY29uOlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRieC11XCI+e3sgdHlwZUluZm8uaWNvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGJ4LWNsaWNrLXRvLWNvcHktdGV4dD5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGJ4LW5vdGljZVwiPk5vIEljb24gRm9yIFR5cGU8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2RieC1kZXRhaWwtYmxvY2s+XG4gICAgICAgIDxkYngtZGV0YWlsLWJsb2NrIGljb249XCJkYXRhc2V0XCIgaGVhZGVyPVwiQ29sbGVjdGlvbiBOYW1lXCI+XG4gICAgICAgICAgPGRieC1jbGljay10by1jb3B5LXRleHQgY2xhc3M9XCJkYngtYmxvY2tcIj57eyB0eXBlSW5mby5pZGVudGl0eS5jb2xsZWN0aW9uTmFtZSB9fTwvZGJ4LWNsaWNrLXRvLWNvcHktdGV4dD5cbiAgICAgICAgPC9kYngtZGV0YWlsLWJsb2NrPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gU2VndWUgSW5mbyAtLT5cbiAgICAgIEBpZiAodHlwZUNhblNlZ3VlVG9WaWV3KCkpIHtcbiAgICAgICAgPGRieC1kZXRhaWwtYmxvY2sgaWNvbj1cImFycm93X2ZvcndhcmRcIiBoZWFkZXI9XCJTZWd1ZSBUbyBWaWV3XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRieC1oaW50IGRieC1zbWFsbFwiPlRoaXMgbW9kZWwgaGFzIGEgdW5pcXVlIHZpZXcgd2l0aGluIHRoZSBhcHAuPC9kaXY+XG4gICAgICAgICAgPGRieC1hbmNob3IgW2FuY2hvcl09XCJzcmVmU2lnbmFsKClcIj48ZGJ4LWJ1dHRvbj5HbyBUbyBWaWV3PC9kYngtYnV0dG9uPjwvZGJ4LWFuY2hvcj5cbiAgICAgICAgPC9kYngtZGV0YWlsLWJsb2NrPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkYngtZGV0YWlsLWJsb2NrIGNsYXNzPVwiZGJ4LXdhcm5cIiBpY29uPVwid2FybmluZ1wiIGhlYWRlcj1cIk5vIFNlZ3VlIFZpZXdcIj5cbiAgICAgICAgICA8c3Bhbj5UaGlzIHR5cGUgcHJvdmlkZXMgbm8gaW5mb3JtYXRpb24gZm9yIHNlZ3VlIGRpcmVjdGx5Ljwvc3Bhbj5cbiAgICAgICAgPC9kYngtZGV0YWlsLWJsb2NrPlxuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRieC1kZXRhaWwtYmxvY2sgY2xhc3M9XCJkYngtd2FyblwiIGljb249XCJ3YXJuaW5nXCIgaGVhZGVyPVwiTm8gVHlwZSBJbmZvXCI+XG4gICAgICAgIDxzcGFuPlRoZXJlIGlzIG5vIHR5cGUgaW5mbyByZWdpc3RlcmVkIGZvciB0aGlzIG1vZGVsIHR5cGUuPC9zcGFuPlxuICAgICAgPC9kYngtZGV0YWlsLWJsb2NrPlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImRieC1maXJlYmFzZS1tb2RlbC1rZXktZW1wdHlcIj5ObyBtb2RlbCBrZXkgcHJvdmlkZWQ8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { distinctUntilChanged, map, shareReplay, switchMap, combineLatest, of, catchError } from 'rxjs';
2
2
  import { DbxModelTypesService } from '@dereekb/dbx-web';
3
3
  import { asArray } from '@dereekb/util';
4
- import { filterMaybeArray } from '@dereekb/rxjs';
4
+ import { filterMaybe, filterMaybeArray } from '@dereekb/rxjs';
5
5
  import { Injectable, inject, Inject } from '@angular/core';
6
6
  import { DbxFirebaseModelContextService } from '../../service/model.context.service';
7
7
  import * as i0 from "@angular/core";
@@ -84,7 +84,8 @@ export function dbxFirebaseModelTypesServiceInstance(modelInfoInstance$, dbxFire
84
84
  const key$ = modelInfoInstance$.pipe(switchMap((x) => x.key$));
85
85
  const modelType$ = modelInfoInstance$.pipe(switchMap((x) => x.modelType$));
86
86
  const snapshotData$ = modelInfoInstance$.pipe(switchMap((x) => x.snapshotData$));
87
- const typeInfo$ = modelType$.pipe(switchMap((x) => dbxFirebaseModelTypesService.infoForType(x)), distinctUntilChanged(), shareReplay(1));
87
+ const safeTypeInfo$ = modelType$.pipe(switchMap((x) => dbxFirebaseModelTypesService.currentInfoForType(x)), distinctUntilChanged(), shareReplay(1));
88
+ const typeInfo$ = safeTypeInfo$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
88
89
  const identity$ = typeInfo$.pipe(map((x) => x.identity), distinctUntilChanged());
89
90
  const segueRef$ = combineLatest([key$, typeInfo$]).pipe(map(([key, info]) => (info.sref ? info.sref(key) : undefined)), shareReplay(1));
90
91
  const displayInfo$ = combineLatest([typeInfo$, snapshotData$]).pipe(map(([typeInfo, data]) => dbxFirebaseModelTypesService.getDisplayInfo(typeInfo, data)), shareReplay(1));
@@ -107,6 +108,7 @@ export function dbxFirebaseModelTypesServiceInstance(modelInfoInstance$, dbxFire
107
108
  key$,
108
109
  modelType$,
109
110
  snapshotData$,
111
+ safeTypeInfo$,
110
112
  typeInfo$,
111
113
  identity$,
112
114
  segueRef$,
@@ -117,4 +119,4 @@ export function dbxFirebaseModelTypesServiceInstance(modelInfoInstance$, dbxFire
117
119
  };
118
120
  return instance;
119
121
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwudHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEgsT0FBTyxFQUFzQyxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLE9BQU8sRUFBZ0IsT0FBTyxFQUFrRSxNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQXFCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFHckY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGtDQUFrQztDQUt2RDtBQXdCRDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQUM5Qiw4QkFBOEIsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUV4RSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsQ0FBQSxvQkFBOEMsQ0FBQSxDQUFDLENBQUM7SUFFdkYsWUFBd0QsYUFBaUQ7UUFDdkcsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUksUUFBcUMsRUFBRSxJQUFPO1FBQzlELElBQUksV0FBc0QsQ0FBQztRQUUzRCxJ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LElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzSSxNQUFNLFFBQVEsR0FBK0M7UUFDM0Qsa0JBQWtCO1FBQ2xCLDRCQUE0QjtRQUM1QixJQUFJO1FBQ0osVUFBVTtRQUNWLGFBQWE7UUFDYixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixhQUFhO0tBQ2QsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCBjb21iaW5lTGF0ZXN0LCBvZiwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUsIEZpcmVzdG9yZURvY3VtZW50LCBGaXJlc3RvcmVEb2N1bWVudERhdGEsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHksIEZpcmVzdG9yZU1vZGVsS2V5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgRGJ4TW9kZWxUeXBlSW5mbywgRGJ4TW9kZWxUeXBlc01hcCwgRGJ4TW9kZWxUeXBlc1NlcnZpY2UgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgYXNBcnJheSwgQ29uZmlndXJhYmxlLCBGYWN0b3J5V2l0aFJlcXVpcmVkSW5wdXQsIE1heWJlLCBNb2RlbFR5cGVTdHJpbmcgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZiwgSWNvbkFuZFRpdGxlLCBTZWd1ZVJlZiB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCBmaWx0ZXJNYXliZUFycmF5IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBHcmFudGVkUm9sZSB9IGZyb20gJ0BkZXJlZWtiL21vZGVsJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL21vZGVsLmNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9tb2RlbC5jb250ZXh0JztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3ZpZGVkIGluIHRoZSByb290IG1vZHVsZSBmb3IgY29uZmlndXJpbmcgZW50cmllcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcge1xuICAvKipcbiAgICogRW50cmllcyB0byByZWdpc3Rlci5cbiAgICovXG4gIGFic3RyYWN0IGVudHJpZXM6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeTxUID0gdW5rbm93bj4gZXh0ZW5kcyBPbWl0PERieE1vZGVsVHlwZUluZm8sICdjYW5TZWd1ZVRvVmlldycgfCAnbW9kZWxUeXBlJz4ge1xuICAvKipcbiAgICogSWRlbnRpdHkgb2YgdGhlIGl0ZW0gYmVpbmcgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5OiBGaXJlc3RvcmVNb2RlbElkZW50aXR5O1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvIGZvciB0aGUgaW5wdXQgZGF0YS5cbiAgICpcbiAgICogSWYgbm8gaWNvbiBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgZGVmYXVsdCBpY29uIGNvbmZpZ3VyZWQgaW4gdGhpcyBlbnRyeS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5SW5mb0ZhY3Rvcnk6IEZhY3RvcnlXaXRoUmVxdWlyZWRJbnB1dDxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8sIFQ+O1xufVxuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8gPSBJY29uQW5kVGl0bGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPFQgPSB1bmtub3duPiBleHRlbmRzIERieE1vZGVsVHlwZUluZm8sIFBpY2s8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5PFQ+LCAnaWRlbnRpdHknIHwgJ2Rpc3BsYXlJbmZvRmFjdG9yeSc+IHt9XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxUeXBlc01hcCA9IERieE1vZGVsVHlwZXNNYXA8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPjtcblxuLyoqXG4gKiBQcm92aWRlcyBtb2RlbCB0eXBlIGluZm9ybWF0aW9uIGFib3V0IG1vZGVscyByZWdpc3RlcmVkIHdpdGhpbiBGaXJlYmFzZS5cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgdGhlIERieE1vZGVsVHlwZXNTZXJ2aWNlLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSB7XG4gIHJlYWRvbmx5IGRieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSA9IGluamVjdChEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGRieE1vZGVsVHlwZXNTZXJ2aWNlID0gaW5qZWN0KERieE1vZGVsVHlwZXNTZXJ2aWNlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz4pO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUNvbmZpZykgaW5pdGlhbENvbmZpZzogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUNvbmZpZykge1xuICAgIGlmIChpbml0aWFsQ29uZmlnLmVudHJpZXMpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXIoaW5pdGlhbENvbmZpZy5lbnRyaWVzKTtcbiAgICB9XG4gIH1cblxuICBnZXREaXNwbGF5SW5mbzxUPih0eXBlSW5mbzogRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPFQ+LCBkYXRhOiBUKTogRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvIHtcbiAgICBsZXQgZGlzcGxheUluZm86IENvbmZpZ3VyYWJsZTxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8+O1xuXG4gICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgZGlzcGxheUluZm8gPSB0eXBlSW5mby5kaXNwbGF5SW5mb0ZhY3RvcnkoZGF0YSk7XG4gICAgICBkaXNwbGF5SW5mby5pY29uID0gZGlzcGxheUluZm8uaWNvbiB8fCB0eXBlSW5mby5pY29uOyAvLyBzZXQgZGVmYXVsdCBpY29uXG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlJbmZvID0gdGhpcy5nZXREZWZhdWx0RGlzcGxheUluZm8odHlwZUluZm8pO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwbGF5SW5mbztcbiAgfVxuXG4gIGdldERlZmF1bHREaXNwbGF5SW5mbzxUID0gdW5rbm93bj4odHlwZUluZm86IERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzxUPikge1xuICAgIC8vIFRPRE86IE1ha2UgY29uZmlndXJhYmxlXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0eXBlSW5mby5sYWJlbCA/PyAnJyxcbiAgICAgIGljb246ICd3YXJuaW5nJ1xuICAgIH07XG4gIH1cblxuICAvLyBNQVJLOiBSZWdpc3RlclxuICByZWdpc3RlcihlbnRyaWVzOiBBcnJheU9yVmFsdWU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5Pikge1xuICAgIGNvbnN0IHR5cGVDb25maWdzID0gYXNBcnJheShlbnRyaWVzKS5tYXAoKHgpID0+ICh7IC4uLngsIG1vZGVsVHlwZTogeC5pZGVudGl0eS5tb2RlbFR5cGUgfSkpO1xuICAgIHRoaXMuZGJ4TW9kZWxUeXBlc1NlcnZpY2UuYWRkVHlwZUNvbmZpZ3ModHlwZUNvbmZpZ3MpO1xuICB9XG5cbiAgLy8gTUFSSzogUmV0cmlldmFsXG4gIGN1cnJlbnRJbmZvRm9yVHlwZSh0eXBlOiBNb2RlbFR5cGVTdHJpbmcgfCBGaXJlc3RvcmVDb2xsZWN0aW9uVHlwZSk6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPj4ge1xuICAgIHJldHVybiB0aGlzLmRieE1vZGVsVHlwZXNTZXJ2aWNlLnR5cGVzTWFwJC5waXBlKG1hcCgoeCkgPT4geFt0eXBlXSkpO1xuICB9XG5cbiAgaW5mb0ZvclR5cGUodHlwZTogTW9kZWxUeXBlU3RyaW5nIHwgRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUpOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmZvRm9yVHlwZSh0eXBlKS5waXBlKFxuICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICgheCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U6IGNvbnRhaW5lZCBubyBpbmZvIGZvciB0eXBlIFwiJHt0eXBlfVwiLiBFbnN1cmUgdGhlIGNvcnJlY3QgdHlwZSB3YXMgZW50ZXJlZCwgYW5kIHRoYXQgdGhlIHR5cGUgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLmApO1xuICAgICAgICAgIHRocm93IHg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geCBhcyBEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm87XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpbnN0YW5jZUZvcktleTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KGtleSQ6IE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pik6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPiB7XG4gICAgcmV0dXJuIGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPih0aGlzLmRieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZS5tb2RlbEluZm9JbnN0YW5jZTxELCBSPihrZXkkKSwgdGhpcyk7XG4gIH1cblxuICBpbnN0YW5jZVBhaXJzRm9yS2V5cyhrZXlzOiBBcnJheU9yVmFsdWU8T2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+Pikge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyRm9yS2V5c0ZhY3RvcnkodGhpcykoa2V5cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBwYWlyIGZvciBhbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxhbnk+ID0gYW55LCBSIGV4dGVuZHMgR3JhbnRlZFJvbGUgPSBHcmFudGVkUm9sZT4ge1xuICByZWFkb25seSBrZXk6IEZpcmVzdG9yZU1vZGVsS2V5O1xuICByZWFkb25seSBpbnN0YW5jZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQsIFI+O1xuICByZWFkb25seSBkaXNwbGF5SW5mbzogRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvO1xuICByZWFkb25seSBzZWd1ZVJlZjogTWF5YmU8Q2xpY2thYmxlQW5jaG9yTGlua1NlZ3VlUmVmPjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5ID0gKGtleXM6IEFycmF5T3JWYWx1ZTxPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+KSA9PiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXJbXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyRm9yS2V5c0ZhY3Rvcnkoc2VydmljZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSk6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXJGb3JLZXlzRmFjdG9yeSB7XG4gIHJldHVybiAoa2V5czogQXJyYXlPclZhbHVlPE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pj4pID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZXMgPSBhc0FycmF5KGtleXMpLm1hcCgoeCkgPT4gc2VydmljZS5pbnN0YW5jZUZvcktleSh4KS5zYWZlSW5zdGFuY2VQYWlyJCk7XG4gICAgcmV0dXJuIGluc3RhbmNlcy5sZW5ndGggPyBjb21iaW5lTGF0ZXN0KGluc3RhbmNlcykucGlwZShmaWx0ZXJNYXliZUFycmF5KCksIHNoYXJlUmVwbGF5KDEpKSA6IG9mKFtdKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxhbnk+ID0gYW55LCBSIGV4dGVuZHMgR3JhbnRlZFJvbGUgPSBHcmFudGVkUm9sZT4ge1xuICByZWFkb25seSBtb2RlbEluZm9JbnN0YW5jZSQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsSW5mb1NlcnZpY2VJbnN0YW5jZTxELCBSPj47XG4gIHJlYWRvbmx5IGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U7XG4gIHJlYWRvbmx5IGtleSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgbW9kZWxUeXBlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICByZWFkb25seSBzbmFwc2hvdERhdGEkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZURvY3VtZW50RGF0YTxEPj4+O1xuICByZWFkb25seSB0eXBlSW5mbyQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPHVua25vd24+PjtcbiAgcmVhZG9ubHkgaWRlbnRpdHkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+O1xuICByZWFkb25seSBzZWd1ZVJlZiQ6IE9ic2VydmFibGU8TWF5YmU8U2VndWVSZWY+PjtcbiAgcmVhZG9ubHkgZGlzcGxheUluZm8kOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbz47XG4gIHJlYWRvbmx5IGNsaWNrYWJsZVNlZ3VlUmVmJDogT2JzZXJ2YWJsZTxNYXliZTxDbGlja2FibGVBbmNob3JMaW5rU2VndWVSZWY+PjtcbiAgcmVhZG9ubHkgc2FmZUluc3RhbmNlUGFpciQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4+O1xuICByZWFkb25seSBpbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxhbnk+ID0gYW55LCBSIGV4dGVuZHMgR3JhbnRlZFJvbGUgPSBHcmFudGVkUm9sZT4obW9kZWxJbmZvSW5zdGFuY2UkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2U8RCwgUj4+LCBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlKSB7XG4gIGNvbnN0IGtleSQgPSBtb2RlbEluZm9JbnN0YW5jZSQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHgua2V5JCkpO1xuICBjb25zdCBtb2RlbFR5cGUkID0gbW9kZWxJbmZvSW5zdGFuY2UkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4Lm1vZGVsVHlwZSQpKTtcbiAgY29uc3Qgc25hcHNob3REYXRhJCA9IG1vZGVsSW5mb0luc3RhbmNlJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5zbmFwc2hvdERhdGEkKSk7XG5cbiAgY29uc3QgdHlwZUluZm8kID0gbW9kZWxUeXBlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5pbmZvRm9yVHlwZSh4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IGlkZW50aXR5JCA9IHR5cGVJbmZvJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZGVudGl0eSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIGNvbnN0IHNlZ3VlUmVmJDogT2JzZXJ2YWJsZTxNYXliZTxTZWd1ZVJlZj4+ID0gY29tYmluZUxhdGVzdChba2V5JCwgdHlwZUluZm8kXSkucGlwZShcbiAgICBtYXAoKFtrZXksIGluZm9dKSA9PiAoaW5mby5zcmVmID8gaW5mby5zcmVmKGtleSkgOiB1bmRlZmluZWQpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IGRpc3BsYXlJbmZvJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8+ID0gY29tYmluZUxhdGVzdChbdHlwZUluZm8kLCBzbmFwc2hvdERhdGEkXSkucGlwZShcbiAgICBtYXAoKFt0eXBlSW5mbywgZGF0YV0pID0+IGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UuZ2V0RGlzcGxheUluZm8odHlwZUluZm8sIGRhdGEpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IGNsaWNrYWJsZVNlZ3VlUmVmJDogT2JzZXJ2YWJsZTxNYXliZTxDbGlja2FibGVBbmNob3JMaW5rU2VndWVSZWY+PiA9IGNvbWJpbmVMYXRlc3QoW3NlZ3VlUmVmJCwgZGlzcGxheUluZm8kXSkucGlwZShcbiAgICBtYXAoKFtzZWd1ZVJlZiwgZGlzcGxheUluZm9dKSA9PiB7XG4gICAgICBsZXQgcmVmOiBNYXliZTxDbGlja2FibGVBbmNob3JMaW5rU2VndWVSZWY+ID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoc2VndWVSZWYpIHtcbiAgICAgICAgcmVmID0ge1xuICAgICAgICAgIC4uLnNlZ3VlUmVmLFxuICAgICAgICAgIHRpdGxlOiBkaXNwbGF5SW5mby50aXRsZSxcbiAgICAgICAgICBpY29uOiBkaXNwbGF5SW5mby5pY29uXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWY7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdCBpbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+ID0gY29tYmluZUxhdGVzdChbY2xpY2thYmxlU2VndWVSZWYkLCBkaXNwbGF5SW5mbyQsIGtleSRdKS5waXBlKFxuICAgIG1hcCgoW3NlZ3VlUmVmLCBkaXNwbGF5SW5mbywga2V5XSkgPT4gKHsgc2VndWVSZWYsIGRpc3BsYXlJbmZvLCBrZXksIGluc3RhbmNlIH0pKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IHNhZmVJbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+PiA9IGluc3RhbmNlUGFpciQucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKHVuZGVmaW5lZCkpKTtcblxuICBjb25zdCBpbnN0YW5jZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQsIFI+ID0ge1xuICAgIG1vZGVsSW5mb0luc3RhbmNlJCxcbiAgICBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLFxuICAgIGtleSQsXG4gICAgbW9kZWxUeXBlJCxcbiAgICBzbmFwc2hvdERhdGEkLFxuICAgIHR5cGVJbmZvJCxcbiAgICBpZGVudGl0eSQsXG4gICAgc2VndWVSZWYkLFxuICAgIGRpc3BsYXlJbmZvJCxcbiAgICBjbGlja2FibGVTZWd1ZVJlZiQsXG4gICAgc2FmZUluc3RhbmNlUGFpciQsXG4gICAgaW5zdGFuY2VQYWlyJFxuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwudHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEgsT0FBTyxFQUFzQyxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLE9BQU8sRUFBZ0IsT0FBTyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUVyRyxPQUFPLEVBQXFCLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR3JGOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixrQ0FBa0M7Q0FLdkQ7QUF3QkQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFDOUIsOEJBQThCLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFFeEUsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLENBQUEsb0JBQThDLENBQUEsQ0FBQyxDQUFDO0lBRXZGLFlBQXdELGFBQWlEO1FBQ3ZHLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFJLFFBQXFDLEVBQUUsSUFBTztRQUM5RCxJQUFJLFdBQXNELENB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USxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUNqRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQWdFLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0ksTUFBTSxRQUFRLEdBQStDO1FBQzNELGtCQUFrQjtRQUNsQiw0QkFBNEI7UUFDNUIsSUFBSTtRQUNKLFVBQVU7UUFDVixhQUFhO1FBQ2IsYUFBYTtRQUNiLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLGFBQWE7S0FDZCxDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIGNvbWJpbmVMYXRlc3QsIG9mLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlc3RvcmVDb2xsZWN0aW9uVHlwZSwgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZURvY3VtZW50RGF0YSwgRmlyZXN0b3JlTW9kZWxJZGVudGl0eSwgRmlyZXN0b3JlTW9kZWxLZXkgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBEYnhNb2RlbFR5cGVJbmZvLCBEYnhNb2RlbFR5cGVzTWFwLCBEYnhNb2RlbFR5cGVzU2VydmljZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgQXJyYXlPclZhbHVlLCBhc0FycmF5LCBDb25maWd1cmFibGUsIEZhY3RvcnlXaXRoUmVxdWlyZWRJbnB1dCwgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZiwgSWNvbkFuZFRpdGxlLCBTZWd1ZVJlZiB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCBmaWx0ZXJNYXliZSwgZmlsdGVyTWF5YmVBcnJheSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgR3JhbnRlZFJvbGUgfSBmcm9tICdAZGVyZWVrYi9tb2RlbCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9tb2RlbC5jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsSW5mb1NlcnZpY2VJbnN0YW5jZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvbW9kZWwuY29udGV4dCc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm92aWRlZCBpbiB0aGUgcm9vdCBtb2R1bGUgZm9yIGNvbmZpZ3VyaW5nIGVudHJpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEVudHJpZXMgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBhYnN0cmFjdCBlbnRyaWVzOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlRW50cnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlRW50cnk8VCA9IHVua25vd24+IGV4dGVuZHMgT21pdDxEYnhNb2RlbFR5cGVJbmZvLCAnY2FuU2VndWVUb1ZpZXcnIHwgJ21vZGVsVHlwZSc+IHtcbiAgLyoqXG4gICAqIElkZW50aXR5IG9mIHRoZSBpdGVtIGJlaW5nIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWFkb25seSBpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eTtcbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbyBmb3IgdGhlIGlucHV0IGRhdGEuXG4gICAqXG4gICAqIElmIG5vIGljb24gaXMgcHJvdmlkZWQsIGl0IHVzZXMgdGhlIGRlZmF1bHQgaWNvbiBjb25maWd1cmVkIGluIHRoaXMgZW50cnkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheUluZm9GYWN0b3J5OiBGYWN0b3J5V2l0aFJlcXVpcmVkSW5wdXQ8RGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvLCBUPjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvID0gSWNvbkFuZFRpdGxlO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzxUID0gdW5rbm93bj4gZXh0ZW5kcyBEYnhNb2RlbFR5cGVJbmZvLCBQaWNrPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeTxUPiwgJ2lkZW50aXR5JyB8ICdkaXNwbGF5SW5mb0ZhY3RvcnknPiB7fVxuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNNYXAgPSBEYnhNb2RlbFR5cGVzTWFwPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz47XG5cbi8qKlxuICogUHJvdmlkZXMgbW9kZWwgdHlwZSBpbmZvcm1hdGlvbiBhYm91dCBtb2RlbHMgcmVnaXN0ZXJlZCB3aXRoaW4gRmlyZWJhc2UuXG4gKlxuICogQXV0b21hdGljYWxseSBjb25maWd1cmVzIHRoZSBEYnhNb2RlbFR5cGVzU2VydmljZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2Uge1xuICByZWFkb25seSBkYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UgPSBpbmplY3QoRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKTtcblxuICByZWFkb25seSBkYnhNb2RlbFR5cGVzU2VydmljZSA9IGluamVjdChEYnhNb2RlbFR5cGVzU2VydmljZTxEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm8+KTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcpIGluaXRpYWxDb25maWc6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcpIHtcbiAgICBpZiAoaW5pdGlhbENvbmZpZy5lbnRyaWVzKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKGluaXRpYWxDb25maWcuZW50cmllcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheUluZm88VD4odHlwZUluZm86IERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzxUPiwgZGF0YTogVCk6IERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbyB7XG4gICAgbGV0IGRpc3BsYXlJbmZvOiBDb25maWd1cmFibGU8RGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvPjtcblxuICAgIGlmIChkYXRhICE9IG51bGwpIHtcbiAgICAgIGRpc3BsYXlJbmZvID0gdHlwZUluZm8uZGlzcGxheUluZm9GYWN0b3J5KGRhdGEpO1xuICAgICAgZGlzcGxheUluZm8uaWNvbiA9IGRpc3BsYXlJbmZvLmljb24gfHwgdHlwZUluZm8uaWNvbjsgLy8gc2V0IGRlZmF1bHQgaWNvblxuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5SW5mbyA9IHRoaXMuZ2V0RGVmYXVsdERpc3BsYXlJbmZvKHR5cGVJbmZvKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheUluZm87XG4gIH1cblxuICBnZXREZWZhdWx0RGlzcGxheUluZm88VCA9IHVua25vd24+KHR5cGVJbmZvOiBEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm88VD4pIHtcbiAgICAvLyBUT0RPOiBNYWtlIGNvbmZpZ3VyYWJsZVxuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdHlwZUluZm8ubGFiZWwgPz8gJycsXG4gICAgICBpY29uOiAnd2FybmluZydcbiAgICB9O1xuICB9XG5cbiAgLy8gTUFSSzogUmVnaXN0ZXJcbiAgcmVnaXN0ZXIoZW50cmllczogQXJyYXlPclZhbHVlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeT4pIHtcbiAgICBjb25zdCB0eXBlQ29uZmlncyA9IGFzQXJyYXkoZW50cmllcykubWFwKCh4KSA9PiAoeyAuLi54LCBtb2RlbFR5cGU6IHguaWRlbnRpdHkubW9kZWxUeXBlIH0pKTtcbiAgICB0aGlzLmRieE1vZGVsVHlwZXNTZXJ2aWNlLmFkZFR5cGVDb25maWdzKHR5cGVDb25maWdzKTtcbiAgfVxuXG4gIC8vIE1BUks6IFJldHJpZXZhbFxuICBjdXJyZW50SW5mb0ZvclR5cGUodHlwZTogRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUpOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz4+IHtcbiAgICByZXR1cm4gdGhpcy5kYnhNb2RlbFR5cGVzU2VydmljZS50eXBlc01hcCQucGlwZShtYXAoKHgpID0+IHhbdHlwZV0pKTtcbiAgfVxuXG4gIGluZm9Gb3JUeXBlKHR5cGU6IEZpcmVzdG9yZUNvbGxlY3Rpb25UeXBlKTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm8+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5mb0ZvclR5cGUodHlwZSkucGlwZShcbiAgICAgIG1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAoIXgpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlOiBjb250YWluZWQgbm8gaW5mbyBmb3IgdHlwZSBcIiR7dHlwZX1cIi4gRW5zdXJlIHRoZSBjb3JyZWN0IHR5cGUgd2FzIGVudGVyZWQsIGFuZCB0aGF0IHRoZSB0eXBlIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5gKTtcbiAgICAgICAgICB0aHJvdyB4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHggYXMgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgaW5zdGFuY2VGb3JLZXk8RCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PGFueT4gPSBhbnksIFIgZXh0ZW5kcyBHcmFudGVkUm9sZSA9IEdyYW50ZWRSb2xlPihrZXkkOiBPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4pOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U8RCwgUj4ge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U8RCwgUj4odGhpcy5kYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UubW9kZWxJbmZvSW5zdGFuY2U8RCwgUj4oa2V5JCksIHRoaXMpO1xuICB9XG5cbiAgaW5zdGFuY2VQYWlyc0ZvcktleXMoa2V5czogQXJyYXlPclZhbHVlPE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pj4pIHtcbiAgICByZXR1cm4gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5KHRoaXMpKGtleXMpO1xuICB9XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gcGFpciBmb3IgYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcjxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+IHtcbiAgcmVhZG9ubHkga2V5OiBGaXJlc3RvcmVNb2RlbEtleTtcbiAgcmVhZG9ubHkgaW5zdGFuY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPjtcbiAgcmVhZG9ubHkgZGlzcGxheUluZm86IERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbztcbiAgcmVhZG9ubHkgc2VndWVSZWY6IE1heWJlPENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZj47XG59XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXJGb3JLZXlzRmFjdG9yeSA9IChrZXlzOiBBcnJheU9yVmFsdWU8T2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+PikgPT4gT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyW10+O1xuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5KHNlcnZpY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UpOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyRm9yS2V5c0ZhY3Rvcnkge1xuICByZXR1cm4gKGtleXM6IEFycmF5T3JWYWx1ZTxPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+KSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2VzID0gYXNBcnJheShrZXlzKS5tYXAoKHgpID0+IHNlcnZpY2UuaW5zdGFuY2VGb3JLZXkoeCkuc2FmZUluc3RhbmNlUGFpciQpO1xuICAgIHJldHVybiBpbnN0YW5jZXMubGVuZ3RoID8gY29tYmluZUxhdGVzdChpbnN0YW5jZXMpLnBpcGUoZmlsdGVyTWF5YmVBcnJheSgpLCBzaGFyZVJlcGxheSgxKSkgOiBvZihbXSk7XG4gIH07XG59XG5cbi8qKlxuICogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSBpbnN0YW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+IHtcbiAgcmVhZG9ubHkgbW9kZWxJbmZvSW5zdGFuY2UkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2U8RCwgUj4+O1xuICByZWFkb25seSBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlO1xuICByZWFkb25seSBrZXkkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHJlYWRvbmx5IG1vZGVsVHlwZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgc25hcHNob3REYXRhJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVEb2N1bWVudERhdGE8RD4+PjtcbiAgcmVhZG9ubHkgc2FmZVR5cGVJbmZvJDogT2JzZXJ2YWJsZTxNYXliZTxEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm88dW5rbm93bj4+PjtcbiAgcmVhZG9ubHkgdHlwZUluZm8kOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzx1bmtub3duPj47XG4gIHJlYWRvbmx5IGlkZW50aXR5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5PjtcbiAgcmVhZG9ubHkgc2VndWVSZWYkOiBPYnNlcnZhYmxlPE1heWJlPFNlZ3VlUmVmPj47XG4gIHJlYWRvbmx5IGRpc3BsYXlJbmZvJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8+O1xuICByZWFkb25seSBjbGlja2FibGVTZWd1ZVJlZiQ6IE9ic2VydmFibGU8TWF5YmU8Q2xpY2thYmxlQW5jaG9yTGlua1NlZ3VlUmVmPj47XG4gIHJlYWRvbmx5IHNhZmVJbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+PjtcbiAgcmVhZG9ubHkgaW5zdGFuY2VQYWlyJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KG1vZGVsSW5mb0luc3RhbmNlJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlPEQsIFI+PiwgZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSkge1xuICBjb25zdCBrZXkkID0gbW9kZWxJbmZvSW5zdGFuY2UkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmtleSQpKTtcbiAgY29uc3QgbW9kZWxUeXBlJCA9IG1vZGVsSW5mb0luc3RhbmNlJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5tb2RlbFR5cGUkKSk7XG4gIGNvbnN0IHNuYXBzaG90RGF0YSQgPSBtb2RlbEluZm9JbnN0YW5jZSQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHguc25hcHNob3REYXRhJCkpO1xuXG4gIGNvbnN0IHNhZmVUeXBlSW5mbyQgPSBtb2RlbFR5cGUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLmN1cnJlbnRJbmZvRm9yVHlwZSh4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IHR5cGVJbmZvJCA9IHNhZmVUeXBlSW5mbyQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgY29uc3QgaWRlbnRpdHkkID0gdHlwZUluZm8kLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkZW50aXR5KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG5cbiAgY29uc3Qgc2VndWVSZWYkOiBPYnNlcnZhYmxlPE1heWJlPFNlZ3VlUmVmPj4gPSBjb21iaW5lTGF0ZXN0KFtrZXkkLCB0eXBlSW5mbyRdKS5waXBlKFxuICAgIG1hcCgoW2tleSwgaW5mb10pID0+IChpbmZvLnNyZWYgPyBpbmZvLnNyZWYoa2V5KSA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3QgZGlzcGxheUluZm8kOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbz4gPSBjb21iaW5lTGF0ZXN0KFt0eXBlSW5mbyQsIHNuYXBzaG90RGF0YSRdKS5waXBlKFxuICAgIG1hcCgoW3R5cGVJbmZvLCBkYXRhXSkgPT4gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5nZXREaXNwbGF5SW5mbyh0eXBlSW5mbywgZGF0YSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3QgY2xpY2thYmxlU2VndWVSZWYkOiBPYnNlcnZhYmxlPE1heWJlPENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZj4+ID0gY29tYmluZUxhdGVzdChbc2VndWVSZWYkLCBkaXNwbGF5SW5mbyRdKS5waXBlKFxuICAgIG1hcCgoW3NlZ3VlUmVmLCBkaXNwbGF5SW5mb10pID0+IHtcbiAgICAgIGxldCByZWY6IE1heWJlPENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZj4gPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChzZWd1ZVJlZikge1xuICAgICAgICByZWYgPSB7XG4gICAgICAgICAgLi4uc2VndWVSZWYsXG4gICAgICAgICAgdGl0bGU6IGRpc3BsYXlJbmZvLnRpdGxlLFxuICAgICAgICAgIGljb246IGRpc3BsYXlJbmZvLmljb25cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlZjtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IGluc3RhbmNlUGFpciQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4gPSBjb21iaW5lTGF0ZXN0KFtjbGlja2FibGVTZWd1ZVJlZiQsIGRpc3BsYXlJbmZvJCwga2V5JF0pLnBpcGUoXG4gICAgbWFwKChbc2VndWVSZWYsIGRpc3BsYXlJbmZvLCBrZXldKSA9PiAoeyBzZWd1ZVJlZiwgZGlzcGxheUluZm8sIGtleSwgaW5zdGFuY2UgfSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3Qgc2FmZUluc3RhbmNlUGFpciQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4+ID0gaW5zdGFuY2VQYWlyJC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YodW5kZWZpbmVkKSkpO1xuXG4gIGNvbnN0IGluc3RhbmNlOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U8RCwgUj4gPSB7XG4gICAgbW9kZWxJbmZvSW5zdGFuY2UkLFxuICAgIGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UsXG4gICAga2V5JCxcbiAgICBtb2RlbFR5cGUkLFxuICAgIHNuYXBzaG90RGF0YSQsXG4gICAgc2FmZVR5cGVJbmZvJCxcbiAgICB0eXBlSW5mbyQsXG4gICAgaWRlbnRpdHkkLFxuICAgIHNlZ3VlUmVmJCxcbiAgICBkaXNwbGF5SW5mbyQsXG4gICAgY2xpY2thYmxlU2VndWVSZWYkLFxuICAgIHNhZmVJbnN0YW5jZVBhaXIkLFxuICAgIGluc3RhbmNlUGFpciRcbiAgfTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG4iXX0=
@@ -2,7 +2,7 @@ import { __decorate, __metadata, __param } from "tslib";
2
2
  import { Inject, Injectable, Optional } from '@angular/core';
3
3
  import { shareReplay, distinctUntilChanged, map, switchMap, combineLatest, of, catchError } from 'rxjs';
4
4
  import { firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, documentDataWithIdAndKey, FirestoreAccessorStreamMode, inferKeyFromTwoWayFlatFirestoreModelKey, flatFirestoreModelKey, twoWayFlatFirestoreModelKey, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, isClientFirebaseError } from '@dereekb/firebase';
5
- import { filterMaybe, beginLoading, successResult, loadingStateFromObs, errorResult, isLoadingStateLoading } from '@dereekb/rxjs';
5
+ import { filterMaybe, beginLoading, successResult, loadingStateFromObs, errorResult, isLoadingStateLoading, tapLog } from '@dereekb/rxjs';
6
6
  import { isMaybeSo } from '@dereekb/util';
7
7
  import { LockSetComponentStore } from '@dereekb/dbx-core';
8
8
  import { modelDoesNotExistError } from '../../error';
@@ -47,7 +47,7 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
47
47
  */
48
48
  hasRef$ = this.currentDocument$.pipe(map((x) => x?.documentRef != null), distinctUntilChanged(), shareReplay(1));
49
49
  document$ = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
50
- documentLoadingState$ = this.currentDocument$.pipe(map((x) => (x ? successResult(x) : beginLoading())), shareReplay(1));
50
+ documentLoadingState$ = this.currentDocument$.pipe(map((x) => (x ? successResult(x) : beginLoading())), tapLog('documentLoadingState$'), shareReplay(1));
51
51
  currentId$ = this.currentDocument$.pipe(map((x) => x?.id), shareReplay(1));
52
52
  currentKey$ = this.currentDocument$.pipe(map((x) => x?.key), shareReplay(1));
53
53
  id$ = this.document$.pipe(map((x) => x.id), shareReplay(1));
@@ -59,9 +59,7 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
59
59
  flatKey$ = this.key$.pipe(map((x) => flatFirestoreModelKey(x)), shareReplay(1));
60
60
  twoWayFlatKey$ = this.key$.pipe(map((x) => twoWayFlatFirestoreModelKey(x)), shareReplay(1));
61
61
  snapshot$ = combineLatest([this.document$, this.streamMode$]).pipe(switchMap(([x, mode]) => x.snapshotStream(mode)), shareReplay(1));
62
- snapshotLoadingState$ = this.currentDocument$.pipe(switchMap(() => loadingStateFromObs(this.snapshot$)), shareReplay(1));
63
- currentData$ = this.snapshot$.pipe(map((x) => documentDataWithIdAndKey(x)), shareReplay(1));
64
- data$ = this.currentDocument$.pipe(switchMap(() => this.currentData$.pipe(filterMaybe())), shareReplay(1));
62
+ snapshotLoadingState$ = this.currentDocument$.pipe(switchMap(() => loadingStateFromObs(this.snapshot$).pipe(catchError((error) => of(errorResult(error))))), shareReplay(1));
65
63
  dataLoadingState$ = this.snapshotLoadingState$.pipe(map((x) => {
66
64
  let result;
67
65
  if (x.value) {
@@ -81,6 +79,8 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
81
79
  }
82
80
  return result;
83
81
  }), shareReplay(1));
82
+ currentData$ = this.dataLoadingState$.pipe(map((x) => x.value), shareReplay(1));
83
+ data$ = this.currentDocument$.pipe(switchMap(() => this.currentData$.pipe(filterMaybe())), shareReplay(1));
84
84
  isLoadingData$ = this.dataLoadingState$.pipe(map(isLoadingStateLoading), distinctUntilChanged(), shareReplay(1));
85
85
  /**
86
86
  * Returns false while hasRef$ is false, and then returns exists$.
@@ -188,4 +188,4 @@ AbstractRootSingleItemDbxFirebaseDocument = __decorate([
188
188
  __metadata("design:paramtypes", [Object])
189
189
  ], AbstractRootSingleItemDbxFirebaseDocument);
190
190
  export { AbstractRootSingleItemDbxFirebaseDocument };
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL3N0b3JlLmRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsSSxPQUFPLEVBVUwsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUUxQiwyQkFBMkIsRUFFM0Isd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUUzQix1Q0FBdUMsRUFHdkMscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQixzQ0FBc0MsRUFDdEMscUJBQXFCLEVBQ3RCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBZ0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFTLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckQsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRzdGLE1BQU0sT0FBTyxnQ0FBOEwsU0FBUSxxQkFBd0I7SUFDek8sWUFBZ0QsWUFBZ0I7UUFDOUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BCLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxDQUFD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LEVBQTJCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBbUYsQ0FBQztJQUV4Szs7OztPQUlHO0lBQ2UsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBNkIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFtRixDQUFDO0lBRTNLOzs7O09BSUc7SUFDZSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFnQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQStHLENBQUM7SUFFeEwsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzlELENBQUE7QUE1Q1kseUNBQXlDO0lBQzdCLFdBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQUUsV0FBQSxRQUFRLEVBQUUsQ0FBQTs7R0FEcEMseUNBQXlDLENBNENyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiwgb2YsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERvY3VtZW50U25hcHNob3QsXG4gIERvY3VtZW50UmVmZXJlbmNlLFxuICBGaXJlc3RvcmVDb2xsZWN0aW9uLFxuICBGaXJlc3RvcmVEb2N1bWVudCxcbiAgRG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LFxuICBGaXJlc3RvcmVNb2RlbElkLFxuICBGaXJlc3RvcmVNb2RlbEtleSxcbiAgRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UsXG4gIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHksXG4gIGZpcmVzdG9yZU1vZGVsSWRzRnJvbUtleSxcbiAgZmlyZXN0b3JlTW9kZWxLZXlQYXJ0UGFpcnMsXG4gIEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpcixcbiAgZmlyZXN0b3JlTW9kZWxLZXlQYWlyT2JqZWN0LFxuICBGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJPYmplY3QsXG4gIGRvY3VtZW50RGF0YVdpdGhJZEFuZEtleSxcbiAgRmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlLFxuICBUd29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXksXG4gIGluZmVyS2V5RnJvbVR3b1dheUZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uLFxuICBGbGF0RmlyZXN0b3JlTW9kZWxLZXksXG4gIGZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgdHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5LFxuICBGSVJFU1RPUkVfUEVSTUlTU0lPTl9ERU5JRURfRVJST1JfQ09ERSxcbiAgaXNDbGllbnRGaXJlYmFzZUVycm9yXG59IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIGJlZ2luTG9hZGluZywgc3VjY2Vzc1Jlc3VsdCwgbG9hZGluZ1N0YXRlRnJvbU9icywgZXJyb3JSZXN1bHQsIGlzTG9hZGluZ1N0YXRlTG9hZGluZyB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF5YmUsIGlzTWF5YmVTbyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgTG9ja1NldENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgbW9kZWxEb2VzTm90RXhpc3RFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHsgbGlua0RvY3VtZW50U3RvcmVUb1BhcmVudENvbnRleHRTdG9yZXMgfSBmcm9tICcuL3N0b3JlLmRvY3VtZW50LmNvbnRleHQuc3RvcmUubGluayc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPiA9IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPj4gZXh0ZW5kcyBMb2NrU2V0Q29tcG9uZW50U3RvcmU8Qz4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRD4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoQEluamVjdChudWxsKSBAT3B0aW9uYWwoKSBpbml0aWFsU3RhdGU/OiBDKSB7XG4gICAgc3VwZXIoaW5pdGlhbFN0YXRlKTtcbiAgICBsaW5rRG9jdW1lbnRTdG9yZVRvUGFyZW50Q29udGV4dFN0b3Jlcyh0aGlzKTtcbiAgfVxuXG4gIC8vIE1BUks6IEVmZmVjdHNcblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmlyZXN0b3JlQ29sbGVjdGlvbiA/PyB4LmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZpcmVzdG9yZUNvbGxlY3Rpb24pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRJZCQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaWQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dElkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPiA9IHRoaXMuY3VycmVudElucHV0SWQkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dEtleSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmtleSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0S2V5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbEtleT4gPSB0aGlzLmN1cnJlbnRJbnB1dEtleSQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0UmVmJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgucmVmKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRSZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PiA9IHRoaXMuY3VycmVudElucHV0UmVmJC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBzdHJlYW1Nb2RlJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGU+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguc3RyZWFtTW9kZSA/PyBGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGUuU1RSRUFNKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERvY3VtZW50JDogT2JzZXJ2YWJsZTxNYXliZTxEPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRJbnB1dElkJCwgdGhpcy5jdXJyZW50SW5wdXRLZXkkLCB0aGlzLmN1cnJlbnRJbnB1dFJlZiRdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2lkLCBrZXksIHJlZl0pID0+IHtcbiAgICAgIGxldCBkb2N1bWVudDogT2JzZXJ2YWJsZTxNYXliZTxEPj47XG5cbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50KHJlZikpKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5KSB7XG4gICAgICAgIGRvY3VtZW50ID0gdGhpcy5maXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQucGlwZShtYXAoKHgpID0+IHguZG9jdW1lbnRBY2Nlc3NvcigpLmxvYWREb2N1bWVudEZvcktleShrZXkpKSk7XG4gICAgICB9IGVsc2UgaWYgKGlkKSB7XG4gICAgICAgIGRvY3VtZW50ID0gdGhpcy5maXJlc3RvcmVDb2xsZWN0aW9uJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50Rm9ySWQoaWQpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb2N1bWVudCA9IG9mKHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IGFuIGlkL3JlZi9rZXkgaGFzIGJlZW4gaW5wdXQgYW5kIGN1cnJlbnREb2N1bWVudCBpcyBub3QgbnVsbC5cbiAgICovXG4gIHJlYWRvbmx5IGhhc1JlZiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmRvY3VtZW50UmVmICE9IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8RD4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnRMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+ICh4ID8gc3VjY2Vzc1Jlc3VsdCh4KSA6IGJlZ2luTG9hZGluZzxEPigpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50SWQkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uaWQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudEtleSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8ua2V5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHgua2V5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGtleU1vZGVsSWRzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkW10+ID0gdGhpcy5rZXkkLnBpcGUobWFwKGZpcmVzdG9yZU1vZGVsSWRzRnJvbUtleSksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkga2V5UGFpcnMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpcltdPiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbEtleVBhcnRQYWlycyksIGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkga2V5UGFpck9iamVjdCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyT2JqZWN0PiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbEtleVBhaXJPYmplY3QpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5kb2N1bWVudFJlZiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmbGF0S2V5JDogT2JzZXJ2YWJsZTxGbGF0RmlyZXN0b3JlTW9kZWxLZXk+ID0gdGhpcy5rZXkkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBmbGF0RmlyZXN0b3JlTW9kZWxLZXkoeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdHdvV2F5RmxhdEtleSQ6IE9ic2VydmFibGU8RmxhdEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMua2V5JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gdHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5KHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNuYXBzaG90JDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZG9jdW1lbnQkLCB0aGlzLnN0cmVhbU1vZGUkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFt4LCBtb2RlXSkgPT4geC5zbmFwc2hvdFN0cmVhbShtb2RlKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzbmFwc2hvdExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERvY3VtZW50U25hcHNob3Q8VD4+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiBsb2FkaW5nU3RhdGVGcm9tT2JzKHRoaXMuc25hcHNob3QkKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RGF0YSQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gZG9jdW1lbnREYXRhV2l0aElkQW5kS2V5KHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXJyZW50RGF0YSQucGlwZShmaWx0ZXJNYXliZSgpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90TG9hZGluZ1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj47XG5cbiAgICAgIGlmICh4LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBkb2N1bWVudERhdGFXaXRoSWRBbmRLZXkoeC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGVycm9yUmVzdWx0KG1vZGVsRG9lc05vdEV4aXN0RXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzTG9hZGluZ0RhdGEkID0gdGhpcy5kYXRhTG9hZGluZ1N0YXRlJC5waXBlKG1hcChpc0xvYWRpbmdTdGF0ZUxvYWRpbmcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZmFsc2Ugd2hpbGUgaGFzUmVmJCBpcyBmYWxzZSwgYW5kIHRoZW4gcmV0dXJucyBleGlzdHMkLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VycmVudEV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmhhc1JlZiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGhhc1JlZikgPT4ge1xuICAgICAgaWYgKGhhc1JlZikge1xuICAgICAgICByZXR1cm4gdGhpcy5leGlzdHMkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmN1cnJlbnREYXRhJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gaXNNYXliZVNvKHgpKSxcbiAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBNYXliZTxib29sZWFuPjtcblxuICAgICAgaWYgKGlzQ2xpZW50RmlyZWJhc2VFcnJvcihlKSkge1xuICAgICAgICBzd2l0Y2ggKGUuY29kZSkge1xuICAgICAgICAgIGNhc2UgRklSRVNUT1JFX1BFUk1JU1NJT05fREVOSUVEX0VSUk9SX0NPREU6XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsgLy8gZG9lcyBub3QgZXhpc3QgaWYgcGVybWlzc2lvbiBpcyBkZW5pZWRcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2YocmVzdWx0KTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvZXNOb3RFeGlzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmV4aXN0cyQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1vZGVsSWRlbnRpdHkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+ID0gdGhpcy5maXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgubW9kZWxJZGVudGl0eSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvLyBNQVJLOiBTdGF0ZSBDaGFuZ2VzXG4gIHJlYWRvbmx5IHNldElkID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgaWQ6IE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+KSA9PiAoaWQgPyB7IC4uLnN0YXRlLCBpZCwga2V5OiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBpZCB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuICByZWFkb25seSBzZXRLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBrZXk6IE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5PikgPT4gKGtleSA/IHsgLi4uc3RhdGUsIGtleSwgaWQ6IHVuZGVmaW5lZCwgcmVmOiB1bmRlZmluZWQgfSA6IHsgLi4uc3RhdGUsIGtleSB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuICByZWFkb25seSBzZXRGbGF0S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBNYXliZTxUd29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXk+KSA9PiAoa2V5ID8geyAuLi5zdGF0ZSwga2V5OiBpbmZlcktleUZyb21Ud29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXkoa2V5KSwgaWQ6IHVuZGVmaW5lZCwgcmVmOiB1bmRlZmluZWQgfSA6IHsgLi4uc3RhdGUsIGtleSB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuICByZWFkb25seSBzZXRSZWYgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+PikgPT4gKHJlZiA/IHsgLi4uc3RhdGUsIGtleTogdW5kZWZpbmVkLCBpZDogdW5kZWZpbmVkLCByZWYgfSA6IHsgLi4uc3RhdGUsIHJlZiB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gfCBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICByZWFkb25seSBzZXRTdHJlYW1Nb2RlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgc3RyZWFtTW9kZTogRmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlKSA9PiAoeyAuLi5zdGF0ZSwgc3RyZWFtTW9kZSB9KSk7XG5cbiAgcmVhZG9ubHkgY2xlYXJSZWZzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGlkOiB1bmRlZmluZWQsIGtleTogdW5kZWZpbmVkLCByZWY6IHVuZGVmaW5lZCB9KSk7XG5cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+KSA9PiAoeyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiB9KSk7XG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U6IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PikgPT4gKHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlIH0pKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0U2luZ2xlSXRlbUlkSW50b1N0YXRlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBDIGV4dGVuZHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+ID0gRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+PihzdGF0ZT86IEMgfCB1bmRlZmluZWQpOiBDIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaWQgPSAoc3RhdGU/LmZpcmVzdG9yZUNvbGxlY3Rpb24gYXMgUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+KT8uc2luZ2xlSXRlbUlkZW50aWZpZXI7XG5cbiAgaWYgKHN0YXRlICYmIGlkICE9IG51bGwpIHtcbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuLyoqXG4gKiBBYnN0cmFjdERieEZpcmViYXNlRG9jdW1lbnRXaXRoUGFyZW50U3RvcmUgZXh0ZW5zaW9uIGZvciB1c2Ugd2l0aCBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdFJvb3RTaW5nbGVJdGVtRGJ4RmlyZWJhc2VEb2N1bWVudDxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPiA9IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPj4gZXh0ZW5kcyBBYnN0cmFjdERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBELCBDPiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihASW5qZWN0KG51bGwpIEBPcHRpb25hbCgpIGluaXRpYWxTdGF0ZT86IEMpIHtcbiAgICBzdXBlcihpbmplY3RTaW5nbGVJdGVtSWRJbnRvU3RhdGU8VCwgRCwgQz4oaW5pdGlhbFN0YXRlKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgU2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24gdG8gdXNlLlxuICAgKi9cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+KSA9PiB7XG4gICAgaWYgKGZpcmVzdG9yZUNvbGxlY3Rpb24gIT0gbnVsbCkge1xuICAgICAgY29uc3QgaWQgPSAoZmlyZXN0b3JlQ29sbGVjdGlvbiBhcyBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4pLnNpbmdsZUl0ZW1JZGVudGlmaWVyO1xuXG4gICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiwgaWQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQgb25seSBhY2NlcHRzIFJvb3RTaW5nbGVJdGVtRmlyZXN0b3JlQ29sbGVjdGlvbiB2YWx1ZXMgd2l0aCBhIHNpbmdsZUl0ZW1JZGVudGlmaWVyIHNldCBmb3Igc2V0RmlyZXN0b3JlQ29sbGVjdGlvbi4nKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IG51bGwgfTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEb2VzIG5vdGhpbmcgb24gYSBBYnN0cmFjdFJvb3RTaW5nbGVJdGVtRGJ4RmlyZWJhc2VEb2N1bWVudC5cbiAgICpcbiAgICogUmVmIGlzIHNldCB3aXRoIHRoZSBGaXJlc3RvcmVDb2xsZWN0aW9uXG4gICAqL1xuICBvdmVycmlkZSByZWFkb25seSBzZXRJZCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlkOiBNYXliZTxGaXJlc3RvcmVNb2RlbElkPikgPT4gc3RhdGUpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogRG9lcyBub3RoaW5nIG9uIGEgQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQuXG4gICAqXG4gICAqIFJlZiBpcyBzZXQgd2l0aCB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvblxuICAgKi9cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc2V0S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4pID0+IHN0YXRlKSBhcyAob2JzZXJ2YWJsZU9yVmFsdWU6IE1heWJlPHN0cmluZz4gfCBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIERvZXMgbm90aGluZyBvbiBhIEFic3RyYWN0Um9vdFNpbmdsZUl0ZW1EYnhGaXJlYmFzZURvY3VtZW50LlxuICAgKlxuICAgKiBSZWYgaXMgc2V0IHdpdGggdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb25cbiAgICovXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHNldFJlZiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHJlZjogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+KSA9PiBzdGF0ZSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gfCBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICBvdmVycmlkZSByZWFkb25seSBjbGVhclJlZnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiBzdGF0ZSk7XG59XG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4ge1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZT86IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbj86IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+O1xuICByZWFkb25seSBzdHJlYW1Nb2RlPzogRmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlO1xuICByZWFkb25seSBpZD86IE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+O1xuICByZWFkb25seSBrZXk/OiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleT47XG4gIHJlYWRvbmx5IHJlZj86IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pjtcbn1cbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL3N0b3JlLmRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsSSxPQUFPLEVBVUwsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUUxQiwyQkFBMkIsRUFFM0Isd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUUzQix1Q0FBdUMsRUFHdkMscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQixzQ0FBc0MsRUFDdEMscUJBQXFCLEVBQ3RCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBZ0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hKLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUc3RixNQUFNLE9BQU8sZ0NBQThMLFNBQVEscUJBQXdCO0lBQ3pPLFlBQWdELFlBQWdCO1FBQzlELEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQixzQ0FBc0MsQ0FBQyxJQUFJ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QUFLLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozs7T0FJRztJQUNlLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQTJCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBbUYsQ0FBQztJQUV4Szs7OztPQUlHO0lBQ2UsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBNkIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFtRixDQUFDO0lBRTNLOzs7O09BSUc7SUFDZSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFnQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQStHLENBQUM7SUFFeEwsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzlELENBQUE7QUE1Q1kseUNBQXlDO0lBQzdCLFdBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQUUsV0FBQSxRQUFRLEVBQUUsQ0FBQTs7R0FEcEMseUNBQXlDLENBNENyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiwgb2YsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERvY3VtZW50U25hcHNob3QsXG4gIERvY3VtZW50UmVmZXJlbmNlLFxuICBGaXJlc3RvcmVDb2xsZWN0aW9uLFxuICBGaXJlc3RvcmVEb2N1bWVudCxcbiAgRG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LFxuICBGaXJlc3RvcmVNb2RlbElkLFxuICBGaXJlc3RvcmVNb2RlbEtleSxcbiAgRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UsXG4gIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHksXG4gIGZpcmVzdG9yZU1vZGVsSWRzRnJvbUtleSxcbiAgZmlyZXN0b3JlTW9kZWxLZXlQYXJ0UGFpcnMsXG4gIEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpcixcbiAgZmlyZXN0b3JlTW9kZWxLZXlQYWlyT2JqZWN0LFxuICBGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJPYmplY3QsXG4gIGRvY3VtZW50RGF0YVdpdGhJZEFuZEtleSxcbiAgRmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlLFxuICBUd29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXksXG4gIGluZmVyS2V5RnJvbVR3b1dheUZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uLFxuICBGbGF0RmlyZXN0b3JlTW9kZWxLZXksXG4gIGZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgdHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5LFxuICBGSVJFU1RPUkVfUEVSTUlTU0lPTl9ERU5JRURfRVJST1JfQ09ERSxcbiAgaXNDbGllbnRGaXJlYmFzZUVycm9yXG59IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIGJlZ2luTG9hZGluZywgc3VjY2Vzc1Jlc3VsdCwgbG9hZGluZ1N0YXRlRnJvbU9icywgZXJyb3JSZXN1bHQsIGlzTG9hZGluZ1N0YXRlTG9hZGluZywgdGFwTG9nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSwgaXNNYXliZVNvIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBMb2NrU2V0Q29tcG9uZW50U3RvcmUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBtb2RlbERvZXNOb3RFeGlzdEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3InO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBsaW5rRG9jdW1lbnRTdG9yZVRvUGFyZW50Q29udGV4dFN0b3JlcyB9IGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuY29udGV4dC5zdG9yZS5saW5rJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBDIGV4dGVuZHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+ID0gRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+PiBleHRlbmRzIExvY2tTZXRDb21wb25lbnRTdG9yZTxDPiBpbXBsZW1lbnRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBEPiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihASW5qZWN0KG51bGwpIEBPcHRpb25hbCgpIGluaXRpYWxTdGF0ZT86IEMpIHtcbiAgICBzdXBlcihpbml0aWFsU3RhdGUpO1xuICAgIGxpbmtEb2N1bWVudFN0b3JlVG9QYXJlbnRDb250ZXh0U3RvcmVzKHRoaXMpO1xuICB9XG5cbiAgLy8gTUFSSzogRWZmZWN0c1xuXG4gIC8vIE1BUks6IEFjY2Vzc29yc1xuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5maXJlc3RvcmVDb2xsZWN0aW9uID8/IHguZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmlyZXN0b3JlQ29sbGVjdGlvbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4gPSB0aGlzLmN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQucGlwZShmaWx0ZXJNYXliZSgpKTtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4gPSB0aGlzLmN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dElkJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbElkPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0SWQkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWQ+ID0gdGhpcy5jdXJyZW50SW5wdXRJZCQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0S2V5JDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgua2V5KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRLZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMuY3VycmVudElucHV0S2V5JC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRSZWYkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5yZWYpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+ID0gdGhpcy5jdXJyZW50SW5wdXRSZWYkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHN0cmVhbU1vZGUkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZT4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5zdHJlYW1Nb2RlID8/IEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZS5TVFJFQU0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudElucHV0SWQkLCB0aGlzLmN1cnJlbnRJbnB1dEtleSQsIHRoaXMuY3VycmVudElucHV0UmVmJF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbaWQsIGtleSwgcmVmXSkgPT4ge1xuICAgICAgbGV0IGRvY3VtZW50OiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcblxuICAgICAgaWYgKHJlZikge1xuICAgICAgICBkb2N1bWVudCA9IHRoaXMuZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnQocmVmKSkpO1xuICAgICAgfSBlbHNlIGlmIChrZXkpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50Rm9yS2V5KGtleSkpKTtcbiAgICAgIH0gZWxzZSBpZiAoaWQpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnRGb3JJZChpZCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvY3VtZW50ID0gb2YodW5kZWZpbmVkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgYW4gaWQvcmVmL2tleSBoYXMgYmVlbiBpbnB1dCBhbmQgY3VycmVudERvY3VtZW50IGlzIG5vdCBudWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzUmVmJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uZG9jdW1lbnRSZWYgIT0gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50JDogT2JzZXJ2YWJsZTxEPiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkb2N1bWVudExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPEQ+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHggPyBzdWNjZXNzUmVzdWx0KHgpIDogYmVnaW5Mb2FkaW5nPEQ+KCkpKSxcbiAgICB0YXBMb2coJ2RvY3VtZW50TG9hZGluZ1N0YXRlJCcpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElkJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbElkPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmlkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRLZXkkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5Pj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmtleSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBrZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmtleSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBrZXlNb2RlbElkcyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZFtdPiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbElkc0Zyb21LZXkpLCBzaGFyZVJlcGxheSgxKSk7XG4gIHJlYWRvbmx5IGtleVBhaXJzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJbXT4gPSB0aGlzLmtleSQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlQYXJ0UGFpcnMpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG4gIHJlYWRvbmx5IGtleVBhaXJPYmplY3QkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpck9iamVjdD4gPSB0aGlzLmtleSQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlQYWlyT2JqZWN0KSwgZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZG9jdW1lbnRSZWYpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZmxhdEtleSQ6IE9ic2VydmFibGU8RmxhdEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMua2V5JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gZmxhdEZpcmVzdG9yZU1vZGVsS2V5KHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHR3b1dheUZsYXRLZXkkOiBPYnNlcnZhYmxlPEZsYXRGaXJlc3RvcmVNb2RlbEtleT4gPSB0aGlzLmtleSQucGlwZShcbiAgICBtYXAoKHgpID0+IHR3b1dheUZsYXRGaXJlc3RvcmVNb2RlbEtleSh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzbmFwc2hvdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxUPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRvY3VtZW50JCwgdGhpcy5zdHJlYW1Nb2RlJF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbeCwgbW9kZV0pID0+IHguc25hcHNob3RTdHJlYW0obW9kZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudFNuYXBzaG90PFQ+Pj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gbG9hZGluZ1N0YXRlRnJvbU9icyh0aGlzLnNuYXBzaG90JCkucGlwZShjYXRjaEVycm9yKChlcnJvcikgPT4gb2YoZXJyb3JSZXN1bHQoZXJyb3IpIGFzIExvYWRpbmdTdGF0ZTxEb2N1bWVudFNuYXBzaG90PFQ+PikpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90TG9hZGluZ1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj47XG5cbiAgICAgIGlmICh4LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBkb2N1bWVudERhdGFXaXRoSWRBbmRLZXkoeC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGVycm9yUmVzdWx0KG1vZGVsRG9lc05vdEV4aXN0RXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnREYXRhJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PiA9IHRoaXMuZGF0YUxvYWRpbmdTdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgudmFsdWUpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0YSQ6IE9ic2VydmFibGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmN1cnJlbnREYXRhJC5waXBlKGZpbHRlck1heWJlKCkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzTG9hZGluZ0RhdGEkID0gdGhpcy5kYXRhTG9hZGluZ1N0YXRlJC5waXBlKG1hcChpc0xvYWRpbmdTdGF0ZUxvYWRpbmcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZmFsc2Ugd2hpbGUgaGFzUmVmJCBpcyBmYWxzZSwgYW5kIHRoZW4gcmV0dXJucyBleGlzdHMkLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VycmVudEV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmhhc1JlZiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGhhc1JlZikgPT4ge1xuICAgICAgaWYgKGhhc1JlZikge1xuICAgICAgICByZXR1cm4gdGhpcy5leGlzdHMkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmN1cnJlbnREYXRhJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gaXNNYXliZVNvKHgpKSxcbiAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBNYXliZTxib29sZWFuPjtcblxuICAgICAgaWYgKGlzQ2xpZW50RmlyZWJhc2VFcnJvcihlKSkge1xuICAgICAgICBzd2l0Y2ggKGUuY29kZSkge1xuICAgICAgICAgIGNhc2UgRklSRVNUT1JFX1BFUk1JU1NJT05fREVOSUVEX0VSUk9SX0NPREU6XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsgLy8gZG9lcyBub3QgZXhpc3QgaWYgcGVybWlzc2lvbiBpcyBkZW5pZWRcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2YocmVzdWx0KTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvZXNOb3RFeGlzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmV4aXN0cyQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1vZGVsSWRlbnRpdHkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+ID0gdGhpcy5maXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgubW9kZWxJZGVudGl0eSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvLyBNQVJLOiBTdGF0ZSBDaGFuZ2VzXG4gIHJlYWRvbmx5IHNldElkID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgaWQ6IE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+KSA9PiAoaWQgPyB7IC4uLnN0YXRlLCBpZCwga2V5OiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBpZCB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuICByZWFkb25seSBzZXRLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBrZXk6IE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5PikgPT4gKGtleSA/IHsgLi4uc3RhdGUsIGtleSwgaWQ6IHVuZGVmaW5lZCwgcmVmOiB1bmRlZmluZWQgfSA6IHsgLi4uc3RhdGUsIGtleSB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuICByZWFkb25seSBzZXRGbGF0S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBNYXliZTxUd29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXk+KSA9PiAoa2V5ID8geyAuLi5zdGF0ZSwga2V5OiBpbmZlcktleUZyb21Ud29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXkoa2V5KSwgaWQ6IHVuZGVmaW5lZCwgcmVmOiB1bmRlZmluZWQgfSA6IHsgLi4uc3RhdGUsIGtleSB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuICByZWFkb25seSBzZXRSZWYgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+PikgPT4gKHJlZiA/IHsgLi4uc3RhdGUsIGtleTogdW5kZWZpbmVkLCBpZDogdW5kZWZpbmVkLCByZWYgfSA6IHsgLi4uc3RhdGUsIHJlZiB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gfCBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICByZWFkb25seSBzZXRTdHJlYW1Nb2RlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgc3RyZWFtTW9kZTogRmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlKSA9PiAoeyAuLi5zdGF0ZSwgc3RyZWFtTW9kZSB9KSk7XG5cbiAgcmVhZG9ubHkgY2xlYXJSZWZzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGlkOiB1bmRlZmluZWQsIGtleTogdW5kZWZpbmVkLCByZWY6IHVuZGVmaW5lZCB9KSk7XG5cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+KSA9PiAoeyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiB9KSk7XG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U6IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PikgPT4gKHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlIH0pKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0U2luZ2xlSXRlbUlkSW50b1N0YXRlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBDIGV4dGVuZHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+ID0gRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+PihzdGF0ZT86IEMgfCB1bmRlZmluZWQpOiBDIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaWQgPSAoc3RhdGU/LmZpcmVzdG9yZUNvbGxlY3Rpb24gYXMgUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+KT8uc2luZ2xlSXRlbUlkZW50aWZpZXI7XG5cbiAgaWYgKHN0YXRlICYmIGlkICE9IG51bGwpIHtcbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuLyoqXG4gKiBBYnN0cmFjdERieEZpcmViYXNlRG9jdW1lbnRXaXRoUGFyZW50U3RvcmUgZXh0ZW5zaW9uIGZvciB1c2Ugd2l0aCBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdFJvb3RTaW5nbGVJdGVtRGJ4RmlyZWJhc2VEb2N1bWVudDxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPiA9IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPj4gZXh0ZW5kcyBBYnN0cmFjdERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBELCBDPiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihASW5qZWN0KG51bGwpIEBPcHRpb25hbCgpIGluaXRpYWxTdGF0ZT86IEMpIHtcbiAgICBzdXBlcihpbmplY3RTaW5nbGVJdGVtSWRJbnRvU3RhdGU8VCwgRCwgQz4oaW5pdGlhbFN0YXRlKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgU2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24gdG8gdXNlLlxuICAgKi9cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+KSA9PiB7XG4gICAgaWYgKGZpcmVzdG9yZUNvbGxlY3Rpb24gIT0gbnVsbCkge1xuICAgICAgY29uc3QgaWQgPSAoZmlyZXN0b3JlQ29sbGVjdGlvbiBhcyBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4pLnNpbmdsZUl0ZW1JZGVudGlmaWVyO1xuXG4gICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiwgaWQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQgb25seSBhY2NlcHRzIFJvb3RTaW5nbGVJdGVtRmlyZXN0b3JlQ29sbGVjdGlvbiB2YWx1ZXMgd2l0aCBhIHNpbmdsZUl0ZW1JZGVudGlmaWVyIHNldCBmb3Igc2V0RmlyZXN0b3JlQ29sbGVjdGlvbi4nKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IG51bGwgfTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEb2VzIG5vdGhpbmcgb24gYSBBYnN0cmFjdFJvb3RTaW5nbGVJdGVtRGJ4RmlyZWJhc2VEb2N1bWVudC5cbiAgICpcbiAgICogUmVmIGlzIHNldCB3aXRoIHRoZSBGaXJlc3RvcmVDb2xsZWN0aW9uXG4gICAqL1xuICBvdmVycmlkZSByZWFkb25seSBzZXRJZCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlkOiBNYXliZTxGaXJlc3RvcmVNb2RlbElkPikgPT4gc3RhdGUpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogRG9lcyBub3RoaW5nIG9uIGEgQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQuXG4gICAqXG4gICAqIFJlZiBpcyBzZXQgd2l0aCB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvblxuICAgKi9cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc2V0S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4pID0+IHN0YXRlKSBhcyAob2JzZXJ2YWJsZU9yVmFsdWU6IE1heWJlPHN0cmluZz4gfCBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIERvZXMgbm90aGluZyBvbiBhIEFic3RyYWN0Um9vdFNpbmdsZUl0ZW1EYnhGaXJlYmFzZURvY3VtZW50LlxuICAgKlxuICAgKiBSZWYgaXMgc2V0IHdpdGggdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb25cbiAgICovXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHNldFJlZiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHJlZjogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+KSA9PiBzdGF0ZSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gfCBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICBvdmVycmlkZSByZWFkb25seSBjbGVhclJlZnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiBzdGF0ZSk7XG59XG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4ge1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZT86IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbj86IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+O1xuICByZWFkb25seSBzdHJlYW1Nb2RlPzogRmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlO1xuICByZWFkb25seSBpZD86IE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+O1xuICByZWFkb25seSBrZXk/OiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleT47XG4gIHJlYWRvbmx5IHJlZj86IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pjtcbn1cbiJdfQ==
@@ -12,6 +12,7 @@ import { provideDbxFirebaseModelContextService } from './model/service/model.con
12
12
  import { provideDbxFirebaseModelTypesService } from './model/modules/model/model.types.providers';
13
13
  import { provideDbxFirebaseAnalyticsUserEventsListenerService } from './analytics';
14
14
  import { provideDbxFirebaseStorageFileService } from './modules/storagefile/storagefile.providers';
15
+ import { provideDbxFirebaseModelEntitiesWidgetService } from './model/modules/model/entities/model.entities.providers';
15
16
  /**
16
17
  * All-in-one provider for providing the main configurations for DbxFirebase.
17
18
  *
@@ -22,8 +23,11 @@ import { provideDbxFirebaseStorageFileService } from './modules/storagefile/stor
22
23
  * @returns EnvironmentProviders for the DbxFirebase configuration.
23
24
  */
24
25
  export function provideDbxFirebase(config) {
25
- const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener, provideStorageFileService } = config;
26
- const providers = [provideDbxFirebaseApp(app), provideDbxFirebaseEmulator(emulator), providedDbxFirebaseStorage(storage), provideDbxFirebaseAuth(auth), provideDbxFirebaseFunctions(functions), provideDbxFirebaseModelContextService(modelContextService), provideDbxFirebaseModelTypesService(modelTypesService)];
26
+ const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener, provideStorageFileService, modelEntitiesWidgetService: inputModelEntitiesWidgetService } = config;
27
+ const modelEntitiesWidgetServiceConfig = inputModelEntitiesWidgetService ?? {
28
+ dbxFirebaseModelEntitiesWidgetServiceConfigFactory: () => ({ entries: [] })
29
+ };
30
+ const providers = [provideDbxFirebaseApp(app), provideDbxFirebaseEmulator(emulator), providedDbxFirebaseStorage(storage), provideDbxFirebaseAuth(auth), provideDbxFirebaseFunctions(functions), provideDbxFirebaseModelContextService(modelContextService), provideDbxFirebaseModelTypesService(modelTypesService), provideDbxFirebaseModelEntitiesWidgetService(modelEntitiesWidgetServiceConfig)];
27
31
  asArray(firestores).forEach((firestore) => {
28
32
  providers.push(provideDbxFirestoreCollection(firestore));
29
33
  });
@@ -41,4 +45,4 @@ export function provideDbxFirebase(config) {
41
45
  }
42
46
  return makeEnvironmentProviders(providers);
43
47
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBNkIsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQW9DLE1BQU0sK0JBQStCLENBQUM7QUFDeEcsT0FBTyxFQUFvRCw2QkFBNkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNJLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3SCxPQUFPLEVBQXdDLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEgsT0FBTyxFQUFFLDZCQUE2QixFQUE0QyxNQUFNLHFDQUFxQyxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBOEMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0seUNBQXlDLENBQUM7QUFDbEosT0FBTyxFQUFFLG1DQUFtQyxFQUFrRCxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxvREFBb0QsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQTRDbkc7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQTJELE1BQXNDO0lBQ2pJLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGtDQUFrQyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTFNLE1BQU0sU0FBUyxHQUEyQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsbUNBQW1DLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRTVVLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLGtDQUFrQyxFQUFFLENBQUM7UUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxvREFBb0QsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEFycmF5T3JWYWx1ZSwgYXNBcnJheSwgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdHlwZSBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIEZpcmViYXNlRnVuY3Rpb25zTWFwIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlQXV0aCwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLy9maXJlYmFzZS5hdXRoLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvciwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvcnNDb25maWcgfSBmcm9tICcuL2ZpcmViYXNlL2ZpcmViYXNlLmVtdWxhdG9yLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VBcHAsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlQXBwQ29uZmlnIH0gZnJvbSAnLi9maXJlYmFzZS9maXJlYmFzZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VGaXJlc3RvcmVDb2xsZWN0aW9uQ29uZmlnLCBwcm92aWRlRGJ4RmlyZXN0b3JlQ29sbGVjdGlvbiB9IGZyb20gJy4vZmlyZXN0b3JlL2ZpcmViYXNlLmZpcmVzdG9yZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRnVuY3Rpb25zLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9uc0NvbmZpZyB9IGZyb20gJy4vZnVuY3Rpb24vZmlyZWJhc2UuZnVuY3Rpb24ucHJvdmlkZXJzJztcbmltcG9ydCB7IHR5cGUgUHJvdmlkZURieEZpcmViYXNlU3RvcmFnZUNvbmZpZywgcHJvdmlkZWREYnhGaXJlYmFzZVN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UvZmlyZWJhc2Uuc3RvcmFnZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnRDb25maWcgfSBmcm9tICcuL2RldmVsb3BtZW50L2RldmVsb3BtZW50LnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnNDb25maWcgfSBmcm9tICcuL21vZHVsZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9zZXJ2aWNlL21vZGVsLmNvbnRleHQucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlU3RvcmFnZUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGVzL3N0b3JhZ2VmaWxlL3N0b3JhZ2VmaWxlLnByb3ZpZGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0gZXh0ZW5kcyBGaXJlYmFzZUZ1bmN0aW9uc01hcCA9IEZpcmViYXNlRnVuY3Rpb25zTWFwPiB7XG4gIC8vIFJlcXVpcmVkIENvbmZpZ3VyYXRpb25zXG4gIHJlYWRvbmx5IGFwcDogUHJvdmlkZURieEZpcmViYXNlQXBwQ29uZmlnO1xuICByZWFkb25seSBlbXVsYXRvcjogUHJvdmlkZURieEZpcmViYXNlRW11bGF0b3JzQ29uZmlnO1xuICByZWFkb25seSBzdG9yYWdlOiBQcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBQcm92aWRlRGJ4RmlyZWJhc2VBdXRoQ29uZmlnO1xuICByZWFkb25seSBmdW5jdGlvbnM6IFByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9uc0NvbmZpZzxULCBNPjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlczogQXJyYXlPclZhbHVlPFByb3ZpZGVEYnhGaXJlYmFzZUZpcmVzdG9yZUNvbGxlY3Rpb25Db25maWc8YW55Pj47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKCkuXG4gICAqL1xuICByZWFkb25seSBtb2RlbENvbnRleHRTZXJ2aWNlOiBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlQ29uZmlnPGFueT47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSgpLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxUeXBlc1NlcnZpY2U6IFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQuXG4gICAqXG4gICAqIElmIGZhbHNlLCBwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudCgpIHdpbGwgbm90IGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmVsb3BtZW50PzogUHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnRDb25maWcgfCBmYWxzZTtcblxuICAvLyBPcHRpb25hbFxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucygpLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMoKSB3aWxsIG5vdCBiZSBwcm92aWRlZC9jYWxsZWQuXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25zPzogUHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9uc0NvbmZpZztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSgpIHdpbGwgYmUgcHJvdmlkZWQvY2FsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lcj86IE1heWJlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKSB3aWxsIGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2U/OiBNYXliZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBBbGwtaW4tb25lIHByb3ZpZGVyIGZvciBwcm92aWRpbmcgdGhlIG1haW4gY29uZmlndXJhdGlvbnMgZm9yIERieEZpcmViYXNlLlxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgYWxyZWFkeSBiZSBwcm92aWRlZC9jYWxsZWQ6XG4gKiAtIHByb3ZpZGVEYnhNb2RlbFNlcnZpY2UoKVxuICpcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlKCkuXG4gKiBAcmV0dXJucyBFbnZpcm9ubWVudFByb3ZpZGVycyBmb3IgdGhlIERieEZpcmViYXNlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGJ4RmlyZWJhc2U8VCwgTSBleHRlbmRzIEZpcmViYXNlRnVuY3Rpb25zTWFwID0gRmlyZWJhc2VGdW5jdGlvbnNNYXA+KGNvbmZpZzogUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0+KSB7XG4gIGNvbnN0IHsgYXBwLCBlbXVsYXRvciwgc3RvcmFnZSwgYXV0aCwgZnVuY3Rpb25zLCBmaXJlc3RvcmVzLCBtb2RlbENvbnRleHRTZXJ2aWNlLCBtb2RlbFR5cGVzU2VydmljZSwgZGV2ZWxvcG1lbnQsIG5vdGlmaWNhdGlvbnMsIHByb3ZpZGVBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXIsIHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2UgfSA9IGNvbmZpZztcblxuICBjb25zdCBwcm92aWRlcnM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbcHJvdmlkZURieEZpcmViYXNlQXBwKGFwcCksIHByb3ZpZGVEYnhGaXJlYmFzZUVtdWxhdG9yKGVtdWxhdG9yKSwgcHJvdmlkZWREYnhGaXJlYmFzZVN0b3JhZ2Uoc3RvcmFnZSksIHByb3ZpZGVEYnhGaXJlYmFzZUF1dGgoYXV0aCksIHByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKG1vZGVsQ29udGV4dFNlcnZpY2UpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZShtb2RlbFR5cGVzU2VydmljZSldO1xuXG4gIGFzQXJyYXkoZmlyZXN0b3JlcykuZm9yRWFjaCgoZmlyZXN0b3JlKSA9PiB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmVzdG9yZUNvbGxlY3Rpb24oZmlyZXN0b3JlKSk7XG4gIH0pO1xuXG4gIGlmIChwcm92aWRlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyKSB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSgpKTtcbiAgfVxuXG4gIGlmIChkZXZlbG9wbWVudCAhPT0gZmFsc2UpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudChkZXZlbG9wbWVudCA/PyB7fSkpO1xuICB9XG5cbiAgaWYgKG5vdGlmaWNhdGlvbnMgIT0gbnVsbCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9ucykpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2UpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKSk7XG4gIH1cblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVycyk7XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBNkIsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQW9DLE1BQU0sK0JBQStCLENBQUM7QUFDeEcsT0FBTyxFQUFvRCw2QkFBNkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNJLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3SCxPQUFPLEVBQXdDLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEgsT0FBTyxFQUFFLDZCQUE2QixFQUE0QyxNQUFNLHFDQUFxQyxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBOEMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0seUNBQXlDLENBQUM7QUFDbEosT0FBTyxFQUFFLG1DQUFtQyxFQUFrRCxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxvREFBb0QsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsNENBQTRDLEVBQTJELE1BQU0seURBQXlELENBQUM7QUFnRGhMOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUEyRCxNQUFzQztJQUNqSSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxrQ0FBa0MsRUFBRSx5QkFBeUIsRUFBRSwwQkFBMEIsRUFBRSwrQkFBK0IsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUV2USxNQUFNLGdDQUFnQyxHQUFHLCtCQUErQixJQUFJO1FBQzFFLGtEQUFrRCxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDNUUsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUEyQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsbUNBQW1DLENBQUMsaUJBQWlCLENBQUMsRUFBRSw0Q0FBNEMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7SUFFNVosT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ3hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksa0NBQWtDLEVBQUUsQ0FBQztRQUN2QyxTQUFTLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQXJyYXlPclZhbHVlLCBhc0FycmF5LCB0eXBlIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0eXBlIEVudmlyb25tZW50UHJvdmlkZXJzLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR5cGUgRmlyZWJhc2VGdW5jdGlvbnNNYXAgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VBdXRoLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUF1dGhDb25maWcgfSBmcm9tICcuL2F1dGgvL2ZpcmViYXNlLmF1dGgucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZUVtdWxhdG9yLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUVtdWxhdG9yc0NvbmZpZyB9IGZyb20gJy4vZmlyZWJhc2UvZmlyZWJhc2UuZW11bGF0b3IucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZUFwcCwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VBcHBDb25maWcgfSBmcm9tICcuL2ZpcmViYXNlL2ZpcmViYXNlLnByb3ZpZGVycyc7XG5pbXBvcnQgeyB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUZpcmVzdG9yZUNvbGxlY3Rpb25Db25maWcsIHByb3ZpZGVEYnhGaXJlc3RvcmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9maXJlc3RvcmUvZmlyZWJhc2UuZmlyZXN0b3JlLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VGdW5jdGlvbnMsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlRnVuY3Rpb25zQ29uZmlnIH0gZnJvbSAnLi9mdW5jdGlvbi9maXJlYmFzZS5mdW5jdGlvbi5wcm92aWRlcnMnO1xuaW1wb3J0IHsgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlQ29uZmlnLCBwcm92aWRlZERieEZpcmViYXNlU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS9maXJlYmFzZS5zdG9yYWdlLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudCwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudENvbmZpZyB9IGZyb20gJy4vZGV2ZWxvcG1lbnQvZGV2ZWxvcG1lbnQucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9uc0NvbmZpZyB9IGZyb20gJy4vbW9kdWxlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2VDb25maWcgfSBmcm9tICcuL21vZGVsL3NlcnZpY2UvbW9kZWwuY29udGV4dC5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcgfSBmcm9tICcuL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwudHlwZXMucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvc3RvcmFnZWZpbGUvc3RvcmFnZWZpbGUucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL21vZGVsLmVudGl0aWVzLnByb3ZpZGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0gZXh0ZW5kcyBGaXJlYmFzZUZ1bmN0aW9uc01hcCA9IEZpcmViYXNlRnVuY3Rpb25zTWFwPiB7XG4gIC8vIFJlcXVpcmVkIENvbmZpZ3VyYXRpb25zXG4gIHJlYWRvbmx5IGFwcDogUHJvdmlkZURieEZpcmViYXNlQXBwQ29uZmlnO1xuICByZWFkb25seSBlbXVsYXRvcjogUHJvdmlkZURieEZpcmViYXNlRW11bGF0b3JzQ29uZmlnO1xuICByZWFkb25seSBzdG9yYWdlOiBQcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBQcm92aWRlRGJ4RmlyZWJhc2VBdXRoQ29uZmlnO1xuICByZWFkb25seSBmdW5jdGlvbnM6IFByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9uc0NvbmZpZzxULCBNPjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlczogQXJyYXlPclZhbHVlPFByb3ZpZGVEYnhGaXJlYmFzZUZpcmVzdG9yZUNvbGxlY3Rpb25Db25maWc8YW55Pj47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKCkuXG4gICAqL1xuICByZWFkb25seSBtb2RlbENvbnRleHRTZXJ2aWNlOiBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlQ29uZmlnPGFueT47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSgpLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxUeXBlc1NlcnZpY2U6IFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldFNlcnZpY2UoKS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlPzogTWF5YmU8UHJvdmlkZURieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldFNlcnZpY2VDb25maWc+O1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQuXG4gICAqXG4gICAqIElmIGZhbHNlLCBwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudCgpIHdpbGwgbm90IGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmVsb3BtZW50PzogUHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnRDb25maWcgfCBmYWxzZTtcblxuICAvLyBPcHRpb25hbFxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucygpLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMoKSB3aWxsIG5vdCBiZSBwcm92aWRlZC9jYWxsZWQuXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25zPzogUHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9uc0NvbmZpZztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSgpIHdpbGwgYmUgcHJvdmlkZWQvY2FsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lcj86IE1heWJlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKSB3aWxsIGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2U/OiBNYXliZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBBbGwtaW4tb25lIHByb3ZpZGVyIGZvciBwcm92aWRpbmcgdGhlIG1haW4gY29uZmlndXJhdGlvbnMgZm9yIERieEZpcmViYXNlLlxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgYWxyZWFkeSBiZSBwcm92aWRlZC9jYWxsZWQ6XG4gKiAtIHByb3ZpZGVEYnhNb2RlbFNlcnZpY2UoKVxuICpcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlKCkuXG4gKiBAcmV0dXJucyBFbnZpcm9ubWVudFByb3ZpZGVycyBmb3IgdGhlIERieEZpcmViYXNlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGJ4RmlyZWJhc2U8VCwgTSBleHRlbmRzIEZpcmViYXNlRnVuY3Rpb25zTWFwID0gRmlyZWJhc2VGdW5jdGlvbnNNYXA+KGNvbmZpZzogUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0+KSB7XG4gIGNvbnN0IHsgYXBwLCBlbXVsYXRvciwgc3RvcmFnZSwgYXV0aCwgZnVuY3Rpb25zLCBmaXJlc3RvcmVzLCBtb2RlbENvbnRleHRTZXJ2aWNlLCBtb2RlbFR5cGVzU2VydmljZSwgZGV2ZWxvcG1lbnQsIG5vdGlmaWNhdGlvbnMsIHByb3ZpZGVBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXIsIHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2UsIG1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlOiBpbnB1dE1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlIH0gPSBjb25maWc7XG5cbiAgY29uc3QgbW9kZWxFbnRpdGllc1dpZGdldFNlcnZpY2VDb25maWcgPSBpbnB1dE1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlID8/IHtcbiAgICBkYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnRmFjdG9yeTogKCkgPT4gKHsgZW50cmllczogW10gfSlcbiAgfTtcblxuICBjb25zdCBwcm92aWRlcnM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbcHJvdmlkZURieEZpcmViYXNlQXBwKGFwcCksIHByb3ZpZGVEYnhGaXJlYmFzZUVtdWxhdG9yKGVtdWxhdG9yKSwgcHJvdmlkZWREYnhGaXJlYmFzZVN0b3JhZ2Uoc3RvcmFnZSksIHByb3ZpZGVEYnhGaXJlYmFzZUF1dGgoYXV0aCksIHByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKG1vZGVsQ29udGV4dFNlcnZpY2UpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZShtb2RlbFR5cGVzU2VydmljZSksIHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlKG1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnKV07XG5cbiAgYXNBcnJheShmaXJlc3RvcmVzKS5mb3JFYWNoKChmaXJlc3RvcmUpID0+IHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZXN0b3JlQ29sbGVjdGlvbihmaXJlc3RvcmUpKTtcbiAgfSk7XG5cbiAgaWYgKHByb3ZpZGVBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXJTZXJ2aWNlKCkpO1xuICB9XG5cbiAgaWYgKGRldmVsb3BtZW50ICE9PSBmYWxzZSkge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlYmFzZURldmVsb3BtZW50KGRldmVsb3BtZW50ID8/IHt9KSk7XG4gIH1cblxuICBpZiAobm90aWZpY2F0aW9ucyAhPSBudWxsKSB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSk7XG4gIH1cblxuICBpZiAocHJvdmlkZVN0b3JhZ2VGaWxlU2VydmljZSkge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlU2VydmljZSgpKTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cbiJdfQ==