@eo-sdk/client 10.6.28 → 10.6.30

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 (35) hide show
  1. package/app/eo-client/index.d.ts +3 -0
  2. package/app/eo-client/index.d.ts.map +1 -1
  3. package/app/eo-client/process-state/filter-label.d.ts +10 -0
  4. package/app/eo-client/process-state/filter-label.d.ts.map +1 -0
  5. package/app/eo-client/settings/settings.component.d.ts +4 -2
  6. package/app/eo-client/settings/settings.component.d.ts.map +1 -1
  7. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  8. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
  9. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +6 -0
  10. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
  11. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  12. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  13. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +0 -1
  14. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.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/assets/_default/i18n/de.json +2 -1
  18. package/assets/_default/i18n/en.json +2 -1
  19. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  20. package/esm2020/app/eo-client/index.mjs +4 -1
  21. package/esm2020/app/eo-client/process-state/filter-label.mjs +11 -0
  22. package/esm2020/app/eo-client/settings/settings.component.mjs +9 -6
  23. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +4 -3
  24. package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +4 -3
  25. package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +19 -10
  26. package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +2 -2
  27. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +8 -3
  28. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +3 -8
  29. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +1 -9
  30. package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +14 -2
  31. package/fesm2015/eo-sdk-client.mjs +115 -87
  32. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  33. package/fesm2020/eo-sdk-client.mjs +115 -87
  34. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  35. package/package.json +2 -2
@@ -27,7 +27,7 @@ import * as i15 from "../../eo-framework/settings/change-password/change-passwor
27
27
  import * as i16 from "../../eo-framework/settings/permissions/permissions.component";
28
28
  import * as i17 from "../../eo-framework/accordion/simple-accordion/simple-accordion.component";
29
29
  let SettingsComponent = class SettingsComponent {
30
- constructor(renderer, userService, config, notify, systemService, eventService, capabilitiesService, titleService, agentService, fb, cacheService, listSettingsService, storageService, translate, elemRef, notification) {
30
+ constructor(renderer, userService, config, notify, systemService, eventService, capabilitiesService, titleService, agentService, fb, cacheService, listSettingsService, storageService, translate, elemRef, notification, authService) {
31
31
  this.renderer = renderer;
32
32
  this.userService = userService;
33
33
  this.config = config;
@@ -44,6 +44,7 @@ let SettingsComponent = class SettingsComponent {
44
44
  this.translate = translate;
45
45
  this.elemRef = elemRef;
46
46
  this.notification = notification;
47
+ this.authService = authService;
47
48
  this.LockSettings = LockSettings;
48
49
  this.showAgentConfig = true;
49
50
  this.defaultLockSetting = false;
@@ -57,6 +58,7 @@ let SettingsComponent = class SettingsComponent {
57
58
  this.showErrorDialog = false;
58
59
  this.MAX_FILE_SIZE = 524288;
59
60
  this.viewMode = '';
61
+ this.showChangePassword = true;
60
62
  this.cache = {
61
63
  system: true,
62
64
  history: true,
@@ -81,6 +83,7 @@ let SettingsComponent = class SettingsComponent {
81
83
  }
82
84
  this.useAgentControl.valueChanges.pipe(untilDestroyed(this)).subscribe(() => this.agentService.isConnected = this.useAgentControl.value);
83
85
  });
86
+ this.showChangePassword = !this.authService.gatewayInfo.external;
84
87
  }
85
88
  get isSSO() {
86
89
  return this.capabilities && this.capabilities.sso;
@@ -256,16 +259,16 @@ let SettingsComponent = class SettingsComponent {
256
259
  });
257
260
  }
258
261
  };
259
- SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Renderer2 }, { token: i1.UserService }, { token: i1.Config }, { token: i1.NotificationsService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.CapabilitiesService }, { token: i2.PageTitleService }, { token: i3.AgentService }, { token: i4.UntypedFormBuilder }, { token: i1.AppCacheService }, { token: i5.ListSettingsService }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: i0.ElementRef }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component });
260
- SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.cache</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"clearCache()\">eo.state.settings.cache.clear</button>\n <div class=\"cache\">\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.system' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.system\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.history' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.history\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.layout' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.layout\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n </div>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__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:white!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i9.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i10.UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: i11.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: "component", type: i12.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i13.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i14.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i15.ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: i16.PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: i17.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
262
+ SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Renderer2 }, { token: i1.UserService }, { token: i1.Config }, { token: i1.NotificationsService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.CapabilitiesService }, { token: i2.PageTitleService }, { token: i3.AgentService }, { token: i4.UntypedFormBuilder }, { token: i1.AppCacheService }, { token: i5.ListSettingsService }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: i0.ElementRef }, { token: i1.NotificationsService }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component });
263
+ SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section *ngIf=\"showChangePassword\" class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.cache</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"clearCache()\">eo.state.settings.cache.clear</button>\n <div class=\"cache\">\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.system' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.system\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.history' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.history\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.layout' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.layout\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n </div>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__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:white!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i9.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i10.UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: i11.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: "component", type: i12.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i13.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i14.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i15.ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: i16.PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: i17.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
261
264
  SettingsComponent = __decorate([
262
265
  UntilDestroy()
263
266
  ], SettingsComponent);
264
267
  export { SettingsComponent };
265
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SettingsComponent, decorators: [{
266
269
  type: Component,
267
- args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.cache</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"clearCache()\">eo.state.settings.cache.clear</button>\n <div class=\"cache\">\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.system' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.system\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.history' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.history\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.layout' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.layout\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n </div>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__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:white!important}\n"] }]
268
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.UserService }, { type: i1.Config }, { type: i1.NotificationsService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.CapabilitiesService }, { type: i2.PageTitleService }, { type: i3.AgentService }, { type: i4.UntypedFormBuilder }, { type: i1.AppCacheService }, { type: i5.ListSettingsService }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: i0.ElementRef }, { type: i1.NotificationsService }]; }, propDecorators: { files: [{
270
+ args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section *ngIf=\"showChangePassword\" class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.cache</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"clearCache()\">eo.state.settings.cache.clear</button>\n <div class=\"cache\">\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.system' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.system\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.history' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.history\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.layout' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.layout\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n </div>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px 0 rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__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:white!important}\n"] }]
271
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.UserService }, { type: i1.Config }, { type: i1.NotificationsService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.CapabilitiesService }, { type: i2.PageTitleService }, { type: i3.AgentService }, { type: i4.UntypedFormBuilder }, { type: i1.AppCacheService }, { type: i5.ListSettingsService }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: i0.ElementRef }, { type: i1.NotificationsService }, { type: i1.AuthService }]; }, propDecorators: { files: [{
269
272
  type: ViewChild,
270
273
  args: ['files']
271
274
  }], headerBg: [{
@@ -284,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
284
287
  type: ViewChild,
285
288
  args: [NgForm]
286
289
  }] } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUF5QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLE1BQU0sRUFBeUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBS0wsVUFBVSxFQVFWLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFlLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRTFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBR3pGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9qRCxJQUFNLGlCQUFpQixHQUF2QixNQUFNLGlCQUFpQjtJQTZDNUIsWUFBb0IsUUFBbUIsRUFDOUIsV0FBd0IsRUFDeEIsTUFBYyxFQUNiLE1BQTRCLEVBQzVCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLG1CQUF3QyxFQUN4QyxZQUE4QixFQUM5QixZQUEwQixFQUMxQixFQUFzQixFQUN0QixZQUE2QixFQUM3QixtQkFBd0MsRUFDeEMsY0FBbUMsRUFDcEMs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YSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDL0UsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzhHQXJTVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix3akJBMkNqQixNQUFNLGdEQzNFbkIsMjFZQW9QQTtBRHBOYSxpQkFBaUI7SUFON0IsWUFBWSxFQUFFO0dBTUYsaUJBQWlCLENBc1M3QjtTQXRTWSxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxhQUFhO21pQkEwQ0gsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNLLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDSSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ1EsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDSyxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCO2dCQUNiLFlBQVk7c0JBQTlCLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nRm9ybSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFwcENhY2hlU2VydmljZSxcbiAgQ2FwYWJpbGl0aWVzLFxuICBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICBDb25maWcsXG4gIEVuYWlvRXZlbnQsXG4gIEVvVXNlcixcbiAgRXZlbnRTZXJ2aWNlLFxuICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXNlclNlcnZpY2UsXG4gIFV0aWxzXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge09ic2VydmFibGUsIGZvcmtKb2luLCBmaXJzdFZhbHVlRnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2UsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FnZW50U2VydmljZSwgYWdlbnRDb25maWdLZXlzfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvdGl0bGUvcGFnZS10aXRsZS5zZXJ2aWNlJztcbmltcG9ydCB7UmVzdWx0TGlzdENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL3Jlc3VsdC1saXN0L3Jlc3VsdC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1VzZXJBdmF0YXJDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91aS91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHtMaXN0U2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvc2VydmljZXMvbGlzdC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7TG9ja1NldHRpbmdzfSBmcm9tICcuL2FnZW50LWxvY2stc2V0dGluZ3MuZW51bSc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2V0dGluZ3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHVzZXI6IEVvVXNlcjtcbiAgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXRpZXM7XG4gIGRlcHV0aWVzOiB7XG4gICAgZGF0YTogc3RyaW5nW10sXG4gICAgZGF0YU1ldGE6IGFueVtdXG4gIH07XG4gIHNob3dDaGFuZ2VQYXNzd29yZEZvcm06IGJvb2xlYW47XG4gIGNsaWVudExvY2FsZXM6IGFueTtcbiAgc2NoZW1hTG9jYWxlczogYW55W107XG4gIHB1YmxpYyBMb2NrU2V0dGluZ3MgPSBMb2NrU2V0dGluZ3M7XG4gIGFnZW50TG9ja1NldHRpbmdzOiBMb2NrU2V0dGluZ3M7XG4gIHVzZUFnZW50Q29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBzaG93QWdlbnRDb25maWc6IGJvb2xlYW4gPSB0cnVlO1xuICBkZWZhdWx0TG9ja1NldHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB1c2VyJCA9IHRoaXMudXNlclNlcnZpY2UudXNlciQ7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICB1c2VySWQgPSAnJztcbiAgc2hvd0RlbGV0ZUljb25UcmFzaDogYm9vbGVhbiA9IHRydWU7XG4gIHVzZXJJbWFnZVVyaSA9ICcnO1xuICBwcmV2aWV3OiBzdHJpbmc7XG4gIGZpbGU6IGFueTtcbiAgaG92ZXJTZWxlY3RvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93UHJldmlld0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93RGVsZXRlRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dFcnJvckRpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBNQVhfRklMRV9TSVpFID0gNTI0Mjg4O1xuICB2aWV3TW9kZTogc3RyaW5nID0gJyc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgY2FjaGUgPSB7XG4gICAgc3lzdGVtOiB0cnVlLFxuICAgIGhpc3Rvcnk6IHRydWUsXG4gICAgbGF5b3V0OiB0cnVlXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnZmlsZXMnKSBmaWxlczogRWxlbWVudFJlZiA9IHt9IGFzIEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2hlYWRlckJnJykgaGVhZGVyQmc7XG4gIEBWaWV3Q2hpbGQoJ3VzZXJBdmF0YXInKSB1c2VyQXZhdGFyOiBVc2VyQXZhdGFyQ29tcG9uZW50XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EZWxldGVCdG4nKSBjb25maXJtRGVsZXRlQnRuOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwcm9maWxlSW1hZ2VPdmVybGF5JykgcHJvZmlsZUltYWdlT3ZlcmxheTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChOZ0Zvcm0pIGRlcHV0aWVzRm9ybTogTmdGb3JtO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb25maWc6IENvbmZpZyxcbiAgICBwcml2YXRlIG5vdGlmeTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBBcHBDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsaXN0U2V0dGluZ3NTZXJ2aWNlOiBMaXN0U2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1SZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbnNTZXJ2aWNlKSB7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0QmFzZVRpdGxlKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJhci5idXR0b24uc2V0dGluZ3MudGl0bGUnKSk7XG4gICAgdGhpcy5jbGllbnRMb2NhbGVzID0gY29uZmlnLmdldENsaWVudExvY2FsZXMoKTtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB0aGlzLmdldFNjaGVtYUxvY2FsZXMoKTtcbiAgICB0aGlzLmdldFVzZXJEYXRhKCk7XG4gICAgdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IHVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkudXNlclNldHRpbmdzLmFsd2F5c2xvY2s7XG4gICAgdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkLnBpcGUodGFrZSgxKSwgd2l0aExhdGVzdEZyb20odGhpcy5hZ2VudFNlcnZpY2UuYWdlbnRDb25maWckKSkuc3Vic2NyaWJlKChbaXNDb25uZWN0ZWQsIGNvbmZpZ10pID0+IHtcbiAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sID0gdGhpcy5mYi5jb250cm9sKGlzQ29ubmVjdGVkKTtcbiAgICAgIGlmIChjb25maWcuaGFzT3duUHJvcGVydHkoYWdlbnRDb25maWdLZXlzLkFVVE9DT05ORUNUKSkge1xuICAgICAgICB0aGlzLnNob3dBZ2VudENvbmZpZyA9IGNvbmZpZ1thZ2VudENvbmZpZ0tleXMuQVVUT0NPTk5FQ1RdXG4gICAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sLmRpc2FibGUoKVxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShhZ2VudENvbmZpZ0tleXMuTE9DS1NFVFRJTkdTKSAmJiBPYmplY3QudmFsdWVzKExvY2tTZXR0aW5ncykuaW5jbHVkZXMoY29uZmlnW2FnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1NdKSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRMb2NrU2V0dGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWdlbnRMb2NrU2V0dGluZ3MgPSBjb25maWdbYWdlbnRDb25maWdLZXlzLkxPQ0tTRVRUSU5HU107XG4gICAgICB9XG4gICAgICB0aGlzLnVzZUFnZW50Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkID0gdGhpcy51c2VBZ2VudENvbnRyb2wudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cblxuICBnZXQgaXNTU08oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FwYWJpbGl0aWVzICYmIHRoaXMuY2FwYWJpbGl0aWVzLnNzbztcbiAgfVxuXG4gIGdldCBhZ2VudFN0YXR1cygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVNjaGVtYSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLmdldFNjaGVtYUxvY2FsZSgpO1xuICB9XG5cbiAgaGFzUHJpdmlsZWdlKHByaXZpbGVnZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuaGFzUHJpdmlsZWdlKHByaXZpbGVnZSk7XG4gIH1cblxuICBjaGFuZ2VMb2NrU2V0dGluZ3MobG9ja1NldHRpbmdzOiBMb2NrU2V0dGluZ3MpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmNoYW5nZUxvY2tTZXR0aW5nKGxvY2tTZXR0aW5ncykuc3Vic2NyaWJlKCgpID0+IHRoaXMuYWdlbnRMb2NrU2V0dGluZ3MgPSBsb2NrU2V0dGluZ3MpO1xuICB9XG5cbiAgZ2V0U2NoZW1hTG9jYWxlcygpIHtcbiAgICB0aGlzLnN5c3RlbVNlcnZpY2Uuc3lzdGVtJC5zdWJzY3JpYmUoKHN5c3RlbURlZmluaXRpb24pID0+IHtcbiAgICAgIHRoaXMuc2NoZW1hTG9jYWxlcyA9IHN5c3RlbURlZmluaXRpb24ubG9jYWxlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2Rpc3BsYXluYW1lJykpO1xuICAgIH0pO1xuICB9XG5cbiAgc2F2ZURlcHV0aWVzKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0RGVwdXRpZXModGhpcy5kZXB1dGllcy5kYXRhKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5kZXB1dGllc0Zvcm0ucmVzZXRGb3JtKHtkZXB1dGllczogdGhpcy5kZXB1dGllcy5kYXRhfSkpO1xuICB9XG5cbiAgcmVzZXREZXB1dGllcygpIHtcbiAgICB0aGlzLmRlcHV0aWVzRm9ybS5yZXNldEZvcm0oe2RlcHV0aWVzOiB0aGlzLnVzZXIuZGVwdXRpZXMubWFwKGQgPT4gZC5uYW1lKX0pXG4gIH1cblxuICBnZXRVc2VyRGF0YSgpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnVzZXIkLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgLy8gdGhpcy51c2VyID0gT2JqZWN0LmFzc2lnbih1c2VyLCB7Y2FwYWJpbGl0aWVzOiB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCl9KTtcbiAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAvLyBkZXB1dGllc1xuICAgICAgdGhpcy5kZXB1dGllcyA9IHtcbiAgICAgICAgZGF0YTogdGhpcy51c2VyLmRlcHV0aWVzLm1hcChkID0+IGQubmFtZSksXG4gICAgICAgIGRhdGFNZXRhOiB0aGlzLnVzZXIuZGVwdXRpZXNcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q2hhbmdlUGFzc3dvcmRGb3JtID0gZmFsc2U7XG4gIH1cblxuICBjaGFuZ2VDbGllbnRMb2NhbGUoaXNvOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZ2V0U3VwcG9ydGVkQ2xpZW50TG9jYWxlcygpLmluY2x1ZGVzKGlzbykpIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlQ2xpZW50TG9jYWxlKGlzbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5LmVycm9yKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLmxhbmd1YWdlLmVycm9yJykpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVNjaGVtYUxvY2FsZShpc286IHN0cmluZykge1xuICAgIGlmICh0aGlzLnVzZXIuc2NoZW1hTG9jYWxlICE9PSBpc28pIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlU2NoZW1hTG9jYWxlKGlzbykuc3Vic2NyaWJlKFxuICAgICAgICBfID0+IFV0aWxzLnRocm93KG51bGwsXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXNlci5zZXJ2aWNlLnNjaGVtYS5sb2NhbGUuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51c2VyLnNlcnZpY2Uuc2NoZW1hLmxvY2FsZS5lcnJvci5kZXNjcmlwdGlvbicpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5lbGVtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI3ByZXNlbmNlJykuZm9jdXMoKTtcbiAgICB0aGlzLnVzZXIkLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgIHRoaXMudXNlcklkID0gdXNlci5pZDtcbiAgICAgIHRoaXMudXNlckltYWdlVXJpID0gdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW1hZ2VVcmkodGhpcy51c2VySWQpO1xuICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSAhIXVzZXIuaW1hZ2VVcmk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRQcmVzZW5jZShiOiBib29sZWFuKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXRQcmVzZW5jZShiKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmVycm9yLnRpdGxlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmVycm9yLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgICk7XG4gIH1cbiAgY2xvc2VQcmV2aWV3RGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd1ByZXZpZXdEaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLnByb2ZpbGVJbWFnZU92ZXJsYXkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZGVsZXRlVXNlckltYWdlKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgIC5zZXRVc2VySW1hZ2UobnVsbCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQodGhpcy51c2VySW1hZ2VVcmkpO1xuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TWVNURU1fU1RBVFVTX0lNQUdFX0NIQU5HRSk7XG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlSWNvblRyYXNoID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoJycsIGVyci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLnRpdGxlJyksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci5kZXNjcmlwdGlvbicpXG4gICAgICAgIH0sXG5cbiAgICAgIH0pO1xuXG4gIH1cblxuICBzZWxlY3RJbWFnZShldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZSA9IGV2ZW50LmZpbGVzWzBdO1xuICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLmZpbGUubmFtZTtcbiAgICAgIHN3aXRjaCAoZmFsc2UpIHtcblxuICAgICAgICBjYXNlICh0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygnaW1hZ2UvJykgJiYgdGhpcy5maWxlLnR5cGUuaW5jbHVkZXMoJ2pwZWcnKSB8fCB0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygncG5nJykpOlxuICAgICAgICAgIHRoaXMudmlld01vZGUgPSAnaW1hZ2UnO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yRGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICh0aGlzLmZpbGUuc2l6ZSA8PSB0aGlzLk1BWF9GSUxFX1NJWkUpOlxuICAgICAgICAgIHRoaXMudmlld01vZGUgPSAnc2l6ZSc7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSAnJztcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgICAgICB0aGlzLnNob3dQcmV2aWV3RGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHRoaXMuZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkTmV3VXNlckltYWdlKCkge1xuXG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnNldFVzZXJJbWFnZSh0aGlzLmZpbGUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2ZpbGVJbWFnZU92ZXJsYXkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMucmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQodGhpcy51c2VySW1hZ2VVcmkpO1xuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TWVNURU1fU1RBVFVTX0lNQUdFX0NIQU5HRSk7XG4gICAgICAgICAgdGhpcy5jbG9zZVByZXZpZXdEaWFsb2coKTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKCcnLCBlcnIuZXJyb3IuY2F1c2UubWVzc2FnZXNbMF0pO1xuICAgICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci50aXRsZScpLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IuZGVzY3JpcHRpb24nKVxuICAgICAgICB9LFxuICB9KVxufVxuXG4gIHRhYkFjdGlvbihpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xuICAgIGlucHV0LmJsdXIoKTtcbiAgICB0aGlzLmhvdmVyU2VsZWN0b3IgPSBmYWxzZTtcbiAgfVxuICBtb3VzZUVudGVyKCkge1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IHRydWU7XG4gIH1cbiAgbW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmhvdmVyU2VsZWN0b3IgPSBmYWxzZTtcbiAgfVxuICB0cmFzaEljb25DbGljaygpIHtcbiAgICB0aGlzLnNob3dEZWxldGVEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQoaW1hZ2VVcmk6IHN0cmluZykge1xuICAgIGlmIChpbWFnZVVyaSkge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5oZWFkZXJCZy5uYXRpdmVFbGVtZW50LCAnYmFja2dyb3VuZC1pbWFnZScsIGB1cmwoJHtpbWFnZVVyaSArICcmdD0nICsgdGltZXN0YW1wfSlgKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckNhY2hlKCkge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBbXG4gICAgICB0aGlzLmNhY2hlLmhpc3RvcnkgJiYgdGhpcy5saXN0U2V0dGluZ3NTZXJ2aWNlLmNsZWFyU2V0dGluZ3MoKSxcbiAgICAgIHRoaXMuY2FjaGUuaGlzdG9yeSAmJiB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigoa2V5OiBzdHJpbmcpID0+ICFrZXkubWF0Y2goL15lby4rKGxheW91dCkvKSAmJiAha2V5Lm1hdGNoKC9eZW8uZnJhbWV3b3JrLmNhY2hlLykpLFxuICAgICAgdGhpcy5jYWNoZS5sYXlvdXQgJiYgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhcigoa2V5OiBzdHJpbmcpID0+IGtleSA9PT0gUmVzdWx0TGlzdENvbXBvbmVudC5DT0xVTU5TX0RFRklOSVRJT04gfHwgISFrZXkubWF0Y2goL3N0YXRlLykpLFxuICAgICAgdGhpcy5jYWNoZS5sYXlvdXQgJiYgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKGtleTogc3RyaW5nKSA9PiAhIWtleS5tYXRjaCgvXmVvLisobGF5b3V0KS8pKSxcbiAgICAgIHRoaXMuY2FjaGUuc3lzdGVtICYmIHRoaXMuc3lzdGVtU2VydmljZS5mZXRjaFN5c3RlbURlZmluaXRpb24odGhpcy51c2VyKSxcbiAgICBdLmZpbHRlcihhID0+IGEpO1xuXG4gICAgcmV0dXJuIGFjdGlvbnMubGVuZ3RoID8gZm9ya0pvaW4oYWN0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4gdGhpcy5ub3RpZnkuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdGF0ZS5zZXR0aW5ncy5jYWNoZS5jbGVhci5zdWNjZXNzJykpLFxuICAgICAgKCkgPT4gdGhpcy5ub3RpZnkuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MuY2FjaGUuY2xlYXIuZXJyb3InKSlcbiAgICApICYmIHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVMb2NhbFNldHRpbmdzKCkge1xuICAgIGNvbnN0IGxvY2FsU2V0dGluZ3MgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFN0b3JhZ2UoKTtcbiAgICBjb25zdCBjYWNoZVNldHRpbmdzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jYWNoZVNlcnZpY2UuZ2V0U3RvcmFnZSgpKTtcbiAgICBkZWxldGUgY2FjaGVTZXR0aW5nc1snZW8uZnJhbWV3b3JrLmNhY2hlLnN5c3RlbWRlZmluaXRpb24nXTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNhdmVMb2NhbFNldHRpbmdzKGxvY2FsU2V0dGluZ3MsIGNhY2hlU2V0dGluZ3MpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbG9hZExvY2FsU2V0dGluZ3MoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5sb2FkTG9jYWxTZXR0aW5ncygpLnN1YnNjcmliZShzZXR0aW5ncyA9PiB7XG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFN0b3JhZ2Uoc2V0dGluZ3MubG9jYWxTZXR0aW5ncyk7XG4gICAgICB0aGlzLmNhY2hlU2VydmljZS5yZXBsYWNlU3RvcmFnZShzZXR0aW5ncy5jYWNoZVNldHRpbmdzKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLXNldHRpbmdzXCIgKm5nSWY9XCJ1c2VyXCIgZW9SdGxBd2FyZT5cblxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG5cbiAgICA8ZGl2ICNoZWFkZXJCZyBjbGFzcz1cImJnXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpbGxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhIHVzZXJuYW1lXCI+e3t1c2VyLm5hbWV9fTwvZGl2PlxuICAgICAgPGgxPnt7dXNlci5maXJzdG5hbWV9fSB7e3VzZXIubGFzdG5hbWV9fTwvaDE+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YSBlbWFpbFwiPnt7dXNlci5lbWFpbH19PC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZW5jZVwiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLmluYm94XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgZGFyayBwcmVzZW50XCIgaWQ9XCJwcmVzZW5jZVwiIChjbGljayk9XCJzZXRQcmVzZW5jZSh0cnVlKVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6IHVzZXIucHJlc2VudH1cIlxuICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLnByZXNlbnQ8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBkYXJrIGFic2VudFwiIChjbGljayk9XCJzZXRQcmVzZW5jZShmYWxzZSlcIiAoa2V5ZG93bi50YWIpPVwidGFiQWN0aW9uKCRldmVudC50YXJnZXQpXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogIXVzZXIucHJlc2VudH1cIlxuICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5wcmVzZW5jZS5hYnNlbnQ8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlcigpXCIgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZSgpXCIgKGtleWRvd24udGFiKT1cIm1vdXNlRW50ZXIoKVwiPlxuXG4gICAgICA8ZW8tdXNlci1hdmF0YXIgI3VzZXJBdmF0YXIgY2xhc3M9XCJ1c2VySW1hZ2VcIiB0YWJpbmRleD1cIi0xXCIgZW9SdGxBd2FyZT1cImZ1bGxcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuanBnLCAucG5nXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCIgI2ZpbGVzIChjaGFuZ2UpPVwic2VsZWN0SW1hZ2UoJGV2ZW50LnRhcmdldClcIiAoY2xpY2spPVwiJGV2ZW50LnRhcmdldC52YWx1ZT1udWxsXCI+XG4gICAgICA8L2VvLXVzZXItYXZhdGFyPlxuICAgICAgPGVvLWRpYWxvZyAgW3N0eWxlQ2xhc3NdPVwiJ3ZpZXcnXCIgW21pbldpZHRoXT1cIiczMDBweCdcIiBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbKHZpc2libGUpXT1cInNob3dQcmV2aWV3RGlhbG9nXCIgW2ZvY3VzT25TaG93XT1cImZhbHNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YVwiPlxuICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cInByZXZpZXdcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWF2YXRhclwiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgICAgICAgICAgIDxlby11c2VyLWF2YXRhciBjbGFzcz1cInByZXZpZXctcm91bmRcIiBbcHJldmlld1VyaV09XCJwcmV2aWV3XCI+PC9lby11c2VyLWF2YXRhcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWJsb2NrXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VQcmV2aWV3RGlhbG9nKClcIiBjbGFzcz1cImJ1dHRvbiBkYW5nZXJcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kZWxldGUuZGlhbG9nLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsIChjbGljayk9XCJ1cGxvYWROZXdVc2VySW1hZ2UoKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kaWFsb2cuc2F2ZTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZW8tZGlhbG9nPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiICNwcm9maWxlSW1hZ2VPdmVybGF5IHRhYmluZGV4PVwiMFwiIGVvUnRsQXdhcmU9XCJmdWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBkYXRlTWVzc2FnZVwiICpuZ0lmPVwiaG92ZXJTZWxlY3RvclwiPlxuICAgICAgICAgIDxlby1pY29uIHRhYmluZGV4PVwiMFwiIChrZXlkb3duLmVudGVyKT1cImZpbGVzLmNsaWNrKClcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19lZGl0LnN2ZydcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVzLmNsaWNrKClcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwidHJhc2hJY29uQ2xpY2soKVwiICpuZ0lmPVwic2hvd0RlbGV0ZUljb25UcmFzaFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY190cmFzaC5zdmcnXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIiAoY2xpY2spPVwidHJhc2hJY29uQ2xpY2soKVwiPjwvZW8taWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImJvZHlcIiAoa2V5ZG93bi50YWIpPVwidGFiQWN0aW9uKCRldmVudC50YXJnZXQpXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYm9keS13cmFwXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tZGVwdXRpZXNcIiAqbmdJZj1cImNhcGFiaWxpdGllcy5icG0gJiYgaGFzUHJpdmlsZWdlKCdNQU5BR0VfREVQVVRZX0xJU1QnKVwiPlxuICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRlcHV0aWVzPC9oMz5cblxuICAgICAgICA8IS0tIGRlcHV0aWVzIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgZGVwdXRpZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMubGFiZWw8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8Zm9ybSAjZGVwdXRpZXNGb3JtPVwibmdGb3JtXCIgW25nQ2xhc3NdPVwie2RpcnR5OiBkZXB1dGllc0Zvcm0uZGlydHl9XCI+XG4gICAgICAgICAgICAgIDxlby1vcmdhbml6YXRpb24gbmFtZT1cImRlcHV0aWVzXCIgW2RhdGFNZXRhXT1cImRlcHV0aWVzLmRhdGFNZXRhXCIgW2ZpbHRlck9iamVjdF09XCJ7dHlwZTogJ1VTRVInfVwiXG4gICAgICAgICAgICAgICAgW2V4Y2VwdGlvbnNdPVwiW3VzZXIubmFtZV1cIiBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiIHRhYmluZGV4PVwiMFwiIFsobmdNb2RlbCldPVwiZGVwdXRpZXMuZGF0YVwiPjwvZW8tb3JnYW5pemF0aW9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwiZGVwdXRpZXNGb3JtLnZhbGlkICYmIGRlcHV0aWVzRm9ybS5kaXJ0eVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwicmVzZXREZXB1dGllcygpXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRlcHV0aWVzLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVEZXB1dGllcygpXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRlcHV0aWVzLnNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gc3Vic3RpdHV0ZSBvZiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5IHN1YnN0aXR1dGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMuc3Vic2l0dXRlb2YubGFiZWw8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgc3ViIG9mIHVzZXIuc3Vic3RpdHV0ZXNPZlwiIFtuZ0NsYXNzXT1cIntwcmVzZW50OiBzdWIucHJlc2VudH1cIj5cbiAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJjaGlwIHN1YnN0aXR1dGUgc3Vic3RpdHV0ZS0tcHJlc2VudFwiICpuZ0lmPVwic3ViLnByZXNlbnRcIlxuICAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2RvbmUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJjaGlwIHN1YnN0aXR1dGUgc3Vic3RpdHV0ZS0tYXdheVwiICpuZ0lmPVwiIXN1Yi5wcmVzZW50XCJcbiAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jbGVhci5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57e3N1Yi50aXRsZX19ICh7e3N1Yi5uYW1lfX0pPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHBhc3N3b3JkIC0tPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tcGFzc3dvcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnBhc3N3b3JkLnJlc2V0PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPGVvLXNpbXBsZS1hY2NvcmRpb24gI3NpbXBsZUFjYyBbaGVhZGVyXT1cIignZW8ucGFzc3dvcmQucmVzZXQnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtzdHlsZXNdPVwiJ3NldHRpbmdfX2NoYW5nZS1wYXNzd29yZCdcIiBbaGVhZGVyQ2xhc3NdPVwiJ3NldHRpbmdfX2NoYW5nZS1wYXNzd29yZC1oZWFkZXInXCI+XG5cbiAgICAgICAgICAgICAgPGVvLWNoYW5nZS1wYXNzd29yZC1mb3JtIChvbkZvcm1TdW1iaXQpPVwic2ltcGxlQWNjLnNlbGVjdGVkID0gZmFsc2VcIj48L2VvLWNoYW5nZS1wYXNzd29yZC1mb3JtPlxuICAgICAgICAgICAgPC9lby1zaW1wbGUtYWNjb3JkaW9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPCEtLSBsYW5ndWFnZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tbGFuZ1wiPlxuICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxhbmd1YWdlPC9oMz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5IGxhbmctYXBwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxhbmd1YWdlLmNsaWVudDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGVcIiAoY2xpY2spPVwiY2hhbmdlQ2xpZW50TG9jYWxlKGxvY2FsZS5pc28pXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogdHJhbnNsYXRlLmN1cnJlbnRMYW5nID09PSBsb2NhbGUuaXNvfVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsb2NhbGUgb2YgY2xpZW50TG9jYWxlc1wiPnt7bG9jYWxlLmxhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgbGFuZy1kZWZcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2Uuc2NoZW1hPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZVwiIChjbGljayk9XCJjaGFuZ2VTY2hlbWFMb2NhbGUobG9jYWxlLmNvZGUpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogYWN0aXZlU2NoZW1hID09PSBsb2NhbGUuY29kZX1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbG9jYWxlIG9mIHNjaGVtYUxvY2FsZXNcIj57e2xvY2FsZS5kaXNwbGF5bmFtZX19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gcGVybWlzc2lvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLXBlcm1cIj5cbiAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5wZXJtaXNzaW9uPC9oMz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5IHBlcm0tcm9sZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3Mucm9sZXM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzIHJvbGVzXCI+XG4gICAgICAgICAgICA8ZW8tc2ltcGxlLWFjY29yZGlvbiBbaGVhZGVyXT1cIignZW8uc3RhdGUuc2V0dGluZ3Mucm9sZXMnIHwgdHJhbnNsYXRlKVwiPlxuICAgICAgICAgICAgICA8ZW8tcGVybWlzc2lvbnMgW3JvbGVzXT1cInVzZXIucm9sZXNcIj48L2VvLXBlcm1pc3Npb25zPlxuICAgICAgICAgICAgPC9lby1zaW1wbGUtYWNjb3JkaW9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIGFnZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1vdGhlcnNcIj5cbiAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5vdGhlcnM8L2gzPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0FnZW50Q29uZmlnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuYWdlbnQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZS1hZ2VudFwiPlxuICAgICAgICAgICAgICAgIDxlby1jaGVja2JveCBbZm9ybUNvbnRyb2xdPVwidXNlQWdlbnRDb250cm9sXCIgW3JlYWRvbmx5XT1cInVzZUFnZW50Q29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInVzZUFnZW50Q29udHJvbFwiPjwvZW8tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2UtYWdlbnQtbGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuYWdlbnQudXNlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImh0dHBzOi8vaGVscC5vcHRpbWFsLXN5c3RlbXMuY29tL3l1dXZpc1JBRC92NjAvdXNlci9jbGllbnQvZGUvY2xpZW50L2ludGVncmF0aW9uL2Nsbl90c2tfYWdlbnRfZ2xvYmFsLmh0bT9IaWdobGlnaHQ9YWdlbnRcIj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImluZm8taWNvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2luZm8uc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgPC9hPiAtLT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5IGxvY2stc2V0dGluZ3NcIiBbbmdDbGFzc109XCJ7J2xvY2stc2V0dGluZ3MtLXNob3cnOiAoYWdlbnRTdGF0dXMgfCBhc3luYyl9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jazwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGJ1dHRvbi1lbmFibGVkXCIgKGNsaWNrKT1cImNoYW5nZUxvY2tTZXR0aW5ncyhMb2NrU2V0dGluZ3MuYWx3YXlzKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogYWdlbnRMb2NrU2V0dGluZ3MgPT09IExvY2tTZXR0aW5ncy5hbHdheXN9XCIgW2Rpc2FibGVkXT1cImRlZmF1bHRMb2NrU2V0dGluZ1wiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2suZW5hYmxlPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgYnV0dG9uLWRpc2FibGVkXCIgKGNsaWNrKT1cImNoYW5nZUxvY2tTZXR0aW5ncyhMb2NrU2V0dGluZ3MubmV2ZXIpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBhZ2VudExvY2tTZXR0aW5ncyA9PT0gTG9ja1NldHRpbmdzLm5ldmVyfVwiIFtkaXNhYmxlZF09XCJkZWZhdWx0TG9ja1NldHRpbmdcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrLmRpc2FibGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBidXR0b24tYXNrXCIgKGNsaWNrKT1cImNoYW5nZUxvY2tTZXR0aW5ncyhMb2NrU2V0dGluZ3MuYXNrKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogYWdlbnRMb2NrU2V0dGluZ3MgPT09IExvY2tTZXR0aW5ncy5hc2t9XCIgW2Rpc2FibGVkXT1cImRlZmF1bHRMb2NrU2V0dGluZ1wiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2suYXNrPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5jYWNoZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRyYW5zbGF0ZSAoY2xpY2spPVwiY2xlYXJDYWNoZSgpXCI+ZW8uc3RhdGUuc2V0dGluZ3MuY2FjaGUuY2xlYXI8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhY2hlXCI+XG4gICAgICAgICAgICAgICAgPGVvLWZvcm0taW5wdXQgY2xhc3M9XCJjaGVja2JveFwiIFtza2lwVG9nZ2xlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidlby5zdGF0ZS5zZXR0aW5ncy5jb25maWcuY2FjaGUuc3lzdGVtJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgPGVvLWNoZWNrYm94IFsobmdNb2RlbCldPVwiY2FjaGUuc3lzdGVtXCIgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCI+PC9lby1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L2VvLWZvcm0taW5wdXQ+XG4gICAgICAgICAgICAgICAgPGVvLWZvcm0taW5wdXQgY2xhc3M9XCJjaGVja2JveFwiIFtza2lwVG9nZ2xlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidlby5zdGF0ZS5zZXR0aW5ncy5jb25maWcuY2FjaGUuaGlzdG9yeScgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxlby1jaGVja2JveCBbKG5nTW9kZWwpXT1cImNhY2hlLmhpc3RvcnlcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIj48L2VvLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8ZW8tZm9ybS1pbnB1dCBjbGFzcz1cImNoZWNrYm94XCIgW3NraXBUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmNvbmZpZy5jYWNoZS5sYXlvdXQnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8ZW8tY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjYWNoZS5sYXlvdXRcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIj48L2VvLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHJhbnNsYXRlIChjbGljayk9XCJzYXZlTG9jYWxTZXR0aW5ncygpXCI+ZW8uc3RhdGUuc2V0dGluZ3MubG9jYWxTZXR0aW5ncy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gdHJhbnNsYXRlIChjbGljayk9XCJsb2FkTG9jYWxTZXR0aW5ncygpXCI+ZW8uc3RhdGUuc2V0dGluZ3MubG9jYWxTZXR0aW5ncy5sb2FkPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dEZWxldGVEaWFsb2dcIlxuICAgIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZGVsZXRlX19kaWFsb2cnXCI+XG4gICAgPGRpdj57eydlby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGV9fTwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGltYWdlLWRlbGV0ZS0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIiA+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cuY2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjZGtGb2N1c0luaXRpYWwgI2NvbmZpcm1EZWxldGVCdG4gKGNsaWNrKT1cImRlbGV0ZVVzZXJJbWFnZSgpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cub2s8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9lby1kaWFsb2c+XG5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dFcnJvckRpYWxvZ1wiXG4gICAgW2ZvY3VzT25TaG93XT1cImZhbHNlXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidkZWxldGVfX2RpYWxvZydcIj5cblxuICAgIDxkaXY+XG4gICAgICA8cD57e2ZpbGVOYW1lfX08L3A+XG4gICAgICA8cCAqbmdJZj1cInZpZXdNb2RlID09PSdzaXplJ1wiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cuc2l6ZUVycm9yPC9wPlxuICAgICAgPHAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0naW1hZ2UnXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy5maWxlRXJyb3IgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGltYWdlLWRlbGV0ZS0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RXJyb3JEaWFsb2cgPSBmYWxzZVwiXG4gICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cuY2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjZGtGb2N1c0luaXRpYWwgKGNsaWNrKT1cImZpbGVzLmNsaWNrKCk7IHNob3dFcnJvckRpYWxvZyA9IGZhbHNlXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cuYmFjazwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2VvLWRpYWxvZz5cbjwvZGl2PlxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUF5QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLE1BQU0sRUFBeUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBTUwsVUFBVSxFQVFWLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFlLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRTFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBR3pGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9qRCxJQUFNLGlCQUFpQixHQUF2QixNQUFNLGlCQUFpQjtJQThDNUIsWUFBb0IsUUFBbUIsRUFDOUIsV0FBd0IsRUFDeEIsTUFBYyxFQUNiLE1BQTRCLEVBQzVCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLG1CQUF3QyxFQUN4QyxZQUE4QixFQUM5QixZQUEwQixFQUMxQixFQUFzQixFQUN0QixZQUE2QixFQUM3QixtQkFBd0MsRUFDeEMsY0FBbUMsRUFDcEMs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LGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0UsT0FBTyxhQUFhLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEdBeFNVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHdqQkE0Q2pCLE1BQU0sZ0RDN0VuQix3M1lBb1BBO0FEbk5hLGlCQUFpQjtJQU43QixZQUFZLEVBQUU7R0FNRixpQkFBaUIsQ0F5UzdCO1NBelNZLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGFBQWE7NmpCQTJDSCxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0ssUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNJLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDUSxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNLLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ2IsWUFBWTtzQkFBOUIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdGb3JtLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQXBwQ2FjaGVTZXJ2aWNlLFxuICBBdXRoU2VydmljZSxcbiAgQ2FwYWJpbGl0aWVzLFxuICBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICBDb25maWcsXG4gIEVuYWlvRXZlbnQsXG4gIEVvVXNlcixcbiAgRXZlbnRTZXJ2aWNlLFxuICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXNlclNlcnZpY2UsXG4gIFV0aWxzXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge09ic2VydmFibGUsIGZvcmtKb2luLCBmaXJzdFZhbHVlRnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2UsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FnZW50U2VydmljZSwgYWdlbnRDb25maWdLZXlzfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvdGl0bGUvcGFnZS10aXRsZS5zZXJ2aWNlJztcbmltcG9ydCB7UmVzdWx0TGlzdENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL3Jlc3VsdC1saXN0L3Jlc3VsdC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1VzZXJBdmF0YXJDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91aS91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHtMaXN0U2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvc2VydmljZXMvbGlzdC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7TG9ja1NldHRpbmdzfSBmcm9tICcuL2FnZW50LWxvY2stc2V0dGluZ3MuZW51bSc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2V0dGluZ3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHVzZXI6IEVvVXNlcjtcbiAgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXRpZXM7XG4gIGRlcHV0aWVzOiB7XG4gICAgZGF0YTogc3RyaW5nW10sXG4gICAgZGF0YU1ldGE6IGFueVtdXG4gIH07XG4gIHNob3dDaGFuZ2VQYXNzd29yZEZvcm06IGJvb2xlYW47XG4gIGNsaWVudExvY2FsZXM6IGFueTtcbiAgc2NoZW1hTG9jYWxlczogYW55W107XG4gIHB1YmxpYyBMb2NrU2V0dGluZ3MgPSBMb2NrU2V0dGluZ3M7XG4gIGFnZW50TG9ja1NldHRpbmdzOiBMb2NrU2V0dGluZ3M7XG4gIHVzZUFnZW50Q29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBzaG93QWdlbnRDb25maWc6IGJvb2xlYW4gPSB0cnVlO1xuICBkZWZhdWx0TG9ja1NldHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB1c2VyJCA9IHRoaXMudXNlclNlcnZpY2UudXNlciQ7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICB1c2VySWQgPSAnJztcbiAgc2hvd0RlbGV0ZUljb25UcmFzaDogYm9vbGVhbiA9IHRydWU7XG4gIHVzZXJJbWFnZVVyaSA9ICcnO1xuICBwcmV2aWV3OiBzdHJpbmc7XG4gIGZpbGU6IGFueTtcbiAgaG92ZXJTZWxlY3RvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93UHJldmlld0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93RGVsZXRlRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dFcnJvckRpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBNQVhfRklMRV9TSVpFID0gNTI0Mjg4O1xuICB2aWV3TW9kZTogc3RyaW5nID0gJyc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHNob3dDaGFuZ2VQYXNzd29yZCA9IHRydWU7XG5cbiAgY2FjaGUgPSB7XG4gICAgc3lzdGVtOiB0cnVlLFxuICAgIGhpc3Rvcnk6IHRydWUsXG4gICAgbGF5b3V0OiB0cnVlXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnZmlsZXMnKSBmaWxlczogRWxlbWVudFJlZiA9IHt9IGFzIEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2hlYWRlckJnJykgaGVhZGVyQmc7XG4gIEBWaWV3Q2hpbGQoJ3VzZXJBdmF0YXInKSB1c2VyQXZhdGFyOiBVc2VyQXZhdGFyQ29tcG9uZW50XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EZWxldGVCdG4nKSBjb25maXJtRGVsZXRlQnRuOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwcm9maWxlSW1hZ2VPdmVybGF5JykgcHJvZmlsZUltYWdlT3ZlcmxheTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChOZ0Zvcm0pIGRlcHV0aWVzRm9ybTogTmdGb3JtO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb25maWc6IENvbmZpZyxcbiAgICBwcml2YXRlIG5vdGlmeTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBBcHBDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsaXN0U2V0dGluZ3NTZXJ2aWNlOiBMaXN0U2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1SZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKSB7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0QmFzZVRpdGxlKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJhci5idXR0b24uc2V0dGluZ3MudGl0bGUnKSk7XG4gICAgdGhpcy5jbGllbnRMb2NhbGVzID0gY29uZmlnLmdldENsaWVudExvY2FsZXMoKTtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB0aGlzLmdldFNjaGVtYUxvY2FsZXMoKTtcbiAgICB0aGlzLmdldFVzZXJEYXRhKCk7XG4gICAgdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IHVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkudXNlclNldHRpbmdzLmFsd2F5c2xvY2s7XG4gICAgdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkLnBpcGUodGFrZSgxKSwgd2l0aExhdGVzdEZyb20odGhpcy5hZ2VudFNlcnZpY2UuYWdlbnRDb25maWckKSkuc3Vic2NyaWJlKChbaXNDb25uZWN0ZWQsIGNvbmZpZ10pID0+IHtcbiAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sID0gdGhpcy5mYi5jb250cm9sKGlzQ29ubmVjdGVkKTtcbiAgICAgIGlmIChjb25maWcuaGFzT3duUHJvcGVydHkoYWdlbnRDb25maWdLZXlzLkFVVE9DT05ORUNUKSkge1xuICAgICAgICB0aGlzLnNob3dBZ2VudENvbmZpZyA9IGNvbmZpZ1thZ2VudENvbmZpZ0tleXMuQVVUT0NPTk5FQ1RdXG4gICAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sLmRpc2FibGUoKVxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShhZ2VudENvbmZpZ0tleXMuTE9DS1NFVFRJTkdTKSAmJiBPYmplY3QudmFsdWVzKExvY2tTZXR0aW5ncykuaW5jbHVkZXMoY29uZmlnW2FnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1NdKSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRMb2NrU2V0dGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWdlbnRMb2NrU2V0dGluZ3MgPSBjb25maWdbYWdlbnRDb25maWdLZXlzLkxPQ0tTRVRUSU5HU107XG4gICAgICB9XG4gICAgICB0aGlzLnVzZUFnZW50Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkID0gdGhpcy51c2VBZ2VudENvbnRyb2wudmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMuc2hvd0NoYW5nZVBhc3N3b3JkID0gIXRoaXMuYXV0aFNlcnZpY2UuZ2F0ZXdheUluZm8uZXh0ZXJuYWw7XG4gIH1cblxuXG4gIGdldCBpc1NTTygpIHtcbiAgICByZXR1cm4gdGhpcy5jYXBhYmlsaXRpZXMgJiYgdGhpcy5jYXBhYmlsaXRpZXMuc3NvO1xuICB9XG5cbiAgZ2V0IGFnZW50U3RhdHVzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCQ7XG4gIH1cblxuICBnZXQgYWN0aXZlU2NoZW1hKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuZ2V0U2NoZW1hTG9jYWxlKCk7XG4gIH1cblxuICBoYXNQcml2aWxlZ2UocHJpdmlsZWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5oYXNQcml2aWxlZ2UocHJpdmlsZWdlKTtcbiAgfVxuXG4gIGNoYW5nZUxvY2tTZXR0aW5ncyhsb2NrU2V0dGluZ3M6IExvY2tTZXR0aW5ncykge1xuICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlTG9ja1NldHRpbmcobG9ja1NldHRpbmdzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IGxvY2tTZXR0aW5ncyk7XG4gIH1cblxuICBnZXRTY2hlbWFMb2NhbGVzKCkge1xuICAgIHRoaXMuc3lzdGVtU2VydmljZS5zeXN0ZW0kLnN1YnNjcmliZSgoc3lzdGVtRGVmaW5pdGlvbikgPT4ge1xuICAgICAgdGhpcy5zY2hlbWFMb2NhbGVzID0gc3lzdGVtRGVmaW5pdGlvbi5sb2NhbGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnZGlzcGxheW5hbWUnKSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlRGVwdXRpZXMoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXREZXB1dGllcyh0aGlzLmRlcHV0aWVzLmRhdGEpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmRlcHV0aWVzRm9ybS5yZXNldEZvcm0oe2RlcHV0aWVzOiB0aGlzLmRlcHV0aWVzLmRhdGF9KSk7XG4gIH1cblxuICByZXNldERlcHV0aWVzKCkge1xuICAgIHRoaXMuZGVwdXRpZXNGb3JtLnJlc2V0Rm9ybSh7ZGVwdXRpZXM6IHRoaXMudXNlci5kZXB1dGllcy5tYXAoZCA9PiBkLm5hbWUpfSlcbiAgfVxuXG4gIGdldFVzZXJEYXRhKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgICAvLyB0aGlzLnVzZXIgPSBPYmplY3QuYXNzaWduKHVzZXIsIHtjYXBhYmlsaXRpZXM6IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKX0pO1xuICAgICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAgIC8vIGRlcHV0aWVzXG4gICAgICB0aGlzLmRlcHV0aWVzID0ge1xuICAgICAgICBkYXRhOiB0aGlzLnVzZXIuZGVwdXRpZXMubWFwKGQgPT4gZC5uYW1lKSxcbiAgICAgICAgZGF0YU1ldGE6IHRoaXMudXNlci5kZXB1dGllc1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDaGFuZ2VQYXNzd29yZEZvcm0gPSBmYWxzZTtcbiAgfVxuXG4gIGNoYW5nZUNsaWVudExvY2FsZShpc286IHN0cmluZykge1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRTdXBwb3J0ZWRDbGllbnRMb2NhbGVzKCkuaW5jbHVkZXMoaXNvKSkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VDbGllbnRMb2NhbGUoaXNvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnkuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2UuZXJyb3InKSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlU2NoZW1hTG9jYWxlKGlzbzogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudXNlci5zY2hlbWFMb2NhbGUgIT09IGlzbykge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VTY2hlbWFMb2NhbGUoaXNvKS5zdWJzY3JpYmUoXG4gICAgICAgIF8gPT4gVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51c2VyLnNlcnZpY2Uuc2NoZW1hLmxvY2FsZS5lcnJvci50aXRsZScpLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVzZXIuc2VydmljZS5zY2hlbWEubG9jYWxlLmVycm9yLmRlc2NyaXB0aW9uJykpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmVsZW1SZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjcHJlc2VuY2UnKS5mb2N1cygpO1xuICAgIHRoaXMudXNlciQuc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgdGhpcy51c2VySWQgPSB1c2VyLmlkO1xuICAgICAgdGhpcy51c2VySW1hZ2VVcmkgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaSh0aGlzLnVzZXJJZCk7XG4gICAgICB0aGlzLnJlZnJlc2hVc2VySW1hZ2VIZWFkZXJCYWNrZ3JvdW5kKHRoaXMudXNlckltYWdlVXJpKTtcbiAgICAgIHRoaXMuc2hvd0RlbGV0ZUljb25UcmFzaCA9ICEhdXNlci5pbWFnZVVyaTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFByZXNlbmNlKGI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldFByZXNlbmNlKGIpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuZXJyb3IuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgKTtcbiAgfVxuICBjbG9zZVByZXZpZXdEaWFsb2coKSB7XG4gICAgdGhpcy5zaG93UHJldmlld0RpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMucHJvZmlsZUltYWdlT3ZlcmxheS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBkZWxldGVVc2VySW1hZ2UoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnNldFVzZXJJbWFnZShudWxsKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNZU1RFTV9TVEFUVVNfSU1BR0VfQ0hBTkdFKTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcignJywgZXJyLmVycm9yLmNhdXNlLm1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJylcbiAgICAgICAgfSxcblxuICAgICAgfSk7XG5cbiAgfVxuXG4gIHNlbGVjdEltYWdlKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5maWxlID0gZXZlbnQuZmlsZXNbMF07XG4gICAgaWYgKHRoaXMuZmlsZSkge1xuICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuZmlsZS5uYW1lO1xuICAgICAgc3dpdGNoIChmYWxzZSkge1xuXG4gICAgICAgIGNhc2UgKHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCdpbWFnZS8nKSAmJiB0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygnanBlZycpIHx8IHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCdwbmcnKSk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9ICdpbWFnZSc7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgKHRoaXMuZmlsZS5zaXplIDw9IHRoaXMuTUFYX0ZJTEVfU0laRSk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9ICdzaXplJztcbiAgICAgICAgICB0aGlzLnNob3dFcnJvckRpYWxvZyA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcblxuICAgICAgICAgIHRoaXMucHJldmlldyA9ICcnO1xuICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgICAgIHRoaXMuc2hvd1ByZXZpZXdEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGxvYWROZXdVc2VySW1hZ2UoKSB7XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAuc2V0VXNlckltYWdlKHRoaXMuZmlsZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucHJvZmlsZUltYWdlT3ZlcmxheS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNZU1RFTV9TVEFUVVNfSU1BR0VfQ0hBTkdFKTtcbiAgICAgICAgICB0aGlzLmNsb3NlUHJldmlld0RpYWxvZygpO1xuICAgICAgICAgIHRoaXMuc2hvd0RlbGV0ZUljb25UcmFzaCA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoJycsIGVyci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLnRpdGxlJyksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci5kZXNjcmlwdGlvbicpXG4gICAgICAgIH0sXG4gIH0pXG59XG5cbiAgdGFiQWN0aW9uKGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgaW5wdXQuYmx1cigpO1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IGZhbHNlO1xuICB9XG4gIG1vdXNlRW50ZXIoKSB7XG4gICAgdGhpcy5ob3ZlclNlbGVjdG9yID0gdHJ1ZTtcbiAgfVxuICBtb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IGZhbHNlO1xuICB9XG4gIHRyYXNoSWNvbkNsaWNrKCkge1xuICAgIHRoaXMuc2hvd0RlbGV0ZURpYWxvZyA9IHRydWU7XG4gIH1cblxuICByZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZChpbWFnZVVyaTogc3RyaW5nKSB7XG4gICAgaWYgKGltYWdlVXJpKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhlYWRlckJnLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWltYWdlJywgYHVybCgke2ltYWdlVXJpICsgJyZ0PScgKyB0aW1lc3RhbXB9KWApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ2FjaGUoKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICAgIHRoaXMuY2FjaGUuaGlzdG9yeSAmJiB0aGlzLmxpc3RTZXR0aW5nc1NlcnZpY2UuY2xlYXJTZXR0aW5ncygpLFxuICAgICAgdGhpcy5jYWNoZS5oaXN0b3J5ICYmIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKChrZXk6IHN0cmluZykgPT4gIWtleS5tYXRjaCgvXmVvLisobGF5b3V0KS8pICYmICFrZXkubWF0Y2goL15lby5mcmFtZXdvcmsuY2FjaGUvKSksXG4gICAgICB0aGlzLmNhY2hlLmxheW91dCAmJiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyKChrZXk6IHN0cmluZykgPT4ga2V5ID09PSBSZXN1bHRMaXN0Q29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTiB8fCAhIWtleS5tYXRjaCgvc3RhdGUvKSksXG4gICAgICB0aGlzLmNhY2hlLmxheW91dCAmJiB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigoa2V5OiBzdHJpbmcpID0+ICEha2V5Lm1hdGNoKC9eZW8uKyhsYXlvdXQpLykpLFxuICAgICAgdGhpcy5jYWNoZS5zeXN0ZW0gJiYgdGhpcy5zeXN0ZW1TZXJ2aWNlLmZldGNoU3lzdGVtRGVmaW5pdGlvbih0aGlzLnVzZXIpLFxuICAgIF0uZmlsdGVyKGEgPT4gYSk7XG5cbiAgICByZXR1cm4gYWN0aW9ucy5sZW5ndGggPyBmb3JrSm9pbihhY3Rpb25zKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB0aGlzLm5vdGlmeS5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLmNhY2hlLmNsZWFyLnN1Y2Nlc3MnKSksXG4gICAgICAoKSA9PiB0aGlzLm5vdGlmeS5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdGF0ZS5zZXR0aW5ncy5jYWNoZS5jbGVhci5lcnJvcicpKVxuICAgICkgJiYgdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUxvY2FsU2V0dGluZ3MoKSB7XG4gICAgY29uc3QgbG9jYWxTZXR0aW5ncyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U3RvcmFnZSgpO1xuICAgIGNvbnN0IGNhY2hlU2V0dGluZ3MgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhY2hlU2VydmljZS5nZXRTdG9yYWdlKCkpO1xuICAgIGRlbGV0ZSBjYWNoZVNldHRpbmdzWydlby5mcmFtZXdvcmsuY2FjaGUuc3lzdGVtZGVmaW5pdGlvbiddO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2F2ZUxvY2FsU2V0dGluZ3MobG9jYWxTZXR0aW5ncywgY2FjaGVTZXR0aW5ncykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBsb2FkTG9jYWxTZXR0aW5ncygpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmxvYWRMb2NhbFNldHRpbmdzKCkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U3RvcmFnZShzZXR0aW5ncy5sb2NhbFNldHRpbmdzKTtcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlcGxhY2VTdG9yYWdlKHNldHRpbmdzLmNhY2hlU2V0dGluZ3MpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tc2V0dGluZ3NcIiAqbmdJZj1cInVzZXJcIiBlb1J0bEF3YXJlPlxuXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cblxuICAgIDxkaXYgI2hlYWRlckJnIGNsYXNzPVwiYmdcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEgdXNlcm5hbWVcIj57e3VzZXIubmFtZX19PC9kaXY+XG4gICAgICA8aDE+e3t1c2VyLmZpcnN0bmFtZX19IHt7dXNlci5sYXN0bmFtZX19PC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhIGVtYWlsXCI+e3t1c2VyLmVtYWlsfX08L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInByZXNlbmNlXCIgKm5nSWY9XCJjYXBhYmlsaXRpZXMuaW5ib3hcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBkYXJrIHByZXNlbnRcIiBpZD1cInByZXNlbmNlXCIgKGNsaWNrKT1cInNldFByZXNlbmNlKHRydWUpXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogdXNlci5wcmVzZW50fVwiXG4gICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UucHJlc2VudDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGRhcmsgYWJzZW50XCIgKGNsaWNrKT1cInNldFByZXNlbmNlKGZhbHNlKVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAhdXNlci5wcmVzZW50fVwiXG4gICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmFic2VudDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKClcIiAoa2V5ZG93bi50YWIpPVwibW91c2VFbnRlcigpXCI+XG5cbiAgICAgIDxlby11c2VyLWF2YXRhciAjdXNlckF2YXRhciBjbGFzcz1cInVzZXJJbWFnZVwiIHRhYmluZGV4PVwiLTFcIiBlb1J0bEF3YXJlPVwiZnVsbFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi5qcGcsIC5wbmdcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIiAjZmlsZXMgKGNoYW5nZSk9XCJzZWxlY3RJbWFnZSgkZXZlbnQudGFyZ2V0KVwiIChjbGljayk9XCIkZXZlbnQudGFyZ2V0LnZhbHVlPW51bGxcIj5cbiAgICAgIDwvZW8tdXNlci1hdmF0YXI+XG4gICAgICA8ZW8tZGlhbG9nICBbc3R5bGVDbGFzc109XCIndmlldydcIiBbbWluV2lkdGhdPVwiJzMwMHB4J1wiIFt0aXRsZV09XCInZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFsodmlzaWJsZSldPVwic2hvd1ByZXZpZXdEaWFsb2dcIiBbZm9jdXNPblNob3ddPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhXCI+XG4gICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwicHJldmlld1wiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItYXZhdGFyXCIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgPGVvLXVzZXItYXZhdGFyIGNsYXNzPVwicHJldmlldy1yb3VuZFwiIFtwcmV2aWV3VXJpXT1cInByZXZpZXdcIj48L2VvLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tYmxvY2tcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVByZXZpZXdEaWFsb2coKVwiIGNsYXNzPVwiYnV0dG9uIGRhbmdlclwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cuY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjZGtGb2N1c0luaXRpYWwgKGNsaWNrKT1cInVwbG9hZE5ld1VzZXJJbWFnZSgpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRpYWxvZy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9lby1kaWFsb2c+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgI3Byb2ZpbGVJbWFnZU92ZXJsYXkgdGFiaW5kZXg9XCIwXCIgZW9SdGxBd2FyZT1cImZ1bGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGRhdGVNZXNzYWdlXCIgKm5nSWY9XCJob3ZlclNlbGVjdG9yXCI+XG4gICAgICAgICAgPGVvLWljb24gdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwiZmlsZXMuY2xpY2soKVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2VkaXQuc3ZnJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZmlsZXMuY2xpY2soKVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJ0cmFzaEljb25DbGljaygpXCIgKm5nSWY9XCJzaG93RGVsZXRlSWNvblRyYXNoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIChjbGljayk9XCJ0cmFzaEljb25DbGljaygpXCI+PC9lby1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYm9keVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJib2R5LXdyYXBcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1kZXB1dGllc1wiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLmJwbSAmJiBoYXNQcml2aWxlZ2UoJ01BTkFHRV9ERVBVVFlfTElTVCcpXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXM8L2gzPlxuXG4gICAgICAgIDwhLS0gZGVwdXRpZXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBkZXB1dGllc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxmb3JtICNkZXB1dGllc0Zvcm09XCJuZ0Zvcm1cIiBbbmdDbGFzc109XCJ7ZGlydHk6IGRlcHV0aWVzRm9ybS5kaXJ0eX1cIj5cbiAgICAgICAgICAgICAgPGVvLW9yZ2FuaXphdGlvbiBuYW1lPVwiZGVwdXRpZXNcIiBbZGF0YU1ldGFdPVwiZGVwdXRpZXMuZGF0YU1ldGFcIiBbZmlsdGVyT2JqZWN0XT1cInt0eXBlOiAnVVNFUid9XCJcbiAgICAgICAgICAgICAgICBbZXhjZXB0aW9uc109XCJbdXNlci5uYW1lXVwiIFttdWx0aXNlbGVjdF09XCJ0cnVlXCIgdGFiaW5kZXg9XCIwXCIgWyhuZ01vZGVsKV09XCJkZXB1dGllcy5kYXRhXCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgKm5nSWY9XCJkZXB1dGllc0Zvcm0udmFsaWQgJiYgZGVwdXRpZXNGb3JtLmRpcnR5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeVwiIChjbGljayk9XCJyZXNldERlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMuY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZURlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMuc2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBzdWJzdGl0dXRlIG9mIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgc3Vic3RpdHV0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5zdWJzaXR1dGVvZi5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBzdWIgb2YgdXNlci5zdWJzdGl0dXRlc09mXCIgW25nQ2xhc3NdPVwie3ByZXNlbnQ6IHN1Yi5wcmVzZW50fVwiPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImNoaXAgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlLS1wcmVzZW50XCIgKm5nSWY9XCJzdWIucHJlc2VudFwiXG4gICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZG9uZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImNoaXAgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlLS1hd2F5XCIgKm5nSWY9XCIhc3ViLnByZXNlbnRcIlxuICAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7c3ViLnRpdGxlfX0gKHt7c3ViLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gcGFzc3dvcmQgLS0+XG4gICAgICA8c2VjdGlvbiAqbmdJZj1cInNob3dDaGFuZ2VQYXNzd29yZFwiIGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLXBhc3N3b3JkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5wYXNzd29yZC5yZXNldDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uICNzaW1wbGVBY2MgW2hlYWRlcl09XCIoJ2VvLnBhc3N3b3JkLnJlc2V0JyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3R5bGVzXT1cIidzZXR0aW5nX19jaGFuZ2UtcGFzc3dvcmQnXCIgW2hlYWRlckNsYXNzXT1cIidzZXR0aW5nX19jaGFuZ2UtcGFzc3dvcmQtaGVhZGVyJ1wiPlxuXG4gICAgICAgICAgICAgIDxlby1jaGFuZ2UtcGFzc3dvcmQtZm9ybSAob25Gb3JtU3VtYml0KT1cInNpbXBsZUFjYy5zZWxlY3RlZCA9IGZhbHNlXCI+PC9lby1jaGFuZ2UtcGFzc3dvcmQtZm9ybT5cbiAgICAgICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gbGFuZ3VhZ2UgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLWxhbmdcIj5cbiAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZTwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsYW5nLWFwcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZS5jbGllbnQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlXCIgKGNsaWNrKT1cImNoYW5nZUNsaWVudExvY2FsZShsb2NhbGUuaXNvKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyA9PT0gbG9jYWxlLmlzb31cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbG9jYWxlIG9mIGNsaWVudExvY2FsZXNcIj57e2xvY2FsZS5sYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5IGxhbmctZGVmXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxhbmd1YWdlLnNjaGVtYTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGVcIiAoY2xpY2spPVwiY2hhbmdlU2NoZW1hTG9jYWxlKGxvY2FsZS5jb2RlKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFjdGl2ZVNjaGVtYSA9PT0gbG9jYWxlLmNvZGV9XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvY2FsZSBvZiBzY2hlbWFMb2NhbGVzXCI+e3tsb2NhbGUuZGlzcGxheW5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHBlcm1pc3Npb25zIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1wZXJtXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucGVybWlzc2lvbjwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBwZXJtLXJvbGVzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnJvbGVzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlcyByb2xlc1wiPlxuICAgICAgICAgICAgPGVvLXNpbXBsZS1hY2NvcmRpb24gW2hlYWRlcl09XCIoJ2VvLnN0YXRlLnNldHRpbmdzLnJvbGVzJyB8IHRyYW5zbGF0ZSlcIj5cbiAgICAgICAgICAgICAgPGVvLXBlcm1pc3Npb25zIFtyb2xlc109XCJ1c2VyLnJvbGVzXCI+PC9lby1wZXJtaXNzaW9ucz5cbiAgICAgICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBhZ2VudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tb3RoZXJzXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3Mub3RoZXJzPC9oMz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBZ2VudENvbmZpZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmFnZW50PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2UtYWdlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZW8tY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cInVzZUFnZW50Q29udHJvbFwiIFtyZWFkb25seV09XCJ1c2VBZ2VudENvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VBZ2VudENvbnRyb2xcIj48L2VvLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlLWFnZW50LWxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmFnZW50LnVzZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJodHRwczovL2hlbHAub3B0aW1hbC1zeXN0ZW1zLmNvbS95dXV2aXNSQUQvdjYwL3VzZXIvY2xpZW50L2RlL2NsaWVudC9pbnRlZ3JhdGlvbi9jbG5fdHNrX2FnZW50X2dsb2JhbC5odG0/SGlnaGxpZ2h0PWFnZW50XCI+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJpbmZvLWljb25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19pbmZvLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgIDwvYT4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsb2NrLXNldHRpbmdzXCIgW25nQ2xhc3NdPVwieydsb2NrLXNldHRpbmdzLS1zaG93JzogKGFnZW50U3RhdHVzIHwgYXN5bmMpfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2s8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBidXR0b24tZW5hYmxlZFwiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLmFsd2F5cylcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MuYWx3YXlzfVwiIFtkaXNhYmxlZF09XCJkZWZhdWx0TG9ja1NldHRpbmdcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrLmVuYWJsZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGJ1dHRvbi1kaXNhYmxlZFwiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLm5ldmVyKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogYWdlbnRMb2NrU2V0dGluZ3MgPT09IExvY2tTZXR0aW5ncy5uZXZlcn1cIiBbZGlzYWJsZWRdPVwiZGVmYXVsdExvY2tTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jay5kaXNhYmxlPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgYnV0dG9uLWFza1wiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLmFzaylcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MuYXNrfVwiIFtkaXNhYmxlZF09XCJkZWZhdWx0TG9ja1NldHRpbmdcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrLmFzazwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuY2FjaGU8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cImNsZWFyQ2FjaGUoKVwiPmVvLnN0YXRlLnNldHRpbmdzLmNhY2hlLmNsZWFyPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWNoZVwiPlxuICAgICAgICAgICAgICAgIDxlby1mb3JtLWlucHV0IGNsYXNzPVwiY2hlY2tib3hcIiBbc2tpcFRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZW8uc3RhdGUuc2V0dGluZ3MuY29uZmlnLmNhY2hlLnN5c3RlbScgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxlby1jaGVja2JveCBbKG5nTW9kZWwpXT1cImNhY2hlLnN5c3RlbVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiPjwvZW8tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9lby1mb3JtLWlucHV0PlxuICAgICAgICAgICAgICAgIDxlby1mb3JtLWlucHV0IGNsYXNzPVwiY2hlY2tib3hcIiBbc2tpcFRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZW8uc3RhdGUuc2V0dGluZ3MuY29uZmlnLmNhY2hlLmhpc3RvcnknIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8ZW8tY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjYWNoZS5oaXN0b3J5XCIgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCI+PC9lby1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L2VvLWZvcm0taW5wdXQ+XG4gICAgICAgICAgICAgICAgPGVvLWZvcm0taW5wdXQgY2xhc3M9XCJjaGVja2JveFwiIFtza2lwVG9nZ2xlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidlby5zdGF0ZS5zZXR0aW5ncy5jb25maWcuY2FjaGUubGF5b3V0JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgPGVvLWNoZWNrYm94IFsobmdNb2RlbCldPVwiY2FjaGUubGF5b3V0XCIgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCI+PC9lby1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L2VvLWZvcm0taW5wdXQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jYWxTZXR0aW5nczwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRyYW5zbGF0ZSAoY2xpY2spPVwic2F2ZUxvY2FsU2V0dGluZ3MoKVwiPmVvLnN0YXRlLnNldHRpbmdzLmxvY2FsU2V0dGluZ3Muc2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRyYW5zbGF0ZSAoY2xpY2spPVwibG9hZExvY2FsU2V0dGluZ3MoKVwiPmVvLnN0YXRlLnNldHRpbmdzLmxvY2FsU2V0dGluZ3MubG9hZDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cudGl0bGUnIHwgdHJhbnNsYXRlXCIgWyh2aXNpYmxlKV09XCJzaG93RGVsZXRlRGlhbG9nXCJcbiAgICBbZm9jdXNPblNob3ddPVwiZmFsc2VcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ2RlbGV0ZV9fZGlhbG9nJ1wiPlxuICAgIDxkaXY+e3snZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kZWxldGUuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX08L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBpbWFnZS1kZWxldGUtLWFjdGlvbi1idXR0b25zIGZsZXgtcm93XCIgPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kZWxldGUuZGlhbG9nLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsICNjb25maXJtRGVsZXRlQnRuIChjbGljayk9XCJkZWxldGVVc2VySW1hZ2UoKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kZWxldGUuZGlhbG9nLm9rPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZW8tZGlhbG9nPlxuXG4gIDxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cudGl0bGUnIHwgdHJhbnNsYXRlXCIgWyh2aXNpYmxlKV09XCJzaG93RXJyb3JEaWFsb2dcIlxuICAgIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZGVsZXRlX19kaWFsb2cnXCI+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+e3tmaWxlTmFtZX19PC9wPlxuICAgICAgPHAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0nc2l6ZSdcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLnNpemVFcnJvcjwvcD5cbiAgICAgIDxwICpuZ0lmPVwidmlld01vZGUgPT09J2ltYWdlJ1wiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cuZmlsZUVycm9yIDwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBpbWFnZS1kZWxldGUtLWFjdGlvbi1idXR0b25zIGZsZXgtcm93XCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0Vycm9yRGlhbG9nID0gZmFsc2VcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kZWxldGUuZGlhbG9nLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsIChjbGljayk9XCJmaWxlcy5jbGljaygpOyBzaG93RXJyb3JEaWFsb2cgPSBmYWxzZVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLmJhY2s8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9lby1kaWFsb2c+XG48L2Rpdj5cbiJdfQ==