@alfresco/adf-process-services-cloud 6.10.0-10113416697 → 6.10.0-10139601191

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.
@@ -46,7 +46,6 @@ export class DropdownCloudWidgetComponent extends WidgetComponent {
46
46
  this.variableOptionsFailed = false;
47
47
  this.previewState = false;
48
48
  this.filter$ = new BehaviorSubject('');
49
- this.defaultVariableName = '';
50
49
  this.defaultVariableOptionId = 'id';
51
50
  this.defaultVariableOptionLabel = 'name';
52
51
  this.defaultVariableOptionPath = 'data';
@@ -56,7 +55,6 @@ export class DropdownCloudWidgetComponent extends WidgetComponent {
56
55
  this.setPreviewState();
57
56
  this.checkFieldOptionsSource();
58
57
  this.updateOptions();
59
- this.setDefaultVariableConfig();
60
58
  }
61
59
  checkFieldOptionsSource() {
62
60
  switch (true) {
@@ -75,17 +73,6 @@ export class DropdownCloudWidgetComponent extends WidgetComponent {
75
73
  break;
76
74
  }
77
75
  }
78
- setDefaultVariableConfig() {
79
- if (!this.field.json) {
80
- return;
81
- }
82
- this.field.json.variableConfig = {
83
- variableName: this.field.json?.variableConfig?.variableName || this.defaultVariableName,
84
- optionsPath: this.field.json?.variableConfig?.optionsPath || this.defaultVariableOptionPath,
85
- optionsId: this.field.json?.variableConfig?.optionsId || this.defaultVariableOptionId,
86
- optionsLabel: this.field.json?.variableConfig?.optionsLabel || this.defaultVariableOptionLabel
87
- };
88
- }
89
76
  persistFieldOptionsFromVariable() {
90
77
  const optionsPath = this.field?.variableConfig?.optionsPath ?? this.defaultVariableOptionPath;
91
78
  const variableName = this.field?.variableConfig?.variableName;
@@ -390,4 +377,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
390
377
  '(select)': 'event($event)'
391
378
  }, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-dropdown-widget {{field.className}}\"\n [class.adf-invalid]=\"(!field.isValid && isTouched()) || isRestApiFailed\" [class.adf-readonly]=\"field.readOnly\" [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div class=\"adf-dropdown-widget-top-labels\">\n <label class=\"adf-label\" [attr.for]=\"field.id\" [class.adf-left-label]=\"field.leftLabels\">{{field.name | translate }}<span class=\"adf-asterisk\"\n *ngIf=\"isRequired()\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field>\n <mat-label *ngIf=\"getDefaultOption(list$ | async) as defaultOption\">\n {{ defaultOption.name }}\n </mat-label>\n <mat-select class=\"adf-select\"\n [id]=\"field.id\"\n [(ngModel)]=\"field.value\"\n [disabled]=\"field.readOnly\"\n [compareWith]=\"compareDropdownValues\"\n (ngModelChange)=\"selectionChangedForField(field)\"\n [title]=\"field.tooltip\"\n [required]=\"isRequired()\"\n panelClass=\"adf-select-filter\"\n (blur)=\"markAsTouched()\"\n [multiple]=\"field.hasMultipleValues\">\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"filter$.next($event)\"></adf-select-filter-input>\n\n <mat-option *ngFor=\"let opt of list$ | async\"\n [value]=\"getOptionValue(opt, field.value)\"\n [id]=\"opt.id\">{{opt.name}}\n </mat-option>\n <mat-option id=\"readonlyOption\" *ngIf=\"isReadOnlyType()\" [value]=\"field.value\">{{field.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n <div *ngIf=\"!previewState\">\n <error-widget [error]=\"field.validationSummary\"></error-widget>\n <error-widget class=\"adf-dropdown-required-message\" *ngIf=\"showRequiredMessage()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n <error-widget class=\"adf-dropdown-failed-message\" *ngIf=\"isRestApiFailed\"\n required=\"{{ 'FORM.FIELD.REST_API_FAILED' | translate: { hostname: restApiHostName } }}\"></error-widget>\n <error-widget class=\"adf-dropdown-failed-message\" *ngIf=\"variableOptionsFailed\"\n required=\"{{ 'FORM.FIELD.VARIABLE_DROPDOWN_OPTIONS_FAILED' | translate }}\"></error-widget>\n </div>\n </div>\n</div>\n", styles: [".adf-dropdown-widget{width:100%;margin-top:13px}.adf-dropdown-widget .adf-select{padding-top:0;width:100%}.adf-dropdown-widget .adf-select-filter{font-size:var(--theme-body-1-font-size)}.adf-dropdown-widget-select{width:100%}.adf-dropdown-widget-dropdown-required-message .adf-error-container,.adf-dropdown-widget-dropdown-failed-message .adf-error-container{margin-top:1px}\n"] }]
392
379
  }], ctorParameters: function () { return [{ type: i1.FormService }, { type: i2.FormCloudService }, { type: i1.AppConfigService }]; } });
393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY2xvdWQud2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9mb3JtL2NvbXBvbmVudHMvd2lkZ2V0cy9kcm9wZG93bi9kcm9wZG93bi1jbG91ZC53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWNsb3VkLndpZGdldC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUdkLGNBQWMsRUFDZCxXQUFXLEVBR1gsZUFBZSxFQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFHeEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLEVBQUUsRUFBRSxPQUFPO0lBQ1gsSUFBSSxFQUFFLGVBQWU7Q0FDeEIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUVuQyx1REFBdUQ7QUFtQnZELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxlQUFlO0lBaUI3RCxZQUFtQixXQUF3QixFQUFVLGdCQUFrQyxF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Qjs4R0FBNUIsNEJBQTRCLCtWQzNEekMsdW1GQTJDQTs0RkRnQmEsNEJBQTRCO2tCQWpCeEMsU0FBUzsrQkFDSSx1QkFBdUIsUUFHM0I7d0JBQ0YsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLFFBQVEsRUFBRSxlQUFlO3dCQUN6QixVQUFVLEVBQUUsZUFBZTt3QkFDM0IsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLFdBQVcsRUFBRSxlQUFlO3dCQUM1QixZQUFZLEVBQUUsZUFBZTt3QkFDN0IsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLFdBQVcsRUFBRSxlQUFlO3dCQUM1QixVQUFVLEVBQUUsZUFBZTtxQkFDOUIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBGb3JtRmllbGRFdmVudCxcbiAgICBGb3JtRmllbGRNb2RlbCxcbiAgICBGb3JtRmllbGRPcHRpb24sXG4gICAgRm9ybUZpZWxkVHlwZXMsXG4gICAgRm9ybVNlcnZpY2UsXG4gICAgUnVsZUVudHJ5LFxuICAgIFZhcmlhYmxlQ29uZmlnLFxuICAgIFdpZGdldENvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgRm9ybUNsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0tY2xvdWQuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFza1ZhcmlhYmxlQ2xvdWQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdGFzay12YXJpYWJsZS1jbG91ZC5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09QVElPTiA9IHtcbiAgICBpZDogJ2VtcHR5JyxcbiAgICBuYW1lOiAnQ2hvb3NlIG9uZS4uLidcbn07XG5leHBvcnQgY29uc3QgSElERV9GSUxURVJfTElNSVQgPSA1O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHJvcGRvd24tY2xvdWQtd2lkZ2V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tY2xvdWQud2lkZ2V0Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLWNsb3VkLndpZGdldC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhjaGFuZ2UpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c2luKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW5wdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGludmFsaWQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKHNlbGVjdCknOiAnZXZlbnQoJGV2ZW50KSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25DbG91ZFdpZGdldENvbXBvbmVudCBleHRlbmRzIFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICB0eXBlSWQgPSAnRHJvcGRvd25DbG91ZFdpZGdldENvbXBvbmVudCc7XG4gICAgc2hvd0lucHV0RmlsdGVyID0gZmFsc2U7XG4gICAgaXNSZXN0QXBpRmFpbGVkID0gZmFsc2U7XG4gICAgdmFyaWFibGVPcHRpb25zRmFpbGVkID0gZmFsc2U7XG4gICAgcHJldmlld1N0YXRlID0gZmFsc2U7XG4gICAgcmVzdEFwaUhvc3ROYW1lOiBzdHJpbmc7XG4gICAgbGlzdCQ6IE9ic2VydmFibGU8Rm9ybUZpZWxkT3B0aW9uW10+O1xuICAgIGZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VmFyaWFibGVOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VmFyaWFibGVPcHRpb25JZCA9ICdpZCc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VmFyaWFibGVPcHRpb25MYWJlbCA9ICduYW1lJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRWYXJpYWJsZU9wdGlvblBhdGggPSAnZGF0YSc7XG5cbiAgICBwcm90ZWN0ZWQgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLCBwcml2YXRlIGZvcm1DbG91ZFNlcnZpY2U6IEZvcm1DbG91ZFNlcnZpY2UsIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGZvcm1TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRQcmV2aWV3U3RhdGUoKTtcbiAgICAgICAgdGhpcy5jaGVja0ZpZWxkT3B0aW9uc1NvdXJjZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFyaWFibGVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrRmllbGRPcHRpb25zU291cmNlKCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5pc1JlYWRPbmx5KCk6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRoaXMuaGFzUmVzdFVybCgpICYmICF0aGlzLmlzTGlua2VkV2lkZ2V0KCk6XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0RmllbGRPcHRpb25zRnJvbVJlc3RBcGkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSB0aGlzLmlzTGlua2VkV2lkZ2V0KCk6XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkRmllbGRPcHRpb25zRm9yTGlua2VkV2lkZ2V0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgdGhpcy5pc1ZhcmlhYmxlT3B0aW9uVHlwZSgpOlxuICAgICAgICAgICAgICAgIHRoaXMucGVyc2lzdEZpZWxkT3B0aW9uc0Zyb21WYXJpYWJsZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0VmFyaWFibGVDb25maWcoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5maWVsZC5qc29uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpZWxkLmpzb24udmFyaWFibGVDb25maWcgPSB7XG4gICAgICAgICAgICB2YXJpYWJsZU5hbWU6IHRoaXMuZmllbGQuanNvbj8udmFyaWFibGVDb25maWc/LnZhcmlhYmxlTmFtZSB8fCB0aGlzLmRlZmF1bHRWYXJpYWJsZU5hbWUsXG4gICAgICAgICAgICBvcHRpb25zUGF0aDogdGhpcy5maWVsZC5qc29uPy52YXJpYWJsZUNvbmZpZz8ub3B0aW9uc1BhdGggfHwgdGhpcy5kZWZhdWx0VmFyaWFibGVPcHRpb25QYXRoLFxuICAgICAgICAgICAgb3B0aW9uc0lkOiB0aGlzLmZpZWxkLmpzb24/LnZhcmlhYmxlQ29uZmlnPy5vcHRpb25zSWQgfHwgdGhpcy5kZWZhdWx0VmFyaWFibGVPcHRpb25JZCxcbiAgICAgICAgICAgIG9wdGlvbnNMYWJlbDogdGhpcy5maWVsZC5qc29uPy52YXJpYWJsZUNvbmZpZz8ub3B0aW9uc0xhYmVsIHx8IHRoaXMuZGVmYXVsdFZhcmlhYmxlT3B0aW9uTGFiZWxcbiAgICAgICAgfSBhcyBWYXJpYWJsZUNvbmZpZztcbiAgICB9XG5cbiAgICBwcml2YXRlIHBlcnNpc3RGaWVsZE9wdGlvbnNGcm9tVmFyaWFibGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNQYXRoID0gdGhpcy5maWVsZD8udmFyaWFibGVDb25maWc/Lm9wdGlvbnNQYXRoID8/IHRoaXMuZGVmYXVsdFZhcmlhYmxlT3B0aW9uUGF0aDtcbiAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gdGhpcy5maWVsZD8udmFyaWFibGVDb25maWc/LnZhcmlhYmxlTmFtZTtcbiAgICAgICAgY29uc3QgcHJvY2Vzc1ZhcmlhYmxlcyA9IHRoaXMuZmllbGQ/LmZvcm0/LnByb2Nlc3NWYXJpYWJsZXM7XG4gICAgICAgIGNvbnN0IGZvcm1WYXJpYWJsZXMgPSB0aGlzLmZpZWxkPy5mb3JtPy52YXJpYWJsZXM7XG5cbiAgICAgICAgY29uc3QgZHJvcGRvd25PcHRpb25zID0gdGhpcy5nZXRPcHRpb25zRnJvbVZhcmlhYmxlKHByb2Nlc3NWYXJpYWJsZXMsIGZvcm1WYXJpYWJsZXMsIHZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgaWYgKGRyb3Bkb3duT3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhcmlhYmxlT3B0aW9uczogRm9ybUZpZWxkT3B0aW9uW10gPSB0aGlzLmdldE9wdGlvbnNGcm9tUGF0aChkcm9wZG93bk9wdGlvbnMsIG9wdGlvbnNQYXRoKTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQub3B0aW9ucyA9IGZvcm1WYXJpYWJsZU9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnJlc2V0SW52YWxpZFZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoYCR7dmFyaWFibGVOYW1lfSBub3QgZm91bmRgKTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlT3B0aW9uc0ZhaWxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnNGcm9tUGF0aChkYXRhOiBhbnksIHBhdGg6IHN0cmluZyk6IEZvcm1GaWVsZE9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0lkID0gdGhpcy5maWVsZD8udmFyaWFibGVDb25maWc/Lm9wdGlvbnNJZCA/PyB0aGlzLmRlZmF1bHRWYXJpYWJsZU9wdGlvbklkO1xuICAgICAgICBjb25zdCBvcHRpb25zTGFiZWwgPSB0aGlzLmZpZWxkPy52YXJpYWJsZUNvbmZpZz8ub3B0aW9uc0xhYmVsID8/IHRoaXMuZGVmYXVsdFZhcmlhYmxlT3B0aW9uTGFiZWw7XG5cbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgY29uc3QgY3VycmVudFByb3BlcnR5ID0gcHJvcGVydGllcy5zaGlmdCgpO1xuXG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGN1cnJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoYCR7Y3VycmVudFByb3BlcnR5fSBub3QgZm91bmQgaW4gJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVPcHRpb25zRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5lc3RlZERhdGEgPSBkYXRhW2N1cnJlbnRQcm9wZXJ0eV07XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmVzdGVkRGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE9wdGlvbnNGcm9tQXJyYXkobmVzdGVkRGF0YSwgb3B0aW9uc0lkLCBvcHRpb25zTGFiZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uc0Zyb21QYXRoKG5lc3RlZERhdGEsIHByb3BlcnRpZXMuam9pbignLicpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnNGcm9tQXJyYXkobmVzdGVkRGF0YTogYW55W10sIGlkOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcpOiBGb3JtRmllbGRPcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBuZXN0ZWREYXRhLm1hcCgoaXRlbSkgPT4gdGhpcy5jcmVhdGVPcHRpb24oaXRlbSwgaWQsIGxhYmVsKSk7XG4gICAgICAgIGNvbnN0IGhhc0ludmFsaWRPcHRpb24gPSBvcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gIW9wdGlvbik7XG5cbiAgICAgICAgaWYgKGhhc0ludmFsaWRPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVPcHRpb25zRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFyaWFibGVPcHRpb25zRmFpbGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3B0aW9uKGl0ZW06IGFueSwgaWQ6IHN0cmluZywgbGFiZWw6IHN0cmluZyk6IEZvcm1GaWVsZE9wdGlvbiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbjogRm9ybUZpZWxkT3B0aW9uID0ge1xuICAgICAgICAgICAgaWQ6IGl0ZW1baWRdLFxuICAgICAgICAgICAgbmFtZTogaXRlbVtsYWJlbF1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIW9wdGlvbi5pZCB8fCAhb3B0aW9uLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoYCdpZCcgb3IgJ2xhYmVsJyBpcyBub3QgcHJvcGVybHkgZGVmaW5lZGApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPcHRpb25zRnJvbVZhcmlhYmxlKFxuICAgICAgICBwcm9jZXNzVmFyaWFibGVzOiBUYXNrVmFyaWFibGVDbG91ZFtdLFxuICAgICAgICBmb3JtVmFyaWFibGVzOiBUYXNrVmFyaWFibGVDbG91ZFtdLFxuICAgICAgICB2YXJpYWJsZU5hbWU6IHN0cmluZ1xuICAgICk6IFRhc2tWYXJpYWJsZUNsb3VkIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc1ZhcmlhYmxlRHJvcGRvd25PcHRpb25zOiBUYXNrVmFyaWFibGVDbG91ZCA9IHRoaXMuZ2V0VmFyaWFibGVWYWx1ZUJ5TmFtZShwcm9jZXNzVmFyaWFibGVzLCB2YXJpYWJsZU5hbWUpO1xuICAgICAgICBjb25zdCBmb3JtVmFyaWFibGVEcm9wZG93bk9wdGlvbnM6IFRhc2tWYXJpYWJsZUNsb3VkID0gdGhpcy5nZXRWYXJpYWJsZVZhbHVlQnlOYW1lKGZvcm1WYXJpYWJsZXMsIHZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NWYXJpYWJsZURyb3Bkb3duT3B0aW9ucyA/PyBmb3JtVmFyaWFibGVEcm9wZG93bk9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYXJpYWJsZVZhbHVlQnlOYW1lKHZhcmlhYmxlczogVGFza1ZhcmlhYmxlQ2xvdWRbXSwgdmFyaWFibGVOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGVzPy5maW5kKCh2YXJpYWJsZTogVGFza1ZhcmlhYmxlQ2xvdWQpID0+IHZhcmlhYmxlPy5uYW1lID09PSBgdmFyaWFibGVzLiR7dmFyaWFibGVOYW1lfWAgfHwgdmFyaWFibGU/Lm5hbWUgPT09IHZhcmlhYmxlTmFtZSlcbiAgICAgICAgICAgID8udmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhcmlhYmxlT3B0aW9uVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQ/Lm9wdGlvblR5cGUgPT09ICd2YXJpYWJsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwZXJzaXN0RmllbGRPcHRpb25zRnJvbVJlc3RBcGkoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRSZXN0VHlwZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0UmVzdEFwaUVycm9yTWVzc2FnZSgpO1xuICAgICAgICAgICAgY29uc3QgYm9keVBhcmFtID0gdGhpcy5idWlsZEJvZHlQYXJhbSgpO1xuICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldFJlc3RXaWRnZXREYXRhKHRoaXMuZmllbGQuZm9ybS5pZCwgdGhpcy5maWVsZC5pZCwgYm9keVBhcmFtKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQ6IEZvcm1GaWVsZE9wdGlvbltdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0UmVzdEFwaUVycm9yTWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5vcHRpb25zID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRJbnZhbGlkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFJlc3RBcGlPcHRpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEJvZHlQYXJhbSgpOiBhbnkge1xuICAgICAgICBjb25zdCBib2R5UGFyYW0gPSBPYmplY3QuYXNzaWduKHt9KTtcbiAgICAgICAgaWYgKHRoaXMuaXNMaW5rZWRXaWRnZXQoKSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50V2lkZ2V0VmFsdWUgPSB0aGlzLmdldFBhcmVudFdpZGdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRXaWRnZXRJZCA9IHRoaXMuZ2V0TGlua2VkV2lkZ2V0SWQoKTtcbiAgICAgICAgICAgIGJvZHlQYXJhbVtwYXJlbnRXaWRnZXRJZF0gPSBwYXJlbnRXaWRnZXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYm9keVBhcmFtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZEZpZWxkT3B0aW9uc0ZvckxpbmtlZFdpZGdldCgpIHtcbiAgICAgICAgY29uc3QgcGFyZW50V2lkZ2V0VmFsdWUgPSB0aGlzLmdldFBhcmVudFdpZGdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMucGFyZW50VmFsdWVDaGFuZ2VkKHBhcmVudFdpZGdldFZhbHVlKTtcblxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZvcm1GaWVsZFZhbHVlQ2hhbmdlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudDogRm9ybUZpZWxkRXZlbnQpID0+IHRoaXMuaXNGb3JtRmllbGRFdmVudE9mVHlwZURyb3Bkb3duKGV2ZW50KSAmJiB0aGlzLmlzUGFyZW50Rm9ybUZpZWxkRXZlbnQoZXZlbnQpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEZvcm1GaWVsZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVPZlBhcmVudFdpZGdldCA9IGV2ZW50LmZpZWxkLnZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50VmFsdWVDaGFuZ2VkKHZhbHVlT2ZQYXJlbnRXaWRnZXQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYXJlbnRXaWRnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJlbnRXaWRnZXRJZCA9IHRoaXMuZ2V0TGlua2VkV2lkZ2V0SWQoKTtcbiAgICAgICAgY29uc3QgcGFyZW50V2lkZ2V0ID0gdGhpcy5nZXRGb3JtRmllbGRCeUlkKHBhcmVudFdpZGdldElkKTtcbiAgICAgICAgcmV0dXJuIHBhcmVudFdpZGdldD8udmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJlbnRWYWx1ZUNoYW5nZWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgJiYgIXRoaXMuaXNOb25lVmFsdWVTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZFJlc3RUeXBlKCkgPyB0aGlzLnBlcnNpc3RGaWVsZE9wdGlvbnNGcm9tUmVzdEFwaSgpIDogdGhpcy5wZXJzaXN0RmllbGRPcHRpb25zRnJvbU1hbnVhbExpc3QodmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNOb25lVmFsdWVTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRSZXN0QXBpRXJyb3JNZXNzYWdlKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0T3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5yZXNldEludmFsaWRWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZC5vcHRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLnJlc2V0SW52YWxpZFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm9uZVZhbHVlU2VsZWN0ZWQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvcm1GaWVsZEJ5SWQoZmllbGRJZCk6IEZvcm1GaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQuZm9ybS5nZXRGb3JtRmllbGRzKCkuZmlsdGVyKChmaWVsZDogRm9ybUZpZWxkTW9kZWwpID0+IGZpZWxkLmlkID09PSBmaWVsZElkKVswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBlcnNpc3RGaWVsZE9wdGlvbnNGcm9tTWFudWFsTGlzdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc1J1bGVFbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzRW50cmllcyA9IHRoaXMuZmllbGQucnVsZS5lbnRyaWVzO1xuICAgICAgICAgICAgcnVsZXNFbnRyaWVzLmZvckVhY2goKHJ1bGVFbnRyeTogUnVsZUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVFbnRyeS5rZXkgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQub3B0aW9ucyA9IHJ1bGVFbnRyeS5vcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0SW52YWxpZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudXBkYXRlRm9ybSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldEludmFsaWRWYWx1ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRWYWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRWYWx1ZSgpIHtcbiAgICAgICAgdGhpcy5maWVsZC52YWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWRGb3JGaWVsZCh0aGlzLmZpZWxkKTtcbiAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zKCk7XG4gICAgICAgIHRoaXMuZmllbGQudXBkYXRlRm9ybSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZFZhbHVlICYmIHRoaXMuaXNTZWxlY3RlZFZhbHVlSW5PcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGVkVmFsdWVJbk9wdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbklkTGlzdCA9IFsuLi50aGlzLmZpZWxkLm9wdGlvbnNdLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uaWQpO1xuICAgICAgICAgICAgY29uc3QgZmllbGRWYWx1ZUlkcyA9IHRoaXMuZmllbGRWYWx1ZS5tYXAoKHZhbHVlT3B0aW9uKSA9PiB2YWx1ZU9wdGlvbi5pZCk7XG4gICAgICAgICAgICByZXR1cm4gZmllbGRWYWx1ZUlkcy5ldmVyeSgodmFsdWVPcHRpb25JZCkgPT4gb3B0aW9uSWRMaXN0LmluY2x1ZGVzKHZhbHVlT3B0aW9uSWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4udGhpcy5maWVsZC5vcHRpb25zXS5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLmlkKS5pbmNsdWRlcyh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGZpZWxkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQudmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNSdWxlRW50cmllcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWVsZC5ydWxlLmVudHJpZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRPcHRpb25zKCkge1xuICAgICAgICB0aGlzLmZpZWxkLm9wdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgc2VsZWN0aW9uQ2hhbmdlZEZvckZpZWxkKGZpZWxkOiBGb3JtRmllbGRNb2RlbCkge1xuICAgICAgICBjb25zdCBmb3JtRmllbGRWYWx1ZUNoYW5nZWRFdmVudCA9IG5ldyBGb3JtRmllbGRFdmVudChmaWVsZC5mb3JtLCBmaWVsZCk7XG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZm9ybUZpZWxkVmFsdWVDaGFuZ2VkLm5leHQoZm9ybUZpZWxkVmFsdWVDaGFuZ2VkRXZlbnQpO1xuICAgICAgICB0aGlzLm9uRmllbGRDaGFuZ2VkKGZpZWxkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUGFyZW50Rm9ybUZpZWxkRXZlbnQoZXZlbnQ6IEZvcm1GaWVsZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldmVudC5maWVsZC5pZCA9PT0gdGhpcy5nZXRMaW5rZWRXaWRnZXRJZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGb3JtRmllbGRFdmVudE9mVHlwZURyb3Bkb3duKGV2ZW50OiBGb3JtRmllbGRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZXZlbnQuZmllbGQudHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuRFJPUERPV047XG4gICAgfVxuXG4gICAgaXNMaW5rZWRXaWRnZXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZ2V0TGlua2VkV2lkZ2V0SWQoKTtcbiAgICB9XG5cbiAgICBnZXRMaW5rZWRXaWRnZXRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZD8ucnVsZT8ucnVsZU9uO1xuICAgIH1cblxuICAgIGNvbXBhcmVEcm9wZG93blZhbHVlcyhvcHQxOiBGb3JtRmllbGRPcHRpb24gfCBzdHJpbmcsIG9wdDI6IEZvcm1GaWVsZE9wdGlvbiB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIW9wdDEgfHwgIW9wdDIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0MSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIG9wdDIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0MSA9PT0gb3B0Mi5pZCB8fCBvcHQxID09PSBvcHQyLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG9wdDEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcHQyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdDEuaWQgPT09IG9wdDIgfHwgb3B0MS5uYW1lID09PSBvcHQyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHQxID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3B0MiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHQxLmlkID09PSBvcHQyLmlkIHx8IG9wdDEubmFtZSA9PT0gb3B0Mi5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdDEgPT09IG9wdDI7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uVmFsdWUob3B0aW9uOiBGb3JtRmllbGRPcHRpb24sIGZpZWxkVmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IEZvcm1GaWVsZE9wdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmhhc011bHRpcGxlVmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9wdGlvblZhbHVlOiBzdHJpbmcgPSAnJztcbiAgICAgICAgaWYgKG9wdGlvbi5pZCA9PT0gREVGQVVMVF9PUFRJT04uaWQpIHtcbiAgICAgICAgICAgIG9wdGlvblZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbi5uYW1lICE9PSBmaWVsZFZhbHVlKSB7XG4gICAgICAgICAgICBvcHRpb25WYWx1ZSA9IG9wdGlvbi5pZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvblZhbHVlID0gb3B0aW9uLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvblZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFJlc3RUeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5vcHRpb25UeXBlID09PSAncmVzdCcgJiYgdGhpcy5oYXNSZXN0VXJsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQcmV2aWV3U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld1N0YXRlID0gdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFByZXZpZXdTdGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xuICAgICAgICBpZiAoIXRoaXMucHJldmlld1N0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLndpZGdldEVycm9yLmVtaXQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1JlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5yZWFkT25seTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1Jlc3RVcmwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZmllbGQucmVzdFVybDtcbiAgICB9XG5cbiAgICBpc1JlYWRPbmx5VHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQudHlwZSA9PT0gJ3JlYWRvbmx5JztcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0JCA9IG9mKHRoaXMuZmllbGQub3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNob3dJbnB1dEZpbHRlciA9IHRoaXMuZmllbGQub3B0aW9ucy5sZW5ndGggPiB0aGlzLmFwcENvbmZpZy5nZXQ8bnVtYmVyPignZm9ybS5kcm9wRG93bkZpbHRlckxpbWl0JywgSElERV9GSUxURVJfTElNSVQpO1xuICAgICAgICB0aGlzLmxpc3QkID0gY29tYmluZUxhdGVzdChbb2YodGhpcy5maWVsZC5vcHRpb25zKSwgdGhpcy5maWx0ZXIkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2l0ZW1zLCBzZWFyY2hdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWFyY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVzZXRSZXN0QXBpRXJyb3JNZXNzYWdlKCkge1xuICAgICAgICB0aGlzLmlzUmVzdEFwaUZhaWxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc3RBcGlIb3N0TmFtZSA9ICcnO1xuICAgIH1cblxuICAgIHJlc2V0UmVzdEFwaU9wdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuZmllbGQub3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5pc1Jlc3RBcGlGYWlsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlc3RBcGlIb3N0TmFtZSA9IHRoaXMuZ2V0UmVzdFVybEhvc3ROYW1lKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZXN0VXJsSG9zdE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVVJMKHRoaXMuZmllbGQ/LnJlc3RVcmwpLmhvc3RuYW1lO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkPy5yZXN0VXJsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd1JlcXVpcmVkTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLmlzSW52YWxpZEZpZWxkUmVxdWlyZWQoKSB8fCAodGhpcy5pc05vbmVWYWx1ZVNlbGVjdGVkKHRoaXMuZmllbGQudmFsdWUpICYmIHRoaXMuaXNSZXF1aXJlZCgpKSkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNUb3VjaGVkKCkgJiZcbiAgICAgICAgICAgICF0aGlzLmlzUmVzdEFwaUZhaWxlZCAmJlxuICAgICAgICAgICAgIXRoaXMudmFyaWFibGVPcHRpb25zRmFpbGVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdE9wdGlvbihvcHRpb25zOiBGb3JtRmllbGRPcHRpb25bXSk6IEZvcm1GaWVsZE9wdGlvbiB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmZpbmQoKG9wdGlvbjogRm9ybUZpZWxkT3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IERFRkFVTFRfT1BUSU9OLmlkKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWRyb3Bkb3duLXdpZGdldCB7e2ZpZWxkLmNsYXNzTmFtZX19XCJcbiAgICAgW2NsYXNzLmFkZi1pbnZhbGlkXT1cIighZmllbGQuaXNWYWxpZCAmJiBpc1RvdWNoZWQoKSkgfHwgaXNSZXN0QXBpRmFpbGVkXCIgW2NsYXNzLmFkZi1yZWFkb25seV09XCJmaWVsZC5yZWFkT25seVwiIFtjbGFzcy5hZGYtbGVmdC1sYWJlbC1pbnB1dC1jb250YWluZXJdPVwiZmllbGQubGVmdExhYmVsc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtZHJvcGRvd24td2lkZ2V0LXRvcC1sYWJlbHNcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWRmLWxhYmVsXCIgW2F0dHIuZm9yXT1cImZpZWxkLmlkXCIgW2NsYXNzLmFkZi1sZWZ0LWxhYmVsXT1cImZpZWxkLmxlZnRMYWJlbHNcIj57e2ZpZWxkLm5hbWUgfCB0cmFuc2xhdGUgfX08c3BhbiBjbGFzcz1cImFkZi1hc3Rlcmlza1wiXG4gICAgICAgICAgICAqbmdJZj1cImlzUmVxdWlyZWQoKVwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImdldERlZmF1bHRPcHRpb24obGlzdCQgfCBhc3luYykgYXMgZGVmYXVsdE9wdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IGRlZmF1bHRPcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImFkZi1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRHJvcGRvd25WYWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlZEZvckZpZWxkKGZpZWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmllbGQudG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M9XCJhZGYtc2VsZWN0LWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZpZWxkLmhhc011bHRpcGxlVmFsdWVzXCI+XG4gICAgICAgICAgICAgICAgPGFkZi1zZWxlY3QtZmlsdGVyLWlucHV0ICpuZ0lmPVwic2hvd0lucHV0RmlsdGVyXCIgKGNoYW5nZSk9XCJmaWx0ZXIkLm5leHQoJGV2ZW50KVwiPjwvYWRmLXNlbGVjdC1maWx0ZXItaW5wdXQ+XG5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGxpc3QkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRPcHRpb25WYWx1ZShvcHQsIGZpZWxkLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIm9wdC5pZFwiPnt7b3B0Lm5hbWV9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBpZD1cInJlYWRvbmx5T3B0aW9uXCIgKm5nSWY9XCJpc1JlYWRPbmx5VHlwZSgpXCIgW3ZhbHVlXT1cImZpZWxkLnZhbHVlXCI+e3tmaWVsZC52YWx1ZX19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXByZXZpZXdTdGF0ZVwiPlxuICAgICAgICAgICAgPGVycm9yLXdpZGdldCBbZXJyb3JdPVwiZmllbGQudmFsaWRhdGlvblN1bW1hcnlcIj48L2Vycm9yLXdpZGdldD5cbiAgICAgICAgICAgIDxlcnJvci13aWRnZXQgY2xhc3M9XCJhZGYtZHJvcGRvd24tcmVxdWlyZWQtbWVzc2FnZVwiICpuZ0lmPVwic2hvd1JlcXVpcmVkTWVzc2FnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPVwie3sgJ0ZPUk0uRklFTEQuUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XCI+PC9lcnJvci13aWRnZXQ+XG4gICAgICAgICAgICA8ZXJyb3Itd2lkZ2V0IGNsYXNzPVwiYWRmLWRyb3Bkb3duLWZhaWxlZC1tZXNzYWdlXCIgKm5nSWY9XCJpc1Jlc3RBcGlGYWlsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5SRVNUX0FQSV9GQUlMRUQnIHwgdHJhbnNsYXRlOiB7IGhvc3RuYW1lOiByZXN0QXBpSG9zdE5hbWUgfSB9fVwiPjwvZXJyb3Itd2lkZ2V0PlxuICAgICAgICAgICAgPGVycm9yLXdpZGdldCBjbGFzcz1cImFkZi1kcm9wZG93bi1mYWlsZWQtbWVzc2FnZVwiICpuZ0lmPVwidmFyaWFibGVPcHRpb25zRmFpbGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPVwie3sgJ0ZPUk0uRklFTEQuVkFSSUFCTEVfRFJPUERPV05fT1BUSU9OU19GQUlMRUQnIHwgdHJhbnNsYXRlIH19XCI+PC9lcnJvci13aWRnZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY2xvdWQud2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9mb3JtL2NvbXBvbmVudHMvd2lkZ2V0cy9kcm9wZG93bi9kcm9wZG93bi1jbG91ZC53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWNsb3VkLndpZGdldC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUdkLGNBQWMsRUFDZCxXQUFXLEVBRVgsZUFBZSxFQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFHeEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLEVBQUUsRUFBRSxPQUFPO0lBQ1gsSUFBSSxFQUFFLGVBQWU7Q0FDeEIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUVuQyx1REFBdUQ7QUFtQnZELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxlQUFlO0lBZ0I3RCxZQUFtQixXQUF3QixFQUFVLGdCQUFrQyxF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LENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUNyQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FDOUIsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUEwQjtRQUN2QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUF1QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RixDQUFDOzswSEFqWlEsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsK1ZDMUR6Qyx1bUZBMkNBOzRGRGVhLDRCQUE0QjtrQkFqQnhDLFNBQVM7K0JBQ0ksdUJBQXVCLFFBRzNCO3dCQUNGLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixRQUFRLEVBQUUsZUFBZTt3QkFDekIsVUFBVSxFQUFFLGVBQWU7d0JBQzNCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsWUFBWSxFQUFFLGVBQWU7d0JBQzdCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsVUFBVSxFQUFFLGVBQWU7cUJBQzlCLGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgRm9ybUZpZWxkRXZlbnQsXG4gICAgRm9ybUZpZWxkTW9kZWwsXG4gICAgRm9ybUZpZWxkT3B0aW9uLFxuICAgIEZvcm1GaWVsZFR5cGVzLFxuICAgIEZvcm1TZXJ2aWNlLFxuICAgIFJ1bGVFbnRyeSxcbiAgICBXaWRnZXRDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEZvcm1DbG91ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhc2tWYXJpYWJsZUNsb3VkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PUFRJT04gPSB7XG4gICAgaWQ6ICdlbXB0eScsXG4gICAgbmFtZTogJ0Nob29zZSBvbmUuLi4nXG59O1xuZXhwb3J0IGNvbnN0IEhJREVfRklMVEVSX0xJTUlUID0gNTtcblxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Ryb3Bkb3duLWNsb3VkLXdpZGdldCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWNsb3VkLndpZGdldC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1jbG91ZC53aWRnZXQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoY2hhbmdlKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNpbiknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGlucHV0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnZhbGlkKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhzZWxlY3QpJzogJ2V2ZW50KCRldmVudCknXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ2xvdWRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgdHlwZUlkID0gJ0Ryb3Bkb3duQ2xvdWRXaWRnZXRDb21wb25lbnQnO1xuICAgIHNob3dJbnB1dEZpbHRlciA9IGZhbHNlO1xuICAgIGlzUmVzdEFwaUZhaWxlZCA9IGZhbHNlO1xuICAgIHZhcmlhYmxlT3B0aW9uc0ZhaWxlZCA9IGZhbHNlO1xuICAgIHByZXZpZXdTdGF0ZSA9IGZhbHNlO1xuICAgIHJlc3RBcGlIb3N0TmFtZTogc3RyaW5nO1xuICAgIGxpc3QkOiBPYnNlcnZhYmxlPEZvcm1GaWVsZE9wdGlvbltdPjtcbiAgICBmaWx0ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFZhcmlhYmxlT3B0aW9uSWQgPSAnaWQnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFZhcmlhYmxlT3B0aW9uTGFiZWwgPSAnbmFtZSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VmFyaWFibGVPcHRpb25QYXRoID0gJ2RhdGEnO1xuXG4gICAgcHJvdGVjdGVkIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSwgcHJpdmF0ZSBmb3JtQ2xvdWRTZXJ2aWNlOiBGb3JtQ2xvdWRTZXJ2aWNlLCBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSkge1xuICAgICAgICBzdXBlcihmb3JtU2VydmljZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0UHJldmlld1N0YXRlKCk7XG4gICAgICAgIHRoaXMuY2hlY2tGaWVsZE9wdGlvbnNTb3VyY2UoKTtcbiAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0ZpZWxkT3B0aW9uc1NvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIHRoaXMuaXNSZWFkT25seSgpOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0aGlzLmhhc1Jlc3RVcmwoKSAmJiAhdGhpcy5pc0xpbmtlZFdpZGdldCgpOlxuICAgICAgICAgICAgICAgIHRoaXMucGVyc2lzdEZpZWxkT3B0aW9uc0Zyb21SZXN0QXBpKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgdGhpcy5pc0xpbmtlZFdpZGdldCgpOlxuICAgICAgICAgICAgICAgIHRoaXMubG9hZEZpZWxkT3B0aW9uc0ZvckxpbmtlZFdpZGdldCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIHRoaXMuaXNWYXJpYWJsZU9wdGlvblR5cGUoKTpcbiAgICAgICAgICAgICAgICB0aGlzLnBlcnNpc3RGaWVsZE9wdGlvbnNGcm9tVmFyaWFibGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGVyc2lzdEZpZWxkT3B0aW9uc0Zyb21WYXJpYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1BhdGggPSB0aGlzLmZpZWxkPy52YXJpYWJsZUNvbmZpZz8ub3B0aW9uc1BhdGggPz8gdGhpcy5kZWZhdWx0VmFyaWFibGVPcHRpb25QYXRoO1xuICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSB0aGlzLmZpZWxkPy52YXJpYWJsZUNvbmZpZz8udmFyaWFibGVOYW1lO1xuICAgICAgICBjb25zdCBwcm9jZXNzVmFyaWFibGVzID0gdGhpcy5maWVsZD8uZm9ybT8ucHJvY2Vzc1ZhcmlhYmxlcztcbiAgICAgICAgY29uc3QgZm9ybVZhcmlhYmxlcyA9IHRoaXMuZmllbGQ/LmZvcm0/LnZhcmlhYmxlcztcblxuICAgICAgICBjb25zdCBkcm9wZG93bk9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnNGcm9tVmFyaWFibGUocHJvY2Vzc1ZhcmlhYmxlcywgZm9ybVZhcmlhYmxlcywgdmFyaWFibGVOYW1lKTtcblxuICAgICAgICBpZiAoZHJvcGRvd25PcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFyaWFibGVPcHRpb25zOiBGb3JtRmllbGRPcHRpb25bXSA9IHRoaXMuZ2V0T3B0aW9uc0Zyb21QYXRoKGRyb3Bkb3duT3B0aW9ucywgb3B0aW9uc1BhdGgpO1xuICAgICAgICAgICAgdGhpcy5maWVsZC5vcHRpb25zID0gZm9ybVZhcmlhYmxlT3B0aW9ucztcbiAgICAgICAgICAgIHRoaXMucmVzZXRJbnZhbGlkVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudXBkYXRlRm9ybSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihgJHt2YXJpYWJsZU5hbWV9IG5vdCBmb3VuZGApO1xuICAgICAgICAgICAgdGhpcy5yZXNldE9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVPcHRpb25zRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9uc0Zyb21QYXRoKGRhdGE6IGFueSwgcGF0aDogc3RyaW5nKTogRm9ybUZpZWxkT3B0aW9uW10ge1xuICAgICAgICBjb25zdCBvcHRpb25zSWQgPSB0aGlzLmZpZWxkPy52YXJpYWJsZUNvbmZpZz8ub3B0aW9uc0lkID8/IHRoaXMuZGVmYXVsdFZhcmlhYmxlT3B0aW9uSWQ7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbCA9IHRoaXMuZmllbGQ/LnZhcmlhYmxlQ29uZmlnPy5vcHRpb25zTGFiZWwgPz8gdGhpcy5kZWZhdWx0VmFyaWFibGVPcHRpb25MYWJlbDtcblxuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBjb25zdCBjdXJyZW50UHJvcGVydHkgPSBwcm9wZXJ0aWVzLnNoaWZ0KCk7XG5cbiAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwgY3VycmVudFByb3BlcnR5KSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihgJHtjdXJyZW50UHJvcGVydHl9IG5vdCBmb3VuZCBpbiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgICAgICAgICAgdGhpcy52YXJpYWJsZU9wdGlvbnNGYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmVzdGVkRGF0YSA9IGRhdGFbY3VycmVudFByb3BlcnR5XTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXN0ZWREYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uc0Zyb21BcnJheShuZXN0ZWREYXRhLCBvcHRpb25zSWQsIG9wdGlvbnNMYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25zRnJvbVBhdGgobmVzdGVkRGF0YSwgcHJvcGVydGllcy5qb2luKCcuJykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9uc0Zyb21BcnJheShuZXN0ZWREYXRhOiBhbnlbXSwgaWQ6IHN0cmluZywgbGFiZWw6IHN0cmluZyk6IEZvcm1GaWVsZE9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IG5lc3RlZERhdGEubWFwKChpdGVtKSA9PiB0aGlzLmNyZWF0ZU9wdGlvbihpdGVtLCBpZCwgbGFiZWwpKTtcbiAgICAgICAgY29uc3QgaGFzSW52YWxpZE9wdGlvbiA9IG9wdGlvbnMuc29tZSgob3B0aW9uKSA9PiAhb3B0aW9uKTtcblxuICAgICAgICBpZiAoaGFzSW52YWxpZE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy52YXJpYWJsZU9wdGlvbnNGYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YXJpYWJsZU9wdGlvbnNGYWlsZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPcHRpb24oaXRlbTogYW55LCBpZDogc3RyaW5nLCBsYWJlbDogc3RyaW5nKTogRm9ybUZpZWxkT3B0aW9uIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uOiBGb3JtRmllbGRPcHRpb24gPSB7XG4gICAgICAgICAgICBpZDogaXRlbVtpZF0sXG4gICAgICAgICAgICBuYW1lOiBpdGVtW2xhYmVsXVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghb3B0aW9uLmlkIHx8ICFvcHRpb24ubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihgJ2lkJyBvciAnbGFiZWwnIGlzIG5vdCBwcm9wZXJseSBkZWZpbmVkYCk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnNGcm9tVmFyaWFibGUoXG4gICAgICAgIHByb2Nlc3NWYXJpYWJsZXM6IFRhc2tWYXJpYWJsZUNsb3VkW10sXG4gICAgICAgIGZvcm1WYXJpYWJsZXM6IFRhc2tWYXJpYWJsZUNsb3VkW10sXG4gICAgICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nXG4gICAgKTogVGFza1ZhcmlhYmxlQ2xvdWQge1xuICAgICAgICBjb25zdCBwcm9jZXNzVmFyaWFibGVEcm9wZG93bk9wdGlvbnM6IFRhc2tWYXJpYWJsZUNsb3VkID0gdGhpcy5nZXRWYXJpYWJsZVZhbHVlQnlOYW1lKHByb2Nlc3NWYXJpYWJsZXMsIHZhcmlhYmxlTmFtZSk7XG4gICAgICAgIGNvbnN0IGZvcm1WYXJpYWJsZURyb3Bkb3duT3B0aW9uczogVGFza1ZhcmlhYmxlQ2xvdWQgPSB0aGlzLmdldFZhcmlhYmxlVmFsdWVCeU5hbWUoZm9ybVZhcmlhYmxlcywgdmFyaWFibGVOYW1lKTtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc1ZhcmlhYmxlRHJvcGRvd25PcHRpb25zID8/IGZvcm1WYXJpYWJsZURyb3Bkb3duT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlVmFsdWVCeU5hbWUodmFyaWFibGVzOiBUYXNrVmFyaWFibGVDbG91ZFtdLCB2YXJpYWJsZU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXM/LmZpbmQoKHZhcmlhYmxlOiBUYXNrVmFyaWFibGVDbG91ZCkgPT4gdmFyaWFibGU/Lm5hbWUgPT09IGB2YXJpYWJsZXMuJHt2YXJpYWJsZU5hbWV9YCB8fCB2YXJpYWJsZT8ubmFtZSA9PT0gdmFyaWFibGVOYW1lKVxuICAgICAgICAgICAgPy52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFyaWFibGVPcHRpb25UeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZD8ub3B0aW9uVHlwZSA9PT0gJ3ZhcmlhYmxlJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHBlcnNpc3RGaWVsZE9wdGlvbnNGcm9tUmVzdEFwaSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZFJlc3RUeXBlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRSZXN0QXBpRXJyb3JNZXNzYWdlKCk7XG4gICAgICAgICAgICBjb25zdCBib2R5UGFyYW0gPSB0aGlzLmJ1aWxkQm9keVBhcmFtKCk7XG4gICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0UmVzdFdpZGdldERhdGEodGhpcy5maWVsZC5mb3JtLmlkLCB0aGlzLmZpZWxkLmlkLCBib2R5UGFyYW0pXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdDogRm9ybUZpZWxkT3B0aW9uW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRSZXN0QXBpRXJyb3JNZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLm9wdGlvbnMgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudXBkYXRlRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEludmFsaWRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0UmVzdEFwaU9wdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkQm9keVBhcmFtKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGJvZHlQYXJhbSA9IE9iamVjdC5hc3NpZ24oe30pO1xuICAgICAgICBpZiAodGhpcy5pc0xpbmtlZFdpZGdldCgpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRXaWRnZXRWYWx1ZSA9IHRoaXMuZ2V0UGFyZW50V2lkZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFdpZGdldElkID0gdGhpcy5nZXRMaW5rZWRXaWRnZXRJZCgpO1xuICAgICAgICAgICAgYm9keVBhcmFtW3BhcmVudFdpZGdldElkXSA9IHBhcmVudFdpZGdldFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBib2R5UGFyYW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRmllbGRPcHRpb25zRm9yTGlua2VkV2lkZ2V0KCkge1xuICAgICAgICBjb25zdCBwYXJlbnRXaWRnZXRWYWx1ZSA9IHRoaXMuZ2V0UGFyZW50V2lkZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5wYXJlbnRWYWx1ZUNoYW5nZWQocGFyZW50V2lkZ2V0VmFsdWUpO1xuXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZm9ybUZpZWxkVmFsdWVDaGFuZ2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBGb3JtRmllbGRFdmVudCkgPT4gdGhpcy5pc0Zvcm1GaWVsZEV2ZW50T2ZUeXBlRHJvcGRvd24oZXZlbnQpICYmIHRoaXMuaXNQYXJlbnRGb3JtRmllbGRFdmVudChldmVudCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRm9ybUZpZWxkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZU9mUGFyZW50V2lkZ2V0ID0gZXZlbnQuZmllbGQudmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRWYWx1ZUNoYW5nZWQodmFsdWVPZlBhcmVudFdpZGdldCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhcmVudFdpZGdldFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHBhcmVudFdpZGdldElkID0gdGhpcy5nZXRMaW5rZWRXaWRnZXRJZCgpO1xuICAgICAgICBjb25zdCBwYXJlbnRXaWRnZXQgPSB0aGlzLmdldEZvcm1GaWVsZEJ5SWQocGFyZW50V2lkZ2V0SWQpO1xuICAgICAgICByZXR1cm4gcGFyZW50V2lkZ2V0Py52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcmVudFZhbHVlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiAhdGhpcy5pc05vbmVWYWx1ZVNlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkUmVzdFR5cGUoKSA/IHRoaXMucGVyc2lzdEZpZWxkT3B0aW9uc0Zyb21SZXN0QXBpKCkgOiB0aGlzLnBlcnNpc3RGaWVsZE9wdGlvbnNGcm9tTWFudWFsTGlzdCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc05vbmVWYWx1ZVNlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFJlc3RBcGlFcnJvck1lc3NhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0SW52YWxpZFZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLm9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRJbnZhbGlkVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb25lVmFsdWVTZWxlY3RlZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9ybUZpZWxkQnlJZChmaWVsZElkKTogRm9ybUZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5mb3JtLmdldEZvcm1GaWVsZHMoKS5maWx0ZXIoKGZpZWxkOiBGb3JtRmllbGRNb2RlbCkgPT4gZmllbGQuaWQgPT09IGZpZWxkSWQpWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGVyc2lzdEZpZWxkT3B0aW9uc0Zyb21NYW51YWxMaXN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUnVsZUVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgcnVsZXNFbnRyaWVzID0gdGhpcy5maWVsZC5ydWxlLmVudHJpZXM7XG4gICAgICAgICAgICBydWxlc0VudHJpZXMuZm9yRWFjaCgocnVsZUVudHJ5OiBSdWxlRW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUVudHJ5LmtleSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5vcHRpb25zID0gcnVsZUVudHJ5Lm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRJbnZhbGlkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC51cGRhdGVGb3JtKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0SW52YWxpZFZhbHVlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFZhbHVlKCkge1xuICAgICAgICB0aGlzLmZpZWxkLnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZvckZpZWxkKHRoaXMuZmllbGQpO1xuICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5maWVsZC51cGRhdGVGb3JtKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkVmFsdWUgJiYgdGhpcy5pc1NlbGVjdGVkVmFsdWVJbk9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2VsZWN0ZWRWYWx1ZUluT3B0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5maWVsZFZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSWRMaXN0ID0gWy4uLnRoaXMuZmllbGQub3B0aW9uc10ubWFwKChvcHRpb24pID0+IG9wdGlvbi5pZCk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlSWRzID0gdGhpcy5maWVsZFZhbHVlLm1hcCgodmFsdWVPcHRpb24pID0+IHZhbHVlT3B0aW9uLmlkKTtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZFZhbHVlSWRzLmV2ZXJ5KCh2YWx1ZU9wdGlvbklkKSA9PiBvcHRpb25JZExpc3QuaW5jbHVkZXModmFsdWVPcHRpb25JZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi50aGlzLmZpZWxkLm9wdGlvbnNdLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uaWQpLmluY2x1ZGVzKHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZmllbGRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1J1bGVFbnRyaWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpZWxkLnJ1bGUuZW50cmllcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldE9wdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuZmllbGQub3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2VkRm9yRmllbGQoZmllbGQ6IEZvcm1GaWVsZE1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZFZhbHVlQ2hhbmdlZEV2ZW50ID0gbmV3IEZvcm1GaWVsZEV2ZW50KGZpZWxkLmZvcm0sIGZpZWxkKTtcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRmllbGRWYWx1ZUNoYW5nZWQubmV4dChmb3JtRmllbGRWYWx1ZUNoYW5nZWRFdmVudCk7XG4gICAgICAgIHRoaXMub25GaWVsZENoYW5nZWQoZmllbGQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNQYXJlbnRGb3JtRmllbGRFdmVudChldmVudDogRm9ybUZpZWxkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmZpZWxkLmlkID09PSB0aGlzLmdldExpbmtlZFdpZGdldElkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Zvcm1GaWVsZEV2ZW50T2ZUeXBlRHJvcGRvd24oZXZlbnQ6IEZvcm1GaWVsZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldmVudC5maWVsZC50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EUk9QRE9XTjtcbiAgICB9XG5cbiAgICBpc0xpbmtlZFdpZGdldCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5nZXRMaW5rZWRXaWRnZXRJZCgpO1xuICAgIH1cblxuICAgIGdldExpbmtlZFdpZGdldElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkPy5ydWxlPy5ydWxlT247XG4gICAgfVxuXG4gICAgY29tcGFyZURyb3Bkb3duVmFsdWVzKG9wdDE6IEZvcm1GaWVsZE9wdGlvbiB8IHN0cmluZywgb3B0MjogRm9ybUZpZWxkT3B0aW9uIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghb3B0MSB8fCAhb3B0Mikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHQxID09PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3B0MiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHQxID09PSBvcHQyLmlkIHx8IG9wdDEgPT09IG9wdDIubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0MSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9wdDIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0MS5pZCA9PT0gb3B0MiB8fCBvcHQxLm5hbWUgPT09IG9wdDI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG9wdDEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcHQyID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdDEuaWQgPT09IG9wdDIuaWQgfHwgb3B0MS5uYW1lID09PSBvcHQyLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0MSA9PT0gb3B0MjtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25WYWx1ZShvcHRpb246IEZvcm1GaWVsZE9wdGlvbiwgZmllbGRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgRm9ybUZpZWxkT3B0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuaGFzTXVsdGlwbGVWYWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9uVmFsdWU6IHN0cmluZyA9ICcnO1xuICAgICAgICBpZiAob3B0aW9uLmlkID09PSBERUZBVUxUX09QVElPTi5pZCkge1xuICAgICAgICAgICAgb3B0aW9uVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9uLm5hbWUgIT09IGZpZWxkVmFsdWUpIHtcbiAgICAgICAgICAgIG9wdGlvblZhbHVlID0gb3B0aW9uLmlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9uVmFsdWUgPSBvcHRpb24ubmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3B0aW9uVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkUmVzdFR5cGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkLm9wdGlvblR5cGUgPT09ICdyZXN0JyAmJiB0aGlzLmhhc1Jlc3RVcmwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFByZXZpZXdTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3U3RhdGUgPSB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0UHJldmlld1N0YXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy5wcmV2aWV3U3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0RXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUmVhZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkLnJlYWRPbmx5O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzUmVzdFVybCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWVsZC5yZXN0VXJsO1xuICAgIH1cblxuICAgIGlzUmVhZE9ubHlUeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC50eXBlID09PSAncmVhZG9ubHknO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkT25seSgpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QkID0gb2YodGhpcy5maWVsZC5vcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd0lucHV0RmlsdGVyID0gdGhpcy5maWVsZC5vcHRpb25zLmxlbmd0aCA+IHRoaXMuYXBwQ29uZmlnLmdldDxudW1iZXI+KCdmb3JtLmRyb3BEb3duRmlsdGVyTGltaXQnLCBISURFX0ZJTFRFUl9MSU1JVCk7XG4gICAgICAgIHRoaXMubGlzdCQgPSBjb21iaW5lTGF0ZXN0KFtvZih0aGlzLmZpZWxkLm9wdGlvbnMpLCB0aGlzLmZpbHRlciRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbaXRlbXMsIHNlYXJjaF0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXNldFJlc3RBcGlFcnJvck1lc3NhZ2UoKSB7XG4gICAgICAgIHRoaXMuaXNSZXN0QXBpRmFpbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzdEFwaUhvc3ROYW1lID0gJyc7XG4gICAgfVxuXG4gICAgcmVzZXRSZXN0QXBpT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5maWVsZC5vcHRpb25zID0gW107XG4gICAgICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLmlzUmVzdEFwaUZhaWxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVzdEFwaUhvc3ROYW1lID0gdGhpcy5nZXRSZXN0VXJsSG9zdE5hbWUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlc3RVcmxIb3N0TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBVUkwodGhpcy5maWVsZD8ucmVzdFVybCkuaG9zdG5hbWU7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQ/LnJlc3RVcmw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93UmVxdWlyZWRNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMuaXNJbnZhbGlkRmllbGRSZXF1aXJlZCgpIHx8ICh0aGlzLmlzTm9uZVZhbHVlU2VsZWN0ZWQodGhpcy5maWVsZC52YWx1ZSkgJiYgdGhpcy5pc1JlcXVpcmVkKCkpKSAmJlxuICAgICAgICAgICAgdGhpcy5pc1RvdWNoZWQoKSAmJlxuICAgICAgICAgICAgIXRoaXMuaXNSZXN0QXBpRmFpbGVkICYmXG4gICAgICAgICAgICAhdGhpcy52YXJpYWJsZU9wdGlvbnNGYWlsZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0T3B0aW9uKG9wdGlvbnM6IEZvcm1GaWVsZE9wdGlvbltdKTogRm9ybUZpZWxkT3B0aW9uIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uOiBGb3JtRmllbGRPcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gREVGQVVMVF9PUFRJT04uaWQpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtZHJvcGRvd24td2lkZ2V0IHt7ZmllbGQuY2xhc3NOYW1lfX1cIlxuICAgICBbY2xhc3MuYWRmLWludmFsaWRdPVwiKCFmaWVsZC5pc1ZhbGlkICYmIGlzVG91Y2hlZCgpKSB8fCBpc1Jlc3RBcGlGYWlsZWRcIiBbY2xhc3MuYWRmLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRPbmx5XCIgW2NsYXNzLmFkZi1sZWZ0LWxhYmVsLWlucHV0LWNvbnRhaW5lcl09XCJmaWVsZC5sZWZ0TGFiZWxzXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1kcm9wZG93bi13aWRnZXQtdG9wLWxhYmVsc1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhZGYtbGFiZWxcIiBbYXR0ci5mb3JdPVwiZmllbGQuaWRcIiBbY2xhc3MuYWRmLWxlZnQtbGFiZWxdPVwiZmllbGQubGVmdExhYmVsc1wiPnt7ZmllbGQubmFtZSB8IHRyYW5zbGF0ZSB9fTxzcGFuIGNsYXNzPVwiYWRmLWFzdGVyaXNrXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZ2V0RGVmYXVsdE9wdGlvbihsaXN0JCB8IGFzeW5jKSBhcyBkZWZhdWx0T3B0aW9uXCI+XG4gICAgICAgICAgICAgICAge3sgZGVmYXVsdE9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwiYWRmLXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVEcm9wZG93blZhbHVlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2VkRm9yRmllbGQoZmllbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWVsZC50b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxDbGFzcz1cImFkZi1zZWxlY3QtZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmllbGQuaGFzTXVsdGlwbGVWYWx1ZXNcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXNlbGVjdC1maWx0ZXItaW5wdXQgKm5nSWY9XCJzaG93SW5wdXRGaWx0ZXJcIiAoY2hhbmdlKT1cImZpbHRlciQubmV4dCgkZXZlbnQpXCI+PC9hZGYtc2VsZWN0LWZpbHRlci1pbnB1dD5cblxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2YgbGlzdCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldE9wdGlvblZhbHVlKG9wdCwgZmllbGQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwib3B0LmlkXCI+e3tvcHQubmFtZX19XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGlkPVwicmVhZG9ubHlPcHRpb25cIiAqbmdJZj1cImlzUmVhZE9ubHlUeXBlKClcIiBbdmFsdWVdPVwiZmllbGQudmFsdWVcIj57e2ZpZWxkLnZhbHVlfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhcHJldmlld1N0YXRlXCI+XG4gICAgICAgICAgICA8ZXJyb3Itd2lkZ2V0IFtlcnJvcl09XCJmaWVsZC52YWxpZGF0aW9uU3VtbWFyeVwiPjwvZXJyb3Itd2lkZ2V0PlxuICAgICAgICAgICAgPGVycm9yLXdpZGdldCBjbGFzcz1cImFkZi1kcm9wZG93bi1yZXF1aXJlZC1tZXNzYWdlXCIgKm5nSWY9XCJzaG93UmVxdWlyZWRNZXNzYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5SRVFVSVJFRCcgfCB0cmFuc2xhdGUgfX1cIj48L2Vycm9yLXdpZGdldD5cbiAgICAgICAgICAgIDxlcnJvci13aWRnZXQgY2xhc3M9XCJhZGYtZHJvcGRvd24tZmFpbGVkLW1lc3NhZ2VcIiAqbmdJZj1cImlzUmVzdEFwaUZhaWxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD1cInt7ICdGT1JNLkZJRUxELlJFU1RfQVBJX0ZBSUxFRCcgfCB0cmFuc2xhdGU6IHsgaG9zdG5hbWU6IHJlc3RBcGlIb3N0TmFtZSB9IH19XCI+PC9lcnJvci13aWRnZXQ+XG4gICAgICAgICAgICA8ZXJyb3Itd2lkZ2V0IGNsYXNzPVwiYWRmLWRyb3Bkb3duLWZhaWxlZC1tZXNzYWdlXCIgKm5nSWY9XCJ2YXJpYWJsZU9wdGlvbnNGYWlsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5WQVJJQUJMRV9EUk9QRE9XTl9PUFRJT05TX0ZBSUxFRCcgfCB0cmFuc2xhdGUgfX1cIj48L2Vycm9yLXdpZGdldD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -7436,7 +7436,6 @@ class DropdownCloudWidgetComponent extends WidgetComponent {
7436
7436
  this.variableOptionsFailed = false;
7437
7437
  this.previewState = false;
7438
7438
  this.filter$ = new BehaviorSubject('');
7439
- this.defaultVariableName = '';
7440
7439
  this.defaultVariableOptionId = 'id';
7441
7440
  this.defaultVariableOptionLabel = 'name';
7442
7441
  this.defaultVariableOptionPath = 'data';
@@ -7446,7 +7445,6 @@ class DropdownCloudWidgetComponent extends WidgetComponent {
7446
7445
  this.setPreviewState();
7447
7446
  this.checkFieldOptionsSource();
7448
7447
  this.updateOptions();
7449
- this.setDefaultVariableConfig();
7450
7448
  }
7451
7449
  checkFieldOptionsSource() {
7452
7450
  switch (true) {
@@ -7465,18 +7463,6 @@ class DropdownCloudWidgetComponent extends WidgetComponent {
7465
7463
  break;
7466
7464
  }
7467
7465
  }
7468
- setDefaultVariableConfig() {
7469
- var _a, _b, _c, _d, _e, _f, _g, _h;
7470
- if (!this.field.json) {
7471
- return;
7472
- }
7473
- this.field.json.variableConfig = {
7474
- variableName: ((_b = (_a = this.field.json) === null || _a === void 0 ? void 0 : _a.variableConfig) === null || _b === void 0 ? void 0 : _b.variableName) || this.defaultVariableName,
7475
- optionsPath: ((_d = (_c = this.field.json) === null || _c === void 0 ? void 0 : _c.variableConfig) === null || _d === void 0 ? void 0 : _d.optionsPath) || this.defaultVariableOptionPath,
7476
- optionsId: ((_f = (_e = this.field.json) === null || _e === void 0 ? void 0 : _e.variableConfig) === null || _f === void 0 ? void 0 : _f.optionsId) || this.defaultVariableOptionId,
7477
- optionsLabel: ((_h = (_g = this.field.json) === null || _g === void 0 ? void 0 : _g.variableConfig) === null || _h === void 0 ? void 0 : _h.optionsLabel) || this.defaultVariableOptionLabel
7478
- };
7479
- }
7480
7466
  persistFieldOptionsFromVariable() {
7481
7467
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
7482
7468
  const optionsPath = (_c = (_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.variableConfig) === null || _b === void 0 ? void 0 : _b.optionsPath) !== null && _c !== void 0 ? _c : this.defaultVariableOptionPath;