@bizdoc/core 1.13.0-next.8 → 1.13.4
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.
- package/assets/bizdoc-schema.json +1 -14
- package/esm2020/lib/admin/diff/configuration-diff.component.mjs +5 -2
- package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -2
- package/esm2020/lib/admin/positions/positions-popup.component.mjs +1 -1
- package/esm2020/lib/browse/browse-items.component.mjs +11 -8
- package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +39 -30
- package/esm2020/lib/compose/action/action-picker.component.mjs +15 -14
- package/esm2020/lib/compose/action/action.base.mjs +8 -7
- package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +12 -11
- package/esm2020/lib/compose/action/assign-action.component.mjs +52 -26
- package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -4
- package/esm2020/lib/compose/form.component.mjs +5 -6
- package/esm2020/lib/compose/trace/flow.component.mjs +78 -81
- package/esm2020/lib/compose/trace/trace.component.mjs +44 -36
- package/esm2020/lib/core/controls/file.input.mjs +6 -7
- package/esm2020/lib/core/layout/layout.component.mjs +2 -2
- package/esm2020/lib/core/mailbox.service.mjs +1 -1
- package/esm2020/lib/core/models.mjs +2 -9
- package/esm2020/lib/core/translations.mjs +12 -2
- package/esm2020/lib/cube/cube.service.mjs +13 -5
- package/esm2020/lib/cube/explore/explore-items.component.mjs +25 -14
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +62 -62
- package/fesm2015/bizdoc-core.mjs +485 -413
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +479 -412
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/diff/configuration-diff.component.d.ts +1 -0
- package/lib/browse/expanded-item/expanded-item.component.d.ts +1 -0
- package/lib/compose/action/action-picker.component.d.ts +2 -1
- package/lib/compose/action/action.base.d.ts +4 -2
- package/lib/compose/action/action.pane.dialog.exp.d.ts +2 -1
- package/lib/compose/action/assign-action.component.d.ts +16 -5
- package/lib/compose/trace/flow.component.d.ts +0 -1
- package/lib/compose/trace/trace.component.d.ts +5 -4
- package/lib/core/mailbox.service.d.ts +0 -1
- package/lib/core/models.d.ts +5 -13
- package/lib/core/translations.d.ts +10 -0
- package/lib/cube/cube.service.d.ts +7 -1
- package/package.json +1 -2
@@ -1,56 +1,79 @@
|
|
1
1
|
import { __decorate } from "tslib";
|
2
|
-
import { Component } from '@angular/core';
|
2
|
+
import { Component, ElementRef, ViewChild } from '@angular/core';
|
3
3
|
import { Validators } from '@angular/forms';
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
4
|
+
import { COMMA, ENTER } from '@angular/cdk/keycodes';
|
5
|
+
import { debounceTime, Subject } from 'rxjs';
|
6
|
+
import { takeUntil, map, switchMap } from 'rxjs/operators';
|
7
7
|
import { BizDoc } from '../../core/decorators';
|
8
|
-
import { takeUntil } from 'rxjs';
|
9
8
|
import * as i0 from "@angular/core";
|
10
9
|
import * as i1 from "@angular/forms";
|
11
10
|
import * as i2 from "../../core/session.service";
|
12
11
|
import * as i3 from "../../core/account.service";
|
13
12
|
import * as i4 from "@angular/material/form-field";
|
14
|
-
import * as i5 from "@angular/material/
|
15
|
-
import * as i6 from "@angular/material/
|
16
|
-
import * as i7 from "@angular/material/
|
17
|
-
import * as i8 from "@angular/
|
18
|
-
import * as i9 from "@angular/material/
|
19
|
-
import * as i10 from "@angular/
|
20
|
-
import * as i11 from "@angular/
|
21
|
-
import * as i12 from "
|
13
|
+
import * as i5 from "@angular/material/chips";
|
14
|
+
import * as i6 from "@angular/material/icon";
|
15
|
+
import * as i7 from "@angular/material/autocomplete";
|
16
|
+
import * as i8 from "@angular/material/core";
|
17
|
+
import * as i9 from "@angular/material/checkbox";
|
18
|
+
import * as i10 from "@angular/flex-layout/flex";
|
19
|
+
import * as i11 from "@angular/common";
|
20
|
+
import * as i12 from "@angular/material/input";
|
21
|
+
import * as i13 from "@angular/cdk/text-field";
|
22
|
+
import * as i14 from "../../core/pipes/translate.pipe";
|
23
|
+
import * as i15 from "../../core/pipes/user-name.pipe";
|
22
24
|
let AssignActionComponent = class AssignActionComponent {
|
23
25
|
constructor(_fb, _session, _accounts) {
|
24
26
|
this._fb = _fb;
|
25
27
|
this._session = _session;
|
26
28
|
this._accounts = _accounts;
|
29
|
+
this.separatorKeysCodes = [ENTER, COMMA];
|
27
30
|
this.form = this._fb.group({
|
28
|
-
|
31
|
+
userIds: this._fb.control(null, Validators.required),
|
29
32
|
fyi: this._fb.control(false),
|
30
|
-
|
33
|
+
roundtrip: this._fb.control(false),
|
31
34
|
note: this._fb.control(null, Validators.maxLength(200))
|
32
35
|
});
|
33
|
-
this.
|
36
|
+
this.userIds = this._fb.control([]);
|
34
37
|
this._destroy = new Subject();
|
35
38
|
}
|
36
39
|
ngOnInit() {
|
37
40
|
const me = this._session.userId;
|
38
|
-
this.users = this.
|
39
|
-
pipe(
|
41
|
+
this.users$ = this.userIds.valueChanges.
|
42
|
+
pipe(debounceTime(200), takeUntil(this._destroy), switchMap(v => this._accounts.findAll(v, { take: 20 }).
|
40
43
|
pipe(map(r => r.filter(u => u.id !== me)))));
|
41
44
|
}
|
42
|
-
|
43
|
-
|
45
|
+
/**
|
46
|
+
*
|
47
|
+
* @param inp
|
48
|
+
* @param event
|
49
|
+
*/
|
50
|
+
userSelected(inp, event) {
|
51
|
+
const userIds = this.form.controls['userIds'].value || [];
|
52
|
+
userIds.push(event.option.value);
|
53
|
+
this.form.controls['userIds'].setValue(userIds);
|
54
|
+
inp.value = '';
|
44
55
|
}
|
45
|
-
|
46
|
-
|
56
|
+
/**
|
57
|
+
*
|
58
|
+
* @param id
|
59
|
+
*/
|
60
|
+
removed(id) {
|
61
|
+
const userIds = this.form.controls['userIds'].value;
|
62
|
+
const index = userIds.indexOf(id);
|
63
|
+
if (userIds.length > 1) {
|
64
|
+
index >= 0 &&
|
65
|
+
userIds.splice(index, 1);
|
66
|
+
this.form.updateValueAndValidity();
|
67
|
+
}
|
68
|
+
else
|
69
|
+
this.form.controls['userIds'].setValue(null);
|
47
70
|
}
|
48
71
|
ngOnDestroy() {
|
49
72
|
this._destroy.next();
|
50
73
|
}
|
51
74
|
};
|
52
75
|
AssignActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AssignActionComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SessionService }, { token: i3.AccountService }], target: i0.ɵɵFactoryTarget.Component });
|
53
|
-
AssignActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AssignActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <
|
76
|
+
AssignActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AssignActionComponent, selector: "ng-component", viewQueries: [{ propertyName: "nameInput", first: true, predicate: ["nameInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"'AssignTo'|translate\">\r\n <mat-chip *ngFor=\"let u of form.value.userIds\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n {{u | userName | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input required [placeholder]=\"'AssignTo'|translate\"\r\n [formControl]=userIds\r\n cdkFocusInitial \r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"userSelected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\"> - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userIds.hasError('required')\">{{'Required'|translate:('AssignTo'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'AssignFYI' | translate }}</mat-checkbox>\r\n <!--<mat-checkbox formControlName=roundtrip> {{ 'AssignRoundtrip' | translate }}</mat-checkbox>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n <mat-hint>{{'AssignNoteHint'| translate}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i5.MatChipRemove, selector: "[matChipRemove]" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i5.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i13.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": i14.TranslatePipe, "async": i11.AsyncPipe, "userName": i15.UserNamePipe } });
|
54
77
|
AssignActionComponent = __decorate([
|
55
78
|
BizDoc({
|
56
79
|
selector: 'bizdoc-action-assign'
|
@@ -59,6 +82,9 @@ AssignActionComponent = __decorate([
|
|
59
82
|
export { AssignActionComponent };
|
60
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AssignActionComponent, decorators: [{
|
61
84
|
type: Component,
|
62
|
-
args: [{ template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <
|
63
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SessionService }, { type: i3.AccountService }]; }
|
64
|
-
|
85
|
+
args: [{ template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"'AssignTo'|translate\">\r\n <mat-chip *ngFor=\"let u of form.value.userIds\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n {{u | userName | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input required [placeholder]=\"'AssignTo'|translate\"\r\n [formControl]=userIds\r\n cdkFocusInitial \r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"userSelected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\"> - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userIds.hasError('required')\">{{'Required'|translate:('AssignTo'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'AssignFYI' | translate }}</mat-checkbox>\r\n <!--<mat-checkbox formControlName=roundtrip> {{ 'AssignRoundtrip' | translate }}</mat-checkbox>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n <mat-hint>{{'AssignNoteHint'| translate}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n" }]
|
86
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SessionService }, { type: i3.AccountService }]; }, propDecorators: { nameInput: [{
|
87
|
+
type: ViewChild,
|
88
|
+
args: ['nameInput', { static: true, read: ElementRef }]
|
89
|
+
}] } });
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvYWN0aW9uL2Fzc2lnbi1hY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb21wb3NlL2FjdGlvbi9hc3NpZ24tYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQVUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFZbEMscUJBQXFCLFNBQXJCLHFCQUFxQjtJQVloQyxZQUFvQixHQUFnQixFQUFVLFFBQXdCLEVBQVUsU0FBeUI7UUFBckYsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFYaEcsdUJBQWtCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFOUMsU0FBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFB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LEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBBcmd1bWVudHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vYXNzaWduLWFjdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuQEJpekRvYyh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYWN0aW9uLWFzc2lnbidcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2lnbkFjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFyZ3VtZW50c0NvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuICBAVmlld0NoaWxkKCduYW1lSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBuYW1lSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIHVzZXJJZHM6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICBmeWk6IHRoaXMuX2ZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgcm91bmR0cmlwOiB0aGlzLl9mYi5jb250cm9sKGZhbHNlKSxcclxuICAgIG5vdGU6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjAwKSlcclxuICB9KTtcclxuICByZWFkb25seSB1c2VySWRzID0gdGhpcy5fZmIuY29udHJvbChbXSk7XHJcbiAgdXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJJbmZvW10+O1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSkge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1lID0gdGhpcy5fc2Vzc2lvbi51c2VySWQ7XHJcbiAgICB0aGlzLnVzZXJzJCA9IHRoaXMudXNlcklkcy52YWx1ZUNoYW5nZXMuXHJcbiAgICAgIHBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+XHJcbiAgICAgICAgICB0aGlzLl9hY2NvdW50cy5maW5kQWxsKHYsIHsgdGFrZTogMjAgfSkuXHJcbiAgICAgICAgICAgIHBpcGUobWFwKHIgPT5cclxuICAgICAgICAgICAgICByLmZpbHRlcih1ID0+IHUuaWQgIT09IG1lKSkpKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlucFxyXG4gICAqIEBwYXJhbSBldmVudFxyXG4gICAqL1xyXG4gIHVzZXJTZWxlY3RlZChpbnA6IEhUTUxJbnB1dEVsZW1lbnQsIGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB1c2VySWRzID0gdGhpcy5mb3JtLmNvbnRyb2xzWyd1c2VySWRzJ10udmFsdWUgYXMgc3RyaW5nW10gfHwgW107XHJcbiAgICB1c2VySWRzLnB1c2goZXZlbnQub3B0aW9uLnZhbHVlKTtcclxuICAgIHRoaXMuZm9ybS5jb250cm9sc1sndXNlcklkcyddLnNldFZhbHVlKHVzZXJJZHMpO1xyXG4gICAgaW5wLnZhbHVlID0gJyc7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICovXHJcbiAgcmVtb3ZlZChpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB1c2VySWRzID0gdGhpcy5mb3JtLmNvbnRyb2xzWyd1c2VySWRzJ10udmFsdWUgYXMgc3RyaW5nW107XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB1c2VySWRzLmluZGV4T2YoaWQpO1xyXG5cclxuICAgIGlmICh1c2VySWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgaW5kZXggPj0gMCAmJlxyXG4gICAgICAgIHVzZXJJZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIFxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3VzZXJJZHMnXS5zZXRWYWx1ZShudWxsKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3QgW2F0dHIuYXJpYS1sYWJlbF09XCInQXNzaWduVG8nfHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IHUgb2YgZm9ybS52YWx1ZS51c2VySWRzXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZWQodSlcIj5cclxuICAgICAgICB7e3UgfCB1c2VyTmFtZSB8IGFzeW5jIH19XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtY2hpcD5cclxuICAgICAgPGlucHV0IHJlcXVpcmVkIFtwbGFjZWhvbGRlcl09XCInQXNzaWduVG8nfHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPXVzZXJJZHNcclxuICAgICAgICAgICAgIGNka0ZvY3VzSW5pdGlhbCBcclxuICAgICAgICAgICAgICNuYW1lSW5wdXRcclxuICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCJcclxuICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIj5cclxuICAgIDwvbWF0LWNoaXAtbGlzdD5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cInVzZXJTZWxlY3RlZChuYW1lSW5wdXQsICRldmVudClcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidS5pZFwiPlxyXG4gICAgICAgIHt7dS5uYW1lfX1cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInUuZW1haWxcIj4mbmJzcDsgLSB7e3UuZW1haWx9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMudXNlcklkcy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7J1JlcXVpcmVkJ3x0cmFuc2xhdGU6KCdBc3NpZ25Ubyd8dHJhbnNsYXRlKX19PC9tYXQtZXJyb3I+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWNoZWNrYm94IGZvcm1Db250cm9sTmFtZT1meWk+IHt7ICdBc3NpZ25GWUknIHwgdHJhbnNsYXRlIH19PC9tYXQtY2hlY2tib3g+XHJcbiAgPCEtLTxtYXQtY2hlY2tib3ggZm9ybUNvbnRyb2xOYW1lPXJvdW5kdHJpcD4ge3sgJ0Fzc2lnblJvdW5kdHJpcCcgfCB0cmFuc2xhdGUgfX08L21hdC1jaGVja2JveD4tLT5cclxuICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8dGV4dGFyZWEgbWF0SW5wdXQgY2RrVGV4dGFyZWFBdXRvc2l6ZSBmb3JtQ29udHJvbE5hbWU9XCJub3RlXCIgW3BsYWNlaG9sZGVyXT1cIidOb3RlJ3x0cmFuc2xhdGVcIiBtYXhsZW5ndGg9XCIyMDBcIj5cclxuICAgIDwvdGV4dGFyZWE+XHJcbiAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIj57e2Zvcm0uY29udHJvbHNbJ25vdGUnXS52YWx1ZT8ubGVuZ3RoIHx8IDB9fSAvIHt7MjAwfX08L21hdC1oaW50PlxyXG4gICAgPG1hdC1oaW50Pnt7J0Fzc2lnbk5vdGVIaW50J3wgdHJhbnNsYXRlfX08L21hdC1oaW50PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZm9ybT5cclxuIl19
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { Component, Input, Injector } from '@angular/core';
|
2
|
-
import { AttachmentMode } from '../../core/models';
|
3
2
|
import { OverlayRef } from '@angular/cdk/overlay';
|
4
3
|
import { AttachmentPreview, FILE_PREVIEW_DIALOG_DATA } from './preview/attachment-preview.component';
|
5
4
|
import { ComponentPortal } from '@angular/cdk/portal';
|
@@ -38,13 +37,13 @@ export class AttachmentsComponent {
|
|
38
37
|
const attachments = this.model.attachments.sort((a1, a0) => a1.time > a0.time ? 1 : -1);
|
39
38
|
for (const attachment of attachments) {
|
40
39
|
if ((!attachment.deleted || this.includeDeleted) &&
|
41
|
-
|
40
|
+
!attachment.private &&
|
42
41
|
!distinct.find(a => a.fileName === attachment.fileName)) {
|
43
42
|
let log = this.model.log.filter(l => l.fileId == attachment.id && l.userId == this._session.userId), download = log.find(l => l.type === 'Download'), checkedOut = log.find(l => l.type === 'CheckOut');
|
44
43
|
if (download)
|
45
44
|
attachment.viewed = download.time;
|
46
45
|
if (checkedOut)
|
47
|
-
attachment.checkedOut =
|
46
|
+
attachment.checkedOut = true;
|
48
47
|
distinct.push(attachment);
|
49
48
|
}
|
50
49
|
}
|
@@ -125,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
125
124
|
}], includeDeleted: [{
|
126
125
|
type: Input
|
127
126
|
}] } });
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb21wb3NlL2F0dGFjaG1lbnRzL2F0dGFjaG1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9hdHRhY2htZW50cy9hdHRhY2htZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBNkIsY0FBYyxFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBQzlGLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQWUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBT3pFLGdDQUFnQztBQUNoQyxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLDRCQUE0QjtJQUM1QixZQUFvQixRQUF3QixFQUNsQyxRQUF3QixFQUN4QixHQUFxQixFQUNyQixHQUFrQixFQUNsQixRQUFpQixFQUNqQixTQUFtQixFQUNuQixJQUFvQjtRQU5WLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFNBQUksR0FBSixJQUFJ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QjtxR0FBcEIsb0JBQW9CLGlMQ2pCakMsNDNDQXVCQTsyRkROYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usb0JBQW9CO3VRQU1yQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0b3IsIFZpZXdDb250YWluZXJSZWYsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb2N1bWVudE1vZGVsLCBBdHRhY2htZW50LCBBdHRhY2htZW50TW9kZSwgUmVjaXBpZW50TW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3LCBGSUxFX1BSRVZJRVdfRElBTE9HX0RBVEEsIFByZXZpZXdEYXRhIH0gZnJvbSAnLi9wcmV2aWV3L2F0dGFjaG1lbnQtcHJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RXh0cmEsIE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vY29yZS9pbmZvL2F0dGFjaG1lbnQtaW5mby5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWF0dGFjaG1lbnRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNobWVudHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F0dGFjaG1lbnRzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuLyoqIG1haWwtYXR0YWNobWVudHMgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBtb2RlbCE6IFJlY2lwaWVudE1vZGVsPGFueT4gfCBEb2N1bWVudE1vZGVsPGFueT47XHJcbiAgQElucHV0KCkgdmlld2VkSW5kaWNhdG9yID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpbmNsdWRlRGVsZXRlZCA9IGZhbHNlO1xyXG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50W107XHJcbiAgLyoqIG1haWwtYXR0YWNobWVudHMgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF92YzogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHkpIHtcclxuICB9XHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlzdGluY3Q6IEF0dGFjaG1lbnRbXSA9IFtdO1xyXG4gICAgY29uc3QgYXR0YWNobWVudHMgPSB0aGlzLm1vZGVsLmF0dGFjaG1lbnRzLnNvcnQoKGExLCBhMCkgPT4gYTEudGltZSA+IGEwLnRpbWUgPyAxIDogLTEpO1xyXG4gICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XHJcbiAgICAgIGlmICgoIWF0dGFjaG1lbnQuZGVsZXRlZCB8fCB0aGlzLmluY2x1ZGVEZWxldGVkKSAmJlxyXG4gICAgICAgIChhdHRhY2htZW50Lm1vZGUgJiBBdHRhY2htZW50TW9kZS5QdWJsaWMpID09IEF0dGFjaG1lbnRNb2RlLlB1YmxpYyAmJlxyXG4gICAgICAgICFkaXN0aW5jdC5maW5kKGEgPT4gYS5maWxlTmFtZSA9PT0gYXR0YWNobWVudC5maWxlTmFtZSkpIHtcclxuICAgICAgICBsZXQgbG9nID0gdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC5maWxlSWQgPT0gYXR0YWNobWVudC5pZCAmJiBsLnVzZXJJZCA9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCksXHJcbiAgICAgICAgICBkb3dubG9hZCA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRG93bmxvYWQnKSxcclxuICAgICAgICAgIGNoZWNrZWRPdXQgPSBsb2cuZmluZChsPT4gbC50eXBlID09PSAnQ2hlY2tPdXQnKTtcclxuICAgICAgICBpZiAoZG93bmxvYWQpIChhdHRhY2htZW50IGFzIEF0dGFjaG1lbnRFeHRyYSkudmlld2VkID0gZG93bmxvYWQudGltZTtcclxuICAgICAgICBpZiAoY2hlY2tlZE91dCkgKGF0dGFjaG1lbnQgYXMgQXR0YWNobWVudEV4dHJhKS5jaGVja2VkT3V0ID0gY2hlY2tlZE91dC50aW1lO1xyXG4gICAgICAgIGRpc3RpbmN0LnB1c2goYXR0YWNobWVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYXR0YWNobWVudHMgPSBkaXN0aW5jdDtcclxuICB9XHJcbiAgaGFzVmVyc2lvbihpdGVtOiBBdHRhY2htZW50KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5hdHRhY2htZW50cy5maW5kKGEgPT4gYS5maWxlTmFtZSA9PT0gaXRlbS5maWxlTmFtZSAmJiBhICE9IGl0ZW0pICE9IG51bGw7XHJcbiAgfVxyXG4gIGdldFZlcnNpb25zKGl0ZW06IEF0dGFjaG1lbnQpOiBBdHRhY2htZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWwuYXR0YWNobWVudHMuZmlsdGVyKGEgPT4gYS5maWxlTmFtZSA9PT0gaXRlbS5maWxlTmFtZSAmJiBhICE9IGl0ZW0pO1xyXG4gIH1cclxuICBkb3dubG9hZChpdGVtOiBBdHRhY2htZW50KSB7XHJcbiAgICAvL3RoaXMuX21haWxib3guZG93bmxvYWQodGhpcy5tb2RlbC5kb2N1bWVudElkLCBpdGVtLmlkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAvL2NvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogaXRlbS5jb250ZW50VHlwZSB9KTtcclxuICAgIC8vaWYgKHR5cGVvZiB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IgIT09ICd1bmRlZmluZWQnKSB7IC8vIElFXHJcbiAgICAvLyAgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2IsIGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgLy99IGVsc2Uge1xyXG4gICAgLy9jb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIC8vY29uc3QgcHdhID0gd2luZG93Lm9wZW4odXJsKTtcclxuICAgIC8vaWYgKCFwd2EgfHwgcHdhLmNsb3NlZCB8fCB0eXBlb2YgcHdhLmNsb3NlZCA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAvL31cclxuICAgIC8vfSk7XHJcbiAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5fbWFpbGJveC5mb3JtYXREb3dubG9hZFVybCh0aGlzLm1vZGVsLmRvY3VtZW50SWQsIGl0ZW0uaWQpO1xyXG4gICAgKGl0ZW0gYXMgQXR0YWNobWVudEV4dHJhKS52aWV3ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuICBwcmV2aWV3T3JEb3dubG9hZChpdGVtOiBBdHRhY2htZW50KSB7XHJcbiAgICBpZiAodGhpcy5jYW5QcmV2aWV3KGl0ZW0pKVxyXG4gICAgICB0aGlzLnByZXZpZXcoaXRlbSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgfVxyXG4gIGNhblByZXZpZXcoaXRlbTogQXR0YWNobWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEF0dGFjaG1lbnRJbmZvLmV4aXN0cyhpdGVtLmNvbnRlbnRUeXBlKTtcclxuICB9XHJcbiAgY2FuRGVsZXRlKGl0ZW06IEF0dGFjaG1lbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tb2RlbC5jb21wbGV0ZWQgJiYgaXRlbS51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS51c2VySWQgJiYgIWl0ZW0uZGVsZXRlZDtcclxuICB9XHJcbiAgcHJldmlldyhpdGVtOiBBdHRhY2htZW50KSB7XHJcbiAgICBjb25zdCBvUmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnZGFyay1iYWNrZHJvcCcsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2Rpci52YWx1ZVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbXHJcbiAgICAgIHsgcHJvdmlkZTogRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBLCB1c2VWYWx1ZTogeyBmaWxlOiBpdGVtLCBkb2N1bWVudElkOiB0aGlzLm1vZGVsLmRvY3VtZW50SWQgfSBhcyBQcmV2aWV3RGF0YSB9LFxyXG4gICAgICB7IHByb3ZpZGU6IE92ZXJsYXlSZWYsIHVzZVZhbHVlOiBvUmVmIH1cclxuICAgIF0sIHRoaXMuX2luamVjdG9yKTtcclxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQXR0YWNobWVudFByZXZpZXcsIHRoaXMuX3ZjLCBpbmplY3Rvcik7XHJcbiAgICBvUmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgKGl0ZW0gYXMgQXR0YWNobWVudEV4dHJhKS52aWV3ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuICBjYW5jZWwoaXRlbTogQXR0YWNobWVudCkge1xyXG4gICAgdGhpcy5tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgICB0aGlzLm5nT25DaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGRpc2NhcmQoaXRlbTogQXR0YWNobWVudCkge1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+XHJcbiAgICAgIHRoaXMuX21haWxib3gucmVtb3ZlYXR0YWNobWVudCgodGhpcy5tb2RlbCBhcyBSZWNpcGllbnRNb2RlbDxhbnk+KS5pZCwgaXRlbS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvL2l0ZW0uZGVsZXRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xyXG4gICAgICB9LCAoKSA9PlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCkpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwuZHJhZnQpXHJcbiAgICAgIHRhc2soKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fc2IuYXNrKCdEZWxldGVGaWxlQXNrJywgJ0RlbGV0ZUZpbGUnLCB7IGNvbG9yOiAnd2FybicgfSkuc3Vic2NyaWJlKG9rID0+XHJcbiAgICAgICAgb2sgJiYgdGFzaygpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdGb3I9XCJsZXQgYSBvZiBhdHRhY2htZW50c1wiPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImF0dGFjaG1lbnQtbGlua1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJhdHRhY2htZW50XCIgW2JpemRvY1Rvb2x0aXBdPVwiYS50aW1lIHwgYW1DYWxlbmRhclwiIFtwcm9ncmVzc0luZGljYXRvcl09XCJhLnByb2dyZXNzXCI+XHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJ2aWV3ZWRJbmRpY2F0b3IgJiYgYS52aWV3ZWRcIj5kb25lX2FsbDwvbWF0LWljb24+XHJcbiAgICA8IS0tW2JpemRvY1Rvb2x0aXBdPVwiYS52aWV3ZWQgfCBhbUNhbGVuZGFyXCItLT5cclxuICAgIDxtYXQtaWNvbj5hdHRhY2htZW50PC9tYXQtaWNvbj4mbmJzcDtcclxuICAgIDxzcGFuIFtjbGFzcy5kZWxldGVkXT1cImEuZGVsZXRlZFwiIFtjbGFzcy5mYWlsZWRdPVwiYS5mYWlsZWRcIj57e2EuZmlsZU5hbWV9fTwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI2F0dGFjaG1lbnQ+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWEuZmFpbGVkXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZG93bmxvYWQoYSlcIj57e1wiRG93bmxvYWRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdJZj1cImNhblByZXZpZXcoYSlcIiAoY2xpY2spPVwicHJldmlldyhhKVwiPjxtYXQtaWNvbj5sYW5kc2NhcGU8L21hdC1pY29uPiB7e1wiUHJldmlld1wiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1ZlcnNpb24oYSlcIj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHYgb2YgZ2V0VmVyc2lvbnMoYSlcIiAoY2xpY2spPVwicHJldmlld09yRG93bmxvYWQodilcIj57e3YudGltZSB8ICBhbUNhbGVuZGFyfX08L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5EZWxldGUoYSlcIj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRpc2NhcmQoYSlcIj57e1wiRGlzY2FyZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2FuY2VsKGEpXCIgKm5nSWY9XCJhLmZhaWxlZFwiPnt7XCJDYW5jZWxcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuPC9kaXY+XHJcbiJdfQ==
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb21wb3NlL2F0dGFjaG1lbnRzL2F0dGFjaG1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9hdHRhY2htZW50cy9hdHRhY2htZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQWUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBT3pFLGdDQUFnQztBQUNoQyxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLDRCQUE0QjtJQUM1QixZQUFvQixRQUF3QixFQUNsQyxRQUF3QixFQUN4QixHQUFxQixFQUNyQixHQUFrQixFQUNsQixRQUFpQixFQUNqQixTQUFtQixFQUNuQixJQUFvQjtRQU5WLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQWdCO1FBVnJCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLG1CQUFj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QUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBJbmplY3RvciwgVmlld0NvbnRhaW5lclJlZiwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwsIEF0dGFjaG1lbnQsIFJlY2lwaWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50UHJldmlldywgRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBLCBQcmV2aWV3RGF0YSB9IGZyb20gJy4vcHJldmlldy9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXR0YWNobWVudEV4dHJhLCBNYWlsYm94U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50SW5mbyB9IGZyb20gJy4uLy4uL2NvcmUvaW5mby9hdHRhY2htZW50LWluZm8uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1hdHRhY2htZW50cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdHRhY2htZW50cy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbi8qKiBtYWlsLWF0dGFjaG1lbnRzIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgbW9kZWwhOiBSZWNpcGllbnRNb2RlbDxhbnk+IHwgRG9jdW1lbnRNb2RlbDxhbnk+O1xyXG4gIEBJbnB1dCgpIHZpZXdlZEluZGljYXRvciA9IHRydWU7XHJcbiAgQElucHV0KCkgaW5jbHVkZURlbGV0ZWQgPSBmYWxzZTtcclxuICBhdHRhY2htZW50czogQXR0YWNobWVudFtdO1xyXG4gIC8qKiBtYWlsLWF0dGFjaG1lbnRzIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9tYWlsYm94OiBNYWlsYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdmM6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5KSB7XHJcbiAgfVxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpc3RpbmN0OiBBdHRhY2htZW50W10gPSBbXTtcclxuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gdGhpcy5tb2RlbC5hdHRhY2htZW50cy5zb3J0KChhMSwgYTApID0+IGExLnRpbWUgPiBhMC50aW1lID8gMSA6IC0xKTtcclxuICAgIGZvciAoY29uc3QgYXR0YWNobWVudCBvZiBhdHRhY2htZW50cykge1xyXG4gICAgICBpZiAoKCFhdHRhY2htZW50LmRlbGV0ZWQgfHwgdGhpcy5pbmNsdWRlRGVsZXRlZCkgJiZcclxuICAgICAgICAhYXR0YWNobWVudC5wcml2YXRlICYmXHJcbiAgICAgICAgIWRpc3RpbmN0LmZpbmQoYSA9PiBhLmZpbGVOYW1lID09PSBhdHRhY2htZW50LmZpbGVOYW1lKSkge1xyXG4gICAgICAgIGxldCBsb2cgPSB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLmZpbGVJZCA9PSBhdHRhY2htZW50LmlkICYmIGwudXNlcklkID09IHRoaXMuX3Nlc3Npb24udXNlcklkKSxcclxuICAgICAgICAgIGRvd25sb2FkID0gbG9nLmZpbmQobCA9PiBsLnR5cGUgPT09ICdEb3dubG9hZCcpLFxyXG4gICAgICAgICAgY2hlY2tlZE91dCA9IGxvZy5maW5kKGw9PiBsLnR5cGUgPT09ICdDaGVja091dCcpO1xyXG4gICAgICAgIGlmIChkb3dubG9hZCkgKGF0dGFjaG1lbnQgYXMgQXR0YWNobWVudEV4dHJhKS52aWV3ZWQgPSBkb3dubG9hZC50aW1lO1xyXG4gICAgICAgIGlmIChjaGVja2VkT3V0KSAoYXR0YWNobWVudCBhcyBBdHRhY2htZW50RXh0cmEpLmNoZWNrZWRPdXQgPSB0cnVlO1xyXG4gICAgICAgIGRpc3RpbmN0LnB1c2goYXR0YWNobWVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYXR0YWNobWVudHMgPSBkaXN0aW5jdDtcclxuICB9XHJcbiAgaGFzVmVyc2lvbihpdGVtOiBBdHRhY2htZW50KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5hdHRhY2htZW50cy5maW5kKGEgPT4gYS5maWxlTmFtZSA9PT0gaXRlbS5maWxlTmFtZSAmJiBhICE9IGl0ZW0pICE9IG51bGw7XHJcbiAgfVxyXG4gIGdldFZlcnNpb25zKGl0ZW06IEF0dGFjaG1lbnQpOiBBdHRhY2htZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWwuYXR0YWNobWVudHMuZmlsdGVyKGEgPT4gYS5maWxlTmFtZSA9PT0gaXRlbS5maWxlTmFtZSAmJiBhICE9IGl0ZW0pO1xyXG4gIH1cclxuICBkb3dubG9hZChpdGVtOiBBdHRhY2htZW50KSB7XHJcbiAgICAvL3RoaXMuX21haWxib3guZG93bmxvYWQodGhpcy5tb2RlbC5kb2N1bWVudElkLCBpdGVtLmlkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAvL2NvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogaXRlbS5jb250ZW50VHlwZSB9KTtcclxuICAgIC8vaWYgKHR5cGVvZiB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IgIT09ICd1bmRlZmluZWQnKSB7IC8vIElFXHJcbiAgICAvLyAgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2IsIGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgLy99IGVsc2Uge1xyXG4gICAgLy9jb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIC8vY29uc3QgcHdhID0gd2luZG93Lm9wZW4odXJsKTtcclxuICAgIC8vaWYgKCFwd2EgfHwgcHdhLmNsb3NlZCB8fCB0eXBlb2YgcHdhLmNsb3NlZCA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAvL31cclxuICAgIC8vfSk7XHJcbiAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5fbWFpbGJveC5mb3JtYXREb3dubG9hZFVybCh0aGlzLm1vZGVsLmRvY3VtZW50SWQsIGl0ZW0uaWQpO1xyXG4gICAgKGl0ZW0gYXMgQXR0YWNobWVudEV4dHJhKS52aWV3ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuICBwcmV2aWV3T3JEb3dubG9hZChpdGVtOiBBdHRhY2htZW50KSB7XHJcbiAgICBpZiAodGhpcy5jYW5QcmV2aWV3KGl0ZW0pKVxyXG4gICAgICB0aGlzLnByZXZpZXcoaXRlbSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgfVxyXG4gIGNhblByZXZpZXcoaXRlbTogQXR0YWNobWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEF0dGFjaG1lbnRJbmZvLmV4aXN0cyhpdGVtLmNvbnRlbnRUeXBlKTtcclxuICB9XHJcbiAgY2FuRGVsZXRlKGl0ZW06IEF0dGFjaG1lbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tb2RlbC5jb21wbGV0ZWQgJiYgaXRlbS51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS51c2VySWQgJiYgIWl0ZW0uZGVsZXRlZDtcclxuICB9XHJcbiAgcHJldmlldyhpdGVtOiBBdHRhY2htZW50KSB7XHJcbiAgICBjb25zdCBvUmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnZGFyay1iYWNrZHJvcCcsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2Rpci52YWx1ZVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbXHJcbiAgICAgIHsgcHJvdmlkZTogRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBLCB1c2VWYWx1ZTogeyBmaWxlOiBpdGVtLCBkb2N1bWVudElkOiB0aGlzLm1vZGVsLmRvY3VtZW50SWQgfSBhcyBQcmV2aWV3RGF0YSB9LFxyXG4gICAgICB7IHByb3ZpZGU6IE92ZXJsYXlSZWYsIHVzZVZhbHVlOiBvUmVmIH1cclxuICAgIF0sIHRoaXMuX2luamVjdG9yKTtcclxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQXR0YWNobWVudFByZXZpZXcsIHRoaXMuX3ZjLCBpbmplY3Rvcik7XHJcbiAgICBvUmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgKGl0ZW0gYXMgQXR0YWNobWVudEV4dHJhKS52aWV3ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuICBjYW5jZWwoaXRlbTogQXR0YWNobWVudCkge1xyXG4gICAgdGhpcy5tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgICB0aGlzLm5nT25DaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGRpc2NhcmQoaXRlbTogQXR0YWNobWVudCkge1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+XHJcbiAgICAgIHRoaXMuX21haWxib3gucmVtb3ZlYXR0YWNobWVudCgodGhpcy5tb2RlbCBhcyBSZWNpcGllbnRNb2RlbDxhbnk+KS5pZCwgaXRlbS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvL2l0ZW0uZGVsZXRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xyXG4gICAgICB9LCAoKSA9PlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCkpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwuZHJhZnQpXHJcbiAgICAgIHRhc2soKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fc2IuYXNrKCdEZWxldGVGaWxlQXNrJywgJ0RlbGV0ZUZpbGUnLCB7IGNvbG9yOiAnd2FybicgfSkuc3Vic2NyaWJlKG9rID0+XHJcbiAgICAgICAgb2sgJiYgdGFzaygpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdGb3I9XCJsZXQgYSBvZiBhdHRhY2htZW50c1wiPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImF0dGFjaG1lbnQtbGlua1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJhdHRhY2htZW50XCIgW2JpemRvY1Rvb2x0aXBdPVwiYS50aW1lIHwgYW1DYWxlbmRhclwiIFtwcm9ncmVzc0luZGljYXRvcl09XCJhLnByb2dyZXNzXCI+XHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJ2aWV3ZWRJbmRpY2F0b3IgJiYgYS52aWV3ZWRcIj5kb25lX2FsbDwvbWF0LWljb24+XHJcbiAgICA8IS0tW2JpemRvY1Rvb2x0aXBdPVwiYS52aWV3ZWQgfCBhbUNhbGVuZGFyXCItLT5cclxuICAgIDxtYXQtaWNvbj5hdHRhY2htZW50PC9tYXQtaWNvbj4mbmJzcDtcclxuICAgIDxzcGFuIFtjbGFzcy5kZWxldGVkXT1cImEuZGVsZXRlZFwiIFtjbGFzcy5mYWlsZWRdPVwiYS5mYWlsZWRcIj57e2EuZmlsZU5hbWV9fTwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI2F0dGFjaG1lbnQ+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWEuZmFpbGVkXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZG93bmxvYWQoYSlcIj57e1wiRG93bmxvYWRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdJZj1cImNhblByZXZpZXcoYSlcIiAoY2xpY2spPVwicHJldmlldyhhKVwiPjxtYXQtaWNvbj5sYW5kc2NhcGU8L21hdC1pY29uPiB7e1wiUHJldmlld1wiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1ZlcnNpb24oYSlcIj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHYgb2YgZ2V0VmVyc2lvbnMoYSlcIiAoY2xpY2spPVwicHJldmlld09yRG93bmxvYWQodilcIj57e3YudGltZSB8ICBhbUNhbGVuZGFyfX08L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5EZWxldGUoYSlcIj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRpc2NhcmQoYSlcIj57e1wiRGlzY2FyZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2FuY2VsKGEpXCIgKm5nSWY9XCJhLmZhaWxlZFwiPnt7XCJDYW5jZWxcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuPC9kaXY+XHJcbiJdfQ==
|
@@ -2,7 +2,6 @@ import { Injector, ViewContainerRef, Component, ViewChild, Input, EventEmitter,
|
|
2
2
|
import { Subject, Observable, of, from, filter, forkJoin } from 'rxjs';
|
3
3
|
import { debounceTime, takeUntil, tap, switchMap, startWith, map, catchError } from 'rxjs/operators';
|
4
4
|
import { isBoolean, isPromise, queryParams } from '../core/functions';
|
5
|
-
import { AttachmentMode } from '../core/models';
|
6
5
|
import { DOCUMENT_MODEL } from '../core/mailbox.service';
|
7
6
|
import { FormRef } from './form-ref';
|
8
7
|
import { AttachmentsComponent } from './attachments/attachments.component';
|
@@ -186,8 +185,7 @@ export class ComposeFormComponent {
|
|
186
185
|
byId: this._session.profile.byId,
|
187
186
|
time: utc.toJSON(),
|
188
187
|
fileName: file.name,
|
189
|
-
contentType: file.type
|
190
|
-
mode: AttachmentMode.Public
|
188
|
+
contentType: file.type
|
191
189
|
};
|
192
190
|
}
|
193
191
|
tag(evt) {
|
@@ -317,8 +315,9 @@ export class ComposeFormComponent {
|
|
317
315
|
const { id, version, number, model, formId } = this.model;
|
318
316
|
return this._mailbox.send(id, version, formId, model, action, params).
|
319
317
|
subscribe(r => {
|
320
|
-
|
321
|
-
|
318
|
+
const origin = r.recipients.filter(r => r.originId === id);
|
319
|
+
if (origin.length)
|
320
|
+
this._accounts.getAll(origin.map(r => r.userId)).subscribe(u => this._sb.toast('SentTo', number, this._getActionAdjective(action), this._translate.join(u.map(u => u.name))));
|
322
321
|
else
|
323
322
|
this._sb.toast('Sent', number, this._getActionAdjective(action));
|
324
323
|
this.working = false;
|
@@ -432,4 +431,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
432
431
|
type: ViewChild,
|
433
432
|
args: ['component', { read: ViewContainerRef, static: true }]
|
434
433
|
}] } });
|
435
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF5QixnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE0QixLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2SyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBNEMsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUYsT0FBTyxFQUE2QixjQUFjLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7QUFNckcsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTXJELE9BQU8sRUFBRSxZQUFZLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeEUsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFN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cm95LCBFbGVtZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnQsIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIGZyb20sIGZpbHRlciwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwsIHRhcCwgc3dpdGNoTWFwLCBzdGFydFdpdGgsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgaXNCb29sZWFuLCBpc1Byb21pc2UsIHF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBSZWNpcGllbnRNb2RlbCwgRm9ybSwgQWN0aW9uLCBBdHRhY2htZW50LCBBdHRhY2htZW50TW9kZSB9IGZyb20gJy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCwgVmlld01vZGUgfSBmcm9tICcuLi9jb3JlL2Jhc2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFpbGJveFNlcnZpY2UsIEl0ZW1FeHRyYSwgRE9DVU1FTlRfTU9ERUwsIEF0dGFjaG1lbnRFeHRyYSB9IGZyb20gJy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEd1aWRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvZ3VpZGUvZ3VpZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICcuLi9jb3JlL2NvbXBvbmVudC1mYWN0b3J5LXJlc29sdmVyJztcclxuaW1wb3J0IHsgRm9ybVJlZiwgU2F2ZUV2ZW50QXJncyB9IGZyb20gJy4vZm9ybS1yZWYnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50c0NvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudHMvYXR0YWNobWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vdGFnL3RhZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICcuLi9jb3JlL3BvcHVwL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJJbXBsIH0gZnJvbSBcIi4uL2NvcmUvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3Rpb25EaWFsb2csIEFjdGlvbkRpYWxvZ0RhdGEgfSBmcm9tICcuL2FjdGlvbi9hY3Rpb24uZGlhbG9nJztcclxuXHJcbi8qKiBzYXZlIGRyYWZ0IG1zICovXHJcbmV4cG9ydCBjb25zdCBBVVRPX1NBVkVfREVMQVkgPSA1MDAwO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnZm9ybS1jb250YWluZXIgYml6ZG9jLWNvbXBvc2UnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcG9zZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwaWVudE1vZGVsPGFueT4+KCk7XHJcbiAgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKVxyXG4gIHdvcmtpbmcgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgd29ya2luZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKVxyXG4gIGRpcnR5ID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpXHJcbiAgdmFsaWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQElucHV0KCkgbW9kZTogVmlld01vZGU7XHJcbiAgQElucHV0KCkgY29udGFjdHMgPSB0cnVlO1xyXG4gIGFjdGlvbnM6IEFjdGlvbltdID0gW107XHJcbiAgcGFnZTogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGhlbHA6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCdmaWxlJywgeyBzdGF0aWM6IHRydWUgfSkgX2ZpbGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoQXR0YWNobWVudHNDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50c0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjb21wb25lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBfY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIHByaXZhdGUgX2Zvcm1SZWY6IEZvcm1SZWY7XHJcbiAgcHJpdmF0ZSBfaW5zdGFuY2U6IEZvcm1Db21wb25lbnQ8YW55PjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXJJbXBsLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBfc25hY2tiYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBfY2Y6IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdpbmc6IEh1YlNlcnZpY2VcclxuICApIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWxlRWxlbWVudC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX2ZpbGVDaGFuZ2VMaXN0ZW5lci5iaW5kKHRoaXMpKTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy5jYWxsYmFjayQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgdGhpcy5faW5zdGFuY2Uub25NZXNzYWdlXHJcbiAgICAgICAgJiYgdGhpcy5faW5zdGFuY2Uub25NZXNzYWdlKGUubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy51cGRhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIGlmIChlLm1vZGVsLmlkID09PSB0aGlzLm1vZGVsLmlkKSB7XHJcbiAgICAgICAgKGUudXNlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkgJiZcclxuICAgICAgICAgIHRoaXMuX2FjY291bnRzLmdldChlLnVzZXJJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3Blbih0aGlzLl90cmFuc2xhdGUuZ2V0KCdNYWlsVmVyc2lvblVwZGF0ZScsIHRoaXMubW9kZWwubnVtYmVyLCB1Lm5hbWUpLFxyXG4gICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ09LJyksIHtcclxuICAgICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuX3Nlc3Npb24uZGlyZWN0aW9uLFxyXG4gICAgICAgICAgICB9KS5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fYXNzaWduKGUubW9kZWwpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21haWxib3guY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZmlsdGVyKGUgPT4gZS5pZCA9PT0gdGhpcy5tb2RlbC5pZCkpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgIXRoaXMud29ya2luZyAmJlxyXG4gICAgICAgIHRoaXMuX2Fzc2lnbihlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5fZm9ybVJlZiAmJiB0aGlzLl9mb3JtUmVmLl9kZXN0cm95KCk7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9ybXMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5tb2RlbC5mb3JtSWQpO1xyXG4gICAgdGhpcy5oZWxwID0gdGhpcy5mb3JtLmd1aWRlO1xyXG4gICAgaWYgKCF0aGlzLmZvcm0udGVtcGxhdGUpXHJcbiAgICAgIHRocm93IChgRm9ybSAnJHt0aGlzLmZvcm0ubmFtZX0nIG1vZGVsIG1pc3NpbmcgJ1tUZW1wbGF0ZSgpXScgYXR0cmlidXRlLmApO1xyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX2NmLnJlc29sdmUodGhpcy5mb3JtLnRlbXBsYXRlKTtcclxuICAgIHRoaXMuX2Zvcm1SZWYgPSBuZXcgRm9ybVJlZigpO1xyXG4gICAgdGhpcy5fZm9ybVJlZi5fbmF2aWdhdGluZy5cclxuICAgICAgc3Vic2NyaWJlKHAgPT4gdGhpcy5wYWdlID0gcCk7XHJcbiAgICB0aGlzLl9mb3JtUmVmLl9zdGF0ZUNoYW5nZS5waXBlKHN0YXJ0V2l0aCgpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHRoaXMuaGVscCA9IHRoaXMuX2Zvcm1SZWYuaGVscCk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbXHJcbiAgICAgIHtcclxuICAgICAgICBwcm92aWRlOiBGb3JtUmVmLCB1c2VWYWx1ZTogdGhpcy5fZm9ybVJlZlxyXG4gICAgICB9LCB7XHJcbiAgICAgICAgcHJvdmlkZTogRE9DVU1FTlRfTU9ERUwsIHVzZVZhbHVlOiB0aGlzLm1vZGVsXHJcbiAgICAgIH1cclxuICAgIF0sIHRoaXMuX2luamVjdG9yXHJcbiAgICApO1xyXG4gICAgdGhpcy5fY29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnksIDAsIGluamVjdG9yKTtcclxuXHJcbiAgICB0aGlzLl9pbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBGb3JtQ29tcG9uZW50PGFueT47XHJcbiAgICB0aGlzLl9mb3JtUmVmLl9tb2RlID0gdGhpcy5faW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZTtcclxuICAgIHRoaXMuX2luc3RhbmNlLmZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc3QgeyBkaXJ0eSwgdmFsaWQgfSA9IHRoaXMuX2luc3RhbmNlLmZvcm07XHJcbiAgICAgIHRoaXMuZGlydHkgPSBkaXJ0eTtcclxuICAgICAgdGhpcy5kaXJ0eUNoYW5nZS5lbWl0KGRpcnR5KTtcclxuICAgICAgdGhpcy52YWxpZCA9IHZhbGlkO1xyXG4gICAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodmFsaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1vZGVsLmRyYWZ0ICYmIHRoaXMuX2luc3RhbmNlLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoQVVUT19TQVZFX0RFTEFZKSkuc3Vic2NyaWJlKCgpID0+ICF0aGlzLndvcmtpbmcgJiYgdGhpcy5kaXJ0eSAmJlxyXG4gICAgICAgIHRoaXMuc2F2ZShmYWxzZSkuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5fcmVzZXQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsZUNoYW5nZUxpc3RlbmVyKGV2OiBFdmVudCkge1xyXG4gICAgY29uc3QgeyBmaWxlcyB9ID0gZXYuc3JjRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50LFxyXG4gICAgICBhcnI6IEZpbGVbXSA9IFtdO1xyXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyci5wdXNoKGZpbGVzW2ldKTtcclxuICAgICAgdGhpcy51cGxvYWQoYXJyKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2ZpbGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYXR0YWNobWVudHMubmdPbkNoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FwcGx5Q2hhbmdlcygpIHtcclxuICAgIE9iamVjdC5kZWVwQXNzaWduKHRoaXMubW9kZWwubW9kZWwsIHRoaXMuX2luc3RhbmNlLmZvcm0udmFsdWUpO1xyXG4gIH1cclxuICBuYXZpZ2F0ZShwYWdlOiBhbnkpIHtcclxuICAgIGNvbnN0IHBhZ2VuID0gcGFyc2VJbnQocGFnZSk7XHJcbiAgICB0aGlzLl9mb3JtUmVmLl9uYXZpZ2F0aW5nLm5leHQoaXNOYU4ocGFnZW4pID8gcGFnZSA6IHBhZ2VuKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZ2V0QWN0aW9uQWRqZWN0aXZlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIHJldHVybiAoYWN0aW9uLmFkamVjdGl2ZSB8fCBhY3Rpb24ucGFzdCB8fCBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NhdmUoZmVlZGJhY2s6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMud29ya2luZyA9IHRydWU7XHJcbiAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGNvbnN0IHsgaWQsIHZlcnNpb24sIGZvcm1JZCwgbW9kZWwsIGRyYWZ0IH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgcmV0dXJuIHRoaXMuX21haWxib3guc2F2ZShpZCwgZm9ybUlkLCB2ZXJzaW9uLCBtb2RlbCkucGlwZShcclxuICAgICAgdGFwKG0gPT4ge1xyXG4gICAgICAgIHRoaXMuX2Fzc2lnbihtKTtcclxuICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgICAgIGZlZWRiYWNrICYmXHJcbiAgICAgICAgICB0aGlzLl9zYi50b2FzdChkcmFmdCA/ICdEcmFmdFNhdmVkJyA6ICdDaGFuZ2VzU2F2ZWQnKTtcclxuICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgIGZlZWRiYWNrICYmXHJcbiAgICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlLCAnU2F2ZUVycicpO1xyXG4gICAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud29ya2luZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfSksIG1hcCgoKSA9PiB0cnVlKSk7XHJcbiAgfVxyXG4gIHVwbG9hZChmaWxlczogRmlsZVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMud29ya2luZyA9IHRydWU7XHJcbiAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGxldCBleGlzdHM6IGJvb2xlYW47XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgZmlsZXMuZm9yRWFjaChmID0+IHtcclxuICAgICAgaWYgKCFleGlzdHMpXHJcbiAgICAgICAgZXhpc3RzID0gdGhpcy5tb2RlbC5hdHRhY2htZW50cy5zb21lKGEgPT4gYS5maWxlTmFtZSA9PT0gZi5uYW1lICYmICFhLmRlbGV0ZWQgJiYgIShhIGFzIEF0dGFjaG1lbnRFeHRyYSkuZmFpbGVkKTtcclxuICAgICAgY29uc3QgcmV0cnkgPSB0aGlzLm1vZGVsLmF0dGFjaG1lbnRzLmZpbmRJbmRleChhID0+IGEuZmlsZU5hbWUgPT09IGYubmFtZSAmJiAoYSBhcyBBdHRhY2htZW50RXh0cmEpLmZhaWxlZCk7XHJcbiAgICAgIGlmIChyZXRyeSA+IC0xKVxyXG4gICAgICAgIHRoaXMubW9kZWwuYXR0YWNobWVudHMuc3BsaWNlKHJldHJ5LCAxKTtcclxuICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLl9jb25zdHJ1Y3RBdHRhY2htZW50KGYpO1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC51cGxvYWQodGhpcy5tb2RlbC5pZCwgdGhpcy5tb2RlbC5mb3JtSWQsIHRoaXMubW9kZWwudmVyc2lvbiwgZikuXHJcbiAgICAgICAgcGlwZSh0YXAoKHI6IEF0dGFjaG1lbnQpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KFxyXG4gICAgICAgICAgICAhZXhpc3RzID8gJ1VwbG9hZE9rJyA6ICdVcGxvYWRWZXJzaW9uT2snLCBmLm5hbWUpO1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihtb2RlbCwgciwgeyBwcm9ncmVzczogbnVsbCwgfSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsLmF0dGFjaG1lbnRzLnB1c2gobW9kZWwpO1xyXG4gICAgICAgICAgdGhpcy53b3JraW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSksIGNhdGNoRXJyb3IoZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlLCAnVXBsb2FkRmFpbGVkJywgZi5uYW1lKTtcclxuICAgICAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbnN0cnVjdEF0dGFjaG1lbnQoZmlsZTogRmlsZSkge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKSwgdXRjID0gbmV3IERhdGUobm93LmdldFRpbWUoKSArIG5vdy5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDApO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdXNlcklkOiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkLFxyXG4gICAgICBieUlkOiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCxcclxuICAgICAgdGltZTogdXRjLnRvSlNPTigpIGFzIGFueSxcclxuICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgY29udGVudFR5cGU6IGZpbGUudHlwZSxcclxuICAgICAgbW9kZTogQXR0YWNobWVudE1vZGUuUHVibGljXHJcbiAgICB9IGFzIEF0dGFjaG1lbnQ7XHJcbiAgfVxyXG4gIHRhZyhldnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuX3BvcHVwLm9wZW4oVGFnc0NvbXBvbmVudCwgKGV2dC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KSwge1xyXG4gICAgICBkYXRhOiB0aGlzLm1vZGVsXHJcbiAgICB9KVxyXG4gIH1cclxuICBwcml2YXRlIF9yZXNldCgpIHtcclxuICAgIHRoaXMuX2luc3RhbmNlLm9uQmluZCh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMuX2luc3RhbmNlLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsLm1vZGVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAhdGhpcy5faW5zdGFuY2UuZm9ybS5wcmlzdGluZSAmJiB0aGlzLl9pbnN0YW5jZS5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICB0aGlzLnZhbGlkID0gdGhpcy5faW5zdGFuY2UuZm9ybS52YWxpZDtcclxuICAgIHRoaXMudmFsaWRDaGFuZ2UuZW1pdCh0aGlzLnZhbGlkKTtcclxuICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdCh0aGlzLmRpcnR5KTtcclxuICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMubW9kZWwuYWN0aW9ucyA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbHRlcihhID0+IHRoaXMubW9kZWwuYWN0aW9ucy5pbmRleE9mKGEubmFtZSkgPiAtMSkuXHJcbiAgICAgIHNvcnQodGhpcy5fc29ydEFjdGlvbnMpIDogW107XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NvcnRBY3Rpb25zKGE6IEFjdGlvbiwgYjogQWN0aW9uKSB7XHJcbiAgICBpZiAoYS5ncm91cCAmJiBiLmdyb3VwICYmIGEuZ3JvdXAgIT09IGIuZ3JvdXApXHJcbiAgICAgIHJldHVybiBhLmdyb3VwIDwgYi5ncm91cCA/IC0xIDogMTtcclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgZ3VpZGUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9ndWlkZS5zdGFydChuYW1lKTtcclxuICB9XHJcbiAgYXR0YWNoKCkge1xyXG4gICAgY29uc3QgZWxlbSA9IHRoaXMuX2ZpbGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGVsZW0uY2xpY2soKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmVlZGJhY2tcclxuICAgKi9cclxuICBzYXZlKGZlZWRiYWNrID0gdHJ1ZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgdGhpcy5fYXBwbHlDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBzYXZlQXJncyA9IHsgY2FuY2VsOiBmYWxzZSB9IGFzIFNhdmVFdmVudEFyZ3M7XHJcbiAgICB0aGlzLl9mb3JtUmVmLl9zYXZpbmcubmV4dChzYXZlQXJncyk7XHJcbiAgICBpZiAoc2F2ZUFyZ3MuY2FuY2VsKVxyXG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuX2luc3RhbmNlLm9uU2F2ZSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9pbnN0YW5jZS5vblNhdmUoKTtcclxuICAgICAgaWYgKGlzQm9vbGVhbihyZXN1bHQpKSB7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgIGZlZWRiYWNrICYmIHRoaXMuX3NiLnRvYXN0KCdWYWxpZGF0ZUVycicpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXNQcm9taXNlKHJlc3VsdCkpXHJcbiAgICAgICAgcmV0dXJuIGZyb20ocmVzdWx0KS5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9zYXZlKGZlZWRiYWNrKSkpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIChyZXN1bHQgYXMgT2JzZXJ2YWJsZTxib29sZWFuPikucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fc2F2ZShmZWVkYmFjaykpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9zYXZlKGZlZWRiYWNrKTtcclxuICB9XHJcbiAgZmxhZygpIHtcclxuICAgIGNvbnN0IGV4dHJhID0gdGhpcy5tb2RlbCBhcyBJdGVtRXh0cmEsIHsgZmxhZyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGV4dHJhLndvcmtpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy53b3JraW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuX21haWxib3guZmxhZyh0aGlzLm1vZGVsLmlkLCAhZmxhZykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbC5mbGFnID0gIWZsYWc7XHJcbiAgICAgIGV4dHJhLndvcmtpbmcgPSBmYWxzZTtcclxuICAgIH0sICgpID0+IHtcclxuICAgICAgZXh0cmEud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLl9hcHBseUNoYW5nZXMoKTtcclxuICAgIGNvbnN0IHsgaWQsIHZlcnNpb24sIGZvcm1JZCwgbW9kZWwsIG51bWJlciB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHRoaXMud29ya2luZyA9IHRydWU7XHJcbiAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLl9tYWlsYm94LnN1Ym1pdChpZCwgdmVyc2lvbiwgZm9ybUlkLCBtb2RlbCkuXHJcbiAgICAgIHBpcGUodGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9zYi50b2FzdCgnU3VibWl0dGVkJywgbnVtYmVyKTtcclxuICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud29ya2luZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlLCAnU3VibWl0RXJyJyk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcbiAgYmFjaygpIHtcclxuICAgIHRoaXMuX2Zvcm1SZWYubmF2aWdhdGUoKTtcclxuICB9XHJcbiAgZGlzY2FyZCgpIHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlID0+IHtcclxuICAgICAgdGhpcy5fc2IuYXNrKCdEaXNjYXJkQXNrJywgJ0Rpc2NhcmQnLCB7XHJcbiAgICAgICAgY29sb3I6ICd3YXJuJywgb2s6ICdEaXNjYXJkJ1xyXG4gICAgICB9KS5zdWJzY3JpYmUob2sgPT4ge1xyXG4gICAgICAgIGlmIChvaykge1xyXG4gICAgICAgICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLl9tYWlsYm94LmRlbGV0ZSh0aGlzLm1vZGVsLmlkKS5cclxuICAgICAgICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICBvYnNlcnZlLm5leHQoKTtcclxuICAgICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JraW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlLCAnTmV0d29ya0VycicpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNlbmQoYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlID0+IHtcclxuICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oQWN0aW9uRGlhbG9nLCB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgYWN0aW9uLFxyXG4gICAgICAgICAgaXRlbTogdGhpcy5tb2RlbFxyXG4gICAgICAgIH0gYXMgQWN0aW9uRGlhbG9nRGF0YSxcclxuICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxyXG4gICAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhcmdzID0+IHtcclxuICAgICAgICBpZiAoYXJncykge1xyXG4gICAgICAgICAgdGhpcy5fYXBwbHlDaGFuZ2VzKCk7XHJcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSBxdWVyeVBhcmFtcyhhcmdzKTtcclxuICAgICAgICAgIHRoaXMud29ya2luZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgICAgICAgIGNvbnN0IHsgaWQsIHZlcnNpb24sIG51bWJlciwgbW9kZWwsIGZvcm1JZCB9ID0gdGhpcy5tb2RlbDtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9tYWlsYm94LnNlbmQoaWQsIHZlcnNpb24sIGZvcm1JZCwgbW9kZWwsIGFjdGlvbiwgcGFyYW1zKS5cclxuICAgICAgICAgICAgc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyLnRvSWQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hY2NvdW50cy5nZXQoci50b0lkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnU2VudFRvJywgbnVtYmVyLCB0aGlzLl9nZXRBY3Rpb25BZGplY3RpdmUoYWN0aW9uKSwgdS5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBudW1iZXIsIHRoaXMuX2dldEFjdGlvbkFkamVjdGl2ZShhY3Rpb24pKTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9LCBlID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSwgJ1NlbmRFcnInKTtcclxuICAgICAgICAgICAgICBvYnNlcnZlLmVycm9yKCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlLmVycm9yKCk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvcHkoKSB7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNvcHkodGhpcy5tb2RlbC5kb2N1bWVudElkKS5zdWJzY3JpYmUoaSA9PiB7XHJcbiAgICAgIHRoaXMuX3NiLnRvYXN0KCdDb3BpZWQnLCBpLm51bWJlciB8fCB0aGlzLmZvcm0udGl0bGUpO1xyXG4gICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94L2knLCBpLmlkLmVuY29kZUlkKCldLCB7XHJcbiAgICAgICAgc3RhdGU6IHsgaXRlbTogaSB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKiBAcGFyYW0gbWVzc2FnZSByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBhcmdzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaGFuZGxlRXJyb3IocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55LCBtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuY29uc3RydWN0b3IubmFtZSA9PT0gJ1Bvc2l0aW9uRXJyb3InKVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVXNlckRlbmllZEdlb0VycicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdHZW9FcnInKTtcclxuICAgICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0MDk6IC8vIHZlcnNpb24gY2hhbmdlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3BvbnNlLmVycm9yIC8qIHNlcmlhbGl6ZWQgbW9kZWwgKi8gYXMgUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICAgICAgICAgICAgb2JqICYmIHRoaXMuX2Fzc2lnbihvYmopO1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVmVyc2lvbkVycicsIHRoaXMubW9kZWwubnVtYmVyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSA0MDY6IC8vIHZhbGlkYXRpb24gZXhjZXB0aW9uXHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvclN0cmluZyhyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IobWVzc2FnZSwgLi4uYXJncyk7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfYXNzaWduKG1vZGVsOiBSZWNpcGllbnRNb2RlbCkge1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCBtb2RlbCwge1xyXG4gICAgICBtb2RlbDogT2JqZWN0LmRlZXBBc3NpZ24odGhpcy5tb2RlbC5tb2RlbCwgbW9kZWwubW9kZWwpIC8vIHByZXNlcnZlIG9iamVjdCByZWZcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5fZm9ybVJlZi5fbW9kZWxDaGFuZ2UubmV4dCh0aGlzLm1vZGVsKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyXCI+XHJcbiAgPGJpemRvYy1wZW9wbGUgW21vZGVsXT1cIm1vZGVsXCIgKm5nSWY9XCJtb2RlICE9PSAnY29tcG9zZScgJiYgY29udGFjdHNcIj48L2JpemRvYy1wZW9wbGU+XHJcbiAgPGJpemRvYy1hdHRhY2htZW50cyBbbW9kZWxdPVwibW9kZWxcIiBbaW5jbHVkZURlbGV0ZWRdPVwidHJ1ZVwiIFt2aWV3ZWRJbmRpY2F0b3JdPVwiZmFsc2VcIj48L2JpemRvYy1hdHRhY2htZW50cz5cclxuICA8ZGl2ICpuZ0lmPVwiIW1vZGVsLnJlcGxpZWQgJiYgbW9kZSAhPT0gJ2NvbXBvc2UnICYmIG1vZGVsLm5vdGVcIiBjbGFzcz1cImNvbXBvc2Utbm90ZVwiPlxyXG4gICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmluZm88L21hdC1pY29uPiA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5LTJcIj57e21vZGVsLm5vdGV9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwibW9kZWwudGFnc1wiPlxyXG4gICAgPHNwYW4gKm5nRm9yPVwibGV0IHRhZyBvZiBtb2RlbC50YWdzXCIgY2xhc3M9XCJtYXQtY2hpcCBtYXQtc3RhbmRhcmQtY2hpcCBzbWFsbC1jaGlwXCI+e3t0YWd9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy1jb250YWluZXIgI2NvbXBvbmVudD48L25nLWNvbnRhaW5lcj5cclxuPGZvcm0gc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj48aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZSBtdWx0aXBsZSAvPjwvZm9ybT5cclxuIl19
|
434
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF5QixnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE0QixLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2SyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSXRFLE9BQU8sRUFBNkIsY0FBYyxFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBTXJHLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sWUFBWSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU1yRCxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhFLG9CQUFvQjtBQUNwQixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBU3BDLE1BQU0sT0FBTyxvQkFBb0I7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RUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNpQixVQUFVO3NCQUEzRSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiwgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBmcm9tLCBmaWx0ZXIsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCB0YXAsIHN3aXRjaE1hcCwgc3RhcnRXaXRoLCBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGlzQm9vbGVhbiwgaXNQcm9taXNlLCBxdWVyeVBhcmFtcyB9IGZyb20gJy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgUmVjaXBpZW50TW9kZWwsIEZvcm0sIEFjdGlvbiwgQXR0YWNobWVudCB9IGZyb20gJy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCwgVmlld01vZGUgfSBmcm9tICcuLi9jb3JlL2Jhc2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFpbGJveFNlcnZpY2UsIEl0ZW1FeHRyYSwgRE9DVU1FTlRfTU9ERUwsIEF0dGFjaG1lbnRFeHRyYSB9IGZyb20gJy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEd1aWRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvZ3VpZGUvZ3VpZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICcuLi9jb3JlL2NvbXBvbmVudC1mYWN0b3J5LXJlc29sdmVyJztcclxuaW1wb3J0IHsgRm9ybVJlZiwgU2F2ZUV2ZW50QXJncyB9IGZyb20gJy4vZm9ybS1yZWYnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50c0NvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudHMvYXR0YWNobWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vdGFnL3RhZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICcuLi9jb3JlL3BvcHVwL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJJbXBsIH0gZnJvbSBcIi4uL2NvcmUvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3Rpb25EaWFsb2csIEFjdGlvbkRpYWxvZ0RhdGEgfSBmcm9tICcuL2FjdGlvbi9hY3Rpb24uZGlhbG9nJztcclxuXHJcbi8qKiBzYXZlIGRyYWZ0IG1zICovXHJcbmV4cG9ydCBjb25zdCBBVVRPX1NBVkVfREVMQVkgPSA1MDAwO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnZm9ybS1jb250YWluZXIgYml6ZG9jLWNvbXBvc2UnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcG9zZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwaWVudE1vZGVsPGFueT4+KCk7XHJcbiAgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKVxyXG4gIHdvcmtpbmcgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgd29ya2luZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKVxyXG4gIGRpcnR5ID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpXHJcbiAgdmFsaWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQElucHV0KCkgbW9kZTogVmlld01vZGU7XHJcbiAgQElucHV0KCkgY29udGFjdHMgPSB0cnVlO1xyXG4gIGFjdGlvbnM6IEFjdGlvbltdID0gW107XHJcbiAgcGFnZTogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGhlbHA6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCdmaWxlJywgeyBzdGF0aWM6IHRydWUgfSkgX2ZpbGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoQXR0YWNobWVudHNDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50c0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjb21wb25lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBfY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIHByaXZhdGUgX2Zvcm1SZWY6IEZvcm1SZWY7XHJcbiAgcHJpdmF0ZSBfaW5zdGFuY2U6IEZvcm1Db21wb25lbnQ8YW55PjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXJJbXBsLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBfc25hY2tiYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBfY2Y6IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdpbmc6IEh1YlNlcnZpY2VcclxuICApIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWxlRWxlbWVudC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX2ZpbGVDaGFuZ2VMaXN0ZW5lci5iaW5kKHRoaXMpKTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy5jYWxsYmFjayQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgdGhpcy5faW5zdGFuY2Uub25NZXNzYWdlXHJcbiAgICAgICAgJiYgdGhpcy5faW5zdGFuY2Uub25NZXNzYWdlKGUubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy51cGRhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIGlmIChlLm1vZGVsLmlkID09PSB0aGlzLm1vZGVsLmlkKSB7XHJcbiAgICAgICAgKGUudXNlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkgJiZcclxuICAgICAgICAgIHRoaXMuX2FjY291bnRzLmdldChlLnVzZXJJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3Blbih0aGlzLl90cmFuc2xhdGUuZ2V0KCdNYWlsVmVyc2lvblVwZGF0ZScsIHRoaXMubW9kZWwubnVtYmVyLCB1Lm5hbWUpLFxyXG4gICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ09LJyksIHtcclxuICAgICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuX3Nlc3Npb24uZGlyZWN0aW9uLFxyXG4gICAgICAgICAgICB9KS5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fYXNzaWduKGUubW9kZWwpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21haWxib3guY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZmlsdGVyKGUgPT4gZS5pZCA9PT0gdGhpcy5tb2RlbC5pZCkpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgIXRoaXMud29ya2luZyAmJlxyXG4gICAgICAgIHRoaXMuX2Fzc2lnbihlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5fZm9ybVJlZiAmJiB0aGlzLl9mb3JtUmVmLl9kZXN0cm95KCk7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9ybXMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5tb2RlbC5mb3JtSWQpO1xyXG4gICAgdGhpcy5oZWxwID0gdGhpcy5mb3JtLmd1aWRlO1xyXG4gICAgaWYgKCF0aGlzLmZvcm0udGVtcGxhdGUpXHJcbiAgICAgIHRocm93IChgRm9ybSAnJHt0aGlzLmZvcm0ubmFtZX0nIG1vZGVsIG1pc3NpbmcgJ1tUZW1wbGF0ZSgpXScgYXR0cmlidXRlLmApO1xyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX2NmLnJlc29sdmUodGhpcy5mb3JtLnRlbXBsYXRlKTtcclxuICAgIHRoaXMuX2Zvcm1SZWYgPSBuZXcgRm9ybVJlZigpO1xyXG4gICAgdGhpcy5fZm9ybVJlZi5fbmF2aWdhdGluZy5cclxuICAgICAgc3Vic2NyaWJlKHAgPT4gdGhpcy5wYWdlID0gcCk7XHJcbiAgICB0aGlzLl9mb3JtUmVmLl9zdGF0ZUNoYW5nZS5waXBlKHN0YXJ0V2l0aCgpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHRoaXMuaGVscCA9IHRoaXMuX2Zvcm1SZWYuaGVscCk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbXHJcbiAgICAgIHtcclxuICAgICAgICBwcm92aWRlOiBGb3JtUmVmLCB1c2VWYWx1ZTogdGhpcy5fZm9ybVJlZlxyXG4gICAgICB9LCB7XHJcbiAgICAgICAgcHJvdmlkZTogRE9DVU1FTlRfTU9ERUwsIHVzZVZhbHVlOiB0aGlzLm1vZGVsXHJcbiAgICAgIH1cclxuICAgIF0sIHRoaXMuX2luamVjdG9yXHJcbiAgICApO1xyXG4gICAgdGhpcy5fY29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnksIDAsIGluamVjdG9yKTtcclxuXHJcbiAgICB0aGlzLl9pbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBGb3JtQ29tcG9uZW50PGFueT47XHJcbiAgICB0aGlzLl9mb3JtUmVmLl9tb2RlID0gdGhpcy5faW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZTtcclxuICAgIHRoaXMuX2luc3RhbmNlLmZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc3QgeyBkaXJ0eSwgdmFsaWQgfSA9IHRoaXMuX2luc3RhbmNlLmZvcm07XHJcbiAgICAgIHRoaXMuZGlydHkgPSBkaXJ0eTtcclxuICAgICAgdGhpcy5kaXJ0eUNoYW5nZS5lbWl0KGRpcnR5KTtcclxuICAgICAgdGhpcy52YWxpZCA9IHZhbGlkO1xyXG4gICAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodmFsaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1vZGVsLmRyYWZ0ICYmIHRoaXMuX2luc3RhbmNlLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoQVVUT19TQVZFX0RFTEFZKSkuc3Vic2NyaWJlKCgpID0+ICF0aGlzLndvcmtpbmcgJiYgdGhpcy5kaXJ0eSAmJlxyXG4gICAgICAgIHRoaXMuc2F2ZShmYWxzZSkuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5fcmVzZXQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsZUNoYW5nZUxpc3RlbmVyKGV2OiBFdmVudCkge1xyXG4gICAgY29uc3QgeyBmaWxlcyB9ID0gZXYuc3JjRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50LFxyXG4gICAgICBhcnI6IEZpbGVbXSA9IFtdO1xyXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyci5wdXNoKGZpbGVzW2ldKTtcclxuICAgICAgdGhpcy51cGxvYWQoYXJyKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2ZpbGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYXR0YWNobWVudHMubmdPbkNoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FwcGx5Q2hhbmdlcygpIHtcclxuICAgIE9iamVjdC5kZWVwQXNzaWduKHRoaXMubW9kZWwubW9kZWwsIHRoaXMuX2luc3RhbmNlLmZvcm0udmFsdWUpO1xyXG4gIH1cclxuICBuYXZpZ2F0ZShwYWdlOiBhbnkpIHtcclxuICAgIGNvbnN0IHBhZ2VuID0gcGFyc2VJbnQocGFnZSk7XHJcbiAgICB0aGlzLl9mb3JtUmVmLl9uYXZpZ2F0aW5nLm5leHQoaXNOYU4ocGFnZW4pID8gcGFnZSA6IHBhZ2VuKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZ2V0QWN0aW9uQWRqZWN0aXZlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIHJldHVybiAoYWN0aW9uLmFkamVjdGl2ZSB8fCBhY3Rpb24ucGFzdCB8fCBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NhdmUoZmVlZGJhY2s6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMud29ya2luZyA9IHRydWU7XHJcbiAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGNvbnN0IHsgaWQsIHZlcnNpb24sIGZvcm1JZCwgbW9kZWwsIGRyYWZ0IH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgcmV0dXJuIHRoaXMuX21haWxib3guc2F2ZShpZCwgZm9ybUlkLCB2ZXJzaW9uLCBtb2RlbCkucGlwZShcclxuICAgICAgdGFwKG0gPT4ge1xyXG4gICAgICAgIHRoaXMuX2Fzc2lnbihtKTtcclxuICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgICAgIGZlZWRiYWNrICYmXHJcbiAgICAgICAgICB0aGlzLl9zYi50b2FzdChkcmFmdCA/ICdEcmFmdFNhdmVkJyA6ICdDaGFuZ2VzU2F2ZWQnKTtcclxuICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgIGZlZWRiYWNrICYmXHJcbiAgICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlLCAnU2F2ZUVycicpO1xyXG4gICAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud29ya2luZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfSksIG1hcCgoKSA9PiB0cnVlKSk7XHJcbiAgfVxyXG4gIHVwbG9hZChmaWxlczogRmlsZVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMud29ya2luZyA9IHRydWU7XHJcbiAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGxldCBleGlzdHM6IGJvb2xlYW47XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgZmlsZXMuZm9yRWFjaChmID0+IHtcclxuICAgICAgaWYgKCFleGlzdHMpXHJcbiAgICAgICAgZXhpc3RzID0gdGhpcy5tb2RlbC5hdHRhY2htZW50cy5zb21lKGEgPT4gYS5maWxlTmFtZSA9PT0gZi5uYW1lICYmICFhLmRlbGV0ZWQgJiYgIShhIGFzIEF0dGFjaG1lbnRFeHRyYSkuZmFpbGVkKTtcclxuICAgICAgY29uc3QgcmV0cnkgPSB0aGlzLm1vZGVsLmF0dGFjaG1lbnRzLmZpbmRJbmRleChhID0+IGEuZmlsZU5hbWUgPT09IGYubmFtZSAmJiAoYSBhcyBBdHRhY2htZW50RXh0cmEpLmZhaWxlZCk7XHJcbiAgICAgIGlmIChyZXRyeSA+IC0xKVxyXG4gICAgICAgIHRoaXMubW9kZWwuYXR0YWNobWVudHMuc3BsaWNlKHJldHJ5LCAxKTtcclxuICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLl9jb25zdHJ1Y3RBdHRhY2htZW50KGYpO1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC51cGxvYWQodGhpcy5tb2RlbC5pZCwgdGhpcy5tb2RlbC5mb3JtSWQsIHRoaXMubW9kZWwudmVyc2lvbiwgZikuXHJcbiAgICAgICAgcGlwZSh0YXAoKHI6IEF0dGFjaG1lbnQpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KFxyXG4gICAgICAgICAgICAhZXhpc3RzID8gJ1VwbG9hZE9rJyA6ICdVcGxvYWRWZXJzaW9uT2snLCBmLm5hbWUpO1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihtb2RlbCwgciwgeyBwcm9ncmVzczogbnVsbCwgfSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsLmF0dGFjaG1lbnRzLnB1c2gobW9kZWwpO1xyXG4gICAgICAgICAgdGhpcy53b3JraW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSksIGNhdGNoRXJyb3IoZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlLCAnVXBsb2FkRmFpbGVkJywgZi5uYW1lKTtcclxuICAgICAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbnN0cnVjdEF0dGFjaG1lbnQoZmlsZTogRmlsZSkge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKSwgdXRjID0gbmV3IERhdGUobm93LmdldFRpbWUoKSArIG5vdy5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDApO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdXNlcklkOiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkLFxyXG4gICAgICBieUlkOiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCxcclxuICAgICAgdGltZTogdXRjLnRvSlNPTigpIGFzIGFueSxcclxuICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgY29udGVudFR5cGU6IGZpbGUudHlwZVxyXG4gICAgfSBhcyBBdHRhY2htZW50O1xyXG4gIH1cclxuICB0YWcoZXZ0OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLl9wb3B1cC5vcGVuKFRhZ3NDb21wb25lbnQsIChldnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCksIHtcclxuICAgICAgZGF0YTogdGhpcy5tb2RlbFxyXG4gICAgfSlcclxuICB9XHJcbiAgcHJpdmF0ZSBfcmVzZXQoKSB7XHJcbiAgICB0aGlzLl9pbnN0YW5jZS5vbkJpbmQodGhpcy5tb2RlbCk7XHJcbiAgICB0aGlzLl9pbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbC5tb2RlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgIXRoaXMuX2luc3RhbmNlLmZvcm0ucHJpc3RpbmUgJiYgdGhpcy5faW5zdGFuY2UuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgdGhpcy52YWxpZCA9IHRoaXMuX2luc3RhbmNlLmZvcm0udmFsaWQ7XHJcbiAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XHJcbiAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5kaXJ0eSk7XHJcbiAgICB0aGlzLmFjdGlvbnMgPSB0aGlzLm1vZGVsLmFjdGlvbnMgPyB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maWx0ZXIoYSA9PiB0aGlzLm1vZGVsLmFjdGlvbnMuaW5kZXhPZihhLm5hbWUpID4gLTEpLlxyXG4gICAgICBzb3J0KHRoaXMuX3NvcnRBY3Rpb25zKSA6IFtdO1xyXG4gIH1cclxuICBwcml2YXRlIF9zb3J0QWN0aW9ucyhhOiBBY3Rpb24sIGI6IEFjdGlvbikge1xyXG4gICAgaWYgKGEuZ3JvdXAgJiYgYi5ncm91cCAmJiBhLmdyb3VwICE9PSBiLmdyb3VwKVxyXG4gICAgICByZXR1cm4gYS5ncm91cCA8IGIuZ3JvdXAgPyAtMSA6IDE7XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIGd1aWRlKG5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQobmFtZSk7XHJcbiAgfVxyXG4gIGF0dGFjaCgpIHtcclxuICAgIGNvbnN0IGVsZW0gPSB0aGlzLl9maWxlRWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBlbGVtLmNsaWNrKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZlZWRiYWNrXHJcbiAgICovXHJcbiAgc2F2ZShmZWVkYmFjayA9IHRydWUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMuX2FwcGx5Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2F2ZUFyZ3MgPSB7IGNhbmNlbDogZmFsc2UgfSBhcyBTYXZlRXZlbnRBcmdzO1xyXG4gICAgdGhpcy5fZm9ybVJlZi5fc2F2aW5nLm5leHQoc2F2ZUFyZ3MpO1xyXG4gICAgaWYgKHNhdmVBcmdzLmNhbmNlbClcclxuICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgIGlmICh0aGlzLl9pbnN0YW5jZS5vblNhdmUpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5faW5zdGFuY2Uub25TYXZlKCk7XHJcbiAgICAgIGlmIChpc0Jvb2xlYW4ocmVzdWx0KSkge1xyXG4gICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICBmZWVkYmFjayAmJiB0aGlzLl9zYi50b2FzdCgnVmFsaWRhdGVFcnInKTtcclxuICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGlzUHJvbWlzZShyZXN1bHQpKVxyXG4gICAgICAgIHJldHVybiBmcm9tKHJlc3VsdCkucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fc2F2ZShmZWVkYmFjaykpKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiAocmVzdWx0IGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuX3NhdmUoZmVlZGJhY2spKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fc2F2ZShmZWVkYmFjayk7XHJcbiAgfVxyXG4gIGZsYWcoKSB7XHJcbiAgICBjb25zdCBleHRyYSA9IHRoaXMubW9kZWwgYXMgSXRlbUV4dHJhLCB7IGZsYWcgfSA9IHRoaXMubW9kZWw7XHJcbiAgICBleHRyYS53b3JraW5nID0gdHJ1ZTtcclxuICAgIHRoaXMud29ya2luZyA9IHRydWU7XHJcbiAgICB0aGlzLl9tYWlsYm94LmZsYWcodGhpcy5tb2RlbC5pZCwgIWZsYWcpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwuZmxhZyA9ICFmbGFnO1xyXG4gICAgICBleHRyYS53b3JraW5nID0gZmFsc2U7XHJcbiAgICB9LCAoKSA9PiB7XHJcbiAgICAgIGV4dHJhLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy53b3JraW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc3VibWl0KCkge1xyXG4gICAgdGhpcy5fYXBwbHlDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCB7IGlkLCB2ZXJzaW9uLCBmb3JtSWQsIG1vZGVsLCBudW1iZXIgfSA9IHRoaXMubW9kZWw7XHJcbiAgICB0aGlzLndvcmtpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5fbWFpbGJveC5zdWJtaXQoaWQsIHZlcnNpb24sIGZvcm1JZCwgbW9kZWwpLlxyXG4gICAgICBwaXBlKHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1N1Ym1pdHRlZCcsIG51bWJlcik7XHJcbiAgICAgICAgdGhpcy53b3JraW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9LCBlID0+IHtcclxuICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSwgJ1N1Ym1pdEVycicpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG4gIGJhY2soKSB7XHJcbiAgICB0aGlzLl9mb3JtUmVmLm5hdmlnYXRlKCk7XHJcbiAgfVxyXG4gIGRpc2NhcmQoKSB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHRoaXMuX3NiLmFzaygnRGlzY2FyZEFzaycsICdEaXNjYXJkJywge1xyXG4gICAgICAgIGNvbG9yOiAnd2FybicsIG9rOiAnRGlzY2FyZCdcclxuICAgICAgfSkuc3Vic2NyaWJlKG9rID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIHRoaXMud29ya2luZ0NoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5fbWFpbGJveC5kZWxldGUodGhpcy5tb2RlbC5pZCkuXHJcbiAgICAgICAgICAgIHN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMud29ya2luZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSwgJ05ldHdvcmtFcnInKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZW5kKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKEFjdGlvbkRpYWxvZywge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGFjdGlvbixcclxuICAgICAgICAgIGl0ZW06IHRoaXMubW9kZWxcclxuICAgICAgICB9IGFzIEFjdGlvbkRpYWxvZ0RhdGEsXHJcbiAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IHRydWVcclxuICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXJncyA9PiB7XHJcbiAgICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICAgIHRoaXMuX2FwcGx5Q2hhbmdlcygpO1xyXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0gcXVlcnlQYXJhbXMoYXJncyk7XHJcbiAgICAgICAgICB0aGlzLndvcmtpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy53b3JraW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgICBjb25zdCB7IGlkLCB2ZXJzaW9uLCBudW1iZXIsIG1vZGVsLCBmb3JtSWQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fbWFpbGJveC5zZW5kKGlkLCB2ZXJzaW9uLCBmb3JtSWQsIG1vZGVsLCBhY3Rpb24sIHBhcmFtcykuXHJcbiAgICAgICAgICAgIHN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBvcmlnaW4gPSByLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5vcmlnaW5JZCA9PT0gaWQpO1xyXG4gICAgICAgICAgICAgIGlmIChvcmlnaW4ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWNjb3VudHMuZ2V0QWxsKG9yaWdpbi5tYXAociA9PiByLnVzZXJJZCkpLnN1YnNjcmliZSh1ID0+XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50VG8nLCBudW1iZXIsIHRoaXMuX2dldEFjdGlvbkFkamVjdGl2ZShhY3Rpb24pLCB0aGlzLl90cmFuc2xhdGUuam9pbih1Lm1hcCh1ID0+IHUubmFtZSkpKSk7XHJcbiAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBudW1iZXIsIHRoaXMuX2dldEFjdGlvbkFkamVjdGl2ZShhY3Rpb24pKTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9LCBlID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSwgJ1NlbmRFcnInKTtcclxuICAgICAgICAgICAgICBvYnNlcnZlLmVycm9yKCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlLmVycm9yKCk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvcHkoKSB7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNvcHkodGhpcy5tb2RlbC5kb2N1bWVudElkKS5zdWJzY3JpYmUoaSA9PiB7XHJcbiAgICAgIHRoaXMuX3NiLnRvYXN0KCdDb3BpZWQnLCBpLm51bWJlciB8fCB0aGlzLmZvcm0udGl0bGUpO1xyXG4gICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94L2knLCBpLmlkLmVuY29kZUlkKCldLCB7XHJcbiAgICAgICAgc3RhdGU6IHsgaXRlbTogaSB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKiBAcGFyYW0gbWVzc2FnZSByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBhcmdzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaGFuZGxlRXJyb3IocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55LCBtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuY29uc3RydWN0b3IubmFtZSA9PT0gJ1Bvc2l0aW9uRXJyb3InKVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVXNlckRlbmllZEdlb0VycicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdHZW9FcnInKTtcclxuICAgICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0MDk6IC8vIHZlcnNpb24gY2hhbmdlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3BvbnNlLmVycm9yIC8qIHNlcmlhbGl6ZWQgbW9kZWwgKi8gYXMgUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICAgICAgICAgICAgb2JqICYmIHRoaXMuX2Fzc2lnbihvYmopO1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVmVyc2lvbkVycicsIHRoaXMubW9kZWwubnVtYmVyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSA0MDY6IC8vIHZhbGlkYXRpb24gZXhjZXB0aW9uXHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvclN0cmluZyhyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IobWVzc2FnZSwgLi4uYXJncyk7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfYXNzaWduKG1vZGVsOiBSZWNpcGllbnRNb2RlbCkge1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCBtb2RlbCwge1xyXG4gICAgICBtb2RlbDogT2JqZWN0LmRlZXBBc3NpZ24odGhpcy5tb2RlbC5tb2RlbCwgbW9kZWwubW9kZWwpIC8vIHByZXNlcnZlIG9iamVjdCByZWZcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5fZm9ybVJlZi5fbW9kZWxDaGFuZ2UubmV4dCh0aGlzLm1vZGVsKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyXCI+XHJcbiAgPGJpemRvYy1wZW9wbGUgW21vZGVsXT1cIm1vZGVsXCIgKm5nSWY9XCJtb2RlICE9PSAnY29tcG9zZScgJiYgY29udGFjdHNcIj48L2JpemRvYy1wZW9wbGU+XHJcbiAgPGJpemRvYy1hdHRhY2htZW50cyBbbW9kZWxdPVwibW9kZWxcIiBbaW5jbHVkZURlbGV0ZWRdPVwidHJ1ZVwiIFt2aWV3ZWRJbmRpY2F0b3JdPVwiZmFsc2VcIj48L2JpemRvYy1hdHRhY2htZW50cz5cclxuICA8ZGl2ICpuZ0lmPVwiIW1vZGVsLnJlcGxpZWQgJiYgbW9kZSAhPT0gJ2NvbXBvc2UnICYmIG1vZGVsLm5vdGVcIiBjbGFzcz1cImNvbXBvc2Utbm90ZVwiPlxyXG4gICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmluZm88L21hdC1pY29uPiA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5LTJcIj57e21vZGVsLm5vdGV9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwibW9kZWwudGFnc1wiPlxyXG4gICAgPHNwYW4gKm5nRm9yPVwibGV0IHRhZyBvZiBtb2RlbC50YWdzXCIgY2xhc3M9XCJtYXQtY2hpcCBtYXQtc3RhbmRhcmQtY2hpcCBzbWFsbC1jaGlwXCI+e3t0YWd9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy1jb250YWluZXIgI2NvbXBvbmVudD48L25nLWNvbnRhaW5lcj5cclxuPGZvcm0gc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj48aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZSBtdWx0aXBsZSAvPjwvZm9ybT5cclxuIl19
|