@eo-sdk/client 11.8.0-rc.1 → 11.8.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.d.ts.map +1 -1
  2. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  3. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
  4. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +78 -23
  5. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  6. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.d.ts +24 -0
  7. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.d.ts.map +1 -0
  8. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +6 -0
  9. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
  10. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts +5 -5
  11. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
  12. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  13. package/app/eo-framework/object-form/object-form-helper.service.d.ts +31 -11
  14. package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
  15. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +7 -0
  16. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
  17. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts +1 -0
  18. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts.map +1 -1
  19. package/assets/_default/i18n/de.json +3 -2
  20. package/assets/_default/i18n/en.json +7 -6
  21. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  22. package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.mjs +2 -1
  23. package/esm2022/app/eo-client/process-state/process-state.component.mjs +1 -1
  24. package/esm2022/app/eo-client/settings/settings.component.mjs +3 -3
  25. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +4 -3
  26. package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +3 -2
  27. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +215 -94
  28. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.mjs +39 -0
  29. package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +19 -10
  30. package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +2 -2
  31. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +16 -22
  32. package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +8 -3
  33. package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  34. package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +3 -3
  35. package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +3 -3
  36. package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +43 -16
  37. package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +14 -2
  38. package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +9 -3
  39. package/esm2022/app/eo-framework-core/agent/agent.service.mjs +3 -3
  40. package/fesm2022/eo-sdk-client.mjs +523 -318
  41. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  42. package/package.json +2 -2
@@ -197,11 +197,11 @@ export class ObjectFormEditComponent {
197
197
  return dmsObject.hasOwnProperty('rights') && dmsObject.rights.edit && !dmsObject.isFinalized;
198
198
  }
199
199
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ObjectFormEditComponent, deps: [{ token: i1.SystemService }, { token: i1.DmsService }, { token: i0.ElementRef }, { token: i1.NotificationsService }, { token: i2.PendingChangesService }, { token: i3.Router }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: { formDisabled: "formDisabled", dmsObject: "dmsObject" }, outputs: { indexDataSaved: "indexDataSaved" }, viewQueries: [{ propertyName: "objectForm", first: true, predicate: ObjectFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i7.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i8.ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: { formDisabled: "formDisabled", dmsObject: "dmsObject" }, outputs: { indexDataSaved: "indexDataSaved" }, viewQueries: [{ propertyName: "objectForm", first: true, predicate: ObjectFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i7.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i8.ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
201
201
  }
202
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ObjectFormEditComponent, decorators: [{
203
203
  type: Component,
204
- args: [{ selector: 'eo-object-form-edit', template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
204
+ args: [{ selector: 'eo-object-form-edit', template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
205
205
  }], ctorParameters: () => [{ type: i1.SystemService }, { type: i1.DmsService }, { type: i0.ElementRef }, { type: i1.NotificationsService }, { type: i2.PendingChangesService }, { type: i3.Router }, { type: i1.TranslateService }], propDecorators: { objectForm: [{
206
206
  type: ViewChild,
207
207
  args: [ObjectFormComponent]
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
213
213
  }], indexDataSaved: [{
214
214
  type: Output
215
215
  }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1lZGl0L29iamVjdC1mb3JtLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZWRpdC9vYmplY3QtZm9ybS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUMsT0FBTyxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUt6RSxPQUFPLEVBQTZELEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQVEvRixNQUFNLE9BQU8sdUJBQXVCO0lBZWxDLElBQ0ksU0FBUyxDQUFDLFNBQW9CO1FBQ2hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUU1Qiw4QkFBOEI7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxJ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QUksS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxTQUFvQjtRQUNyQyxPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQy9GLENBQUM7OEdBN05VLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHdOQVd2QixtQkFBbUIsZ0RDNUJoQyw4cURBOEJBOzsyRkRiYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCOytQQWVDLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUVyQixZQUFZO3NCQUFwQixLQUFLO2dCQUdGLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxXQUFXO2dCQWtCUixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbmFsaXplLCBjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFb0Vycm9yLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vLi4vc2hvcnRjdXRzL2dsb2JhbC1zaG9ydGN1dC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgU3lzdGVtU2VydmljZSwgRG1zU2VydmljZSwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1mb3JtLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLWVkaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtRWRpdENvbXBvbmVudCB7XG5cbiAgc2hvd0NvbmZsaWN0RGlhbG9nID0gZmFsc2U7XG4gIGNvbmZsaWN0RXJyb3I6IGFueTtcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgLy8gZmV0Y2ggYSByZWZlcmVuY2UgdG8gdGhlIG9wYmplY3QgZm9ybSBjb21wb25lbnQgdG8gYmUgYWJsZSB0b1xuICAvLyBnZXQgdGhlIGZvcm0gZGF0YVxuICBAVmlld0NoaWxkKE9iamVjdEZvcm1Db21wb25lbnQpIG9iamVjdEZvcm06IE9iamVjdEZvcm1Db21wb25lbnQ7XG5cbiAgQElucHV0KCkgZm9ybURpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnZG1zT2JqZWN0JylcbiAgc2V0IGRtc09iamVjdChkbXNPYmplY3Q6IERtc09iamVjdCkge1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIHRoaXMuX2Rtc09iamVjdCA9IGRtc09iamVjdDtcblxuICAgICAgLy8gcmVzZXQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtXG4gICAgICB0aGlzLmZvcm1TdGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jb250cm9scy52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuY3JlYXRlT2JqZWN0Rm9ybShkbXNPYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkbXNPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rtc09iamVjdDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBpbmRleERhdGFTYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBjb250cm9scyA9IHtcbiAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICBzYXZpbmc6IGZhbHNlXG4gIH07XG5cbiAgcHJpdmF0ZSBfZG1zT2JqZWN0OiBEbXNPYmplY3Q7XG4gIHByaXZhdGUgbWVzc2FnZXMgPSB7XG4gICAgZm9ybVN1Y2Nlc3M6IG51bGwsXG4gICAgZm9ybUVycm9yOiBudWxsXG4gIH07XG5cbiAgLy8gc2hvcnRjdXQgYWN0aW9uc1xuICBzaG9ydGN1dHM6IEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50ID0ge1xuICAgIGlkOiAnZW8uYXBwLmZvcm0uZWRpdCcsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5mb3JtLnRpdGxlJyksXG4gICAgbGFiZWxLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS50aXRsZScsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5mb3JtLmFjdGlvbi5zYXZlJyksXG4gICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnNhdmUnLFxuICAgICAgc2hvcnRjdXQ6ICdTJyxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9ybVN0YXRlIHx8ICF0aGlzLmZvcm1TdGF0ZS5kaXJ0eSB8fCB0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkIHx8ICFVdGlscy5pc1Zpc2libGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnJlc2V0JyksXG4gICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnJlc2V0JyxcbiAgICAgIHNob3J0Y3V0OiAnUicsXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmRpcnR5IHx8ICFVdGlscy5pc1Zpc2libGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLmVkaXQnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS5hY3Rpb24uZWRpdCcsXG4gICAgICBzaG9ydGN1dDogJ0UnLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub2JqZWN0Rm9ybS5mb2N1c0Zvcm0oKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKHRhcmdldCkgPT4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9ybU9wdGlvbnMgfHwgIVV0aWxzLmlzVmlzaWJsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KSB8fCB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpO1xuICAgICAgfVxuICAgIH1dXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBub3RpY2F0aW9uOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoW1xuICAgICAgJ2VvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJyxcbiAgICAgICdlby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuZXJyb3InXG4gICAgXSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZXMuZm9ybVN1Y2Nlc3MgPSByZXNbJ2VvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJ107XG4gICAgICB0aGlzLm1lc3NhZ2VzLmZvcm1FcnJvciA9IHJlc1snZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLmVycm9yJ107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZXZ0KSB7XG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XG4gICAgdGhpcy5jb250cm9scy52aXNpYmxlID0gdGhpcy5mb3JtU3RhdGUuaW52YWxpZCB8fCB0aGlzLmZvcm1TdGF0ZS5kaXJ0eTtcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkpIHtcbiAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNhdmUgdGhlIGN1cnJlbnQgZG1zIG9iamVjdFxuICBzYXZlKGlnbm9yZUNvbmZsaWN0cz86IGJvb2xlYW4pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5vYmplY3RGb3JtLmdldEZvcm1EYXRhKCk7XG4gICAgICAgIGNvbnN0IHtpZCwgdHlwZU5hbWUsIHZlcnNpb259ID0gdGhpcy5fZG1zT2JqZWN0O1xuXG4gICAgICAgIHRoaXMuZG1zU2VydmljZS51cGRhdGVPYmplY3QoaWQsIGZvcm1EYXRhLCB0eXBlTmFtZSwgaWdub3JlQ29uZmxpY3RzID8gbnVsbCA6IHZlcnNpb24sIGZhbHNlKVxuICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuZmluaXNoUGVuZGluZygpKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh1cGRhdGVkT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kbXNPYmplY3QgPSB1cGRhdGVkT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5kYXRhID0gdXBkYXRlZE9iamVjdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5vYmplY3QgPSB1cGRhdGVkT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy5jb250cm9scy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbHMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vYmplY3RGb3JtLnNldEZvcm1QcmlzdGluZSgpO1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFTYXZlZC5lbWl0KGZvcm1EYXRhKTtcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYoZXJyLnN0YXR1cyA9PT0gNDA5KXtcbiAgICAgICAgICAgICAgdGhpcy5jb25mbGljdEVycm9yID0gZXJyLmVycm9yO1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Db25mbGljdERpYWxvZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFb0Vycm9yKGVyciwgdGhpcy5fZG1zT2JqZWN0LnRpdGxlLCB0aGlzLm1lc3NhZ2VzLmZvcm1FcnJvciwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBvcGVuQ29uZmxpY3REaWFsb2coKXtcbiAgICB0aGlzLnNob3dDb25mbGljdERpYWxvZyA9IHRydWU7XG4gIH1cblxuICBjbG9zZUNvbmZsaWN0RGlhbG9nKCl7XG4gICAgdGhpcy5zaG93Q29uZmxpY3REaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25mbGljdENoYW5nZXMoKXtcbiAgICBjb25zdCBuYXZpZ2F0aW9uRXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgdmVyc2lvbjogdGhpcy5fZG1zT2JqZWN0LnZlcnNpb24sXG4gICAgICAgIHZlcnNpb24yOiB0aGlzLmNvbmZsaWN0RXJyb3IuZG1zb2JqZWN0LnZlcnNpb25cbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2B2ZXJzaW9ucy8ke3RoaXMuX2Rtc09iamVjdC5pZH1gXSwgbmF2aWdhdGlvbkV4dHJhcykudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFwvKy9nLCAnJyk7XG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gIH1cblxuICBjYW5jZWxTYXZpbmcoKXtcbiAgICB0aGlzLmNsb3NlQ29uZmxpY3REaWFsb2coKTtcbiAgfVxuXG4gIC8vIHJlc2V0IHRoZSBmb3JtIHRvIGl0cyBpbml0aWFsIHN0YXRlXG4gIHJlc2V0KCkge1xuICAgIHRoaXMub2JqZWN0Rm9ybS5yZXNldEZvcm0oKTtcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgZm9ybU9wdGlvbnMgcmVxdWlyZWQgYnkgb2JqZWN0IGZvcm0gY29tcG9uZW50XG4gIHByaXZhdGUgY3JlYXRlT2JqZWN0Rm9ybShkbXNPYmplY3Q6IERtc09iamVjdCkge1xuXG4gICAgdGhpcy5zeXN0ZW1TZXJ2aWNlXG4gICAgICAuZ2V0T2JqZWN0VHlwZUZvcm0oZG1zT2JqZWN0LnR5cGUubmFtZSwgJ0VESVQnKVxuICAgICAgLnN1YnNjcmliZSgobW9kZWwpID0+IHtcbiAgICAgICAgdGhpcy5hZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhtb2RlbCk7XG4gICAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XG4gICAgICAgICAgbGF5b3V0U2V0dGluZ3NJRDogZG1zT2JqZWN0LnR5cGUubmFtZSxcbiAgICAgICAgICBmb3JtTW9kZWw6IG1vZGVsLFxuICAgICAgICAgIGRhdGE6IGRtc09iamVjdC5kYXRhLFxuICAgICAgICAgIG9iamVjdDogZG1zT2JqZWN0LFxuICAgICAgICAgIG9iamVjdElkOiBkbXNPYmplY3QuaWQsXG4gICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZm9ybURpc2FibGVkIHx8ICF0aGlzLmlzRWRpdGFibGUoZG1zT2JqZWN0KVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgICAgICB0aGlzLmZvcm1PcHRpb25zLmNvbnRleHQgPSB7XG4gICAgICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgICAgICB0eXBlTmFtZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZU5hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhtb2RlbDogYW55KSB7XG4gICAgaWYgKG1vZGVsLnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICBtb2RlbC5leGNlcHRpb25JRHMgPSBbdGhpcy5fZG1zT2JqZWN0LmlkXTtcbiAgICB9IGVsc2UgaWYobW9kZWwuZWxlbWVudHMpIHtcbiAgICAgIG1vZGVsLmVsZW1lbnRzLmZvckVhY2goZWwgPT4gdGhpcy5hZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhlbCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNFZGl0YWJsZShkbXNPYmplY3Q6IERtc09iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkbXNPYmplY3QuaGFzT3duUHJvcGVydHkoJ3JpZ2h0cycpICYmIGRtc09iamVjdC5yaWdodHMuZWRpdCAmJiAhZG1zT2JqZWN0LmlzRmluYWxpemVkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib2JqZWN0LWZvcm0tZWRpdFwiIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBmb3JtU3RhdGU/LmludmFsaWQgPT09IHRydWV9XCIgW2VvU2hvcnRjdXRzXT1cInNob3J0Y3V0c1wiPlxuICA8ZW8tb2JqZWN0LWZvcm0gW2Zvcm1PcHRpb25zXT1cImZvcm1PcHRpb25zXCIgKm5nSWY9XCJmb3JtT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAoc3RhdHVzQ2hhbmdlZCk9XCJvbkZvcm1TdGF0dXNDaGFuZ2VkKCRldmVudClcIj48L2VvLW9iamVjdC1mb3JtPlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2xzXCIgKm5nSWY9XCJjb250cm9scy52aXNpYmxlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyLW1zZ1wiICpuZ0lmPVwiZm9ybVN0YXRlPy5pbnZhbGlkXCIgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEuZm9ybS5pbnZhbGlkPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cInJlc2V0KClcIiBbZGlzYWJsZWRdPVwiY29udHJvbHMuc2F2aW5nXCIgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEucmVzZXQ8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgW25nQ2xhc3NdPVwie3NwaW5uZXI6IGNvbnRyb2xzLnNhdmluZ31cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8IGNvbnRyb2xzLnNhdmluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIiB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIignZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLmNvbmZsaWN0LmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGUgOiB7bW9kaWZpZXI6IGNvbmZsaWN0RXJyb3I/LmRtc29iamVjdC5tb2RpZmllZC5ieS5maXJzdG5hbWUgKyAnICcgKyBjb25mbGljdEVycm9yPy5kbXNvYmplY3QubW9kaWZpZWQuYnkubGFzdG5hbWV9KVwiXG4gIChoaWRlKT1cImNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1wiIFsodmlzaWJsZSldPVwic2hvd0NvbmZsaWN0RGlhbG9nXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidjb25mbGljdF9fZGlhbG9nJ1wiPlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBjb25mbGljdC0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsU2F2aW5nKClcIlxuICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dDb25mbGljdENoYW5nZXMoKVwiXG4gICAgICB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLmNoYW5nZXM8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSh0cnVlKTsgY2xvc2VDb25mbGljdERpYWxvZygpO1wiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEuc2F2ZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1lZGl0L29iamVjdC1mb3JtLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZWRpdC9vYmplY3QtZm9ybS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUMsT0FBTyxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUt6RSxPQUFPLEVBQTZELEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQVEvRixNQUFNLE9BQU8sdUJBQXVCO0lBZWxDLElBQ0ksU0FBUyxDQUFDLFNBQW9CO1FBQ2hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUU1Qiw4QkFBOEI7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxJ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QUksS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxTQUFvQjtRQUNyQyxPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQy9GLENBQUM7OEdBN05VLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHdOQVd2QixtQkFBbUIsZ0RDNUJoQywwcURBNEJBOzsyRkRYYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCOytQQWVDLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUVyQixZQUFZO3NCQUFwQixLQUFLO2dCQUdGLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxXQUFXO2dCQWtCUixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbmFsaXplLCBjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFb0Vycm9yLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vLi4vc2hvcnRjdXRzL2dsb2JhbC1zaG9ydGN1dC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgU3lzdGVtU2VydmljZSwgRG1zU2VydmljZSwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1mb3JtLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLWVkaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtRWRpdENvbXBvbmVudCB7XG5cbiAgc2hvd0NvbmZsaWN0RGlhbG9nID0gZmFsc2U7XG4gIGNvbmZsaWN0RXJyb3I6IGFueTtcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgLy8gZmV0Y2ggYSByZWZlcmVuY2UgdG8gdGhlIG9wYmplY3QgZm9ybSBjb21wb25lbnQgdG8gYmUgYWJsZSB0b1xuICAvLyBnZXQgdGhlIGZvcm0gZGF0YVxuICBAVmlld0NoaWxkKE9iamVjdEZvcm1Db21wb25lbnQpIG9iamVjdEZvcm06IE9iamVjdEZvcm1Db21wb25lbnQ7XG5cbiAgQElucHV0KCkgZm9ybURpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnZG1zT2JqZWN0JylcbiAgc2V0IGRtc09iamVjdChkbXNPYmplY3Q6IERtc09iamVjdCkge1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIHRoaXMuX2Rtc09iamVjdCA9IGRtc09iamVjdDtcblxuICAgICAgLy8gcmVzZXQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtXG4gICAgICB0aGlzLmZvcm1TdGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jb250cm9scy52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuY3JlYXRlT2JqZWN0Rm9ybShkbXNPYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkbXNPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rtc09iamVjdDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBpbmRleERhdGFTYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBjb250cm9scyA9IHtcbiAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICBzYXZpbmc6IGZhbHNlXG4gIH07XG5cbiAgcHJpdmF0ZSBfZG1zT2JqZWN0OiBEbXNPYmplY3Q7XG4gIHByaXZhdGUgbWVzc2FnZXMgPSB7XG4gICAgZm9ybVN1Y2Nlc3M6IG51bGwsXG4gICAgZm9ybUVycm9yOiBudWxsXG4gIH07XG5cbiAgLy8gc2hvcnRjdXQgYWN0aW9uc1xuICBzaG9ydGN1dHM6IEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50ID0ge1xuICAgIGlkOiAnZW8uYXBwLmZvcm0uZWRpdCcsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5mb3JtLnRpdGxlJyksXG4gICAgbGFiZWxLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS50aXRsZScsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5mb3JtLmFjdGlvbi5zYXZlJyksXG4gICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnNhdmUnLFxuICAgICAgc2hvcnRjdXQ6ICdTJyxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9ybVN0YXRlIHx8ICF0aGlzLmZvcm1TdGF0ZS5kaXJ0eSB8fCB0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkIHx8ICFVdGlscy5pc1Zpc2libGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnJlc2V0JyksXG4gICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnJlc2V0JyxcbiAgICAgIHNob3J0Y3V0OiAnUicsXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmRpcnR5IHx8ICFVdGlscy5pc1Zpc2libGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLmVkaXQnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS5hY3Rpb24uZWRpdCcsXG4gICAgICBzaG9ydGN1dDogJ0UnLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub2JqZWN0Rm9ybS5mb2N1c0Zvcm0oKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKHRhcmdldCkgPT4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9ybU9wdGlvbnMgfHwgIVV0aWxzLmlzVmlzaWJsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KSB8fCB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpO1xuICAgICAgfVxuICAgIH1dXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBub3RpY2F0aW9uOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoW1xuICAgICAgJ2VvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJyxcbiAgICAgICdlby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuZXJyb3InXG4gICAgXSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZXMuZm9ybVN1Y2Nlc3MgPSByZXNbJ2VvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJ107XG4gICAgICB0aGlzLm1lc3NhZ2VzLmZvcm1FcnJvciA9IHJlc1snZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLmVycm9yJ107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZXZ0KSB7XG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XG4gICAgdGhpcy5jb250cm9scy52aXNpYmxlID0gdGhpcy5mb3JtU3RhdGUuaW52YWxpZCB8fCB0aGlzLmZvcm1TdGF0ZS5kaXJ0eTtcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkpIHtcbiAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNhdmUgdGhlIGN1cnJlbnQgZG1zIG9iamVjdFxuICBzYXZlKGlnbm9yZUNvbmZsaWN0cz86IGJvb2xlYW4pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5vYmplY3RGb3JtLmdldEZvcm1EYXRhKCk7XG4gICAgICAgIGNvbnN0IHtpZCwgdHlwZU5hbWUsIHZlcnNpb259ID0gdGhpcy5fZG1zT2JqZWN0O1xuXG4gICAgICAgIHRoaXMuZG1zU2VydmljZS51cGRhdGVPYmplY3QoaWQsIGZvcm1EYXRhLCB0eXBlTmFtZSwgaWdub3JlQ29uZmxpY3RzID8gbnVsbCA6IHZlcnNpb24sIGZhbHNlKVxuICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuZmluaXNoUGVuZGluZygpKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh1cGRhdGVkT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kbXNPYmplY3QgPSB1cGRhdGVkT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5kYXRhID0gdXBkYXRlZE9iamVjdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5vYmplY3QgPSB1cGRhdGVkT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy5jb250cm9scy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbHMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vYmplY3RGb3JtLnNldEZvcm1QcmlzdGluZSgpO1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFTYXZlZC5lbWl0KGZvcm1EYXRhKTtcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYoZXJyLnN0YXR1cyA9PT0gNDA5KXtcbiAgICAgICAgICAgICAgdGhpcy5jb25mbGljdEVycm9yID0gZXJyLmVycm9yO1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Db25mbGljdERpYWxvZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFb0Vycm9yKGVyciwgdGhpcy5fZG1zT2JqZWN0LnRpdGxlLCB0aGlzLm1lc3NhZ2VzLmZvcm1FcnJvciwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBvcGVuQ29uZmxpY3REaWFsb2coKXtcbiAgICB0aGlzLnNob3dDb25mbGljdERpYWxvZyA9IHRydWU7XG4gIH1cblxuICBjbG9zZUNvbmZsaWN0RGlhbG9nKCl7XG4gICAgdGhpcy5zaG93Q29uZmxpY3REaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25mbGljdENoYW5nZXMoKXtcbiAgICBjb25zdCBuYXZpZ2F0aW9uRXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgdmVyc2lvbjogdGhpcy5fZG1zT2JqZWN0LnZlcnNpb24sXG4gICAgICAgIHZlcnNpb24yOiB0aGlzLmNvbmZsaWN0RXJyb3IuZG1zb2JqZWN0LnZlcnNpb25cbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2B2ZXJzaW9ucy8ke3RoaXMuX2Rtc09iamVjdC5pZH1gXSwgbmF2aWdhdGlvbkV4dHJhcykudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFwvKy9nLCAnJyk7XG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gIH1cblxuICBjYW5jZWxTYXZpbmcoKXtcbiAgICB0aGlzLmNsb3NlQ29uZmxpY3REaWFsb2coKTtcbiAgfVxuXG4gIC8vIHJlc2V0IHRoZSBmb3JtIHRvIGl0cyBpbml0aWFsIHN0YXRlXG4gIHJlc2V0KCkge1xuICAgIHRoaXMub2JqZWN0Rm9ybS5yZXNldEZvcm0oKTtcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgZm9ybU9wdGlvbnMgcmVxdWlyZWQgYnkgb2JqZWN0IGZvcm0gY29tcG9uZW50XG4gIHByaXZhdGUgY3JlYXRlT2JqZWN0Rm9ybShkbXNPYmplY3Q6IERtc09iamVjdCkge1xuXG4gICAgdGhpcy5zeXN0ZW1TZXJ2aWNlXG4gICAgICAuZ2V0T2JqZWN0VHlwZUZvcm0oZG1zT2JqZWN0LnR5cGUubmFtZSwgJ0VESVQnKVxuICAgICAgLnN1YnNjcmliZSgobW9kZWwpID0+IHtcbiAgICAgICAgdGhpcy5hZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhtb2RlbCk7XG4gICAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XG4gICAgICAgICAgbGF5b3V0U2V0dGluZ3NJRDogZG1zT2JqZWN0LnR5cGUubmFtZSxcbiAgICAgICAgICBmb3JtTW9kZWw6IG1vZGVsLFxuICAgICAgICAgIGRhdGE6IGRtc09iamVjdC5kYXRhLFxuICAgICAgICAgIG9iamVjdDogZG1zT2JqZWN0LFxuICAgICAgICAgIG9iamVjdElkOiBkbXNPYmplY3QuaWQsXG4gICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZm9ybURpc2FibGVkIHx8ICF0aGlzLmlzRWRpdGFibGUoZG1zT2JqZWN0KVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgICAgICB0aGlzLmZvcm1PcHRpb25zLmNvbnRleHQgPSB7XG4gICAgICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgICAgICB0eXBlTmFtZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZU5hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhtb2RlbDogYW55KSB7XG4gICAgaWYgKG1vZGVsLnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICBtb2RlbC5leGNlcHRpb25JRHMgPSBbdGhpcy5fZG1zT2JqZWN0LmlkXTtcbiAgICB9IGVsc2UgaWYobW9kZWwuZWxlbWVudHMpIHtcbiAgICAgIG1vZGVsLmVsZW1lbnRzLmZvckVhY2goZWwgPT4gdGhpcy5hZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhlbCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNFZGl0YWJsZShkbXNPYmplY3Q6IERtc09iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkbXNPYmplY3QuaGFzT3duUHJvcGVydHkoJ3JpZ2h0cycpICYmIGRtc09iamVjdC5yaWdodHMuZWRpdCAmJiAhZG1zT2JqZWN0LmlzRmluYWxpemVkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib2JqZWN0LWZvcm0tZWRpdFwiIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBmb3JtU3RhdGU/LmludmFsaWQgPT09IHRydWV9XCIgW2VvU2hvcnRjdXRzXT1cInNob3J0Y3V0c1wiPlxuICA8ZW8tb2JqZWN0LWZvcm0gW2Zvcm1PcHRpb25zXT1cImZvcm1PcHRpb25zXCIgKm5nSWY9XCJmb3JtT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAoc3RhdHVzQ2hhbmdlZCk9XCJvbkZvcm1TdGF0dXNDaGFuZ2VkKCRldmVudClcIj48L2VvLW9iamVjdC1mb3JtPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sc1wiICpuZ0lmPVwiY29udHJvbHMudmlzaWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJlcnItbXNnXCIgKm5nSWY9XCJmb3JtU3RhdGU/LmludmFsaWRcIiB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5mb3JtLmludmFsaWQ8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwicmVzZXQoKVwiIFtkaXNhYmxlZF09XCJjb250cm9scy5zYXZpbmdcIiB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5yZXNldDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiBbbmdDbGFzc109XCJ7c3Bpbm5lcjogY29udHJvbHMuc2F2aW5nfVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtU3RhdGU/LmludmFsaWQgfHwgY29udHJvbHMuc2F2aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiIHRyYW5zbGF0ZT5lby5vYmplY3QuaW5kZXhkYXRhLnNhdmU8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiKCdlby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuY29uZmxpY3QuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZSA6IHttb2RpZmllcjogY29uZmxpY3RFcnJvcj8uZG1zb2JqZWN0Lm1vZGlmaWVkLmJ5LmZpcnN0bmFtZSArICcgJyArIGNvbmZsaWN0RXJyb3I/LmRtc29iamVjdC5tb2RpZmllZC5ieS5sYXN0bmFtZX0pXCJcbiAgKGhpZGUpPVwiY29udHJvbHMuc2F2aW5nID0gZmFsc2U7XCIgWyh2aXNpYmxlKV09XCJzaG93Q29uZmxpY3REaWFsb2dcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ2NvbmZsaWN0X19kaWFsb2cnXCI+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGNvbmZsaWN0LS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJjYW5jZWxTYXZpbmcoKVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0NvbmZsaWN0Q2hhbmdlcygpXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuY2hhbmdlczwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKHRydWUpOyBjbG9zZUNvbmZsaWN0RGlhbG9nKCk7XCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG4iXX0=