@sd-angular/core 1.0.92 → 1.0.95

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.
@@ -56,6 +56,7 @@ export class SdChip {
56
56
  this.sdChange = new EventEmitter();
57
57
  this.sdUpdate = new EventEmitter();
58
58
  this.chipSelected = new EventEmitter();
59
+ this.isBluring = false;
59
60
  this.isFocused = false;
60
61
  this.inputControl = new FormControl();
61
62
  this.formControl = new SdFormControl();
@@ -204,6 +205,12 @@ export class SdChip {
204
205
  }
205
206
  this.inputControl.setValue('');
206
207
  };
208
+ this.onClickChip = ($event, item) => {
209
+ $event.stopPropagation();
210
+ $event.stopImmediatePropagation();
211
+ item.isSelected = !item.isSelected;
212
+ this.focus();
213
+ };
207
214
  this.onRemove = (item) => {
208
215
  var _a;
209
216
  const values = (_a = this.formControl.value) !== null && _a !== void 0 ? _a : [];
@@ -297,14 +304,20 @@ export class SdChip {
297
304
  // }
298
305
  this.onFocus = () => {
299
306
  this.isFocused = true;
307
+ this.isBluring = false;
300
308
  this.inputControl.setValue('');
301
309
  // this.inputControl.updateValueAndValidity();
302
310
  };
303
311
  this.onBlur = () => {
304
- this.isFocused = false;
305
- this.inputControl.setValue('', {
306
- emitEvent: false
307
- });
312
+ this.isBluring = true;
313
+ setTimeout(() => {
314
+ if (this.isBluring) {
315
+ this.isFocused = false;
316
+ this.inputControl.setValue('', {
317
+ emitEvent: false
318
+ });
319
+ }
320
+ }, 100);
308
321
  };
309
322
  this.onClick = () => {
310
323
  var _a;
@@ -316,6 +329,7 @@ export class SdChip {
316
329
  };
317
330
  this.focus = () => {
318
331
  this.isFocused = true;
332
+ this.isBluring = false;
319
333
  setTimeout(() => {
320
334
  var _a, _b, _c;
321
335
  (_a = this.autocompleteTrigger) === null || _a === void 0 ? void 0 : _a.openPanel();
@@ -498,7 +512,7 @@ _name = new WeakMap(), _form = new WeakMap(), _addable = new WeakMap(), _allItem
498
512
  SdChip.decorators = [
499
513
  { type: Component, args: [{
500
514
  selector: 'sd-chip',
501
- template: "<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"c-md\" [ngClass]=\"{'c-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\" appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list [formControl]=\"formControl\" #chipList>\r\n <ng-container *ngFor=\"let item of selectedItems | async\">\r\n <mat-chip *ngIf=\"item\" [selectable]=\"selectable\" [removable]=\"removable\" (removed)=\"onRemove(item)\"\r\n [selected]=\"item.isSelected\" (selectionChange)=\"select(item)\" [disabled]=\"inputControl.disabled\"\r\n (click)=\"item.isSelected = !item.isSelected\">\r\n <ng-container *ngIf=\"sdChipDisplay?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdChipDisplay.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"!sdChipDisplay?.templateRef\">{{item[displayField] || item[valueField] || item}}</span>\r\n <mat-icon *ngIf=\"!inputControl.disabled && item | sdRemovableChip:removable\" matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n <input #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"onAdd($event)\" autocomplete=\"off\" [errorStateMatcher]=\"matcher\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" matInput #input>\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event)\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"displayField ? item[displayField] : item\">\r\n {{ displayField ? item[displayField] : item }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>",
515
+ template: "<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"c-md\" [ngClass]=\"{'c-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\" appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list [formControl]=\"formControl\" #chipList>\r\n <ng-container *ngFor=\"let item of selectedItems | async\">\r\n <mat-chip *ngIf=\"item\" [selectable]=\"selectable\" [removable]=\"removable\" (removed)=\"onRemove(item)\"\r\n [selected]=\"item.isSelected\" (selectionChange)=\"select(item)\" [disabled]=\"inputControl.disabled\"\r\n (click)=\"onClickChip($event, item)\">\r\n <ng-container *ngIf=\"sdChipDisplay?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdChipDisplay.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"!sdChipDisplay?.templateRef\">{{item[displayField] || item[valueField] || item}}</span>\r\n <mat-icon *ngIf=\"!inputControl.disabled && item | sdRemovableChip:removable\" matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n <input #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"onAdd($event)\" autocomplete=\"off\" [errorStateMatcher]=\"matcher\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" matInput #input>\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event)\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"displayField ? item[displayField] : item\">\r\n {{ displayField ? item[displayField] : item }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>",
502
516
  changeDetection: ChangeDetectionStrategy.OnPush,
503
517
  styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep mat-form-field.c-md .mat-form-field-infix{min-height:43.5px;padding:2px 0}:host ::ng-deep mat-form-field.c-md .mat-standard-chip{min-height:26px;padding:7px 10px}:host ::ng-deep mat-form-field.c-md .mat-standard-chip.mat-chip-with-trailing-icon{padding:7px 7px 7px 10px}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]
504
518
  },] }
@@ -535,4 +549,4 @@ SdChip.propDecorators = {
535
549
  sdView: [{ type: ContentChild, args: [SdViewDefDirective,] }],
536
550
  sdChipDisplay: [{ type: ContentChild, args: [SdChipDisplayDef,] }]
537
551
  };
538
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2NoaXAvIiwic291cmNlcyI6WyJzcmMvbGliL2NoaXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBR1osaUJBQWlCLEVBRWpCLFlBQVksRUFDWix1QkFBdUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQTRDLFVBQVUsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvSCxPQUFPLEVBQWMsWUFBWSxFQUFXLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekYsT0FBTyxFQUFpRCxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3ZILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RSxNQUFNLHVCQUF1QjtJQUMzQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFJLENBQUM7SUFDakQsWUFBWSxDQUFDLE9BQTJCLEVBQUUsSUFBd0M7O1FBQ2hGLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFD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QkFFTixTQUFTLFNBQUMsT0FBTzs4QkFDakIsU0FBUyxTQUFDLE1BQU07dUJBQ2hCLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2tDQUN0QyxTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7cUJBQ2xFLFlBQVksU0FBQyxrQkFBa0I7NEJBQy9CLFlBQVksU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXQsIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IE5nRm9ybSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdXRpbGl0eSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgU2RDaGlwVXBkYXRlIH0gZnJvbSAnLi9jaGlwLm1vZGVsJztcclxuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgU2RDaGlwRGlzcGxheURlZiB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1jaGlwLWRpc3BsYXktZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkRm9ybUNvbnRyb2wsIFNkVmlld0RlZkRpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuXHJcbmNsYXNzIFNkQ2hpcEVycm90U3RhdGVNYXRjaGVyIGltcGxlbWVudHMgRXJyb3JTdGF0ZU1hdGNoZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7IH1cclxuICBpc0Vycm9yU3RhdGUoY29udHJvbDogRm9ybUNvbnRyb2wgfCBudWxsLCBmb3JtOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBOZ0Zvcm0gfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpc1N1Ym1pdHRlZCA9IGZvcm0gJiYgZm9ybS5zdWJtaXR0ZWQ7XHJcbiAgICByZXR1cm4gISEodGhpcy5mb3JtQ29udHJvbD8uaW52YWxpZCAmJiAodGhpcy5mb3JtQ29udHJvbD8uZGlydHkgfHwgdGhpcy5mb3JtQ29udHJvbD8udG91Y2hlZCB8fCBpc1N1Ym1pdHRlZCkpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1jaGlwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hpcC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZENoaXAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgI25hbWUgPSB1dWlkLnY0KCk7XHJcbiAgQElucHV0KCkgc2V0IG5hbWUodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy4jbmFtZSA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcbiAgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG4gIHNlbGVjdGFibGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbGcnO1xyXG4gICNmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc2V0IGZvcm0odmFsOiBOZ0Zvcm0gfCBGb3JtR3JvdXApIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWwuZm9ybTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICNhZGRhYmxlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNldCBhZGRhYmxlKHZhbDogJycgfCBib29sZWFuKSB7XHJcbiAgICB0aGlzLiNhZGRhYmxlID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzcGxheUZpZWxkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICByZW1vdmFibGU6IGJvb2xlYW4gfCAoKGl0ZW06IGFueSkgPT4gYm9vbGVhbikgPSB0cnVlO1xyXG4gIEBJbnB1dCgncmVtb3ZhYmxlJykgc2V0IF9yZW1vdmFibGUodmFsOiAnJyB8IGJvb2xlYW4gfCAoKGl0ZW06IGFueSkgPT4gYm9vbGVhbikpIHtcclxuICAgIHRoaXMucmVtb3ZhYmxlID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgZGlzYWJsZUVycm9yTWVzc2FnZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnZGlzYWJsZUVycm9yTWVzc2FnZScpIHNldCBfZGlzYWJsZUVycm9yTWVzc2FnZSh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5kaXNhYmxlRXJyb3JNZXNzYWdlID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgLy8gQElucHV0KCkgc2V0IGl0ZW1zKGl0ZW1zOiB1bmRlZmluZWQgfCBhbnlbXSkge1xyXG4gIC8vICAgaWYgKCFpdGVtcykge1xyXG4gIC8vICAgICB0aGlzLiNpdGVtcyA9IFtdO1xyXG4gIC8vICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xyXG4gIC8vICAgICB0aGlzLiNpdGVtcyA9IGl0ZW1zLmZpbHRlcihlID0+IChlID8/ICcnKS50b1N0cmluZygpLnRyaW0oKSAhPT0gJycpO1xyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgdGhpcy4jaXRlbXMgPSBpdGVtcztcclxuICAvLyAgIH1cclxuICAvLyAgIHRoaXMuaW5wdXRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAvLyAgIHRoaXMuI2l0ZW1DaGFuZ2VzLm5leHQodGhpcy5pdGVtcyk7XHJcbiAgLy8gfVxyXG4gIC8vIFNlcnZlciBzZWFyY2hcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgI2FsbEl0ZW1zOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICAjYWxsSXRlbToge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55XHJcbiAgfSA9IHt9O1xyXG4gICNjYWNoZToge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55W11cclxuICB9ID0ge307XHJcbiAgI2RlbGF5ID0gMjAwOyAvLyBTYXUga2hv4bqjbmcgdGjhu51pIGdpYW4gZGVsYXkgbuG6v3Uga2jDtG5nIGPDsyB0aGF5IMSR4buVaSB0aMOsIHRow6wgbeG7m2kgYuG6r3QgxJHhuqd1IHRo4buxYyBoaeG7h24gZ+G7jWkgaMOgbVxyXG4gICNpdGVtc0NoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdIHwgU2VhcmNoRnVuYz4oW10pO1xyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyhpdGVtczogdW5kZWZpbmVkIHwgYW55W10gfCBTZWFyY2hGdW5jKSB7XHJcbiAgICB0aGlzLiNkZWxheSA9IDA7XHJcbiAgICBpZiAoIWl0ZW1zKSB7XHJcbiAgICAgIHRoaXMuI2l0ZW1zQ2hhbmdlcy5uZXh0KFtdKTtcclxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpdGVtcykpIHtcclxuICAgICAgdGhpcy4jaXRlbXNDaGFuZ2VzLm5leHQoaXRlbXMuZmlsdGVyKGUgPT4gZSAhPT0gbnVsbCAmJiBlICE9PSB1bmRlZmluZWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuI2RlbGF5ID0gNTAwO1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMubmV4dChpdGVtcyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcbiAgQElucHV0KCkgbGltaXQgPSA1MDtcclxuICBzZWxlY3RlZEl0ZW1zOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICAjc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZEl0ZW1zOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICAjZmlsdGVyZWRJdGVtczogYW55W107XHJcblxyXG4gIGlwdDogYW55O1xyXG5cclxuICAvLyBtb2RlbFxyXG4gIEBJbnB1dCgpIHNldCBtb2RlbCh2YWx1ZXM6IHVuZGVmaW5lZCB8IChzdHJpbmcgfCBudW1iZXIpW10pIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XHJcbiAgICAgIHZhbHVlcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gIH1cclxuICAvLyBWYWxpZGF0b3JcclxuICBpc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2V0IHJlcXVpcmVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLmlzUmVxdWlyZWQgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgdGhpcy4jdXBkYXRlVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBtaW46IG51bWJlcjtcclxuICBASW5wdXQoJ21pbicpIHNldCBwTWluKHZhbDogbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLm1pbiA9ICt2YWwgfHwgMDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICBtYXg6IG51bWJlcjtcclxuICBASW5wdXQoJ21heCcpIHNldCBwTWF4KHZhbDogbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLm1heCA9ICt2YWwgfHwgMDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8vIE9wdGlvbmFsXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5pbnB1dENvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5lbmFibGUoKTtcclxuICAgICAgdGhpcy5pbnB1dENvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgc2RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG4gIEBPdXRwdXQoKSBzZFVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2RDaGlwVXBkYXRlPigpO1xyXG4gIEBPdXRwdXQoKSBjaGlwU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdhdXRvJykgbWF0QXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGU7XHJcbiAgQFZpZXdDaGlsZCgnY2hpcExpc3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjaGlwTGlzdDogTWF0Q2hpcExpc3Q7XHJcbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB7IHJlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSkgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuICBAQ29udGVudENoaWxkKFNkVmlld0RlZkRpcmVjdGl2ZSkgc2RWaWV3OiBTZFZpZXdEZWZEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChTZENoaXBEaXNwbGF5RGVmKSBzZENoaXBEaXNwbGF5OiBTZENoaXBEaXNwbGF5RGVmO1xyXG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gIGlucHV0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIGZvcm1Db250cm9sID0gbmV3IFNkRm9ybUNvbnRyb2woKTtcclxuICBtYXRjaGVyID0gbmV3IFNkQ2hpcEVycm90U3RhdGVNYXRjaGVyKHRoaXMuZm9ybUNvbnRyb2wpO1xyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZvcm1Db250cm9sLnNkQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuI2FsbEl0ZW1zID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuI2l0ZW1zQ2hhbmdlcy5hc09ic2VydmFibGUoKSxcclxuICAgICAgdGhpcy5pbnB1dENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSwgZGVib3VuY2VUaW1lKHRoaXMuI2RlbGF5KSksXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpKV0pLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jIChbaXRlbXNdKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmlucHV0Q29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW107XHJcbiAgICAgICAgICBpZiAodHlwZW9mIChpdGVtcykgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuI2xvYWRJdGVtcyh2YWwsIGl0ZW1zKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuI2FsbEl0ZW0gPSBpdGVtcy50b09iamVjdCh0aGlzLnZhbHVlRmllbGQpO1xyXG4gICAgICAgICAgY29uc3QgaGFzRmllbGRzID0gISF0aGlzLnZhbHVlRmllbGQgJiYgISF0aGlzLmRpc3BsYXlGaWVsZDtcclxuICAgICAgICAgIHRoaXMuI2ZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaGFzRmllbGRzID8gaXRlbVt0aGlzLnZhbHVlRmllbGRdIDogaXRlbTtcclxuICAgICAgICAgICAgY29uc3QgZGlzcGxheSA9IGhhc0ZpZWxkcyA/IGl0ZW1bdGhpcy5kaXNwbGF5RmllbGRdIDogaXRlbTtcclxuICAgICAgICAgICAgaWYgKFN0cmluZy5hbGlhc0luY2x1ZGVzKHZhbHVlLCB2YWwpIHx8IFN0cmluZy5hbGlhc0luY2x1ZGVzKGRpc3BsYXksIHZhbCkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLnNvbWUoZSA9PiBlID09PSB2YWx1ZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJlZEl0ZW1zO1xyXG4gICAgICAgIH0pKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpKV0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcChhc3luYyAoW2l0ZW1zLCB2YWxdKSA9PiB7XHJcbiAgICAgICAgICAvLyBWw6wgbeG7mXQgc+G7kSBsw70gZG8gY2jGsGEgeMOhYyDEkeG7i25oIG3DoCBraGkgc+G7rSBk4bulbmcgc2RWaWV3RGVmIHRow6wga2hpIGNodXnhu4NuIHNhbmcgZOG6oW5nIHZpZXcgc+G6vSB0cmlnZ2VyIHZhbCA9IG51bGxcclxuICAgICAgICAgIC8vIE5oxrBuZyBmb3JtQ29udHJvbC52YWx1ZSB24bqrbiBjw7MgZ2nDoSB0cuG7iyDEkcO6bmcgbsOqbiB0aOG7sWMgaGnhu4duIGfDoW4gdmFsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIHZhbCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICBpZiAoIXRoaXMudmFsdWVGaWVsZCkge1xyXG4gICAgICAgICAgICB0aGlzLiNzZWxlY3RlZEl0ZW1zID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3NlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZW9mIChpdGVtcykgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy4jc2VsZWN0ZWRJdGVtcyA9IGF3YWl0IHRoaXMuI2xvYWRTZWxlY3RlZEl0ZW1zKHZhbCwgaXRlbXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuI3NlbGVjdGVkSXRlbXMgPSAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXSk/Lm1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcz8uZmluZChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWUpIHx8IHtcclxuICAgICAgICAgICAgICBbdGhpcy52YWx1ZUZpZWxkXTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgW3RoaXMuZGlzcGxheUZpZWxkXTogdmFsdWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuI3NlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuI2FsbEl0ZW1zLnBpcGUobWFwKGFsbEl0ZW1zID0+IGFsbEl0ZW1zLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXTtcclxuICAgICAgaWYgKHRoaXMudmFsdWVGaWVsZCkge1xyXG4gICAgICAgIHJldHVybiAhdmFsdWVzLmluY2x1ZGVzKGl0ZW0/Llt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gIXZhbHVlcy5pbmNsdWRlcyhpdGVtKTtcclxuICAgIH0pLnBhZ2luZyh0aGlzLmxpbWl0KSkpO1xyXG4gICAgLy8gdGhpcy5kaXNwbGF5ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLnBpcGUoXHJcbiAgICAvLyAgIG1hcChzZWxlY3RlZEl0ZW1zID0+IHNlbGVjdGVkSXRlbXM/Lm1hcChpdGVtID0+IHRoaXMuZGlzcGxheUZpZWxkID8gaXRlbVt0aGlzLmRpc3BsYXlGaWVsZF0gOiBpdGVtKT8uam9pbignLCAnKSkpO1xyXG4gICAgLy8gdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgLy8gICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLiNpdGVtcy5maWx0ZXIoaXRlbSA9PiB2YWx1ZXMuZmluZEluZGV4KHZhbHVlID0+IHZhbHVlID09PSBpdGVtPy5bdGhpcy52YWx1ZUZpZWxkXSkgIT09IC0xKTtcclxuICAgIC8vICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbHVlcyk7XHJcbiAgICAvLyAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh2YWx1ZXMpO1xyXG4gICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgICB0aGlzLiNmb3JtPy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgLy8gICB9LCAwKTtcclxuICAgIC8vIH0pKTtcclxuICAgIC8vIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy4jaXRlbUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy4jaXRlbXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgLy8gICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIC8vICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcclxuICAgIC8vICAgICBjb25zdCBpdGVtID0gdGhpcy4jaXRlbXMuZmluZChlID0+IGU/Llt0aGlzLnZhbHVlRmllbGRdID09PSB2YWx1ZSkgfHwge307XHJcbiAgICAvLyAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goe1xyXG4gICAgLy8gICAgICAgLi4uaXRlbSxcclxuICAgIC8vICAgICAgIFt0aGlzLnZhbHVlRmllbGRdOiB2YWx1ZVxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KSk7XHJcbiAgICB0aGlzLiNmb3JtPy5hZGRDb250cm9sKHRoaXMuI25hbWUsIHRoaXMuZm9ybUNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5yZW1vdmVDb250cm9sKHRoaXMuI25hbWUpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICBpZiAodGhpcy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pbiA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMubWluKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgI2xvYWRJdGVtcyA9IGFzeW5jIChzZWFyY2hUZXh0OiBzdHJpbmcsIGl0ZW1zOiBTZWFyY2hGdW5jKSA9PiB7XHJcbiAgICBzZWFyY2hUZXh0ID0gc2VhcmNoVGV4dD8udG9TdHJpbmcoKSB8fCAnJztcclxuICAgIGlmICh0aGlzLiNjYWNoZVtzZWFyY2hUZXh0XSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBpdGVtcyhzZWFyY2hUZXh0KS5jYXRjaCgoKSA9PiBbXSkuZmluYWxseSgoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgICAgIGNvbnN0IG9iakl0ZW0gPSBBcnJheS50b09iamVjdChyZXN1bHRzLCB0aGlzLnZhbHVlRmllbGQpO1xyXG4gICAgICB0aGlzLiNhbGxJdGVtID0ge1xyXG4gICAgICAgIC4uLnRoaXMuI2FsbEl0ZW0sXHJcbiAgICAgICAgLi4ub2JqSXRlbVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLiNjYWNoZVtzZWFyY2hUZXh0XSA9IHJlc3VsdHMudW5pb24odGhpcy52YWx1ZUZpZWxkKTtcclxuICAgIH1cclxuICAgIC8vIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgLy8gICByZXR1cm4gdGhpcy4jY2FjaGVbc2VhcmNoVGV4dF07XHJcbiAgICAvLyB9XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gYXdhaXQgdGhpcy4jbG9hZFNlbGVjdGVkSXRlbXModGhpcy5mb3JtQ29udHJvbC52YWx1ZSwgaXRlbXMpO1xyXG4gICAgLy8gxJDGsGEgbmjhu69uZyBzZWxlY3RlZEl0ZW1zIGzDqm4gxJHhuqd1IG7hur91IGtow7RuZyBtYXQtc2VsZWN0LXRyaWdnZXIgc+G6vSBraMO0bmcgd29ya1xyXG4gICAgcmV0dXJuIFsuLi5zZWxlY3RlZEl0ZW1zLCAuLi50aGlzLiNjYWNoZVtzZWFyY2hUZXh0XV0udW5pb24odGhpcy52YWx1ZUZpZWxkKTtcclxuICB9XHJcblxyXG4gICNsb2FkU2VsZWN0ZWRJdGVtcyA9IGFzeW5jICh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIGl0ZW1zOiBTZWFyY2hGdW5jKSA9PiB7XHJcbiAgICBpZiAoIXZhbHVlPy50b1N0cmluZygpKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlRmllbGQgJiYgIXRoaXMuZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHZhbHVlcy5zb21lKHZhbCA9PiB0aGlzLiNhbGxJdGVtW3ZhbF0gPT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGl0ZW1zKHZhbHVlLCB0cnVlKS5jYXRjaCgoKSA9PiBbXSkuZmluYWxseSgoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgICAgIGNvbnN0IG9iakl0ZW0gPSBBcnJheS50b09iamVjdChyZXN1bHRzLCB0aGlzLnZhbHVlRmllbGQpO1xyXG4gICAgICBjb25zdCBvYmpWYWx1ZSA9IEFycmF5LnRvT2JqZWN0KFxyXG4gICAgICAgIHZhbHVlcy5tYXAodmFsID0+ICh7IFt2YWw/LnRvU3RyaW5nKCldOiB7IFt0aGlzLnZhbHVlRmllbGRdOiB2YWwsIFt0aGlzLmRpc3BsYXlGaWVsZF06IHZhbCB9IH0pKSwgdGhpcy52YWx1ZUZpZWxkKTtcclxuICAgICAgdGhpcy4jYWxsSXRlbSA9IHtcclxuICAgICAgICAuLi5vYmpWYWx1ZSxcclxuICAgICAgICAuLi50aGlzLiNhbGxJdGVtLFxyXG4gICAgICAgIC4uLm9iakl0ZW1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXMubWFwKHZhbCA9PiB0aGlzLiNhbGxJdGVtW3ZhbD8udG9TdHJpbmcoKV0gPz8geyBbdGhpcy52YWx1ZUZpZWxkXTogdmFsLCBbdGhpcy5kaXNwbGF5RmllbGRdOiB2YWwgfSk7XHJcbiAgfVxyXG5cclxuICBvbkFkZCA9IChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkID0+IHtcclxuICAgIC8vIEFkZCBpdGVtIG9ubHkgd2hlbiBNYXRBdXRvY29tcGxldGUgaXMgbm90IG9wZW5cclxuICAgIC8vIFRvIG1ha2Ugc3VyZSB0aGlzIGRvZXMgbm90IGNvbmZsaWN0IHdpdGggT3B0aW9uU2VsZWN0ZWQgRXZlbnRcclxuICAgIC8vIGlmICghdGhpcy5tYXRBdXRvY29tcGxldGUuaXNPcGVuKSB7XHJcbiAgICAvLyAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlID8/ICcnKS50b1N0cmluZygpLnRyaW0oKTtcclxuICAgIC8vICAgaWYgKHZhbHVlKSB7XHJcbiAgICAvLyAgICAgaWYgKHRoaXMudmFsdWVGaWVsZCAmJiB0aGlzLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgLy8gICAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2ZpbHRlcmVkSXRlbXMuZmluZChlID0+IGVbdGhpcy5kaXNwbGF5RmllbGRdID09PSB2YWx1ZSk7XHJcbiAgICAvLyAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgLy8gICAgICAgICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlID8/IFtdO1xyXG4gICAgLy8gICAgICAgICB2YWx1ZXMucHVzaChpdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAvLyAgICAgICB9IGVsc2UgaWYgKHRoaXMuI2FkZGFibGUpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAgIC8vICAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKHRoaXMuI2ZpbHRlcmVkSXRlbXMpO1xyXG4gICAgLy8gICAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2ZpbHRlcmVkSXRlbXMuZmluZChpdGVtID0+IGl0ZW0gPT09IHZhbHVlKTtcclxuICAgIC8vICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAvLyAgICAgICAgIHZhbHVlcy5wdXNoKGl0ZW0pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAvLyAgICAgICB9IGVsc2UgaWYgKHRoaXMuI2FkZGFibGUpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAgIC8vICAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIC8vIH1cclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlID8/ICcnKS50b1N0cmluZygpLnRyaW0oKTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy52YWx1ZUZpZWxkICYmIHRoaXMuZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2ZpbHRlcmVkSXRlbXMuZmluZChlID0+IGVbdGhpcy5kaXNwbGF5RmllbGRdID09PSB2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAgICAgICB2YWx1ZXMucHVzaChpdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy4jYWRkYWJsZSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2ZpbHRlcmVkSXRlbXMuZmluZChpdGVtID0+IGl0ZW0gPT09IHZhbHVlKTtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIHZhbHVlcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy4jYWRkYWJsZSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgLy8gYW5kbjEgdmnhur90IMSR4buDIHjhu60gbMO9IHThuqFtIHVzIEIyQjFELTE4Mjg5IOG7nyBTNjlcclxuICBvbkFkZDIgPSAoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCA9PiB7XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudmFsdWUgPz8gJycpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS50cmltKCk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2ZpbHRlcmVkSXRlbXMuZmluZChlID0+IGVbdGhpcy52YWx1ZUZpZWxkXVxyXG4gICAgICAgICYmIGVbdGhpcy52YWx1ZUZpZWxkXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkudHJpbSgpID09PSB2YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAgICAgaWYgKCF2YWx1ZXMuaW5jbHVkZXMoaXRlbVt0aGlzLnZhbHVlRmllbGRdKSkge1xyXG4gICAgICAgICAgdmFsdWVzLnB1c2goaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZSA9IChpdGVtOiBhbnkpOiB2b2lkID0+IHtcclxuICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICBpZiAodHlwZW9mIChpdGVtKSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIChpdGVtKSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMuZmlsdGVyKHZhbHVlID0+IGl0ZW0gIT09IHZhbHVlKSk7XHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlRmllbGQpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMuZmlsdGVyKHZhbHVlID0+IGl0ZW0/Llt0aGlzLnZhbHVlRmllbGRdICE9PSB2YWx1ZSkpO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdCA9IChpdGVtOiBhbnkpOiB2b2lkID0+IHtcclxuICAgIHRoaXMuY2hpcFNlbGVjdGVkLmVtaXQoaXRlbSk7XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBvblNlbGVjdCA9IChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkgPT4ge1xyXG4gIC8vICAgY29uc3QgdmFsdWUgPSAoZXZlbnQub3B0aW9uLnZhbHVlPy5bdGhpcy52YWx1ZUZpZWxkXSA/PyAnJykudG9TdHJpbmcoKS50cmltKCk7XHJcbiAgLy8gICBpZiAodmFsdWUpIHtcclxuICAvLyAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2l0ZW1zLmZpbmQoZSA9PiBlW3RoaXMudmFsdWVGaWVsZF1cclxuICAvLyAgICAgICAmJiBlW3RoaXMudmFsdWVGaWVsZF0udG9TdHJpbmcoKS50cmltKCkgPT09IHZhbHVlKTtcclxuICAvLyAgICAgaWYgKGl0ZW0pIHtcclxuICAvLyAgICAgICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlID8/IFtdO1xyXG4gIC8vICAgICAgIHZhbHVlcy5wdXNoKGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgLy8gICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gIC8vICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gIC8vICAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAvLyAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlcj8ub3BlblBhbmVsKCk7XHJcbiAgLy8gICAgICAgfSwgMCk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSA9PiB7XHJcbiAgICBjb25zdCBpdGVtID0gZXZlbnQub3B0aW9uLnZhbHVlO1xyXG4gICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKGl0ZW0pID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgKGl0ZW0pID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmICghdmFsdWVzLmluY2x1ZGVzKGl0ZW0pKSB7XHJcbiAgICAgICAgICB2YWx1ZXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXI/Lm9wZW5QYW5lbCgpO1xyXG4gICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVGaWVsZCkge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGl0ZW0/Llt0aGlzLnZhbHVlRmllbGRdIHx8IG51bGw7XHJcbiAgICAgICAgaWYgKCF2YWx1ZXMuaW5jbHVkZXModmFsKSkge1xyXG4gICAgICAgICAgdmFsdWVzLnB1c2godmFsKTtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXI/Lm9wZW5QYW5lbCgpO1xyXG4gICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJywge1xyXG4gICAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBkaXNwbGF5Rm4gPSAodmFsdWU6IHN0cmluZyB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xyXG4gIC8vICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAvLyAgICAgaWYgKCF0aGlzLiNpdGVtcykge1xyXG4gIC8vICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy4jaXRlbXMuZmluZChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWUpO1xyXG4gIC8vICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbVt0aGlzLmRpc3BsYXlGaWVsZF07XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgaWYgKHRoaXMuI2l0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtW3RoaXMuZGlzcGxheUZpZWxkXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IC0xKSkge1xyXG4gIC8vICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZVt0aGlzLmRpc3BsYXlGaWVsZF0gOiB1bmRlZmluZWQ7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBvbkZvY3VzID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gICAgLy8gdGhpcy5pbnB1dENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbGljayA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnNkVmlldz8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkICYmICF0aGlzLmlzRm9jdXNlZCkge1xyXG4gICAgICAgIHRoaXMuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vcGVuUGFuZWwoKTtcclxuICAgICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyID0gKCRldmVudD86IGFueSkgPT4ge1xyXG4gICAgJGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgdGhpcy5zZENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vcGVuUGFuZWwoKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkSXRlbXMgPSAoKSA9PiB0aGlzLiNzZWxlY3RlZEl0ZW1zO1xyXG59XHJcblxyXG50eXBlIFNlYXJjaEZ1bmMgPSAoc2VhcmNoVGV4dD86IHN0cmluZyB8IHN0cmluZ1tdLCBpc0Zvcm1WYWx1ZT86IGJvb2xlYW4pID0+IFByb21pc2U8YW55W10+OyJdfQ==
552
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2NoaXAvIiwic291cmNlcyI6WyJzcmMvbGliL2NoaXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBR1osaUJBQWlCLEVBRWpCLFlBQVksRUFDWix1QkFBdUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQTRDLFVBQVUsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvSCxPQUFPLEVBQWMsWUFBWSxFQUFXLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekYsT0FBTyxFQUFpRCxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3ZILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RSxNQUFNLHVCQUF1QjtJQUMzQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFJLENBQUM7SUFDakQsWUFBWSxDQUFDLE9BQTJCLEVBQUUsSUFBd0M7O1FBQ2hGLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFD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c0NBQWE7UUFDdEMsNENBQW1CLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7Ozs7WUF2T0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxTQUFTO2dCQUNuQiw2OUVBQW9DO2dCQUVwQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQWhDQyxpQkFBaUI7OzttQkFtQ2hCLEtBQUs7bUJBT0wsS0FBSzttQkFFTCxLQUFLO3NCQVVMLEtBQUs7b0JBR0wsS0FBSzt5QkFDTCxLQUFLOzJCQUNMLEtBQUs7MEJBQ0wsS0FBSzt5QkFFTCxLQUFLLFNBQUMsV0FBVzttQ0FJakIsS0FBSyxTQUFDLHFCQUFxQjtvQkF5QjNCLEtBQUs7b0JBWUwsS0FBSztvQkFTTCxLQUFLO3VCQVFMLEtBQUs7bUJBTUwsS0FBSyxTQUFDLEtBQUs7bUJBS1gsS0FBSyxTQUFDLEtBQUs7MEJBSVgsTUFBTTt1QkFHTixLQUFLO3VCQVdMLE1BQU07dUJBQ04sTUFBTTsyQkFDTixNQUFNO29CQUVOLFNBQVMsU0FBQyxPQUFPOzhCQUNqQixTQUFTLFNBQUMsTUFBTTt1QkFDaEIsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7a0NBQ3RDLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRTtxQkFDbEUsWUFBWSxTQUFDLGtCQUFrQjs0QkFDL0IsWUFBWSxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCwgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgTmdGb3JtLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS91dGlsaXR5JztcclxuaW1wb3J0IHsgTWF0Q2hpcEV2ZW50LCBNYXRDaGlwSW5wdXRFdmVudCwgTWF0Q2hpcExpc3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IFNkQ2hpcFVwZGF0ZSB9IGZyb20gJy4vY2hpcC5tb2RlbCc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IFNkQ2hpcERpc3BsYXlEZWYgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtY2hpcC1kaXNwbGF5LWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZEZvcm1Db250cm9sLCBTZFZpZXdEZWZEaXJlY3RpdmUgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcblxyXG5jbGFzcyBTZENoaXBFcnJvdFN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCkgeyB9XHJcbiAgaXNFcnJvclN0YXRlKGNvbnRyb2w6IEZvcm1Db250cm9sIHwgbnVsbCwgZm9ybTogRm9ybUdyb3VwRGlyZWN0aXZlIHwgTmdGb3JtIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXNTdWJtaXR0ZWQgPSBmb3JtICYmIGZvcm0uc3VibWl0dGVkO1xyXG4gICAgcmV0dXJuICEhKHRoaXMuZm9ybUNvbnRyb2w/LmludmFsaWQgJiYgKHRoaXMuZm9ybUNvbnRyb2w/LmRpcnR5IHx8IHRoaXMuZm9ybUNvbnRyb2w/LnRvdWNoZWQgfHwgaXNTdWJtaXR0ZWQpKTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtY2hpcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoaXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoaXAuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RDaGlwIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gICNuYW1lID0gdXVpZC52NCgpO1xyXG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuI25hbWUgPSB2YWw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuICBzZWxlY3RhYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ2xnJztcclxuICAjZm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHNldCBmb3JtKHZhbDogTmdGb3JtIHwgRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOZ0Zvcm0pIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsLmZvcm07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAjYWRkYWJsZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZXQgYWRkYWJsZSh2YWw6ICcnIHwgYm9vbGVhbikge1xyXG4gICAgdGhpcy4jYWRkYWJsZSA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgcmVtb3ZhYmxlOiBib29sZWFuIHwgKChpdGVtOiBhbnkpID0+IGJvb2xlYW4pID0gdHJ1ZTtcclxuICBASW5wdXQoJ3JlbW92YWJsZScpIHNldCBfcmVtb3ZhYmxlKHZhbDogJycgfCBib29sZWFuIHwgKChpdGVtOiBhbnkpID0+IGJvb2xlYW4pKSB7XHJcbiAgICB0aGlzLnJlbW92YWJsZSA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgfVxyXG4gIGRpc2FibGVFcnJvck1lc3NhZ2UgPSBmYWxzZTtcclxuICBASW5wdXQoJ2Rpc2FibGVFcnJvck1lc3NhZ2UnKSBzZXQgX2Rpc2FibGVFcnJvck1lc3NhZ2UodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHRoaXMuZGlzYWJsZUVycm9yTWVzc2FnZSA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgfVxyXG4gIC8vIEBJbnB1dCgpIHNldCBpdGVtcyhpdGVtczogdW5kZWZpbmVkIHwgYW55W10pIHtcclxuICAvLyAgIGlmICghaXRlbXMpIHtcclxuICAvLyAgICAgdGhpcy4jaXRlbXMgPSBbXTtcclxuICAvLyAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpdGVtcykpIHtcclxuICAvLyAgICAgdGhpcy4jaXRlbXMgPSBpdGVtcy5maWx0ZXIoZSA9PiAoZSA/PyAnJykudG9TdHJpbmcoKS50cmltKCkgIT09ICcnKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMuI2l0ZW1zID0gaXRlbXM7XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLmlucHV0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgLy8gICB0aGlzLiNpdGVtQ2hhbmdlcy5uZXh0KHRoaXMuaXRlbXMpO1xyXG4gIC8vIH1cclxuICAvLyBTZXJ2ZXIgc2VhcmNoXHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gICNhbGxJdGVtczogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgI2FsbEl0ZW06IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueVxyXG4gIH0gPSB7fTtcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueVtdXHJcbiAgfSA9IHt9O1xyXG4gICNkZWxheSA9IDIwMDsgLy8gU2F1IGtob+G6o25nIHRo4budaSBnaWFuIGRlbGF5IG7hur91IGtow7RuZyBjw7MgdGhheSDEkeG7lWkgdGjDrCB0aMOsIG3hu5tpIGLhuq90IMSR4bqndSB0aOG7sWMgaGnhu4duIGfhu41pIGjDoG1cclxuICAjaXRlbXNDaGFuZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXSB8IFNlYXJjaEZ1bmM+KFtdKTtcclxuICBASW5wdXQoKSBzZXQgaXRlbXMoaXRlbXM6IHVuZGVmaW5lZCB8IGFueVtdIHwgU2VhcmNoRnVuYykge1xyXG4gICAgdGhpcy4jZGVsYXkgPSAwO1xyXG4gICAgaWYgKCFpdGVtcykge1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMubmV4dChbXSk7XHJcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XHJcbiAgICAgIHRoaXMuI2l0ZW1zQ2hhbmdlcy5uZXh0KGl0ZW1zLmZpbHRlcihlID0+IGUgIT09IG51bGwgJiYgZSAhPT0gdW5kZWZpbmVkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLiNkZWxheSA9IDUwMDtcclxuICAgICAgdGhpcy4jaXRlbXNDaGFuZ2VzLm5leHQoaXRlbXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGxpbWl0ID0gNTA7XHJcbiAgc2VsZWN0ZWRJdGVtczogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgI3NlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgZmlsdGVyZWRJdGVtczogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgI2ZpbHRlcmVkSXRlbXM6IGFueVtdO1xyXG5cclxuICBpcHQ6IGFueTtcclxuXHJcbiAgLy8gbW9kZWxcclxuICBASW5wdXQoKSBzZXQgbW9kZWwodmFsdWVzOiB1bmRlZmluZWQgfCAoc3RyaW5nIHwgbnVtYmVyKVtdKSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xyXG4gICAgICB2YWx1ZXMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICB9XHJcbiAgLy8gVmFsaWRhdG9yXHJcbiAgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCByZXF1aXJlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5pc1JlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWluOiBudW1iZXI7XHJcbiAgQElucHV0KCdtaW4nKSBzZXQgcE1pbih2YWw6IG51bWJlciB8IHN0cmluZykge1xyXG4gICAgdGhpcy5taW4gPSArdmFsIHx8IDA7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcbiAgbWF4OiBudW1iZXI7XHJcbiAgQElucHV0KCdtYXgnKSBzZXQgcE1heCh2YWw6IG51bWJlciB8IHN0cmluZykge1xyXG4gICAgdGhpcy5tYXggPSArdmFsIHx8IDA7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBPcHRpb25hbFxyXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdmFsID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCkgc2RVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFNkQ2hpcFVwZGF0ZT4oKTtcclxuICBAT3V0cHV0KCkgY2hpcFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnYXV0bycpIG1hdEF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoaXBMaXN0JywgeyBzdGF0aWM6IHRydWUgfSkgY2hpcExpc3Q6IE1hdENoaXBMaXN0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0pIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XHJcbiAgQENvbnRlbnRDaGlsZChTZFZpZXdEZWZEaXJlY3RpdmUpIHNkVmlldzogU2RWaWV3RGVmRGlyZWN0aXZlO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RDaGlwRGlzcGxheURlZikgc2RDaGlwRGlzcGxheTogU2RDaGlwRGlzcGxheURlZjtcclxuICBpc0JsdXJpbmcgPSBmYWxzZTtcclxuICBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuICBpbnB1dENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBmb3JtQ29udHJvbCA9IG5ldyBTZEZvcm1Db250cm9sKCk7XHJcbiAgbWF0Y2hlciA9IG5ldyBTZENoaXBFcnJvdFN0YXRlTWF0Y2hlcih0aGlzLmZvcm1Db250cm9sKTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC5zZENoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLiNhbGxJdGVtcyA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCgnJyksIGRlYm91bmNlVGltZSh0aGlzLiNkZWxheSkpLFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSldKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcChhc3luYyAoW2l0ZW1zXSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gdGhpcy5pbnB1dENvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiAoaXRlbXMpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLiNsb2FkSXRlbXModmFsLCBpdGVtcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLiNhbGxJdGVtID0gaXRlbXMudG9PYmplY3QodGhpcy52YWx1ZUZpZWxkKTtcclxuICAgICAgICAgIGNvbnN0IGhhc0ZpZWxkcyA9ICEhdGhpcy52YWx1ZUZpZWxkICYmICEhdGhpcy5kaXNwbGF5RmllbGQ7XHJcbiAgICAgICAgICB0aGlzLiNmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGhhc0ZpZWxkcyA/IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA6IGl0ZW07XHJcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXkgPSBoYXNGaWVsZHMgPyBpdGVtW3RoaXMuZGlzcGxheUZpZWxkXSA6IGl0ZW07XHJcbiAgICAgICAgICAgIGlmIChTdHJpbmcuYWxpYXNJbmNsdWRlcyh2YWx1ZSwgdmFsKSB8fCBTdHJpbmcuYWxpYXNJbmNsdWRlcyhkaXNwbGF5LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5zb21lKGUgPT4gZSA9PT0gdmFsdWUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVyZWRJdGVtcztcclxuICAgICAgICB9KSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy4jaXRlbXNDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpLFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSldKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgKFtpdGVtcywgdmFsXSkgPT4ge1xyXG4gICAgICAgICAgLy8gVsOsIG3hu5l0IHPhu5EgbMO9IGRvIGNoxrBhIHjDoWMgxJHhu4tuaCBtw6Aga2hpIHPhu60gZOG7pW5nIHNkVmlld0RlZiB0aMOsIGtoaSBjaHV54buDbiBzYW5nIGThuqFuZyB2aWV3IHPhur0gdHJpZ2dlciB2YWwgPSBudWxsXHJcbiAgICAgICAgICAvLyBOaMawbmcgZm9ybUNvbnRyb2wudmFsdWUgduG6q24gY8OzIGdpw6EgdHLhu4sgxJHDum5nIG7Dqm4gdGjhu7FjIGhp4buHbiBnw6FuIHZhbCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICB2YWwgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnZhbHVlRmllbGQpIHtcclxuICAgICAgICAgICAgdGhpcy4jc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGVvZiAoaXRlbXMpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI3NlbGVjdGVkSXRlbXMgPSBhd2FpdCB0aGlzLiNsb2FkU2VsZWN0ZWRJdGVtcyh2YWwsIGl0ZW1zKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3NlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLiNzZWxlY3RlZEl0ZW1zID0gKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW10pPy5tYXAodmFsdWUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbXM/LmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT09IHZhbHVlKSB8fCB7XHJcbiAgICAgICAgICAgICAgW3RoaXMudmFsdWVGaWVsZF06IHZhbHVlLFxyXG4gICAgICAgICAgICAgIFt0aGlzLmRpc3BsYXlGaWVsZF06IHZhbHVlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLiNzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLiNhbGxJdGVtcy5waXBlKG1hcChhbGxJdGVtcyA9PiBhbGxJdGVtcy5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW107XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlRmllbGQpIHtcclxuICAgICAgICByZXR1cm4gIXZhbHVlcy5pbmNsdWRlcyhpdGVtPy5bdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuICF2YWx1ZXMuaW5jbHVkZXMoaXRlbSk7XHJcbiAgICB9KS5wYWdpbmcodGhpcy5saW1pdCkpKTtcclxuICAgIC8vIHRoaXMuZGlzcGxheSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5waXBlKFxyXG4gICAgLy8gICBtYXAoc2VsZWN0ZWRJdGVtcyA9PiBzZWxlY3RlZEl0ZW1zPy5tYXAoaXRlbSA9PiB0aGlzLmRpc3BsYXlGaWVsZCA/IGl0ZW1bdGhpcy5kaXNwbGF5RmllbGRdIDogaXRlbSk/LmpvaW4oJywgJykpKTtcclxuICAgIC8vIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgIC8vICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXTtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy4jaXRlbXMuZmlsdGVyKGl0ZW0gPT4gdmFsdWVzLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZSA9PT0gaXRlbT8uW3RoaXMudmFsdWVGaWVsZF0pICE9PSAtMSk7XHJcbiAgICAvLyAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZXMpO1xyXG4gICAgLy8gICB0aGlzLnNkQ2hhbmdlLmVtaXQodmFsdWVzKTtcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgdGhpcy4jZm9ybT8ubWFya0FzRGlydHkoKTtcclxuICAgIC8vICAgfSwgMCk7XHJcbiAgICAvLyB9KSk7XHJcbiAgICAvLyB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuI2l0ZW1DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuI2l0ZW1zKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgIC8vICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXTtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICAvLyAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XHJcbiAgICAvLyAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2l0ZW1zLmZpbmQoZSA9PiBlPy5bdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWUpIHx8IHt9O1xyXG4gICAgLy8gICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHtcclxuICAgIC8vICAgICAgIC4uLml0ZW0sXHJcbiAgICAvLyAgICAgICBbdGhpcy52YWx1ZUZpZWxkXTogdmFsdWVcclxuICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSkpO1xyXG4gICAgdGhpcy4jZm9ybT8uYWRkQ29udHJvbCh0aGlzLiNuYW1lLCB0aGlzLmZvcm1Db250cm9sKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jZm9ybT8ucmVtb3ZlQ29udHJvbCh0aGlzLiNuYW1lKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI3VwZGF0ZVZhbGlkYXRvciA9ICgpID0+IHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuaXNSZXF1aXJlZCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5taW4gPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm1pbikpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWF4ID4gMCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXgpKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gICNsb2FkSXRlbXMgPSBhc3luYyAoc2VhcmNoVGV4dDogc3RyaW5nLCBpdGVtczogU2VhcmNoRnVuYykgPT4ge1xyXG4gICAgc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ/LnRvU3RyaW5nKCkgfHwgJyc7XHJcbiAgICBpZiAodGhpcy4jY2FjaGVbc2VhcmNoVGV4dF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgaXRlbXMoc2VhcmNoVGV4dCkuY2F0Y2goKCkgPT4gW10pLmZpbmFsbHkoKCkgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG4gICAgICBjb25zdCBvYmpJdGVtID0gQXJyYXkudG9PYmplY3QocmVzdWx0cywgdGhpcy52YWx1ZUZpZWxkKTtcclxuICAgICAgdGhpcy4jYWxsSXRlbSA9IHtcclxuICAgICAgICAuLi50aGlzLiNhbGxJdGVtLFxyXG4gICAgICAgIC4uLm9iakl0ZW1cclxuICAgICAgfTtcclxuICAgICAgdGhpcy4jY2FjaGVbc2VhcmNoVGV4dF0gPSByZXN1bHRzLnVuaW9uKHRoaXMudmFsdWVGaWVsZCk7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuI2NhY2hlW3NlYXJjaFRleHRdO1xyXG4gICAgLy8gfVxyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IGF3YWl0IHRoaXMuI2xvYWRTZWxlY3RlZEl0ZW1zKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUsIGl0ZW1zKTtcclxuICAgIC8vIMSQxrBhIG5o4buvbmcgc2VsZWN0ZWRJdGVtcyBsw6puIMSR4bqndSBu4bq/dSBraMO0bmcgbWF0LXNlbGVjdC10cmlnZ2VyIHPhur0ga2jDtG5nIHdvcmtcclxuICAgIHJldHVybiBbLi4uc2VsZWN0ZWRJdGVtcywgLi4udGhpcy4jY2FjaGVbc2VhcmNoVGV4dF1dLnVuaW9uKHRoaXMudmFsdWVGaWVsZCk7XHJcbiAgfVxyXG5cclxuICAjbG9hZFNlbGVjdGVkSXRlbXMgPSBhc3luYyAodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBpdGVtczogU2VhcmNoRnVuYykgPT4ge1xyXG4gICAgaWYgKCF2YWx1ZT8udG9TdHJpbmcoKSkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICAgIGlmICghdGhpcy52YWx1ZUZpZWxkICYmICF0aGlzLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgICByZXR1cm4gdmFsdWVzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh2YWx1ZXMuc29tZSh2YWwgPT4gdGhpcy4jYWxsSXRlbVt2YWxdID09PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBpdGVtcyh2YWx1ZSwgdHJ1ZSkuY2F0Y2goKCkgPT4gW10pLmZpbmFsbHkoKCkgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG4gICAgICBjb25zdCBvYmpJdGVtID0gQXJyYXkudG9PYmplY3QocmVzdWx0cywgdGhpcy52YWx1ZUZpZWxkKTtcclxuICAgICAgY29uc3Qgb2JqVmFsdWUgPSBBcnJheS50b09iamVjdChcclxuICAgICAgICB2YWx1ZXMubWFwKHZhbCA9PiAoeyBbdmFsPy50b1N0cmluZygpXTogeyBbdGhpcy52YWx1ZUZpZWxkXTogdmFsLCBbdGhpcy5kaXNwbGF5RmllbGRdOiB2YWwgfSB9KSksIHRoaXMudmFsdWVGaWVsZCk7XHJcbiAgICAgIHRoaXMuI2FsbEl0ZW0gPSB7XHJcbiAgICAgICAgLi4ub2JqVmFsdWUsXHJcbiAgICAgICAgLi4udGhpcy4jYWxsSXRlbSxcclxuICAgICAgICAuLi5vYmpJdGVtXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzLm1hcCh2YWwgPT4gdGhpcy4jYWxsSXRlbVt2YWw/LnRvU3RyaW5nKCldID8/IHsgW3RoaXMudmFsdWVGaWVsZF06IHZhbCwgW3RoaXMuZGlzcGxheUZpZWxkXTogdmFsIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BZGQgPSAoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCA9PiB7XHJcbiAgICAvLyBBZGQgaXRlbSBvbmx5IHdoZW4gTWF0QXV0b2NvbXBsZXRlIGlzIG5vdCBvcGVuXHJcbiAgICAvLyBUbyBtYWtlIHN1cmUgdGhpcyBkb2VzIG5vdCBjb25mbGljdCB3aXRoIE9wdGlvblNlbGVjdGVkIEV2ZW50XHJcbiAgICAvLyBpZiAoIXRoaXMubWF0QXV0b2NvbXBsZXRlLmlzT3Blbikge1xyXG4gICAgLy8gICBjb25zdCB2YWx1ZSA9IChldmVudC52YWx1ZSA/PyAnJykudG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICAvLyAgIGlmICh2YWx1ZSkge1xyXG4gICAgLy8gICAgIGlmICh0aGlzLnZhbHVlRmllbGQgJiYgdGhpcy5kaXNwbGF5RmllbGQpIHtcclxuICAgIC8vICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLiNmaWx0ZXJlZEl0ZW1zLmZpbmQoZSA9PiBlW3RoaXMuZGlzcGxheUZpZWxkXSA9PT0gdmFsdWUpO1xyXG4gICAgLy8gICAgICAgaWYgKGl0ZW0pIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAgIC8vICAgICAgICAgdmFsdWVzLnB1c2goaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgIC8vICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gICAgLy8gICAgICAgfSBlbHNlIGlmICh0aGlzLiNhZGRhYmxlKSB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAvLyAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcclxuICAgIC8vICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICAvLyAgICAgICBjb25zb2xlLmxvZyh0aGlzLiNmaWx0ZXJlZEl0ZW1zKTtcclxuICAgIC8vICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLiNmaWx0ZXJlZEl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtID09PSB2YWx1ZSk7XHJcbiAgICAvLyAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgLy8gICAgICAgICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlID8/IFtdO1xyXG4gICAgLy8gICAgICAgICB2YWx1ZXMucHVzaChpdGVtKTtcclxuICAgIC8vICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gICAgLy8gICAgICAgfSBlbHNlIGlmICh0aGlzLiNhZGRhYmxlKSB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAvLyAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcclxuICAgIC8vICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAvLyB9XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC52YWx1ZSA/PyAnJykudG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMudmFsdWVGaWVsZCAmJiB0aGlzLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLiNmaWx0ZXJlZEl0ZW1zLmZpbmQoZSA9PiBlW3RoaXMuZGlzcGxheUZpZWxkXSA9PT0gdmFsdWUpO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgdmFsdWVzLnB1c2goaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuI2FkZGFibGUpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLiNmaWx0ZXJlZEl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtID09PSB2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAgICAgICB2YWx1ZXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuI2FkZGFibGUpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICB9XHJcblxyXG4gIC8vIGFuZG4xIHZp4bq/dCDEkeG7gyB44butIGzDvSB04bqhbSB1cyBCMkIxRC0xODI4OSDhu58gUzY5XHJcbiAgb25BZGQyID0gKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQgPT4ge1xyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlID8/ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLiNmaWx0ZXJlZEl0ZW1zLmZpbmQoZSA9PiBlW3RoaXMudmFsdWVGaWVsZF1cclxuICAgICAgICAmJiBlW3RoaXMudmFsdWVGaWVsZF0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnRyaW0oKSA9PT0gdmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlID8/IFtdO1xyXG4gICAgICAgIGlmICghdmFsdWVzLmluY2x1ZGVzKGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSkpIHtcclxuICAgICAgICAgIHZhbHVlcy5wdXNoKGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0NoaXAgPSAoJGV2ZW50OiBFdmVudCwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICBpdGVtLmlzU2VsZWN0ZWQgPSAhaXRlbS5pc1NlbGVjdGVkO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgb25SZW1vdmUgPSAoaXRlbTogYW55KTogdm9pZCA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlID8/IFtdO1xyXG4gICAgaWYgKHR5cGVvZiAoaXRlbSkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiAoaXRlbSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzLmZpbHRlcih2YWx1ZSA9PiBpdGVtICE9PSB2YWx1ZSkpO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZUZpZWxkKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzLmZpbHRlcih2YWx1ZSA9PiBpdGVtPy5bdGhpcy52YWx1ZUZpZWxkXSAhPT0gdmFsdWUpKTtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3QgPSAoaXRlbTogYW55KTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLmNoaXBTZWxlY3RlZC5lbWl0KGl0ZW0pO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgLy8gb25TZWxlY3QgPSAoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpID0+IHtcclxuICAvLyAgIGNvbnN0IHZhbHVlID0gKGV2ZW50Lm9wdGlvbi52YWx1ZT8uW3RoaXMudmFsdWVGaWVsZF0gPz8gJycpLnRvU3RyaW5nKCkudHJpbSgpO1xyXG4gIC8vICAgaWYgKHZhbHVlKSB7XHJcbiAgLy8gICAgIGNvbnN0IGl0ZW0gPSB0aGlzLiNpdGVtcy5maW5kKGUgPT4gZVt0aGlzLnZhbHVlRmllbGRdXHJcbiAgLy8gICAgICAgJiYgZVt0aGlzLnZhbHVlRmllbGRdLnRvU3RyaW5nKCkudHJpbSgpID09PSB2YWx1ZSk7XHJcbiAgLy8gICAgIGlmIChpdGVtKSB7XHJcbiAgLy8gICAgICAgY29uc3QgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyBbXTtcclxuICAvLyAgICAgICB2YWx1ZXMucHVzaChpdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gIC8vICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzKTtcclxuICAvLyAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAvLyAgICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgLy8gICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXI/Lm9wZW5QYW5lbCgpO1xyXG4gIC8vICAgICAgIH0sIDApO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBvblNlbGVjdCA9IChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkgPT4ge1xyXG4gICAgY29uc3QgaXRlbSA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcclxuICAgIGNvbnN0IHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPz8gW107XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICBpZiAodHlwZW9mIChpdGVtKSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIChpdGVtKSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyhpdGVtKSkge1xyXG4gICAgICAgICAgdmFsdWVzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vcGVuUGFuZWwoKTtcclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlRmllbGQpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBpdGVtPy5bdGhpcy52YWx1ZUZpZWxkXSB8fCBudWxsO1xyXG4gICAgICAgIGlmICghdmFsdWVzLmluY2x1ZGVzKHZhbCkpIHtcclxuICAgICAgICAgIHZhbHVlcy5wdXNoKHZhbCk7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vcGVuUGFuZWwoKTtcclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUoJycsIHtcclxuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZGlzcGxheUZuID0gKHZhbHVlOiBzdHJpbmcgfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcclxuICAvLyAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgLy8gICAgIGlmICghdGhpcy4jaXRlbXMpIHtcclxuICAvLyAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuI2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT09IHZhbHVlKTtcclxuICAvLyAgICAgaWYgKHNlbGVjdGVkSXRlbSkge1xyXG4gIC8vICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1bdGhpcy5kaXNwbGF5RmllbGRdO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmICh0aGlzLiNpdGVtcy5zb21lKGl0ZW0gPT4gaXRlbVt0aGlzLmRpc3BsYXlGaWVsZF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkpIHtcclxuICAvLyAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWVbdGhpcy5kaXNwbGF5RmllbGRdIDogdW5kZWZpbmVkO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgb25Gb2N1cyA9ICgpID0+IHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNCbHVyaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAvLyB0aGlzLmlucHV0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzQmx1cmluZyA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYodGhpcy5pc0JsdXJpbmcpIHtcclxuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnLCB7XHJcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuc2RWaWV3Py50ZW1wbGF0ZVJlZikge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZWQgJiYgIXRoaXMuaXNGb2N1c2VkKSB7XHJcbiAgICAgICAgdGhpcy5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1cyA9ICgpID0+IHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNCbHVyaW5nID0gZmFsc2U7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vcGVuUGFuZWwoKTtcclxuICAgICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyID0gKCRldmVudD86IGFueSkgPT4ge1xyXG4gICAgJGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgdGhpcy5zZENoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vcGVuUGFuZWwoKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkSXRlbXMgPSAoKSA9PiB0aGlzLiNzZWxlY3RlZEl0ZW1zO1xyXG59XHJcblxyXG50eXBlIFNlYXJjaEZ1bmMgPSAoc2VhcmNoVGV4dD86IHN0cmluZyB8IHN0cmluZ1tdLCBpc0Zvcm1WYWx1ZT86IGJvb2xlYW4pID0+IFByb21pc2U8YW55W10+OyJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from "@angular/core";
2
2
  export const FIREBASE_CONFIG = new InjectionToken('firebase.configuration');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvY29tbW9uLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb25maWd1cmF0aW9ucy9maXJlYmFzZS5jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUF5Qix3QkFBd0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRmlyZWJhc2VDb25maWd1cmF0aW9uIHtcclxuICBmdW5jdGlvblVybDogc3RyaW5nO1xyXG4gIGVudjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRklSRUJBU0VfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElGaXJlYmFzZUNvbmZpZ3VyYXRpb24+KCdmaXJlYmFzZS5jb25maWd1cmF0aW9uJyk7Il19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvY29tbW9uLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb25maWd1cmF0aW9ucy9maXJlYmFzZS5jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRL0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUF5Qix3QkFBd0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRmlyZWJhc2VDb25maWd1cmF0aW9uIHtcclxuICBmdW5jdGlvblVybDogc3RyaW5nO1xyXG4gIHByb2plY3Q6IHN0cmluZztcclxuICBlbnY6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEZJUkVCQVNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRmlyZWJhc2VDb25maWd1cmF0aW9uPignZmlyZWJhc2UuY29uZmlndXJhdGlvbicpOyJdfQ==
@@ -14,38 +14,38 @@ export class SdDbService {
14
14
  if (!this.hasConfiguration) {
15
15
  throw new Error('No firebase function configuration');
16
16
  }
17
- const { functionUrl, env } = this.firebaseConfiguration;
18
- const url = `${functionUrl}/db/get/${env}-${collection}/${id}`;
17
+ const { functionUrl, project, env } = this.firebaseConfiguration;
18
+ const url = `${functionUrl}/db/get/${project}/${env}/${collection}/${id}`;
19
19
  return yield this.apiService.get(url);
20
20
  });
21
21
  this.set = (collection, id, data) => __awaiter(this, void 0, void 0, function* () {
22
22
  if (!this.hasConfiguration) {
23
23
  throw new Error('No firebase function configuration');
24
24
  }
25
- const { functionUrl, env } = this.firebaseConfiguration;
26
- const url = `${functionUrl}/db/set/${env}-${collection}/${id}`;
25
+ const { functionUrl, project, env } = this.firebaseConfiguration;
26
+ const url = `${functionUrl}/db/set/${project}/${env}/${collection}/${id}`;
27
27
  yield this.apiService.post(url, data);
28
28
  });
29
29
  this.remove = (collection, id) => __awaiter(this, void 0, void 0, function* () {
30
30
  if (!this.hasConfiguration) {
31
31
  throw new Error('No firebase function configuration');
32
32
  }
33
- const { functionUrl, env } = this.firebaseConfiguration;
34
- const url = `${functionUrl}/db/remove/${env}-${collection}/${id}`;
33
+ const { functionUrl, project, env } = this.firebaseConfiguration;
34
+ const url = `${functionUrl}/db/remove/${project}/${env}/${collection}/${id}`;
35
35
  yield this.apiService.delete(url);
36
36
  });
37
37
  this.find = (collection, id, query) => __awaiter(this, void 0, void 0, function* () {
38
38
  if (!this.hasConfiguration) {
39
39
  throw new Error('No firebase function configuration');
40
40
  }
41
- const { functionUrl, env } = this.firebaseConfiguration;
42
- const url = `${functionUrl}/db/find/${env}-${collection}/${id}`;
41
+ const { functionUrl, project, env } = this.firebaseConfiguration;
42
+ const url = `${functionUrl}/db/find/${project}/${env}/${collection}/${id}`;
43
43
  return yield this.apiService.post(url, query);
44
44
  });
45
45
  }
46
46
  get hasConfiguration() {
47
- var _a, _b;
48
- return !!((_a = this.firebaseConfiguration) === null || _a === void 0 ? void 0 : _a.functionUrl) && !!((_b = this.firebaseConfiguration) === null || _b === void 0 ? void 0 : _b.env);
47
+ var _a, _b, _c;
48
+ return !!((_a = this.firebaseConfiguration) === null || _a === void 0 ? void 0 : _a.functionUrl) && !!((_b = this.firebaseConfiguration) === null || _b === void 0 ? void 0 : _b.project) && !!((_c = this.firebaseConfiguration) === null || _c === void 0 ? void 0 : _c.env);
49
49
  }
50
50
  }
51
51
  SdDbService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SdDbService_Factory() { return new SdDbService(i0.ɵɵinject(i1.SdApiService), i0.ɵɵinject(i2.FIREBASE_CONFIG, 8)); }, token: SdDbService, providedIn: "root" });
@@ -58,4 +58,4 @@ SdDbService.ctorParameters = () => [
58
58
  { type: SdApiService },
59
59
  { type: undefined, decorators: [{ type: Inject, args: [FIREBASE_CONFIG,] }, { type: Optional }] }
60
60
  ];
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZGIvIiwic291cmNlcyI6WyJzcmMvbGliL2RiLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQTBCLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFNbEYsTUFBTSxPQUFPLFdBQVc7SUFJdEIsWUFDVSxVQUF3QixFQUNhLHFCQUE2QztRQURsRixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ2EsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQUc1RixRQUFHLEdBQUcsQ0FBZ0IsVUFBa0IsRUFBRSxFQUFVLEVBQXFCLEVBQUU7WUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDeEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxXQUFXLFdBQVcsR0FBRyxJQUFJLFVBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMvRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFBLENBQUE7UUFFRCxRQUFHLEdBQUcsQ0FBZ0IsVUFBa0IsRUFBRSxFQUFVLEVBQUUsSUFBTyxFQUFpQixFQUFFO1lBQzlFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQzthQUN2RDtZQUNELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3hELE1BQU0sR0FBRyxHQUFHLEdBQUcsV0FBVyxXQUFXLEdBQUcsSUFBSSxVQUFVLElBQUksRUFBRSxFQUFFLENBQUM7WUFDL0QsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFBLENBQUE7UUFFRCxXQUFNLEdBQUcsQ0FBZ0IsVUFBa0IsRUFBRSxFQUFVLEVBQWlCLEVBQUU7WUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDeEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxXQUFXLGNBQWMsR0FBRyxJQUFJLFVBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQSxDQUFBO1FBRUQsU0FBSSxHQUFHLENBQWdCLFVBQWtCLEVBQUUsRUFBVSxFQUFFLEtBQWMsRUFBdUIsRUFBRTtZQUM1RixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7YUFDdkQ7WUFDRCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUN4RCxNQUFNLEdBQUcsR0FBRyxHQUFHLFdBQVcsWUFBWSxHQUFHLElBQUksVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFBLENBQUE7SUFwQ0QsQ0FBQztJQU5ELElBQVksZ0JBQWdCOztRQUMxQixPQUFPLENBQUMsUUFBQyxJQUFJLENBQUMscUJBQXFCLDBDQUFFLFdBQVcsQ0FBQSxJQUFJLENBQUMsUUFBQyxJQUFJLENBQUMscUJBQXFCLDBDQUFFLEdBQUcsQ0FBQSxDQUFDO0lBQ3hGLENBQUM7Ozs7WUFORixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQU5RLFlBQVk7NENBYWhCLE1BQU0sU0FBQyxlQUFlLGNBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEFwaVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2FwaSc7XHJcbmltcG9ydCB7IEZJUkVCQVNFX0NPTkZJRywgSUZpcmViYXNlQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgRGJRdWVyeSwgRGJSZXMgfSBmcm9tICcuL2RiLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRGJTZXJ2aWNlIHtcclxuICBwcml2YXRlIGdldCBoYXNDb25maWd1cmF0aW9uKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb24/LmZ1bmN0aW9uVXJsICYmICEhdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb24/LmVudjtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFNkQXBpU2VydmljZSxcclxuICAgIEBJbmplY3QoRklSRUJBU0VfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGZpcmViYXNlQ29uZmlndXJhdGlvbjogSUZpcmViYXNlQ29uZmlndXJhdGlvbikge1xyXG4gIH1cclxuXHJcbiAgZ2V0ID0gYXN5bmMgPFQgPSBhbnk+KGNvbGxlY3Rpb246IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8RGJSZXM8VD4+ID0+IHtcclxuICAgIGlmICghdGhpcy5oYXNDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZmlyZWJhc2UgZnVuY3Rpb24gY29uZmlndXJhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBmdW5jdGlvblVybCwgZW52IH0gPSB0aGlzLmZpcmViYXNlQ29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHVybCA9IGAke2Z1bmN0aW9uVXJsfS9kYi9nZXQvJHtlbnZ9LSR7Y29sbGVjdGlvbn0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBpU2VydmljZS5nZXQodXJsKTtcclxuICB9XHJcblxyXG4gIHNldCA9IGFzeW5jIDxUID0gYW55Pihjb2xsZWN0aW9uOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICAgIGlmICghdGhpcy5oYXNDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZmlyZWJhc2UgZnVuY3Rpb24gY29uZmlndXJhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBmdW5jdGlvblVybCwgZW52IH0gPSB0aGlzLmZpcmViYXNlQ29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHVybCA9IGAke2Z1bmN0aW9uVXJsfS9kYi9zZXQvJHtlbnZ9LSR7Y29sbGVjdGlvbn0vJHtpZH1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSA9IGFzeW5jIDxUID0gYW55Pihjb2xsZWN0aW9uOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICAgIGlmICghdGhpcy5oYXNDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZmlyZWJhc2UgZnVuY3Rpb24gY29uZmlndXJhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBmdW5jdGlvblVybCwgZW52IH0gPSB0aGlzLmZpcmViYXNlQ29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHVybCA9IGAke2Z1bmN0aW9uVXJsfS9kYi9yZW1vdmUvJHtlbnZ9LSR7Y29sbGVjdGlvbn0vJHtpZH1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZSh1cmwpO1xyXG4gIH1cclxuXHJcbiAgZmluZCA9IGFzeW5jIDxUID0gYW55Pihjb2xsZWN0aW9uOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHF1ZXJ5OiBEYlF1ZXJ5KTogUHJvbWlzZTxEYlJlczxUW10+PiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuaGFzQ29uZmlndXJhdGlvbikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGZpcmViYXNlIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZnVuY3Rpb25VcmwsIGVudiB9ID0gdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmdW5jdGlvblVybH0vZGIvZmluZC8ke2Vudn0tJHtjb2xsZWN0aW9ufS8ke2lkfWA7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCBxdWVyeSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZGIvIiwic291cmNlcyI6WyJzcmMvbGliL2RiLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQTBCLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFNbEYsTUFBTSxPQUFPLFdBQVc7SUFJdEIsWUFDVSxVQUF3QixFQUNhLHFCQUE2QztRQURsRixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ2EsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQUc1RixRQUFHLEdBQUcsQ0FBZ0IsVUFBa0IsRUFBRSxFQUFVLEVBQXFCLEVBQUU7WUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ2pFLE1BQU0sR0FBRyxHQUFHLEdBQUcsV0FBVyxXQUFXLE9BQU8sSUFBSSxHQUFHLElBQUksVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzFFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUEsQ0FBQTtRQUVELFFBQUcsR0FBRyxDQUFnQixVQUFrQixFQUFFLEVBQVUsRUFBRSxJQUFPLEVBQWlCLEVBQUU7WUFDOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ2pFLE1BQU0sR0FBRyxHQUFHLEdBQUcsV0FBVyxXQUFXLE9BQU8sSUFBSSxHQUFHLElBQUksVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzFFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQSxDQUFBO1FBRUQsV0FBTSxHQUFHLENBQU8sVUFBa0IsRUFBRSxFQUFVLEVBQWlCLEVBQUU7WUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ2pFLE1BQU0sR0FBRyxHQUFHLEdBQUcsV0FBVyxjQUFjLE9BQU8sSUFBSSxHQUFHLElBQUksVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzdFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFBLENBQUE7UUFFRCxTQUFJLEdBQUcsQ0FBZ0IsVUFBa0IsRUFBRSxFQUFVLEVBQUUsS0FBYyxFQUF1QixFQUFFO1lBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQzthQUN2RDtZQUNELE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUNqRSxNQUFNLEdBQUcsR0FBRyxHQUFHLFdBQVcsWUFBWSxPQUFPLElBQUksR0FBRyxJQUFJLFVBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMzRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQSxDQUFBO0lBcENELENBQUM7SUFORCxJQUFZLGdCQUFnQjs7UUFDMUIsT0FBTyxDQUFDLFFBQUMsSUFBSSxDQUFDLHFCQUFxQiwwQ0FBRSxXQUFXLENBQUEsSUFBSSxDQUFDLFFBQUMsSUFBSSxDQUFDLHFCQUFxQiwwQ0FBRSxPQUFPLENBQUEsSUFBSSxDQUFDLFFBQUMsSUFBSSxDQUFDLHFCQUFxQiwwQ0FBRSxHQUFHLENBQUEsQ0FBQztJQUNqSSxDQUFDOzs7O1lBTkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFOUSxZQUFZOzRDQWFoQixNQUFNLFNBQUMsZUFBZSxjQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RBcGlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5pbXBvcnQgeyBGSVJFQkFTRV9DT05GSUcsIElGaXJlYmFzZUNvbmZpZ3VyYXRpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcbmltcG9ydCB7IERiUXVlcnksIERiUmVzIH0gZnJvbSAnLi9kYi5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZERiU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBnZXQgaGFzQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHJldHVybiAhIXRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uPy5mdW5jdGlvblVybCAmJiAhIXRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uPy5wcm9qZWN0ICYmICEhdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb24/LmVudjtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFNkQXBpU2VydmljZSxcclxuICAgIEBJbmplY3QoRklSRUJBU0VfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGZpcmViYXNlQ29uZmlndXJhdGlvbjogSUZpcmViYXNlQ29uZmlndXJhdGlvbikge1xyXG4gIH1cclxuXHJcbiAgZ2V0ID0gYXN5bmMgPFQgPSBhbnk+KGNvbGxlY3Rpb246IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8RGJSZXM8VD4+ID0+IHtcclxuICAgIGlmICghdGhpcy5oYXNDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZmlyZWJhc2UgZnVuY3Rpb24gY29uZmlndXJhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBmdW5jdGlvblVybCwgcHJvamVjdCwgZW52IH0gPSB0aGlzLmZpcmViYXNlQ29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHVybCA9IGAke2Z1bmN0aW9uVXJsfS9kYi9nZXQvJHtwcm9qZWN0fS8ke2Vudn0vJHtjb2xsZWN0aW9ufS8ke2lkfWA7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgc2V0ID0gYXN5bmMgPFQgPSBhbnk+KGNvbGxlY3Rpb246IHN0cmluZywgaWQ6IHN0cmluZywgZGF0YTogVCk6IFByb21pc2U8dm9pZD4gPT4ge1xyXG4gICAgaWYgKCF0aGlzLmhhc0NvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBmaXJlYmFzZSBmdW5jdGlvbiBjb25maWd1cmF0aW9uJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGZ1bmN0aW9uVXJsLCBwcm9qZWN0LCBlbnYgfSA9IHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZnVuY3Rpb25Vcmx9L2RiL3NldC8ke3Byb2plY3R9LyR7ZW52fS8ke2NvbGxlY3Rpb259LyR7aWR9YDtcclxuICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUgPSBhc3luYyAoY29sbGVjdGlvbjogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuaGFzQ29uZmlndXJhdGlvbikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGZpcmViYXNlIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZnVuY3Rpb25VcmwsIHByb2plY3QsIGVudiB9ID0gdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmdW5jdGlvblVybH0vZGIvcmVtb3ZlLyR7cHJvamVjdH0vJHtlbnZ9LyR7Y29sbGVjdGlvbn0vJHtpZH1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZSh1cmwpO1xyXG4gIH1cclxuXHJcbiAgZmluZCA9IGFzeW5jIDxUID0gYW55Pihjb2xsZWN0aW9uOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHF1ZXJ5OiBEYlF1ZXJ5KTogUHJvbWlzZTxEYlJlczxUW10+PiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuaGFzQ29uZmlndXJhdGlvbikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGZpcmViYXNlIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZnVuY3Rpb25VcmwsIHByb2plY3QsIGVudiB9ID0gdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmdW5jdGlvblVybH0vZGIvZmluZC8ke3Byb2plY3R9LyR7ZW52fS8ke2NvbGxlY3Rpb259LyR7aWR9YDtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmFwaVNlcnZpY2UucG9zdCh1cmwsIHF1ZXJ5KTtcclxuICB9XHJcbn1cclxuIl19
@@ -78,6 +78,7 @@ class SdChip {
78
78
  this.sdChange = new EventEmitter();
79
79
  this.sdUpdate = new EventEmitter();
80
80
  this.chipSelected = new EventEmitter();
81
+ this.isBluring = false;
81
82
  this.isFocused = false;
82
83
  this.inputControl = new FormControl();
83
84
  this.formControl = new SdFormControl();
@@ -226,6 +227,12 @@ class SdChip {
226
227
  }
227
228
  this.inputControl.setValue('');
228
229
  };
230
+ this.onClickChip = ($event, item) => {
231
+ $event.stopPropagation();
232
+ $event.stopImmediatePropagation();
233
+ item.isSelected = !item.isSelected;
234
+ this.focus();
235
+ };
229
236
  this.onRemove = (item) => {
230
237
  var _a;
231
238
  const values = (_a = this.formControl.value) !== null && _a !== void 0 ? _a : [];
@@ -319,14 +326,20 @@ class SdChip {
319
326
  // }
320
327
  this.onFocus = () => {
321
328
  this.isFocused = true;
329
+ this.isBluring = false;
322
330
  this.inputControl.setValue('');
323
331
  // this.inputControl.updateValueAndValidity();
324
332
  };
325
333
  this.onBlur = () => {
326
- this.isFocused = false;
327
- this.inputControl.setValue('', {
328
- emitEvent: false
329
- });
334
+ this.isBluring = true;
335
+ setTimeout(() => {
336
+ if (this.isBluring) {
337
+ this.isFocused = false;
338
+ this.inputControl.setValue('', {
339
+ emitEvent: false
340
+ });
341
+ }
342
+ }, 100);
330
343
  };
331
344
  this.onClick = () => {
332
345
  var _a;
@@ -338,6 +351,7 @@ class SdChip {
338
351
  };
339
352
  this.focus = () => {
340
353
  this.isFocused = true;
354
+ this.isBluring = false;
341
355
  setTimeout(() => {
342
356
  var _a, _b, _c;
343
357
  (_a = this.autocompleteTrigger) === null || _a === void 0 ? void 0 : _a.openPanel();
@@ -520,7 +534,7 @@ _name = new WeakMap(), _form = new WeakMap(), _addable = new WeakMap(), _allItem
520
534
  SdChip.decorators = [
521
535
  { type: Component, args: [{
522
536
  selector: 'sd-chip',
523
- template: "<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"c-md\" [ngClass]=\"{'c-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\" appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list [formControl]=\"formControl\" #chipList>\r\n <ng-container *ngFor=\"let item of selectedItems | async\">\r\n <mat-chip *ngIf=\"item\" [selectable]=\"selectable\" [removable]=\"removable\" (removed)=\"onRemove(item)\"\r\n [selected]=\"item.isSelected\" (selectionChange)=\"select(item)\" [disabled]=\"inputControl.disabled\"\r\n (click)=\"item.isSelected = !item.isSelected\">\r\n <ng-container *ngIf=\"sdChipDisplay?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdChipDisplay.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"!sdChipDisplay?.templateRef\">{{item[displayField] || item[valueField] || item}}</span>\r\n <mat-icon *ngIf=\"!inputControl.disabled && item | sdRemovableChip:removable\" matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n <input #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"onAdd($event)\" autocomplete=\"off\" [errorStateMatcher]=\"matcher\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" matInput #input>\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event)\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"displayField ? item[displayField] : item\">\r\n {{ displayField ? item[displayField] : item }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>",
537
+ template: "<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"c-md\" [ngClass]=\"{'c-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\" appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list [formControl]=\"formControl\" #chipList>\r\n <ng-container *ngFor=\"let item of selectedItems | async\">\r\n <mat-chip *ngIf=\"item\" [selectable]=\"selectable\" [removable]=\"removable\" (removed)=\"onRemove(item)\"\r\n [selected]=\"item.isSelected\" (selectionChange)=\"select(item)\" [disabled]=\"inputControl.disabled\"\r\n (click)=\"onClickChip($event, item)\">\r\n <ng-container *ngIf=\"sdChipDisplay?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdChipDisplay.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"!sdChipDisplay?.templateRef\">{{item[displayField] || item[valueField] || item}}</span>\r\n <mat-icon *ngIf=\"!inputControl.disabled && item | sdRemovableChip:removable\" matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n <input #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"onAdd($event)\" autocomplete=\"off\" [errorStateMatcher]=\"matcher\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" matInput #input>\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event)\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"displayField ? item[displayField] : item\">\r\n {{ displayField ? item[displayField] : item }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>",
524
538
  changeDetection: ChangeDetectionStrategy.OnPush,
525
539
  styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep mat-form-field.c-md .mat-form-field-infix{min-height:43.5px;padding:2px 0}:host ::ng-deep mat-form-field.c-md .mat-standard-chip{min-height:26px;padding:7px 10px}:host ::ng-deep mat-form-field.c-md .mat-standard-chip.mat-chip-with-trailing-icon{padding:7px 7px 7px 10px}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]
526
540
  },] }