@smartbit4all/ng-client 1.1.42 → 1.1.43

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.
@@ -10,6 +10,8 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  export const ComponentWidgetType = {
13
- Grid: 'grid'
13
+ Grid: 'grid',
14
+ Filter: 'filter',
15
+ Tree: 'tree'
14
16
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50V2lkZ2V0VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNsaWVudC9hcGkvbW9kZWwvY29tcG9uZW50V2lkZ2V0VHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBS0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDL0IsSUFBSSxFQUFFLE1BQTZCO0NBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gbGF5b3V0IGRlZmluaXRpb25cbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5cblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50V2lkZ2V0VHlwZSA9ICdncmlkJztcblxuZXhwb3J0IGNvbnN0IENvbXBvbmVudFdpZGdldFR5cGUgPSB7XG4gICAgR3JpZDogJ2dyaWQnIGFzIENvbXBvbmVudFdpZGdldFR5cGVcbn07XG5cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50V2lkZ2V0VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNsaWVudC9hcGkvbW9kZWwvY29tcG9uZW50V2lkZ2V0VHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBS0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDL0IsSUFBSSxFQUFFLE1BQTZCO0lBQ25DLE1BQU0sRUFBRSxRQUErQjtJQUN2QyxJQUFJLEVBQUUsTUFBNkI7Q0FDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cblxuXG5leHBvcnQgdHlwZSBDb21wb25lbnRXaWRnZXRUeXBlID0gJ2dyaWQnIHwgJ2ZpbHRlcicgfCAndHJlZSc7XG5cbmV4cG9ydCBjb25zdCBDb21wb25lbnRXaWRnZXRUeXBlID0ge1xuICAgIEdyaWQ6ICdncmlkJyBhcyBDb21wb25lbnRXaWRnZXRUeXBlLFxuICAgIEZpbHRlcjogJ2ZpbHRlcicgYXMgQ29tcG9uZW50V2lkZ2V0VHlwZSxcbiAgICBUcmVlOiAndHJlZScgYXMgQ29tcG9uZW50V2lkZ2V0VHlwZVxufTtcblxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRDb21wb25lbnRXaWRnZXREZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY2xpZW50L2FwaS9tb2RlbC9zbWFydENvbXBvbmVudFdpZGdldERlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudFdpZGdldFR5cGUgfSBmcm9tICcuL2NvbXBvbmVudFdpZGdldFR5cGUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRDb21wb25lbnRXaWRnZXREZWZpbml0aW9uIHsgXG4gICAgdHlwZTogQ29tcG9uZW50V2lkZ2V0VHlwZTtcbiAgICBncmlkSWRlbnRpZmllcj86IHN0cmluZztcbn1cbmV4cG9ydCBuYW1lc3BhY2UgU21hcnRDb21wb25lbnRXaWRnZXREZWZpbml0aW9uIHtcbn1cblxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRDb21wb25lbnRXaWRnZXREZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY2xpZW50L2FwaS9tb2RlbC9zbWFydENvbXBvbmVudFdpZGdldERlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudFdpZGdldFR5cGUgfSBmcm9tICcuL2NvbXBvbmVudFdpZGdldFR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q29tcG9uZW50V2lkZ2V0RGVmaW5pdGlvbiB7XG4gIHR5cGU6IENvbXBvbmVudFdpZGdldFR5cGU7XG4gIGdyaWRJZGVudGlmaWVyPzogc3RyaW5nO1xuICB0cmVlSWRlbnRpZmllcj86IHN0cmluZztcbiAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkTGlzdD86IGFueTtcbiAgZmlsdGVyVHlwZT86IGFueTtcbn1cbmV4cG9ydCBuYW1lc3BhY2UgU21hcnRDb21wb25lbnRXaWRnZXREZWZpbml0aW9uIHt9XG4iXX0=
@@ -5,6 +5,12 @@ import { SmartSubject } from '@smartbit4all/subject';
5
5
  import { SmarttreeGenericService } from '@smartbit4all/tree';
6
6
  import { Subject, takeUntil } from 'rxjs';
7
7
  import { DataChangeKind, SmartViewContextService, UiActionDescriptorService, UiActionService, } from '../view-context/projects';
8
+ // import {
9
+ // FilterExpressionFieldList,
10
+ // SmartFilter,
11
+ // SmartFilterComponent,
12
+ // SmartFilterType,
13
+ // } from '@smartbit4all/filter';
8
14
  let SmartComponentApiClient = class SmartComponentApiClient {
9
15
  constructor(inject, auth, pageName) {
10
16
  this.inject = inject;
@@ -232,6 +238,25 @@ let SmartComponentApiClient = class SmartComponentApiClient {
232
238
  maxSizeMb,
233
239
  };
234
240
  }
241
+ // public addFilter(
242
+ // smartFilterId: string,
243
+ // filter: FilterExpressionFieldList,
244
+ // type: SmartFilterType,
245
+ // smartFilterComponent: SmartFilterComponent,
246
+ // isDefault?: boolean
247
+ // ): SmartFilter {
248
+ // const smartFilter: SmartFilter = {
249
+ // data: filter.filters,
250
+ // type,
251
+ // translateService: this.translate,
252
+ // };
253
+ // this.widgets.addWidget(smartFilterId, smartFilterComponent);
254
+ // if (isDefault) {
255
+ // this.smartFilter = smartFilter;
256
+ // return this.smartFilter!;
257
+ // }
258
+ // return smartFilter;
259
+ // }
235
260
  // #region handle changes
236
261
  handleValueChanges(valueChange) {
237
262
  let dataChange;
@@ -375,4 +400,4 @@ export class WidgetMap {
375
400
  return this.widgets.get(key);
376
401
  }
377
402
  }
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBSUwsY0FBYyxFQUNkLHVCQUF1QixFQUd2Qix5QkFBeUIsRUFHekIsZUFBZSxHQUdoQixNQUFNLDBCQUEwQixDQUFDO0FBSWxDLElBQXNCLHVCQUF1QixHQUE3QyxNQUFzQix1QkFBdUI7SUE4RzNDLFlBQ1ksTUFBZ0IsRUFDaEIsSUFBeUMsRUFDckIsUUFBZ0I7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFxQztRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBaEh0QyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFekMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFbkMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsNEJBQXVCLEdBQWtCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQXdCMUUsaUJBQVksR0FBdUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBMkNyRixtQkFBYyxHQUFvQixFQUFFLENBQUM7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RCx1QkFBdUIsQ0FnYzVDO1NBaGNxQix1QkFBdUI7QUFrYzdDLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBQ1UsYUFBUSxHQUFtQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBcUIvQyxDQUFDO0lBbkJDLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBdUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUNELFNBQVMsQ0FBQyxHQUFXLEVBQUUsU0FBWSxFQUFFLE1BQWdCO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsWUFBWSxDQUFDLEdBQVc7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU21hcnRGb3JtLCBTbWFydGZvcm1Db21wb25lbnQsIFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XG5pbXBvcnQgeyBHcmlkT3B0aW9ucywgU21hcnRHcmlkLCBTbWFydEdyaWRDb21wb25lbnQgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2dyaWQnO1xuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9zdWJqZWN0JztcbmltcG9ydCB7IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC90cmVlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50TW9kZWwsXG4gIENvbXBvbmVudE1vZGVsQ2hhbmdlLFxuICBEYXRhQ2hhbmdlLFxuICBEYXRhQ2hhbmdlS2luZCxcbiAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXG4gIFVpQWN0aW9uLFxuICBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMsXG4gIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UsXG4gIFVpQWN0aW9uTW9kZWwsXG4gIFVpQWN0aW9uUmVxdWVzdCxcbiAgVWlBY3Rpb25TZXJ2aWNlLFxuICBVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2UsXG4gIFVzZVVpQWN0aW9uLFxufSBmcm9tICcuLi92aWV3LWNvbnRleHQvcHJvamVjdHMnO1xuaW1wb3J0IHsgU21hcnRBdXRoZW50aWNhdGlvblNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuL3NtYXJ0LWF1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uIH0gZnJvbSAnLi9hcGknO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU21hcnRDb21wb25lbnRBcGlDbGllbnQ8VD4gaW1wbGVtZW50cyBVc2VVaUFjdGlvbiB7XG4gIHByb3RlY3RlZCBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByb3RlY3RlZCBzZW5kRGF0YUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF91c2VBdXRvU3VibWl0OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3VzZUF1dG9TdWJtaXRUdXJuZWRPZmY6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcblxuICBwcm90ZWN0ZWQgZ2V0IHVzZUF1dG9TdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZUF1dG9TdWJtaXQ7XG4gIH1cbiAgcHJvdGVjdGVkIHNldCB1c2VBdXRvU3VibWl0KHVzZUF1dG9TdWJtaXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl91c2VBdXRvU3VibWl0ID0gdXNlQXV0b1N1Ym1pdDtcbiAgICBpZiAodGhpcy5fdXNlQXV0b1N1Ym1pdCkge1xuICAgICAgdGhpcy5zdWJzY3JpYmVUb0F1dG9TdWJtaXQoKTtcbiAgICAgIHRoaXMucmVTdWJzY3JpYmVUb0NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91c2VBdXRvU3VibWl0VHVybmVkT2ZmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb0F1dG9TdWJtaXQoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl91c2VBdXRvU3VibWl0VHVybmVkT2ZmLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvQXV0b1N1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdC5waXBlKHRha2VVbnRpbCh0aGlzLl91c2VBdXRvU3VibWl0VHVybmVkT2ZmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc3VibWl0Rm9ybXMoKTtcbiAgICAgIHRoaXMuc3VibWl0LmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PENvbXBvbmVudE1vZGVsQ2hhbmdlPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuXG4gIHByaXZhdGUgX3V1aWQ/OiBzdHJpbmc7XG5cbiAgZ2V0IHV1aWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdXVpZDtcbiAgfVxuICBzZXQgdXVpZCh1dWlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy51dWlkKSB7XG4gICAgICB0aGlzLnZpZXdDb250ZXh0LnVuZm9sbG93KHRoaXMudXVpZCk7XG4gICAgfVxuICAgIHRoaXMuX3V1aWQgPSB1dWlkO1xuICAgIGlmICh1dWlkKSB7XG4gICAgICB0aGlzLndpZGdldHMud2lkZ2V0cy5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgICAgaWYgKHJlZiBpbnN0YW5jZW9mIFNtYXJ0R3JpZENvbXBvbmVudCkge1xuICAgICAgICAgIHJlZi51dWlkID0gdXVpZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudmlld0NvbnRleHQuZm9sbG93KHRoaXMuX3V1aWQhLCB0aGlzLmRldGVjdENoYW5nZSk7XG4gIH1cblxuICBwcml2YXRlIF9tb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IG1vZGVsKCk6IENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gIH1cbiAgc2V0IG1vZGVsKG1vZGVsOiBDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XG5cbiAgICB0aGlzLmluaXRDb21wb25lbnRCeU1vZGVsKCk7XG4gIH1cblxuICBwcml2YXRlIF9kYXRhPzogVDtcblxuICBnZXQgZGF0YSgpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuICBzZXQgZGF0YShtb2RlbDogVCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2RhdGEgPSBtb2RlbDtcbiAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XG5cbiAgcHVibGljIGRhdGFDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgLy8gVXNlVWlBY3Rpb25cbiAgc3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG4gIHJlU3Vic2NyaWJlVG9DaGFuZ2U6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcblxuICAvLyBTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb25cbiAgc21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uPzogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uO1xuXG4gIC8vIEdyaWRcbiAgc21hcnRHcmlkPzogU21hcnRHcmlkO1xuXG4gIC8vIFNlcnZpY2VzXG4gIHByb3RlY3RlZCB2aWV3Q29udGV4dDogU21hcnRWaWV3Q29udGV4dFNlcnZpY2U7XG4gIHByb3RlY3RlZCB1aUFjdGlvblNlcnZpY2U6IFVpQWN0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIHVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U6IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XG5cbiAgLy8gVHJlZVxuICBwcml2YXRlIF9zbWFydFRyZWVTZXJ2aWNlPzogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2U7XG5cbiAgcHVibGljIGdldCBzbWFydFRyZWVTZXJ2aWNlKCk6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc21hcnRUcmVlU2VydmljZTtcbiAgfVxuICBwdWJsaWMgc2V0IHNtYXJ0VHJlZVNlcnZpY2Uoc21hcnRUcmVlU2VydmljZTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5fc21hcnRUcmVlU2VydmljZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcignVGhlIGRlZmF1bHQgdHJlZSBoYXMgYWxyZWFkeSBzZXQgdXAhJyk7XG4gICAgfVxuICAgIHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2UgPSBzbWFydFRyZWVTZXJ2aWNlO1xuICB9XG5cbiAgLy8gQ29udGFpbmVkIFdpZGdldHNcbiAgd2lkZ2V0czogV2lkZ2V0TWFwPFNtYXJ0R3JpZENvbXBvbmVudCB8IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkPiA9IG5ldyBXaWRnZXRNYXAoKTtcblxuICBmb3JtV2lkZ2V0czogV2lkZ2V0TWFwPFNtYXJ0Zm9ybUNvbXBvbmVudCB8IHVuZGVmaW5lZD4gPSBuZXcgV2lkZ2V0TWFwKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdDogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGF1dGg6IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlLFxuICAgIEBJbmplY3QoJ3BhZ2VOYW1lJykgcHJvdGVjdGVkIHBhZ2VOYW1lOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2U6IENvbXBvbmVudE1vZGVsQ2hhbmdlKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZXMoY2hhbmdlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudmlld0NvbnRleHQgPSBpbmplY3QuZ2V0KFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlKTtcblxuICAgIHRoaXMudWlBY3Rpb25TZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvblNlcnZpY2UpO1xuICAgIHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IGluamVjdC5nZXQoVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSk7XG4gIH1cblxuICBfbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ydW4oKTtcbiAgfVxuICBfbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52aWV3Q29udGV4dC51bmZvbGxvdyh0aGlzLnV1aWQhKTtcbiAgICB0aGlzLndpZGdldHMuY2xlYXJXaWRnZXRzKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGluaXRDb21wb25lbnRCeU1vZGVsKCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgICB0aGlzLmluaXRBY3Rpb25zKCk7XG5cbiAgICAvLyBUT0RPOiBsYXlvdXQsIHZhbHVlU2V0LCB3aWRnZXRzXG4gIH1cblxuICBpbml0RGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlbD8uZGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5tb2RlbD8uZGF0YSBhcyBhbnk7XG4gICAgfVxuICB9XG5cbiAgaW5pdEFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZWw/LmFjdGlvbnMpIHtcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLm1vZGVsPy5hY3Rpb25zLm1hcCgodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLFxuICAgICAgICAgIHVpQWN0aW9uLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcnVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dGguYmZmQXBpc0hhdmVCZWVuU2V0VXApIHtcbiAgICAgIHRoaXMubG9hZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dGguaGVhZGVyc1VwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lKTtcbiAgICB0aGlzLm1vZGVsID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5sb2FkKHRoaXMudXVpZCk7XG4gIH1cblxuICAvLyNyZWdpb24gVXNlVWlBY3Rpb25cbiAgZ2V0QWRkaXRpb25hbFBhcmFtcyh1aUFjdGlvbjogVWlBY3Rpb24pOiBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JUZXh0QXJlYTogJycsXG4gICAgICBmb3JUZXh0RmllbGQ6ICcnLFxuICAgIH07XG4gIH1cbiAgZ2V0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHBlcmZvcm1VaUFjdGlvblJlcXVlc3QoXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXG4gICAgd2lkZ2V0SWQ/OiBzdHJpbmcsXG4gICAgbm9kZUlkPzogc3RyaW5nXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddKSB7XG4gICAgICBjb25zdCBwYXJhbSA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ3BhcmFtJ107XG4gICAgICBjb25zdCBmaWxlcyA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddO1xuICAgICAgY29uc3QgaXNNdWx0aXBsZSA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ2lzTXVsdGlwbGUnXTtcbiAgICAgIGRlbGV0ZSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydwYXJhbSddO1xuICAgICAgZGVsZXRlIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddO1xuICAgICAgZGVsZXRlIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ2lzTXVsdGlwbGUnXTtcblxuICAgICAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQucGVyZm9ybVVwbG9hZEFjdGlvbih0aGlzLnV1aWQhLCB1aUFjdGlvblJlcXVlc3QsIHBhcmFtLCBmaWxlc1swXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1VcGxvYWRNdWx0aXBsZUFjdGlvbihcbiAgICAgICAgICB0aGlzLnV1aWQhLFxuICAgICAgICAgIHVpQWN0aW9uUmVxdWVzdCxcbiAgICAgICAgICBwYXJhbSxcbiAgICAgICAgICBmaWxlc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAod2lkZ2V0SWQgJiYgbm9kZUlkKSB7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1XaWRnZXRBY3Rpb24odGhpcy51dWlkISwgd2lkZ2V0SWQsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcbiAgICB9IGVsc2UgaWYgKHdpZGdldElkKSB7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1XaWRnZXRNYWluQWN0aW9uKHRoaXMudXVpZCEsIHdpZGdldElkLCB1aUFjdGlvblJlcXVlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1BY3Rpb24odGhpcy51dWlkISwgdWlBY3Rpb25SZXF1ZXN0KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseShcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTxVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2U+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5IG1ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHVibGljIGFkZFNtYXJ0TGF5b3V0KGxheW91dDogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dERlZmluaXRpb24gPSB0aGlzLnNldFBhcmVudENvbXBvbmVudChsYXlvdXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYXJlbnRDb21wb25lbnQoXG4gICAgbGF5b3V0OiBTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb25cbiAgKTogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uIHtcbiAgICBsYXlvdXQucGFyZW50Q29tcG9uZW50ID0gdGhpcztcbiAgICBsYXlvdXQuY29tcG9uZW50cyA9IGxheW91dC5jb21wb25lbnRzPy5tYXAoKGw6IFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbikgPT5cbiAgICAgIHRoaXMuc2V0UGFyZW50Q29tcG9uZW50KGwpXG4gICAgKTtcbiAgICByZXR1cm4gbGF5b3V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdHMgYWxsIHRoZSByZWdpc3RlcmVkIGZvcm1zIGluIHRoZSBTbWFydENvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIHN1Ym1pdEZvcm1zKCk6IHZvaWQge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybVdpZGdldHMud2lkZ2V0cykubWFwKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5mb3JtV2lkZ2V0cy53aWRnZXRzLmdldChrZXkpPy5zdWJtaXRGb3JtKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkR3JpZChcbiAgICBzbWFydEdyaWQ6IFNtYXJ0R3JpZCxcbiAgICBvcHRpb25zOiBHcmlkT3B0aW9ucyxcbiAgICB1c2VBc0RlZmF1bHRHcmlkPzogYm9vbGVhbixcbiAgICBjb21wb25lbnRSZWZlcmVuY2U/OiBTbWFydEdyaWRDb21wb25lbnRcbiAgKTogU21hcnRHcmlkIHtcbiAgICBzbWFydEdyaWQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgc21hcnRHcmlkLnVpQWN0aW9uU2VydmljZSA9IHRoaXMudWlBY3Rpb25TZXJ2aWNlO1xuICAgIHNtYXJ0R3JpZC51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xuICAgIHNtYXJ0R3JpZC5zZXJ2aWNlVG9Vc2UgPSB0aGlzO1xuICAgIHNtYXJ0R3JpZC52aWV3Q29udGV4dFNlcnZpY2UgPSB0aGlzLnZpZXdDb250ZXh0O1xuXG4gICAgdGhpcy53aWRnZXRzLmFkZFdpZGdldChzbWFydEdyaWQuZ3JpZElkZW50aWZpZXIsIGNvbXBvbmVudFJlZmVyZW5jZSk7XG5cbiAgICBpZiAodXNlQXNEZWZhdWx0R3JpZCkge1xuICAgICAgdGhpcy5zbWFydEdyaWQgPSBzbWFydEdyaWQ7XG4gICAgICByZXR1cm4gdGhpcy5zbWFydEdyaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNtYXJ0R3JpZDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRGb3JtKFxuICAgIHNtYXJ0Rm9ybUlkOiBzdHJpbmcsXG4gICAgc21hcnRGb3JtOiBTbWFydEZvcm0sXG4gICAgY29tcG9uZW50UmVmZXJlbmNlPzogU21hcnRmb3JtQ29tcG9uZW50XG4gICk6IFNtYXJ0Rm9ybSB7XG4gICAgdGhpcy5mb3JtV2lkZ2V0cy5hZGRXaWRnZXQoc21hcnRGb3JtSWQsIGNvbXBvbmVudFJlZmVyZW5jZSk7XG5cbiAgICBpZiAodGhpcy5zZW5kRGF0YUNoYW5nZXMgJiYgY29tcG9uZW50UmVmZXJlbmNlKSB7XG4gICAgICBzbWFydEZvcm0udXNlT25WYWx1ZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcblxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlLnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZUNoYW5nZTogU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZUNoYW5nZXModmFsdWVDaGFuZ2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc21hcnRGb3JtO1xuICB9XG5cbiAgcHVibGljIHNldFVwRGVmYXVsdFRyZWUodHJlZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNtYXJ0VHJlZVNlcnZpY2UgPSBuZXcgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UodGhpcy5pbmplY3QsIHRoaXMucGFnZU5hbWUsIHRyZWVJZCk7XG4gICAgdGhpcy53aWRnZXRzLmFkZFdpZGdldCh0cmVlSWQsIHRoaXMuc21hcnRUcmVlU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlVHJlZVNlcnZpY2UodHJlZUlkOiBzdHJpbmcpOiBTbWFydHRyZWVHZW5lcmljU2VydmljZSB7XG4gICAgY29uc3QgdHJlZVNlcnZpY2UgPSBuZXcgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UodGhpcy5pbmplY3QsIHRoaXMucGFnZU5hbWUsIHRyZWVJZCk7XG4gICAgdGhpcy53aWRnZXRzLmFkZFdpZGdldCh0cmVlSWQsIHRyZWVTZXJ2aWNlKTtcblxuICAgIHJldHVybiB0cmVlU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRGaWxlVXBsb2FkZXIoXG4gICAgdWlBY3Rpb25Db2RlOiBzdHJpbmcsXG4gICAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXSxcbiAgICBtYXhTaXplTWI/OiBudW1iZXIsXG4gICAgaXNNdWx0aXBsZT86IGJvb2xlYW5cbiAgKTogU21hcnRGaWxlVXBsb2FkZXIge1xuICAgIHJldHVybiB7XG4gICAgICB1aUFjdGlvbkNvZGUsXG4gICAgICBzbWFydENvbXBvbmVudDogdGhpcyxcbiAgICAgIGZpbGVGb3JtYXRzLFxuICAgICAgaXNNdWx0aXBsZSxcbiAgICAgIG1heFNpemVNYixcbiAgICB9O1xuICB9XG5cbiAgLy8gI3JlZ2lvbiBoYW5kbGUgY2hhbmdlc1xuICBwcml2YXRlIGhhbmRsZVZhbHVlQ2hhbmdlcyh2YWx1ZUNoYW5nZTogU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlKTogdm9pZCB7XG4gICAgbGV0IGRhdGFDaGFuZ2U6IERhdGFDaGFuZ2U7XG4gICAgaWYgKHZhbHVlQ2hhbmdlLmtleS5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSB2YWx1ZUNoYW5nZS5rZXkuc3BsaXQoJy4nKVswXTtcbiAgICAgIGNvbnN0IHZhbHVlS2V5ID0gdmFsdWVDaGFuZ2Uua2V5LnNwbGl0KCcuJylbMV07XG4gICAgICBkYXRhQ2hhbmdlID0ge1xuICAgICAgICBraW5kOiB2YWx1ZUNoYW5nZS5raW5kID09PSAnYmFzaWMnID8gRGF0YUNoYW5nZUtpbmQuV2lkZ2V0IDogRGF0YUNoYW5nZUtpbmQuU2VsZWN0aW9uLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHZhbHVlczogW1t2YWx1ZUtleSwgdmFsdWVDaGFuZ2UudmFsdWVdXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFDaGFuZ2UgPSB7XG4gICAgICAgIGtpbmQ6IHZhbHVlQ2hhbmdlLmtpbmQgPT09ICdiYXNpYycgPyBEYXRhQ2hhbmdlS2luZC5XaWRnZXQgOiBEYXRhQ2hhbmdlS2luZC5TZWxlY3Rpb24sXG4gICAgICAgIHNvdXJjZTogdmFsdWVDaGFuZ2Uua2V5LFxuICAgICAgICB2YWx1ZXM6IFtbdmFsdWVDaGFuZ2Uua2V5LCB2YWx1ZUNoYW5nZS52YWx1ZV1dLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0LmRhdGFDaGFuZ2VkKHRoaXMudXVpZCEsIGRhdGFDaGFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKGNoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VkV2lkZ2V0cykge1xuICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZVdpZGdldHMoY2hhbmdlLmNoYW5nZWRXaWRnZXRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZXMgPSBjaGFuZ2UuY2hhbmdlcztcbiAgICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcykubWFwKChjaGFuZ2VLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEYXRhQ2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnbGF5b3V0cy4nKSAmJiB0aGlzLm1vZGVsPy5sYXlvdXRzKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ3ZhbHVlU2V0cy4nKSAmJiB0aGlzLm1vZGVsPy52YWx1ZVNldHMpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVTZXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleSA9PT0gJ2FjdGlvbnMnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUFjdGlvbkNoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnY29uc3RyYWludHMnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbnN0cmFpbnRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGF0YUNoYW5nZWQubmV4dCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRoaXMubW9kZWwgPSBjaGFuZ2UudmFsdWUgYXMgQ29tcG9uZW50TW9kZWw7XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2UuY2hhbmdlZFdpZGdldHMgJiYgIWNoYW5nZS5jaGFuZ2VzICYmIGNoYW5nZS52YWx1ZSkge1xuICAgICAgdGhpcy5tb2RlbCA9IGNoYW5nZS52YWx1ZSBhcyBDb21wb25lbnRNb2RlbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5nZVdpZGdldHMoY2hhbmdlZFdpZGdldHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY2hhbmdlZFdpZGdldHMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMud2lkZ2V0cy5nZXQoa2V5KTtcblxuICAgICAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0R3JpZENvbXBvbmVudCkge1xuICAgICAgICByZWZlcmVuY2UucmVmcmVzaCgpO1xuICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBTbWFydHRyZWVHZW5lcmljU2VydmljZSkge1xuICAgICAgICByZWZlcmVuY2UuaW5pdGlhbGl6ZSgpO1xuICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBQcm92aWRlZCByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQuYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgc3BsaXR0ZWRLZXlzID0ga2V5LnNwbGl0KCcuJyk7XG5cbiAgICBsZXQgZGVlcE1vZGVsOiBhbnlbXSA9IFttb2RlbF07XG4gICAgbGV0IHRlbXBNb2RlbDogYW55O1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNwbGl0dGVkS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRlbXBNb2RlbCA9IGRlZXBNb2RlbFtpbmRleF07XG5cbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdudW1iZXInICYmXG4gICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgZGVlcE1vZGVsLnB1c2godGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4ID09PSBzcGxpdHRlZEtleXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGF0YUNoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVEZWVwbHkodGhpcy5tb2RlbCwgY2hhbmdlS2V5LCBjaGFuZ2VzW2NoYW5nZUtleV0pO1xuXG4gICAgdGhpcy5mb3JtV2lkZ2V0cy53aWRnZXRzLmZvckVhY2goXG4gICAgICAoZm9ybUNvbXBvbmVudDogU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoZm9ybUNvbXBvbmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgZm9ybSByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9ybUNvbXBvbmVudC5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMYXlvdXRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbGF5b3V0S2V5ID0gY2hhbmdlS2V5LnNwbGl0KCcuJylbMV07XG4gICAgdGhpcy5tb2RlbCEubGF5b3V0c1tsYXlvdXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZVNldENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCB2YWx1ZVNldEtleSA9IGNoYW5nZUtleS5zcGxpdCgnLicpWzFdO1xuICAgIHRoaXMubW9kZWwhLnZhbHVlU2V0cyFbdmFsdWVTZXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsIS5hY3Rpb25zID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICAgIHRoaXMuaW5pdEFjdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29uc3RyYWludENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwhLmNvbnN0cmFpbnRzID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxufVxuXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwPFQ+IHtcbiAgcHJpdmF0ZSBfd2lkZ2V0czogTWFwPHN0cmluZywgVD4gPSBuZXcgTWFwKCk7XG5cbiAgZ2V0IHdpZGdldHMoKTogTWFwPHN0cmluZywgVD4ge1xuICAgIHJldHVybiB0aGlzLl93aWRnZXRzO1xuICB9XG4gIHNldCB3aWRnZXRzKHdpZGdldHM6IE1hcDxzdHJpbmcsIFQ+KSB7XG4gICAgdGhpcy5fd2lkZ2V0cyA9IHdpZGdldHM7XG4gIH1cbiAgYWRkV2lkZ2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFQsIGlzRm9ybT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl93aWRnZXRzLnNldChrZXksIHJlZmVyZW5jZSk7XG4gIH1cbiAgcmVtb3ZlV2lkZ2V0KGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fd2lkZ2V0cy5kZWxldGUoa2V5KTtcbiAgfVxuICBjbGVhcldpZGdldHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2lkZ2V0cy5jbGVhcigpO1xuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0cy5nZXQoa2V5KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RmlsZVVwbG9hZGVyIHtcbiAgdWlBY3Rpb25Db2RlOiBzdHJpbmc7XG4gIG1heFNpemVNYj86IG51bWJlcjtcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XG4gIHNtYXJ0Q29tcG9uZW50OiBTbWFydENvbXBvbmVudEFwaUNsaWVudDxhbnk+O1xufVxuIl19
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBSUwsY0FBYyxFQUVkLHVCQUF1QixFQUd2Qix5QkFBeUIsRUFHekIsZUFBZSxHQUdoQixNQUFNLDBCQUEwQixDQUFDO0FBR2xDLFdBQVc7QUFDWCwrQkFBK0I7QUFDL0IsaUJBQWlCO0FBQ2pCLDBCQUEwQjtBQUMxQixxQkFBcUI7QUFDckIsaUNBQWlDO0FBRWpDLElBQXNCLHVCQUF1QixHQUE3QyxNQUFzQix1QkFBdUI7SUFrSDNDLFlBQ1ksTUFBZ0IsRUFDaEIsSUFBeUMsRUFDckIsUUFBZ0I7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFxQztRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBcEh0QyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFekMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFbkMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsNEJBQXVCLEdBQWtCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQXdCMUUsaUJBQVks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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYXJ0Rm9ybSwgU21hcnRmb3JtQ29tcG9uZW50LCBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2Zvcm0nO1xuaW1wb3J0IHsgR3JpZE9wdGlvbnMsIFNtYXJ0R3JpZCwgU21hcnRHcmlkQ29tcG9uZW50IH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9ncmlkJztcbmltcG9ydCB7IFNtYXJ0U3ViamVjdCB9IGZyb20gJ0BzbWFydGJpdDRhbGwvc3ViamVjdCc7XG5pbXBvcnQgeyBTbWFydHRyZWVHZW5lcmljU2VydmljZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvdHJlZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbXBvbmVudE1vZGVsLFxuICBDb21wb25lbnRNb2RlbENoYW5nZSxcbiAgRGF0YUNoYW5nZSxcbiAgRGF0YUNoYW5nZUtpbmQsXG4gIFNtYXJ0VHJhbnNsYXRlU2VydmljZSxcbiAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXG4gIFVpQWN0aW9uLFxuICBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMsXG4gIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UsXG4gIFVpQWN0aW9uTW9kZWwsXG4gIFVpQWN0aW9uUmVxdWVzdCxcbiAgVWlBY3Rpb25TZXJ2aWNlLFxuICBVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2UsXG4gIFVzZVVpQWN0aW9uLFxufSBmcm9tICcuLi92aWV3LWNvbnRleHQvcHJvamVjdHMnO1xuaW1wb3J0IHsgU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgU21hcnRBdXRoZW50aWNhdGlvblNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuL3NtYXJ0LWF1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuLy8gaW1wb3J0IHtcbi8vICAgRmlsdGVyRXhwcmVzc2lvbkZpZWxkTGlzdCxcbi8vICAgU21hcnRGaWx0ZXIsXG4vLyAgIFNtYXJ0RmlsdGVyQ29tcG9uZW50LFxuLy8gICBTbWFydEZpbHRlclR5cGUsXG4vLyB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZmlsdGVyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNtYXJ0Q29tcG9uZW50QXBpQ2xpZW50PFQ+IGltcGxlbWVudHMgVXNlVWlBY3Rpb24ge1xuICBwcm90ZWN0ZWQgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm90ZWN0ZWQgc2VuZERhdGFDaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdXNlQXV0b1N1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF91c2VBdXRvU3VibWl0VHVybmVkT2ZmOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgcHJvdGVjdGVkIGdldCB1c2VBdXRvU3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VBdXRvU3VibWl0O1xuICB9XG4gIHByb3RlY3RlZCBzZXQgdXNlQXV0b1N1Ym1pdCh1c2VBdXRvU3VibWl0OiBib29sZWFuKSB7XG4gICAgdGhpcy5fdXNlQXV0b1N1Ym1pdCA9IHVzZUF1dG9TdWJtaXQ7XG4gICAgaWYgKHRoaXMuX3VzZUF1dG9TdWJtaXQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9BdXRvU3VibWl0KCk7XG4gICAgICB0aGlzLnJlU3Vic2NyaWJlVG9DaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdXNlQXV0b1N1Ym1pdFR1cm5lZE9mZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9BdXRvU3VibWl0KCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXNlQXV0b1N1Ym1pdFR1cm5lZE9mZi5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0F1dG9TdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXQucGlwZSh0YWtlVW50aWwodGhpcy5fdXNlQXV0b1N1Ym1pdFR1cm5lZE9mZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pdEZvcm1zKCk7XG4gICAgICB0aGlzLnN1Ym1pdC5jb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxDb21wb25lbnRNb2RlbENoYW5nZT4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcblxuICBwcml2YXRlIF91dWlkPzogc3RyaW5nO1xuXG4gIGdldCB1dWlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3V1aWQ7XG4gIH1cbiAgc2V0IHV1aWQodXVpZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMudXVpZCkge1xuICAgICAgdGhpcy52aWV3Q29udGV4dC51bmZvbGxvdyh0aGlzLnV1aWQpO1xuICAgIH1cbiAgICB0aGlzLl91dWlkID0gdXVpZDtcbiAgICBpZiAodXVpZCkge1xuICAgICAgdGhpcy53aWRnZXRzLndpZGdldHMuZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICAgIGlmIChyZWYgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcbiAgICAgICAgICByZWYudXVpZCA9IHV1aWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnZpZXdDb250ZXh0LmZvbGxvdyh0aGlzLl91dWlkISwgdGhpcy5kZXRlY3RDaGFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbW9kZWw6IENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBtb2RlbCgpOiBDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICB9XG4gIHNldCBtb2RlbChtb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9tb2RlbCA9IG1vZGVsO1xuXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlNb2RlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF0YT86IFQ7XG5cbiAgZ2V0IGRhdGEoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbiAgc2V0IGRhdGEobW9kZWw6IFQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9kYXRhID0gbW9kZWw7XG4gICAgdGhpcy5kYXRhQ2hhbmdlZC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgdWlBY3Rpb25Nb2RlbHM6IFVpQWN0aW9uTW9kZWxbXSA9IFtdO1xuXG4gIHB1YmxpYyBkYXRhQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuXG4gIC8vIFVzZVVpQWN0aW9uXG4gIHN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuICByZVN1YnNjcmliZVRvQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgLy8gU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uXG4gIHNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbj86IFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbjtcblxuICAvLyBHcmlkXG4gIHNtYXJ0R3JpZD86IFNtYXJ0R3JpZDtcblxuICAvLyBGaWx0ZXJcbiAgLy8gc21hcnRGaWx0ZXI/OiBTbWFydEZpbHRlcjtcblxuICAvLyBTZXJ2aWNlc1xuICBwcm90ZWN0ZWQgdmlld0NvbnRleHQ6IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgdWlBY3Rpb25TZXJ2aWNlOiBVaUFjdGlvblNlcnZpY2U7XG4gIHByb3RlY3RlZCB1aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlPzogU21hcnRUcmFuc2xhdGVTZXJ2aWNlO1xuXG4gIC8vIFRyZWVcbiAgcHJpdmF0ZSBfc21hcnRUcmVlU2VydmljZT86IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlO1xuXG4gIHB1YmxpYyBnZXQgc21hcnRUcmVlU2VydmljZSgpOiBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2U7XG4gIH1cbiAgcHVibGljIHNldCBzbWFydFRyZWVTZXJ2aWNlKHNtYXJ0VHJlZVNlcnZpY2U6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBkZWZhdWx0IHRyZWUgaGFzIGFscmVhZHkgc2V0IHVwIScpO1xuICAgIH1cbiAgICB0aGlzLl9zbWFydFRyZWVTZXJ2aWNlID0gc21hcnRUcmVlU2VydmljZTtcbiAgfVxuXG4gIC8vIENvbnRhaW5lZCBXaWRnZXRzXG4gIHdpZGdldHM6IFdpZGdldE1hcDxTbWFydEdyaWRDb21wb25lbnQgfCBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZD4gPSBuZXcgV2lkZ2V0TWFwKCk7XG5cbiAgZm9ybVdpZGdldHM6IFdpZGdldE1hcDxTbWFydGZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQ+ID0gbmV3IFdpZGdldE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3Q6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBhdXRoOiBTbWFydEF1dGhlbnRpY2F0aW9uU2VydmljZUludGVyZmFjZSxcbiAgICBASW5qZWN0KCdwYWdlTmFtZScpIHByb3RlY3RlZCBwYWdlTmFtZTogc3RyaW5nXG4gICkge1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlOiBDb21wb25lbnRNb2RlbENoYW5nZSkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzKGNoYW5nZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gaW5qZWN0LmdldChTbWFydFZpZXdDb250ZXh0U2VydmljZSk7XG5cbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZSA9IGluamVjdC5nZXQoVWlBY3Rpb25TZXJ2aWNlKTtcbiAgICB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgPSBpbmplY3QuZ2V0KFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpO1xuICB9XG5cbiAgX25nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucnVuKCk7XG4gIH1cbiAgX25nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmlld0NvbnRleHQudW5mb2xsb3codGhpcy51dWlkISk7XG4gICAgdGhpcy53aWRnZXRzLmNsZWFyV2lkZ2V0cygpO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBpbml0Q29tcG9uZW50QnlNb2RlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXREYXRhKCk7XG4gICAgdGhpcy5pbml0QWN0aW9ucygpO1xuXG4gICAgLy8gVE9ETzogbGF5b3V0LCB2YWx1ZVNldCwgd2lkZ2V0c1xuICB9XG5cbiAgaW5pdERhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZWw/LmRhdGEpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMubW9kZWw/LmRhdGEgYXMgYW55O1xuICAgIH1cbiAgfVxuXG4gIGluaXRBY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVsPy5hY3Rpb25zKSB7XG4gICAgICB0aGlzLnVpQWN0aW9uTW9kZWxzID0gdGhpcy5tb2RlbD8uYWN0aW9ucy5tYXAoKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcbiAgICAgICAgICB1aUFjdGlvbixcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJ1bigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRoLmJmZkFwaXNIYXZlQmVlblNldFVwKSB7XG4gICAgICB0aGlzLmxvYWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdXRoLmhlYWRlcnNVcGRhdGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnV1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSk7XG4gICAgdGhpcy5tb2RlbCA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQubG9hZCh0aGlzLnV1aWQpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFVzZVVpQWN0aW9uXG4gIGdldEFkZGl0aW9uYWxQYXJhbXModWlBY3Rpb246IFVpQWN0aW9uKTogVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9yVGV4dEFyZWE6ICcnLFxuICAgICAgZm9yVGV4dEZpZWxkOiAnJyxcbiAgICB9O1xuICB9XG4gIGdldE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cblxuICBhc3luYyBwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KFxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0LFxuICAgIHdpZGdldElkPzogc3RyaW5nLFxuICAgIG5vZGVJZD86IHN0cmluZ1xuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICh1aUFjdGlvblJlcXVlc3QucGFyYW1zWydfZmlsZXMnXSkge1xuICAgICAgY29uc3QgcGFyYW0gPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydwYXJhbSddO1xuICAgICAgY29uc3QgZmlsZXMgPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydfZmlsZXMnXTtcbiAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydpc011bHRpcGxlJ107XG4gICAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1sncGFyYW0nXTtcbiAgICAgIGRlbGV0ZSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydfZmlsZXMnXTtcbiAgICAgIGRlbGV0ZSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydpc011bHRpcGxlJ107XG5cbiAgICAgIGlmICghaXNNdWx0aXBsZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1VcGxvYWRBY3Rpb24odGhpcy51dWlkISwgdWlBY3Rpb25SZXF1ZXN0LCBwYXJhbSwgZmlsZXNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtVXBsb2FkTXVsdGlwbGVBY3Rpb24oXG4gICAgICAgICAgdGhpcy51dWlkISxcbiAgICAgICAgICB1aUFjdGlvblJlcXVlc3QsXG4gICAgICAgICAgcGFyYW0sXG4gICAgICAgICAgZmlsZXNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHdpZGdldElkICYmIG5vZGVJZCkge1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0QWN0aW9uKHRoaXMudXVpZCEsIHdpZGdldElkLCBub2RlSWQsIHVpQWN0aW9uUmVxdWVzdCk7XG4gICAgfSBlbHNlIGlmICh3aWRnZXRJZCkge1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbih0aGlzLnV1aWQhLCB3aWRnZXRJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtQWN0aW9uKHRoaXMudXVpZCEsIHVpQWN0aW9uUmVxdWVzdCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3BlY2lmaWNEZW1hbmRzQXN5bmNocm9ub3VzbHkoXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XG4gICk6IFByb21pc2U8VWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseSBtZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHB1YmxpYyBhZGRTbWFydExheW91dChsYXlvdXQ6IFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uID0gdGhpcy5zZXRQYXJlbnRDb21wb25lbnQobGF5b3V0KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFyZW50Q29tcG9uZW50KFxuICAgIGxheW91dDogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uXG4gICk6IFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbiB7XG4gICAgbGF5b3V0LnBhcmVudENvbXBvbmVudCA9IHRoaXM7XG4gICAgbGF5b3V0LmNvbXBvbmVudHMgPSBsYXlvdXQuY29tcG9uZW50cz8ubWFwKChsOiBTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb24pID0+XG4gICAgICB0aGlzLnNldFBhcmVudENvbXBvbmVudChsKVxuICAgICk7XG4gICAgcmV0dXJuIGxheW91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXRzIGFsbCB0aGUgcmVnaXN0ZXJlZCBmb3JtcyBpbiB0aGUgU21hcnRDb21wb25lbnRcbiAgICovXG4gIHB1YmxpYyBzdWJtaXRGb3JtcygpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm1XaWRnZXRzLndpZGdldHMpLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZm9ybVdpZGdldHMud2lkZ2V0cy5nZXQoa2V5KT8uc3VibWl0Rm9ybSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZEdyaWQoXG4gICAgc21hcnRHcmlkOiBTbWFydEdyaWQsXG4gICAgb3B0aW9uczogR3JpZE9wdGlvbnMsXG4gICAgdXNlQXNEZWZhdWx0R3JpZD86IGJvb2xlYW4sXG4gICAgY29tcG9uZW50UmVmZXJlbmNlPzogU21hcnRHcmlkQ29tcG9uZW50XG4gICk6IFNtYXJ0R3JpZCB7XG4gICAgc21hcnRHcmlkLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHNtYXJ0R3JpZC51aUFjdGlvblNlcnZpY2UgPSB0aGlzLnVpQWN0aW9uU2VydmljZTtcbiAgICBzbWFydEdyaWQudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcbiAgICBzbWFydEdyaWQuc2VydmljZVRvVXNlID0gdGhpcztcbiAgICBzbWFydEdyaWQudmlld0NvbnRleHRTZXJ2aWNlID0gdGhpcy52aWV3Q29udGV4dDtcblxuICAgIHRoaXMud2lkZ2V0cy5hZGRXaWRnZXQoc21hcnRHcmlkLmdyaWRJZGVudGlmaWVyLCBjb21wb25lbnRSZWZlcmVuY2UpO1xuXG4gICAgaWYgKHVzZUFzRGVmYXVsdEdyaWQpIHtcbiAgICAgIHRoaXMuc21hcnRHcmlkID0gc21hcnRHcmlkO1xuICAgICAgcmV0dXJuIHRoaXMuc21hcnRHcmlkO1xuICAgIH1cblxuICAgIHJldHVybiBzbWFydEdyaWQ7XG4gIH1cblxuICBwdWJsaWMgYWRkRm9ybShcbiAgICBzbWFydEZvcm1JZDogc3RyaW5nLFxuICAgIHNtYXJ0Rm9ybTogU21hcnRGb3JtLFxuICAgIGNvbXBvbmVudFJlZmVyZW5jZT86IFNtYXJ0Zm9ybUNvbXBvbmVudFxuICApOiBTbWFydEZvcm0ge1xuICAgIHRoaXMuZm9ybVdpZGdldHMuYWRkV2lkZ2V0KHNtYXJ0Rm9ybUlkLCBjb21wb25lbnRSZWZlcmVuY2UpO1xuXG4gICAgaWYgKHRoaXMuc2VuZERhdGFDaGFuZ2VzICYmIGNvbXBvbmVudFJlZmVyZW5jZSkge1xuICAgICAgc21hcnRGb3JtLnVzZU9uVmFsdWVDaGFuZ2VFdmVudCA9IHRydWU7XG5cbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWVDaGFuZ2U6IFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2VzKHZhbHVlQ2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNtYXJ0Rm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVcERlZmF1bHRUcmVlKHRyZWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zbWFydFRyZWVTZXJ2aWNlID0gbmV3IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlKHRoaXMuaW5qZWN0LCB0aGlzLnBhZ2VOYW1lLCB0cmVlSWQpO1xuICAgIHRoaXMud2lkZ2V0cy5hZGRXaWRnZXQodHJlZUlkLCB0aGlzLnNtYXJ0VHJlZVNlcnZpY2UpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVRyZWVTZXJ2aWNlKHRyZWVJZDogc3RyaW5nKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2Uge1xuICAgIGNvbnN0IHRyZWVTZXJ2aWNlID0gbmV3IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlKHRoaXMuaW5qZWN0LCB0aGlzLnBhZ2VOYW1lLCB0cmVlSWQpO1xuICAgIHRoaXMud2lkZ2V0cy5hZGRXaWRnZXQodHJlZUlkLCB0cmVlU2VydmljZSk7XG5cbiAgICByZXR1cm4gdHJlZVNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgYWRkRmlsZVVwbG9hZGVyKFxuICAgIHVpQWN0aW9uQ29kZTogc3RyaW5nLFxuICAgIGZpbGVGb3JtYXRzPzogc3RyaW5nW10sXG4gICAgbWF4U2l6ZU1iPzogbnVtYmVyLFxuICAgIGlzTXVsdGlwbGU/OiBib29sZWFuXG4gICk6IFNtYXJ0RmlsZVVwbG9hZGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgdWlBY3Rpb25Db2RlLFxuICAgICAgc21hcnRDb21wb25lbnQ6IHRoaXMsXG4gICAgICBmaWxlRm9ybWF0cyxcbiAgICAgIGlzTXVsdGlwbGUsXG4gICAgICBtYXhTaXplTWIsXG4gICAgfTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBhZGRGaWx0ZXIoXG4gIC8vICAgc21hcnRGaWx0ZXJJZDogc3RyaW5nLFxuICAvLyAgIGZpbHRlcjogRmlsdGVyRXhwcmVzc2lvbkZpZWxkTGlzdCxcbiAgLy8gICB0eXBlOiBTbWFydEZpbHRlclR5cGUsXG4gIC8vICAgc21hcnRGaWx0ZXJDb21wb25lbnQ6IFNtYXJ0RmlsdGVyQ29tcG9uZW50LFxuICAvLyAgIGlzRGVmYXVsdD86IGJvb2xlYW5cbiAgLy8gKTogU21hcnRGaWx0ZXIge1xuICAvLyAgIGNvbnN0IHNtYXJ0RmlsdGVyOiBTbWFydEZpbHRlciA9IHtcbiAgLy8gICAgIGRhdGE6IGZpbHRlci5maWx0ZXJzLFxuICAvLyAgICAgdHlwZSxcbiAgLy8gICAgIHRyYW5zbGF0ZVNlcnZpY2U6IHRoaXMudHJhbnNsYXRlLFxuICAvLyAgIH07XG5cbiAgLy8gICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHNtYXJ0RmlsdGVySWQsIHNtYXJ0RmlsdGVyQ29tcG9uZW50KTtcblxuICAvLyAgIGlmIChpc0RlZmF1bHQpIHtcbiAgLy8gICAgIHRoaXMuc21hcnRGaWx0ZXIgPSBzbWFydEZpbHRlcjtcbiAgLy8gICAgIHJldHVybiB0aGlzLnNtYXJ0RmlsdGVyITtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHNtYXJ0RmlsdGVyO1xuICAvLyB9XG5cbiAgLy8gI3JlZ2lvbiBoYW5kbGUgY2hhbmdlc1xuICBwcml2YXRlIGhhbmRsZVZhbHVlQ2hhbmdlcyh2YWx1ZUNoYW5nZTogU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlKTogdm9pZCB7XG4gICAgbGV0IGRhdGFDaGFuZ2U6IERhdGFDaGFuZ2U7XG4gICAgaWYgKHZhbHVlQ2hhbmdlLmtleS5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSB2YWx1ZUNoYW5nZS5rZXkuc3BsaXQoJy4nKVswXTtcbiAgICAgIGNvbnN0IHZhbHVlS2V5ID0gdmFsdWVDaGFuZ2Uua2V5LnNwbGl0KCcuJylbMV07XG4gICAgICBkYXRhQ2hhbmdlID0ge1xuICAgICAgICBraW5kOiB2YWx1ZUNoYW5nZS5raW5kID09PSAnYmFzaWMnID8gRGF0YUNoYW5nZUtpbmQuV2lkZ2V0IDogRGF0YUNoYW5nZUtpbmQuU2VsZWN0aW9uLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHZhbHVlczogW1t2YWx1ZUtleSwgdmFsdWVDaGFuZ2UudmFsdWVdXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFDaGFuZ2UgPSB7XG4gICAgICAgIGtpbmQ6IHZhbHVlQ2hhbmdlLmtpbmQgPT09ICdiYXNpYycgPyBEYXRhQ2hhbmdlS2luZC5XaWRnZXQgOiBEYXRhQ2hhbmdlS2luZC5TZWxlY3Rpb24sXG4gICAgICAgIHNvdXJjZTogdmFsdWVDaGFuZ2Uua2V5LFxuICAgICAgICB2YWx1ZXM6IFtbdmFsdWVDaGFuZ2Uua2V5LCB2YWx1ZUNoYW5nZS52YWx1ZV1dLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0LmRhdGFDaGFuZ2VkKHRoaXMudXVpZCEsIGRhdGFDaGFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKGNoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VkV2lkZ2V0cykge1xuICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZVdpZGdldHMoY2hhbmdlLmNoYW5nZWRXaWRnZXRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZXMgPSBjaGFuZ2UuY2hhbmdlcztcbiAgICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcykubWFwKChjaGFuZ2VLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEYXRhQ2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnbGF5b3V0cy4nKSAmJiB0aGlzLm1vZGVsPy5sYXlvdXRzKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ3ZhbHVlU2V0cy4nKSAmJiB0aGlzLm1vZGVsPy52YWx1ZVNldHMpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVTZXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleSA9PT0gJ2FjdGlvbnMnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUFjdGlvbkNoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnY29uc3RyYWludHMnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbnN0cmFpbnRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGF0YUNoYW5nZWQubmV4dCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRoaXMubW9kZWwgPSBjaGFuZ2UudmFsdWUgYXMgQ29tcG9uZW50TW9kZWw7XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2UuY2hhbmdlZFdpZGdldHMgJiYgIWNoYW5nZS5jaGFuZ2VzICYmIGNoYW5nZS52YWx1ZSkge1xuICAgICAgdGhpcy5tb2RlbCA9IGNoYW5nZS52YWx1ZSBhcyBDb21wb25lbnRNb2RlbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5nZVdpZGdldHMoY2hhbmdlZFdpZGdldHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY2hhbmdlZFdpZGdldHMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMud2lkZ2V0cy5nZXQoa2V5KTtcblxuICAgICAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0R3JpZENvbXBvbmVudCkge1xuICAgICAgICByZWZlcmVuY2UucmVmcmVzaCgpO1xuICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBTbWFydHRyZWVHZW5lcmljU2VydmljZSkge1xuICAgICAgICByZWZlcmVuY2UuaW5pdGlhbGl6ZSgpO1xuICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBQcm92aWRlZCByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQuYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgc3BsaXR0ZWRLZXlzID0ga2V5LnNwbGl0KCcuJyk7XG5cbiAgICBsZXQgZGVlcE1vZGVsOiBhbnlbXSA9IFttb2RlbF07XG4gICAgbGV0IHRlbXBNb2RlbDogYW55O1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNwbGl0dGVkS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRlbXBNb2RlbCA9IGRlZXBNb2RlbFtpbmRleF07XG5cbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdudW1iZXInICYmXG4gICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgZGVlcE1vZGVsLnB1c2godGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4ID09PSBzcGxpdHRlZEtleXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGF0YUNoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVEZWVwbHkodGhpcy5tb2RlbCwgY2hhbmdlS2V5LCBjaGFuZ2VzW2NoYW5nZUtleV0pO1xuXG4gICAgdGhpcy5mb3JtV2lkZ2V0cy53aWRnZXRzLmZvckVhY2goXG4gICAgICAoZm9ybUNvbXBvbmVudDogU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoZm9ybUNvbXBvbmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgZm9ybSByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9ybUNvbXBvbmVudC5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMYXlvdXRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbGF5b3V0S2V5ID0gY2hhbmdlS2V5LnNwbGl0KCcuJylbMV07XG4gICAgdGhpcy5tb2RlbCEubGF5b3V0c1tsYXlvdXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZVNldENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCB2YWx1ZVNldEtleSA9IGNoYW5nZUtleS5zcGxpdCgnLicpWzFdO1xuICAgIHRoaXMubW9kZWwhLnZhbHVlU2V0cyFbdmFsdWVTZXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsIS5hY3Rpb25zID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICAgIHRoaXMuaW5pdEFjdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29uc3RyYWludENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwhLmNvbnN0cmFpbnRzID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxufVxuXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwPFQ+IHtcbiAgcHJpdmF0ZSBfd2lkZ2V0czogTWFwPHN0cmluZywgVD4gPSBuZXcgTWFwKCk7XG5cbiAgZ2V0IHdpZGdldHMoKTogTWFwPHN0cmluZywgVD4ge1xuICAgIHJldHVybiB0aGlzLl93aWRnZXRzO1xuICB9XG4gIHNldCB3aWRnZXRzKHdpZGdldHM6IE1hcDxzdHJpbmcsIFQ+KSB7XG4gICAgdGhpcy5fd2lkZ2V0cyA9IHdpZGdldHM7XG4gIH1cbiAgYWRkV2lkZ2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFQsIGlzRm9ybT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl93aWRnZXRzLnNldChrZXksIHJlZmVyZW5jZSk7XG4gIH1cbiAgcmVtb3ZlV2lkZ2V0KGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fd2lkZ2V0cy5kZWxldGUoa2V5KTtcbiAgfVxuICBjbGVhcldpZGdldHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2lkZ2V0cy5jbGVhcigpO1xuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0cy5nZXQoa2V5KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RmlsZVVwbG9hZGVyIHtcbiAgdWlBY3Rpb25Db2RlOiBzdHJpbmc7XG4gIG1heFNpemVNYj86IG51bWJlcjtcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XG4gIHNtYXJ0Q29tcG9uZW50OiBTbWFydENvbXBvbmVudEFwaUNsaWVudDxhbnk+O1xufVxuIl19
@@ -6,7 +6,9 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "@smartbit4all/form";
7
7
  import * as i2 from "@smartbit4all/expandable-section";
8
8
  import * as i3 from "@smartbit4all/grid";
9
- import * as i4 from "@angular/common";
9
+ import * as i4 from "@smartbit4all/tree";
10
+ import * as i5 from "@angular/common";
11
+ // import { SmartFilter, SmartFilterComponent } from '@smartbit4all/filter';
10
12
  export class SmartComponentLayoutComponent {
11
13
  constructor(layoutService) {
12
14
  this.layoutService = layoutService;
@@ -23,7 +25,9 @@ export class SmartComponentLayoutComponent {
23
25
  }
24
26
  }
25
27
  setUp() {
26
- this.uuid = this.smartComponentLayout?.parentComponent.uuid;
28
+ this.parent = this.smartComponentLayout?.parentComponent;
29
+ this.uuid = this.parent.uuid;
30
+ this.treeService = this.parent.smartTreeService;
27
31
  if (this.smartComponentLayout?.expandable) {
28
32
  this.constructExpandableSection();
29
33
  }
@@ -34,6 +38,12 @@ export class SmartComponentLayoutComponent {
34
38
  if (this.smartComponentLayout.widget?.type === ComponentWidgetType.Grid) {
35
39
  this.constructGrid();
36
40
  }
41
+ else if (this.smartComponentLayout.widget?.type === ComponentWidgetType.Filter) {
42
+ this.constructFilter();
43
+ }
44
+ else if (this.smartComponentLayout.widget?.type === ComponentWidgetType.Tree) {
45
+ this.constructTree();
46
+ }
37
47
  }
38
48
  }
39
49
  type() {
@@ -55,11 +65,11 @@ export class SmartComponentLayoutComponent {
55
65
  });
56
66
  this.smartForm = {
57
67
  direction: SmartFormWidgetDirection.COL,
58
- model: this.smartComponentLayout?.parentComponent.model,
59
- constraints: this.smartComponentLayout?.parentComponent.model?.constraints,
68
+ model: this.parent?.model,
69
+ constraints: this.parent?.model?.constraints,
60
70
  widgets,
61
71
  };
62
- this.smartComponentLayout?.parentComponent.addForm(
72
+ this.parent?.addForm(
63
73
  // unique identifier for the form
64
74
  `form_${this.makeid(5)}`, this.smartForm, this.formChild);
65
75
  }
@@ -82,16 +92,28 @@ export class SmartComponentLayoutComponent {
82
92
  },
83
93
  layoutDef: SmartLayoutDef.TABLE,
84
94
  };
85
- this.smartGrid = this.smartComponentLayout?.parentComponent.addGrid(this.smartGrid, {
95
+ this.smartGrid = this.parent?.addGrid(this.smartGrid, {
86
96
  rowUiActionType: GridUiActionType.POPUP_MENU,
87
97
  }, false, this.gridChild);
88
98
  }
99
+ constructFilter() {
100
+ // this.smartFilter = (this.smartComponentLayout!.parentComponent as any).addFilter(
101
+ // `filter_${this.makeid(5)}`,
102
+ // this.smartComponentLayout?.widget?.filterExpressionFieldList,
103
+ // this.smartComponentLayout?.widget?.filterType,
104
+ // this.filterChild
105
+ // );
106
+ }
107
+ constructTree() {
108
+ this.parent.setUpDefaultTree(this.smartComponentLayout?.widget?.treeIdentifier);
109
+ this.treeService?.initialize();
110
+ }
89
111
  }
90
112
  SmartComponentLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartComponentLayoutComponent, deps: [{ token: i1.SmartformLayoutDefinitionService }], target: i0.ɵɵFactoryTarget.Component });
91
- SmartComponentLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: { smartComponentLayout: "smartComponentLayout" }, viewQueries: [{ propertyName: "formChild", first: true, predicate: ["form"], descendants: true }, { propertyName: "gridChild", first: true, predicate: ["grid"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n <div\n *ngIf=\"smartComponentLayout?.type === type().Container\"\n [ngClass]=\"smartComponentLayout?.direction ?? 'vertical'\"\n >\n <smart-component-layout\n [smartComponentLayout]=\"layout\"\n *ngFor=\"let layout of smartComponentLayout?.components\"\n ></smart-component-layout>\n </div>\n <smartform #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n</ng-template>\n", styles: [".horizontal{display:flex;flex-direction:row}.vertical{display:flex;flex-direction:column}\n"], components: [{ type: i2.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: ["smartComponentLayout"] }, { type: i1.SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { type: i3.SmartGridComponent, selector: "smart-grid", inputs: ["smartGrid", "uuid", "dev"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
113
+ SmartComponentLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: { smartComponentLayout: "smartComponentLayout" }, viewQueries: [{ propertyName: "formChild", first: true, predicate: ["form"], descendants: true }, { propertyName: "gridChild", first: true, predicate: ["grid"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n <div\n *ngIf=\"smartComponentLayout?.type === type().Container\"\n [ngClass]=\"smartComponentLayout?.direction ?? 'vertical'\"\n >\n <smart-component-layout\n [smartComponentLayout]=\"layout\"\n *ngFor=\"let layout of smartComponentLayout?.components\"\n ></smart-component-layout>\n </div>\n <smartform #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\n <smart-tree [treeService]=\"treeService!\"></smart-tree>\n</ng-template>\n", styles: [".horizontal{display:flex;flex-direction:row}.vertical{display:flex;flex-direction:column}\n"], components: [{ type: i2.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: ["smartComponentLayout"] }, { type: i1.SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { type: i3.SmartGridComponent, selector: "smart-grid", inputs: ["smartGrid", "uuid", "dev"] }, { type: i4.SmartTreeComponent, selector: "smart-tree", inputs: ["treeStyle", "treeService"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
92
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartComponentLayoutComponent, decorators: [{
93
115
  type: Component,
94
- args: [{ selector: 'smart-component-layout', template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n <div\n *ngIf=\"smartComponentLayout?.type === type().Container\"\n [ngClass]=\"smartComponentLayout?.direction ?? 'vertical'\"\n >\n <smart-component-layout\n [smartComponentLayout]=\"layout\"\n *ngFor=\"let layout of smartComponentLayout?.components\"\n ></smart-component-layout>\n </div>\n <smartform #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n</ng-template>\n", styles: [".horizontal{display:flex;flex-direction:row}.vertical{display:flex;flex-direction:column}\n"] }]
116
+ args: [{ selector: 'smart-component-layout', template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n <div\n *ngIf=\"smartComponentLayout?.type === type().Container\"\n [ngClass]=\"smartComponentLayout?.direction ?? 'vertical'\"\n >\n <smart-component-layout\n [smartComponentLayout]=\"layout\"\n *ngFor=\"let layout of smartComponentLayout?.components\"\n ></smart-component-layout>\n </div>\n <smartform #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\n <smart-tree [treeService]=\"treeService!\"></smart-tree>\n</ng-template>\n", styles: [".horizontal{display:flex;flex-direction:row}.vertical{display:flex;flex-direction:column}\n"] }]
95
117
  }], ctorParameters: function () { return [{ type: i1.SmartformLayoutDefinitionService }]; }, propDecorators: { smartComponentLayout: [{
96
118
  type: Input
97
119
  }], formChild: [{
@@ -101,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
101
123
  type: ViewChild,
102
124
  args: ['grid']
103
125
  }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWxheW91dC9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNsaWVudC9zbWFydC1jb21wb25lbnQtbGF5b3V0L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBRUwsd0JBQXdCLEdBR3pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLGdCQUFnQixFQUdoQixjQUFjLEdBQ2YsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7O0FBUTVGLE1BQU0sT0FBTyw2QkFBNkI7SUFheEMsWUFBb0IsYUFBK0M7UUFBL0Msa0JBQWEsR0FBYixhQUFhLENBQWtDO0lBQUcsQ0FBQztJQUV2RSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFFekUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFD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SSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsZUFBdUIsQ0FBQyxPQUFPLENBQzFFLElBQUksQ0FBQyxTQUFTLEVBQ2Q7WUFDRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsVUFBVTtTQUM3QyxFQUNELEtBQUssRUFDTCxJQUFJLENBQUMsU0FBUyxDQUNmLENBQUM7SUFDSixDQUFDOzsySEExR1UsNkJBQTZCOytHQUE3Qiw2QkFBNkIsb1VDdEIxQyxzdkJBc0JBLDBPREFhLDZCQUE2Qjs0RkFBN0IsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHdCQUF3Qjt1SEFLekIsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUlhLFNBQVM7c0JBQTNCLFNBQVM7dUJBQUMsTUFBTTtnQkFHRSxTQUFTO3NCQUEzQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNtYXJ0Rm9ybSxcbiAgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLFxuICBTbWFydGZvcm1Db21wb25lbnQsXG4gIFNtYXJ0Zm9ybUxheW91dERlZmluaXRpb25TZXJ2aWNlLFxufSBmcm9tICdAc21hcnRiaXQ0YWxsL2Zvcm0nO1xuaW1wb3J0IHtcbiAgR3JpZFVpQWN0aW9uVHlwZSxcbiAgU21hcnRHcmlkLFxuICBTbWFydEdyaWRDb21wb25lbnQsXG4gIFNtYXJ0TGF5b3V0RGVmLFxufSBmcm9tICdAc21hcnRiaXQ0YWxsL2dyaWQnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgQ29tcG9uZW50V2lkZ2V0VHlwZSwgU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEV4cGFuZGFibGVTZWN0aW9uIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9leHBhbmRhYmxlLXNlY3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzbWFydC1jb21wb25lbnQtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNtYXJ0Q29tcG9uZW50TGF5b3V0PzogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uO1xuXG4gIHV1aWQ/OiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnZm9ybScpIGZvcm1DaGlsZD86IFNtYXJ0Zm9ybUNvbXBvbmVudDtcbiAgc21hcnRGb3JtPzogU21hcnRGb3JtO1xuXG4gIEBWaWV3Q2hpbGQoJ2dyaWQnKSBncmlkQ2hpbGQ/OiBTbWFydEdyaWRDb21wb25lbnQ7XG4gIHNtYXJ0R3JpZD86IFNtYXJ0R3JpZDtcblxuICBleHBhbmRhYmxlU2VjdGlvbj86IEV4cGFuZGFibGVTZWN0aW9uPFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dCkge1xuICAgICAgdGhpcy5zZXRVcCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0ID0gY2hhbmdlc1snc21hcnRDb21wb25lbnRMYXlvdXQnXS5jdXJyZW50VmFsdWU7XG5cbiAgICBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dCkge1xuICAgICAgdGhpcy5zZXRVcCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VXAoKTogdm9pZCB7XG4gICAgdGhpcy51dWlkID0gKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnBhcmVudENvbXBvbmVudCBhcyBhbnkpLnV1aWQ7XG5cbiAgICBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZXhwYW5kYWJsZSkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RFeHBhbmRhYmxlU2VjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dD8udHlwZSA9PT0gQ29tcG9uZW50VHlwZS5Gb3JtKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdEZvcm0oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IENvbXBvbmVudFR5cGUuV2lkZ2V0KSB7XG4gICAgICBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuR3JpZCkge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdEdyaWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0eXBlKCk6IHR5cGVvZiBDb21wb25lbnRUeXBlIHtcbiAgICByZXR1cm4gQ29tcG9uZW50VHlwZTtcbiAgfVxuXG4gIGNvbnN0cnVjdEV4cGFuZGFibGVTZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBkYXRhOiBTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb24gPSB7IC4uLnRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQhIH07XG4gICAgZGF0YS5leHBhbmRhYmxlID0gZmFsc2U7XG5cbiAgICB0aGlzLmV4cGFuZGFibGVTZWN0aW9uID0ge1xuICAgICAgdGl0bGU6IHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LmV4cGFuZGFibGVTZWN0aW9uTGFiZWwgPz8gJycsXG4gICAgICBkYXRhLFxuICAgICAgaW5wdXROYW1lOiAnc21hcnRDb21wb25lbnRMYXlvdXQnLFxuICAgICAgY3VzdG9tQ29tcG9uZW50OiBTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0Rm9ybSgpOiB2b2lkIHtcbiAgICBjb25zdCB3aWRnZXRzID0gdGhpcy5sYXlvdXRTZXJ2aWNlLnJlbmRlcih7XG4gICAgICBsYXlvdXREZWZpbml0aW9uczogdGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZm9ybSxcbiAgICB9KTtcblxuICAgIHRoaXMuc21hcnRGb3JtID0ge1xuICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uQ09MLFxuICAgICAgbW9kZWw6ICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5wYXJlbnRDb21wb25lbnQgYXMgYW55KS5tb2RlbCxcbiAgICAgIGNvbnN0cmFpbnRzOiAodGhpcy5zbWFydENvbXBvbmVudExheW91dD8ucGFyZW50Q29tcG9uZW50IGFzIGFueSkubW9kZWw/LmNvbnN0cmFpbnRzLFxuICAgICAgd2lkZ2V0cyxcbiAgICB9O1xuXG4gICAgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnBhcmVudENvbXBvbmVudCBhcyBhbnkpLmFkZEZvcm0oXG4gICAgICAvLyB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGZvcm1cbiAgICAgIGBmb3JtXyR7dGhpcy5tYWtlaWQoNSl9YCxcbiAgICAgIHRoaXMuc21hcnRGb3JtLFxuICAgICAgdGhpcy5mb3JtQ2hpbGRcbiAgICApO1xuICB9XG4gIG1ha2VpZChsZW5ndGg6IG51bWJlcikge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gY2hhcmFjdGVycy5sZW5ndGg7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xuICAgICAgY291bnRlciArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgY29uc3RydWN0R3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNtYXJ0R3JpZCA9IHtcbiAgICAgIGdyaWRJZGVudGlmaWVyOiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LmdyaWRJZGVudGlmaWVyISxcbiAgICAgIGdyaWRNb2RlbDoge1xuICAgICAgICBwYWdlOiB7fSxcbiAgICAgIH0sXG4gICAgICBsYXlvdXREZWY6IFNtYXJ0TGF5b3V0RGVmLlRBQkxFLFxuICAgIH07XG4gICAgdGhpcy5zbWFydEdyaWQgPSAodGhpcy5zbWFydENvbXBvbmVudExheW91dD8ucGFyZW50Q29tcG9uZW50IGFzIGFueSkuYWRkR3JpZChcbiAgICAgIHRoaXMuc21hcnRHcmlkLFxuICAgICAge1xuICAgICAgICByb3dVaUFjdGlvblR5cGU6IEdyaWRVaUFjdGlvblR5cGUuUE9QVVBfTUVOVSxcbiAgICAgIH0sXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZ3JpZENoaWxkXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cInNtYXJ0Q29tcG9uZW50TGF5b3V0Py5leHBhbmRhYmxlOyB0aGVuIGV4cGFuZGFibGU7IGVsc2Ugbm9ybWFsXCI+IDwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2V4cGFuZGFibGU+XG4gIDxzbWFydC1leHBhbmRhYmxlLXNlY3Rpb25cbiAgICAqbmdJZj1cImV4cGFuZGFibGVTZWN0aW9uXCJcbiAgICBbZGF0YV09XCJleHBhbmRhYmxlU2VjdGlvblwiXG4gID48L3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9ybWFsPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJzbWFydENvbXBvbmVudExheW91dD8udHlwZSA9PT0gdHlwZSgpLkNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwic21hcnRDb21wb25lbnRMYXlvdXQ/LmRpcmVjdGlvbiA/PyAndmVydGljYWwnXCJcbiAgPlxuICAgIDxzbWFydC1jb21wb25lbnQtbGF5b3V0XG4gICAgICBbc21hcnRDb21wb25lbnRMYXlvdXRdPVwibGF5b3V0XCJcbiAgICAgICpuZ0Zvcj1cImxldCBsYXlvdXQgb2Ygc21hcnRDb21wb25lbnRMYXlvdXQ/LmNvbXBvbmVudHNcIlxuICAgID48L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQ+XG4gIDwvZGl2PlxuICA8c21hcnRmb3JtICNmb3JtIFtzbWFydEZvcm1dPVwic21hcnRGb3JtXCI+PC9zbWFydGZvcm0+XG4gIDxzbWFydC1ncmlkICNncmlkIFtzbWFydEdyaWRdPVwic21hcnRHcmlkXCIgW3V1aWRdPVwidXVpZCFcIj48L3NtYXJ0LWdyaWQ+XG48L25nLXRlbXBsYXRlPlxuIl19
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWxheW91dC9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNsaWVudC9zbWFydC1jb21wb25lbnQtbGF5b3V0L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBRUwsd0JBQXdCLEdBR3pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLGdCQUFnQixFQUdoQixjQUFjLEdBQ2YsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUc1Riw0RUFBNEU7QUFPNUUsTUFBTSxPQUFPLDZCQUE2QjtJQW1CeEMsWUFBb0IsYUFBK0M7UUFBL0Msa0JBQWEsR0FBYixhQUFhLENBQWtDO0lBQUcsQ0FBQztJQUV2RSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFFekUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRU8sS0FBSztRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLGVBQXNCLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFFaEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFFO1lBQ3pDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxLQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDakUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO2FBQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxLQUFLLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDbkUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN0QjtpQkFBTSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxLQUFLLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDaEYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO2lCQUFNLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxJQUFJLEtBQUssbUJBQW1CLENBQUMsSUFBSSxFQUFFO2dCQUM5RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDdEI7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLElBQUksR0FBbUMsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBcUIsRUFBRSxDQUFDO1FBQzdFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBRXhCLElBQUksQ0FBQyxpQkFBaUIsR0FBRztZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixJQUFJLEVBQUU7WUFDOUQsSUFBSTtZQUNKLFNBQVMsRUFBRSxzQkFBc0I7WUFDakMsZUFBZSxFQUFFLDZCQUE2QjtTQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSTtTQUNuRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsU0FBUyxFQUFFLHdCQUF3QixDQUFDLEdBQUc7WUFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QyxPQUFPO1NBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztRQUNsQixpQ0FBaUM7UUFDakMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsR0FBRyxnRUFBZ0UsQ0FBQztRQUNwRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sT0FBTyxHQUFHLE1BQU0sRUFBRTtZQUN2QixNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUMsQ0FBQztTQUNkO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsY0FBYyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsY0FBZTtZQUNsRSxTQUFTLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLEVBQUU7YUFDVDtZQUNELFNBQVMsRUFBRSxjQUFjLENBQUMsS0FBSztTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FDbkMsSUFBSSxDQUFDLFNBQVMsRUFDZDtZQUNFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxVQUFVO1NBQzdDLEVBQ0QsS0FBSyxFQUNMLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2Isb0ZBQW9GO1FBQ3BGLGdDQUFnQztRQUNoQyxrRUFBa0U7UUFDbEUsbURBQW1EO1FBQ25ELHFCQUFxQjtRQUNyQixLQUFLO0lBQ1AsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzsySEFwSVUsNkJBQTZCOytHQUE3Qiw2QkFBNkIsb1VDeEIxQyw2M0JBd0JBLDBPREFhLDZCQUE2Qjs0RkFBN0IsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHdCQUF3Qjt1SEFLekIsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUlhLFNBQVM7c0JBQTNCLFNBQVM7dUJBQUMsTUFBTTtnQkFHRSxTQUFTO3NCQUEzQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNtYXJ0Rm9ybSxcbiAgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLFxuICBTbWFydGZvcm1Db21wb25lbnQsXG4gIFNtYXJ0Zm9ybUxheW91dERlZmluaXRpb25TZXJ2aWNlLFxufSBmcm9tICdAc21hcnRiaXQ0YWxsL2Zvcm0nO1xuaW1wb3J0IHtcbiAgR3JpZFVpQWN0aW9uVHlwZSxcbiAgU21hcnRHcmlkLFxuICBTbWFydEdyaWRDb21wb25lbnQsXG4gIFNtYXJ0TGF5b3V0RGVmLFxufSBmcm9tICdAc21hcnRiaXQ0YWxsL2dyaWQnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgQ29tcG9uZW50V2lkZ2V0VHlwZSwgU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEV4cGFuZGFibGVTZWN0aW9uIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9leHBhbmRhYmxlLXNlY3Rpb24nO1xuaW1wb3J0IHsgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL3RyZWUnO1xuLy8gaW1wb3J0IHsgU21hcnRGaWx0ZXIsIFNtYXJ0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9maWx0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzbWFydC1jb21wb25lbnQtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNtYXJ0Q29tcG9uZW50TGF5b3V0PzogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uO1xuXG4gIHV1aWQ/OiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnZm9ybScpIGZvcm1DaGlsZD86IFNtYXJ0Zm9ybUNvbXBvbmVudDtcbiAgc21hcnRGb3JtPzogU21hcnRGb3JtO1xuXG4gIEBWaWV3Q2hpbGQoJ2dyaWQnKSBncmlkQ2hpbGQ/OiBTbWFydEdyaWRDb21wb25lbnQ7XG4gIHNtYXJ0R3JpZD86IFNtYXJ0R3JpZDtcblxuICAvLyBAVmlld0NoaWxkKCdmaWx0ZXInKSBmaWx0ZXJDaGlsZD86IFNtYXJ0RmlsdGVyQ29tcG9uZW50O1xuICAvLyBzbWFydEZpbHRlcj86IFNtYXJ0RmlsdGVyO1xuXG4gIHBhcmVudD86IGFueTsgLy9TbWFydENvbXBvbmVudDxhbnk+XG4gIHRyZWVTZXJ2aWNlPzogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2U7XG5cbiAgZXhwYW5kYWJsZVNlY3Rpb24/OiBFeHBhbmRhYmxlU2VjdGlvbjxTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb24+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGF5b3V0U2VydmljZTogU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQpIHtcbiAgICAgIHRoaXMuc2V0VXAoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dCA9IGNoYW5nZXNbJ3NtYXJ0Q29tcG9uZW50TGF5b3V0J10uY3VycmVudFZhbHVlO1xuXG4gICAgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQpIHtcbiAgICAgIHRoaXMuc2V0VXAoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFVwKCk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50ID0gdGhpcy5zbWFydENvbXBvbmVudExheW91dD8ucGFyZW50Q29tcG9uZW50IGFzIGFueTtcbiAgICB0aGlzLnV1aWQgPSB0aGlzLnBhcmVudC51dWlkO1xuICAgIHRoaXMudHJlZVNlcnZpY2UgPSB0aGlzLnBhcmVudC5zbWFydFRyZWVTZXJ2aWNlO1xuXG4gICAgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LmV4cGFuZGFibGUpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0RXhwYW5kYWJsZVNlY3Rpb24oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IENvbXBvbmVudFR5cGUuRm9ybSkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py50eXBlID09PSBDb21wb25lbnRUeXBlLldpZGdldCkge1xuICAgICAgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQud2lkZ2V0Py50eXBlID09PSBDb21wb25lbnRXaWRnZXRUeXBlLkdyaWQpIHtcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RHcmlkKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQud2lkZ2V0Py50eXBlID09PSBDb21wb25lbnRXaWRnZXRUeXBlLkZpbHRlcikge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdEZpbHRlcigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LndpZGdldD8udHlwZSA9PT0gQ29tcG9uZW50V2lkZ2V0VHlwZS5UcmVlKSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0VHJlZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHR5cGUoKTogdHlwZW9mIENvbXBvbmVudFR5cGUge1xuICAgIHJldHVybiBDb21wb25lbnRUeXBlO1xuICB9XG5cbiAgY29uc3RydWN0RXhwYW5kYWJsZVNlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGRhdGE6IFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbiA9IHsgLi4udGhpcy5zbWFydENvbXBvbmVudExheW91dCEgfTtcbiAgICBkYXRhLmV4cGFuZGFibGUgPSBmYWxzZTtcblxuICAgIHRoaXMuZXhwYW5kYWJsZVNlY3Rpb24gPSB7XG4gICAgICB0aXRsZTogdGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZXhwYW5kYWJsZVNlY3Rpb25MYWJlbCA/PyAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBpbnB1dE5hbWU6ICdzbWFydENvbXBvbmVudExheW91dCcsXG4gICAgICBjdXN0b21Db21wb25lbnQ6IFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IHdpZGdldHMgPSB0aGlzLmxheW91dFNlcnZpY2UucmVuZGVyKHtcbiAgICAgIGxheW91dERlZmluaXRpb25zOiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5mb3JtLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zbWFydEZvcm0gPSB7XG4gICAgICBkaXJlY3Rpb246IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5DT0wsXG4gICAgICBtb2RlbDogdGhpcy5wYXJlbnQ/Lm1vZGVsLFxuICAgICAgY29uc3RyYWludHM6IHRoaXMucGFyZW50Py5tb2RlbD8uY29uc3RyYWludHMsXG4gICAgICB3aWRnZXRzLFxuICAgIH07XG5cbiAgICB0aGlzLnBhcmVudD8uYWRkRm9ybShcbiAgICAgIC8vIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZm9ybVxuICAgICAgYGZvcm1fJHt0aGlzLm1ha2VpZCg1KX1gLFxuICAgICAgdGhpcy5zbWFydEZvcm0sXG4gICAgICB0aGlzLmZvcm1DaGlsZFxuICAgICk7XG4gIH1cbiAgbWFrZWlkKGxlbmd0aDogbnVtYmVyKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICAgIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICBsZXQgY291bnRlciA9IDA7XG4gICAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XG4gICAgICBjb3VudGVyICs9IDE7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBjb25zdHJ1Y3RHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuc21hcnRHcmlkID0ge1xuICAgICAgZ3JpZElkZW50aWZpZXI6IHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uZ3JpZElkZW50aWZpZXIhLFxuICAgICAgZ3JpZE1vZGVsOiB7XG4gICAgICAgIHBhZ2U6IHt9LFxuICAgICAgfSxcbiAgICAgIGxheW91dERlZjogU21hcnRMYXlvdXREZWYuVEFCTEUsXG4gICAgfTtcbiAgICB0aGlzLnNtYXJ0R3JpZCA9IHRoaXMucGFyZW50Py5hZGRHcmlkKFxuICAgICAgdGhpcy5zbWFydEdyaWQsXG4gICAgICB7XG4gICAgICAgIHJvd1VpQWN0aW9uVHlwZTogR3JpZFVpQWN0aW9uVHlwZS5QT1BVUF9NRU5VLFxuICAgICAgfSxcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5ncmlkQ2hpbGRcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0RmlsdGVyKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuc21hcnRGaWx0ZXIgPSAodGhpcy5zbWFydENvbXBvbmVudExheW91dCEucGFyZW50Q29tcG9uZW50IGFzIGFueSkuYWRkRmlsdGVyKFxuICAgIC8vICAgYGZpbHRlcl8ke3RoaXMubWFrZWlkKDUpfWAsXG4gICAgLy8gICB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LmZpbHRlckV4cHJlc3Npb25GaWVsZExpc3QsXG4gICAgLy8gICB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LmZpbHRlclR5cGUsXG4gICAgLy8gICB0aGlzLmZpbHRlckNoaWxkXG4gICAgLy8gKTtcbiAgfVxuXG4gIGNvbnN0cnVjdFRyZWUoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnQuc2V0VXBEZWZhdWx0VHJlZSh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LnRyZWVJZGVudGlmaWVyKTtcbiAgICB0aGlzLnRyZWVTZXJ2aWNlPy5pbml0aWFsaXplKCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJzbWFydENvbXBvbmVudExheW91dD8uZXhwYW5kYWJsZTsgdGhlbiBleHBhbmRhYmxlOyBlbHNlIG5vcm1hbFwiPiA8L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNleHBhbmRhYmxlPlxuICA8c21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uXG4gICAgKm5nSWY9XCJleHBhbmRhYmxlU2VjdGlvblwiXG4gICAgW2RhdGFdPVwiZXhwYW5kYWJsZVNlY3Rpb25cIlxuICA+PC9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vcm1hbD5cbiAgPGRpdlxuICAgICpuZ0lmPVwic21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IHR5cGUoKS5Db250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cInNtYXJ0Q29tcG9uZW50TGF5b3V0Py5kaXJlY3Rpb24gPz8gJ3ZlcnRpY2FsJ1wiXG4gID5cbiAgICA8c21hcnQtY29tcG9uZW50LWxheW91dFxuICAgICAgW3NtYXJ0Q29tcG9uZW50TGF5b3V0XT1cImxheW91dFwiXG4gICAgICAqbmdGb3I9XCJsZXQgbGF5b3V0IG9mIHNtYXJ0Q29tcG9uZW50TGF5b3V0Py5jb21wb25lbnRzXCJcbiAgICA+PC9zbWFydC1jb21wb25lbnQtbGF5b3V0PlxuICA8L2Rpdj5cbiAgPHNtYXJ0Zm9ybSAjZm9ybSBbc21hcnRGb3JtXT1cInNtYXJ0Rm9ybVwiPjwvc21hcnRmb3JtPlxuICA8c21hcnQtZ3JpZCAjZ3JpZCBbc21hcnRHcmlkXT1cInNtYXJ0R3JpZFwiIFt1dWlkXT1cInV1aWQhXCI+PC9zbWFydC1ncmlkPlxuICA8IS0tIDxzbWFydC1maWx0ZXIgI2ZpbHRlciBbZmlsdGVyXT1cInNtYXJ0RmlsdGVyXCI+PC9zbWFydC1maWx0ZXI+IC0tPlxuICA8c21hcnQtdHJlZSBbdHJlZVNlcnZpY2VdPVwidHJlZVNlcnZpY2UhXCI+PC9zbWFydC10cmVlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,14 +1,15 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { SmartSessionModule } from './session/smart-session.module';
3
- import { SmartNgClientService } from './smart-ng-client.service';
4
- import { SmartViewContextModule } from './view-context/smart-view-context.module';
5
- import { SmartFileUploaderComponent } from './smart-client/smart-file-uploader/smart-file-uploader.component';
6
- import { SmartformModule } from '@smartbit4all/form';
7
2
  import { MatCommonModule } from '@angular/material/core';
8
3
  import { BrowserModule } from '@angular/platform-browser';
9
- import { SmartComponentLayoutComponent } from './smart-client/smart-component-layout/smart-component-layout.component';
10
- import { SmartGridModule } from '@smartbit4all/grid';
11
4
  import { SmartExpandableSectionModule } from '@smartbit4all/expandable-section';
5
+ import { SmartformModule } from '@smartbit4all/form';
6
+ import { SmartGridModule } from '@smartbit4all/grid';
7
+ import { SmarttreeModule } from '@smartbit4all/tree';
8
+ import { SmartSessionModule } from './session/smart-session.module';
9
+ import { SmartComponentLayoutComponent } from './smart-client/smart-component-layout/smart-component-layout.component';
10
+ import { SmartFileUploaderComponent } from './smart-client/smart-file-uploader/smart-file-uploader.component';
11
+ import { SmartNgClientService } from './smart-ng-client.service';
12
+ import { SmartViewContextModule } from './view-context/smart-view-context.module';
12
13
  import * as i0 from "@angular/core";
13
14
  export class SmartNgClientModule {
14
15
  }
@@ -19,7 +20,8 @@ SmartNgClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
19
20
  SmartViewContextModule,
20
21
  SmartformModule,
21
22
  SmartGridModule,
22
- SmartExpandableSectionModule], exports: [SmartSessionModule,
23
+ SmartExpandableSectionModule,
24
+ SmarttreeModule], exports: [SmartSessionModule,
23
25
  SmartViewContextModule,
24
26
  SmartFileUploaderComponent,
25
27
  SmartComponentLayoutComponent] });
@@ -31,6 +33,7 @@ SmartNgClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
31
33
  SmartformModule,
32
34
  SmartGridModule,
33
35
  SmartExpandableSectionModule,
36
+ SmarttreeModule,
34
37
  ], SmartSessionModule,
35
38
  SmartViewContextModule] });
36
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartNgClientModule, decorators: [{
@@ -45,6 +48,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
45
48
  SmartformModule,
46
49
  SmartGridModule,
47
50
  SmartExpandableSectionModule,
51
+ SmarttreeModule,
48
52
  ],
49
53
  exports: [
50
54
  SmartSessionModule,
@@ -55,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
55
59
  providers: [SmartNgClientService],
56
60
  }]
57
61
  }] });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmctY2xpZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LW5nLWNsaWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBcUJoRixNQUFNLE9BQU8sbUJBQW1COztpSEFBbkIsbUJBQW1CO2tIQUFuQixtQkFBbUIsaUJBbEJmLDBCQUEwQixFQUFFLDZCQUE2QixhQUV0RSxhQUFhO1FBQ2IsZUFBZTtRQUNmLGtCQUFrQjtRQUNsQixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLGVBQWU7UUFDZiw0QkFBNEIsYUFHNUIsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0QiwwQkFBMEI7UUFDMUIsNkJBQTZCO2tIQUlwQixtQkFBbUIsYUFGbkIsQ0FBQyxvQkFBb0IsQ0FBQyxZQWZ4QjtZQUNQLGFBQWE7WUFDYixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixlQUFlO1lBQ2YsZUFBZTtZQUNmLDRCQUE0QjtTQUM3QixFQUVDLGtCQUFrQjtRQUNsQixzQkFBc0I7NEZBTWIsbUJBQW1CO2tCQW5CL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSw2QkFBNkIsQ0FBQztvQkFDekUsT0FBTyxFQUFFO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLDZCQUE2QjtxQkFDOUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvbk1vZHVsZSB9IGZyb20gJy4vc2Vzc2lvbi9zbWFydC1zZXNzaW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBTbWFydE5nQ2xpZW50U2VydmljZSB9IGZyb20gJy4vc21hcnQtbmctY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRWaWV3Q29udGV4dE1vZHVsZSB9IGZyb20gJy4vdmlldy1jb250ZXh0L3NtYXJ0LXZpZXctY29udGV4dC5tb2R1bGUnO1xuaW1wb3J0IHsgU21hcnRGaWxlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LWNsaWVudC9zbWFydC1maWxlLXVwbG9hZGVyL3NtYXJ0LWZpbGUtdXBsb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNtYXJ0Zm9ybU1vZHVsZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWxheW91dC9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTbWFydEdyaWRNb2R1bGUgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2dyaWQnO1xuaW1wb3J0IHsgU21hcnRFeHBhbmRhYmxlU2VjdGlvbk1vZHVsZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZXhwYW5kYWJsZS1zZWN0aW9uJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU21hcnRGaWxlVXBsb2FkZXJDb21wb25lbnQsIFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIEJyb3dzZXJNb2R1bGUsXG4gICAgTWF0Q29tbW9uTW9kdWxlLFxuICAgIFNtYXJ0U2Vzc2lvbk1vZHVsZSxcbiAgICBTbWFydFZpZXdDb250ZXh0TW9kdWxlLFxuICAgIFNtYXJ0Zm9ybU1vZHVsZSxcbiAgICBTbWFydEdyaWRNb2R1bGUsXG4gICAgU21hcnRFeHBhbmRhYmxlU2VjdGlvbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNtYXJ0U2Vzc2lvbk1vZHVsZSxcbiAgICBTbWFydFZpZXdDb250ZXh0TW9kdWxlLFxuICAgIFNtYXJ0RmlsZVVwbG9hZGVyQ29tcG9uZW50LFxuICAgIFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtTbWFydE5nQ2xpZW50U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0TmdDbGllbnRNb2R1bGUge31cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmctY2xpZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LW5nLWNsaWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQXNCbEYsTUFBTSxPQUFPLG1CQUFtQjs7aUhBQW5CLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGlCQW5CZiwwQkFBMEIsRUFBRSw2QkFBNkIsYUFFdEUsYUFBYTtRQUNiLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLGVBQWU7UUFDZixlQUFlO1FBQ2YsNEJBQTRCO1FBQzVCLGVBQWUsYUFHZixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLDBCQUEwQjtRQUMxQiw2QkFBNkI7a0hBSXBCLG1CQUFtQixhQUZuQixDQUFDLG9CQUFvQixDQUFDLFlBaEJ4QjtZQUNQLGFBQWE7WUFDYixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixlQUFlO1lBQ2YsZUFBZTtZQUNmLDRCQUE0QjtZQUM1QixlQUFlO1NBQ2hCLEVBRUMsa0JBQWtCO1FBQ2xCLHNCQUFzQjs0RkFNYixtQkFBbUI7a0JBcEIvQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDBCQUEwQixFQUFFLDZCQUE2QixDQUFDO29CQUN6RSxPQUFPLEVBQUU7d0JBQ1AsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLDBCQUEwQjt3QkFDMUIsNkJBQTZCO3FCQUM5QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTbWFydEV4cGFuZGFibGVTZWN0aW9uTW9kdWxlIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9leHBhbmRhYmxlLXNlY3Rpb24nO1xuaW1wb3J0IHsgU21hcnRmb3JtTW9kdWxlIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9mb3JtJztcbmltcG9ydCB7IFNtYXJ0R3JpZE1vZHVsZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZ3JpZCc7XG5pbXBvcnQgeyBTbWFydHRyZWVNb2R1bGUgfSBmcm9tICdAc21hcnRiaXQ0YWxsL3RyZWUnO1xuaW1wb3J0IHsgU21hcnRTZXNzaW9uTW9kdWxlIH0gZnJvbSAnLi9zZXNzaW9uL3NtYXJ0LXNlc3Npb24ubW9kdWxlJztcbmltcG9ydCB7IFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWxheW91dC9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTbWFydEZpbGVVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtY2xpZW50L3NtYXJ0LWZpbGUtdXBsb2FkZXIvc21hcnQtZmlsZS11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU21hcnROZ0NsaWVudFNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LW5nLWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRNb2R1bGUgfSBmcm9tICcuL3ZpZXctY29udGV4dC9zbWFydC12aWV3LWNvbnRleHQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU21hcnRGaWxlVXBsb2FkZXJDb21wb25lbnQsIFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIEJyb3dzZXJNb2R1bGUsXG4gICAgTWF0Q29tbW9uTW9kdWxlLFxuICAgIFNtYXJ0U2Vzc2lvbk1vZHVsZSxcbiAgICBTbWFydFZpZXdDb250ZXh0TW9kdWxlLFxuICAgIFNtYXJ0Zm9ybU1vZHVsZSxcbiAgICBTbWFydEdyaWRNb2R1bGUsXG4gICAgU21hcnRFeHBhbmRhYmxlU2VjdGlvbk1vZHVsZSxcbiAgICBTbWFydHRyZWVNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTbWFydFNlc3Npb25Nb2R1bGUsXG4gICAgU21hcnRWaWV3Q29udGV4dE1vZHVsZSxcbiAgICBTbWFydEZpbGVVcGxvYWRlckNvbXBvbmVudCxcbiAgICBTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbU21hcnROZ0NsaWVudFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydE5nQ2xpZW50TW9kdWxlIHt9XG4iXX0=