@netgrif/components 6.2.0-rc.9 → 6.2.1

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 (144) hide show
  1. package/esm2020/lib/admin/ldap-group-role-assignment/ldap-group-role-assignment.component.mjs +5 -5
  2. package/esm2020/lib/admin/role-assignment/role-assignment.component.mjs +3 -3
  3. package/esm2020/lib/data-fields/button-field/button-field.component.mjs +3 -3
  4. package/esm2020/lib/data-fields/data-fields.module.mjs +12 -4
  5. package/esm2020/lib/data-fields/enumeration-field/enumeration-field.component.mjs +3 -3
  6. package/esm2020/lib/data-fields/enumeration-field/enumeration-stepper-field/enumeration-stepper-field.component.mjs +2 -2
  7. package/esm2020/lib/data-fields/file-field-list/file-list-field.component.mjs +2 -2
  8. package/esm2020/lib/data-fields/i18n-field/i18n-field.component.mjs +3 -3
  9. package/esm2020/lib/data-fields/multichoice-field/multichoice-autocomplete-field/multichoice-autocomplete-field.component.mjs +24 -0
  10. package/esm2020/lib/data-fields/multichoice-field/multichoice-field.component.mjs +7 -6
  11. package/esm2020/lib/data-fields/number-field/number-field.component.mjs +3 -12
  12. package/esm2020/lib/data-fields/public-api.mjs +2 -1
  13. package/esm2020/lib/data-fields/text-field/html-textarea-field/html-textarea-field.component.mjs +10 -3
  14. package/esm2020/lib/data-fields/text-field/rich-textarea-field/easymde-wrapper/easymde-wrapper.component.mjs +2 -2
  15. package/esm2020/lib/data-fields/text-field/text-field.component.mjs +3 -3
  16. package/esm2020/lib/data-fields/user-list-field/user-list-field.component.mjs +35 -0
  17. package/esm2020/lib/header/header-modes/edit-mode/edit-mode.component.mjs +3 -3
  18. package/esm2020/lib/header/header-modes/loading-mode/loading-mode.component.mjs +3 -3
  19. package/esm2020/lib/header/header-modes/search-mode/search-mode.component.mjs +3 -3
  20. package/esm2020/lib/header/header-modes/sort-mode/sort-mode.component.mjs +3 -3
  21. package/esm2020/lib/header/header.component.mjs +3 -6
  22. package/esm2020/lib/navigation/breadcrumbs/breadcrumbs.component.mjs +19 -0
  23. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-tab-view/default-tab-view.component.mjs +15 -2
  24. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-tabbed-case-view/default-tabbed-case-view.component.mjs +8 -9
  25. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/model/injected-tabbed-case-view-data-with-navigation-item-task-data.mjs +1 -1
  26. package/esm2020/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.mjs +3 -3
  27. package/esm2020/lib/navigation/navigation.module.mjs +10 -5
  28. package/esm2020/lib/navigation/public-api.mjs +2 -1
  29. package/esm2020/lib/panel/case-panel/case-panel.component.mjs +9 -9
  30. package/esm2020/lib/panel/panel.component.mjs +11 -10
  31. package/esm2020/lib/panel/public-workflow-panel/public-workflow-panel.component.mjs +10 -8
  32. package/esm2020/lib/panel/task-panel/task-panel.component.mjs +11 -8
  33. package/esm2020/lib/panel/task-panel-single/single-task.component.mjs +3 -3
  34. package/esm2020/lib/panel/workflow-panel/workflow-panel.component.mjs +10 -8
  35. package/esm2020/lib/side-menu/side-menu-container/side-menu-container.component.mjs +2 -2
  36. package/esm2020/lib/task-content/field-component-resolver/field-component-resolver.component.mjs +10 -9
  37. package/esm2020/lib/view/case-view/case-view.module.mjs +6 -5
  38. package/esm2020/lib/view/case-view/components/create-case-button/create-case-button.component.mjs +51 -0
  39. package/esm2020/lib/view/public-api.mjs +2 -1
  40. package/fesm2015/netgrif-components.mjs +329 -205
  41. package/fesm2015/netgrif-components.mjs.map +1 -1
  42. package/fesm2020/netgrif-components.mjs +322 -205
  43. package/fesm2020/netgrif-components.mjs.map +1 -1
  44. package/lib/admin/ldap-group-role-assignment/ldap-group-role-assignment.component.d.ts +2 -2
  45. package/lib/data-fields/data-fields.module.d.ts +39 -37
  46. package/lib/data-fields/multichoice-field/multichoice-autocomplete-field/multichoice-autocomplete-field.component.d.ts +7 -0
  47. package/lib/data-fields/number-field/number-field.component.d.ts +0 -1
  48. package/lib/data-fields/public-api.d.ts +1 -0
  49. package/lib/data-fields/text-field/html-textarea-field/html-textarea-field.component.d.ts +3 -2
  50. package/lib/data-fields/user-list-field/user-list-field.component.d.ts +10 -0
  51. package/lib/header/header.component.d.ts +1 -4
  52. package/lib/navigation/breadcrumbs/breadcrumbs.component.d.ts +8 -0
  53. package/lib/navigation/group-navigation-component-resolver/default-components/model/injected-tabbed-case-view-data-with-navigation-item-task-data.d.ts +2 -1
  54. package/lib/navigation/navigation.module.d.ts +16 -15
  55. package/lib/navigation/public-api.d.ts +1 -0
  56. package/lib/panel/case-panel/case-panel.component.d.ts +3 -3
  57. package/lib/panel/panel.component.d.ts +2 -1
  58. package/lib/panel/public-workflow-panel/public-workflow-panel.component.d.ts +3 -3
  59. package/lib/panel/task-panel/task-panel.component.d.ts +4 -3
  60. package/lib/panel/task-panel-single/single-task.component.d.ts +1 -1
  61. package/lib/panel/workflow-panel/workflow-panel.component.d.ts +3 -3
  62. package/lib/view/case-view/case-view.module.d.ts +7 -6
  63. package/lib/view/case-view/components/create-case-button/create-case-button.component.d.ts +18 -0
  64. package/lib/view/public-api.d.ts +1 -0
  65. package/package.json +2 -2
  66. package/schematics/_commons/view-class-info.js +16 -0
  67. package/schematics/_commons/view-class-info.js.map +1 -1
  68. package/schematics/view/create-view/models/nullable-create-view-arguments.d.ts +2 -0
  69. package/schematics/view/create-view/schematic-create-view.js +26 -11
  70. package/schematics/view/create-view/schematic-create-view.js.map +1 -1
  71. package/schematics/view/create-view-prompt/models/create-view-arguments.d.ts +27 -1
  72. package/schematics/view/create-view-prompt/schema-create-view-prompt.json +19 -3
  73. package/schematics/view/create-view-prompt/schematic-create-view-prompt.js +30 -0
  74. package/schematics/view/create-view-prompt/schematic-create-view-prompt.js.map +1 -1
  75. package/schematics/view/create-view-prompt/views/case-view/create-case-view.js +4 -3
  76. package/schematics/view/create-view-prompt/views/case-view/create-case-view.js.map +1 -1
  77. package/schematics/view/create-view-prompt/views/case-view/files/common/__className@dasherize__.component.html.template +9 -8
  78. package/schematics/view/create-view-prompt/views/case-view/files/common/__className@dasherize__.component.spec.ts.template +6 -2
  79. package/schematics/view/create-view-prompt/views/case-view/files/simple/__className@dasherize__.component.scss.template +27 -5
  80. package/schematics/view/create-view-prompt/views/case-view/files/simple/__className@dasherize__.component.ts.template +7 -5
  81. package/schematics/view/create-view-prompt/views/case-view/files/tabbed/__className@dasherize__.component.scss.template +33 -5
  82. package/schematics/view/create-view-prompt/views/case-view/files/tabbed/__className@dasherize__.component.ts.template +6 -3
  83. package/schematics/view/create-view-prompt/views/dashboard-view/create-dashboard-view.js +1 -0
  84. package/schematics/view/create-view-prompt/views/dashboard-view/create-dashboard-view.js.map +1 -1
  85. package/schematics/view/create-view-prompt/views/dashboard-view/files/__className@dasherize__.component.spec.ts.template +10 -3
  86. package/schematics/view/create-view-prompt/views/group-view/files/__className@dasherize__.component.scss.template +4 -4
  87. package/schematics/view/create-view-prompt/views/group-view/files/__className@dasherize__.component.spec.ts.template +5 -2
  88. package/schematics/view/create-view-prompt/views/ldap-role-assignment-view/files/__className@dasherize__.component.html.template +1 -0
  89. package/schematics/view/create-view-prompt/views/ldap-role-assignment-view/files/__className@dasherize__.component.scss.template +25 -0
  90. package/schematics/view/create-view-prompt/views/ldap-role-assignment-view/files/__className@dasherize__.component.spec.ts.template +26 -0
  91. package/schematics/view/create-view-prompt/views/ldap-role-assignment-view/files/__className@dasherize__.component.ts.template +17 -0
  92. package/schematics/view/create-view-prompt/views/ldap-role-assignment-view/ldap-role-assignment-view.d.ts +3 -0
  93. package/schematics/view/create-view-prompt/views/ldap-role-assignment-view/ldap-role-assignment-view.js +36 -0
  94. package/schematics/view/create-view-prompt/views/ldap-role-assignment-view/ldap-role-assignment-view.js.map +1 -0
  95. package/schematics/view/create-view-prompt/views/login/files/__className@dasherize__.component.html.template +1 -1
  96. package/schematics/view/create-view-prompt/views/login/files/__className@dasherize__.component.ts.template +37 -2
  97. package/schematics/view/create-view-prompt/views/public-resolver-view/create-public-resolver-view.d.ts +4 -0
  98. package/schematics/view/create-view-prompt/views/public-resolver-view/create-public-resolver-view.js +35 -0
  99. package/schematics/view/create-view-prompt/views/public-resolver-view/create-public-resolver-view.js.map +1 -0
  100. package/schematics/view/create-view-prompt/views/public-resolver-view/files/common/__className@dasherize__.component.html.template +4 -0
  101. package/schematics/view/create-view-prompt/views/public-resolver-view/files/common/__className@dasherize__.component.scss.template +0 -0
  102. package/schematics/view/create-view-prompt/views/public-resolver-view/files/common/__className@dasherize__.component.spec.ts.template +49 -0
  103. package/schematics/view/create-view-prompt/views/public-resolver-view/files/common/__className@dasherize__.component.ts.template +46 -0
  104. package/schematics/view/create-view-prompt/views/public-single-task-view/create-public-single-task-view.d.ts +4 -0
  105. package/schematics/view/create-view-prompt/views/public-single-task-view/create-public-single-task-view.js +37 -0
  106. package/schematics/view/create-view-prompt/views/public-single-task-view/create-public-single-task-view.js.map +1 -0
  107. package/schematics/view/create-view-prompt/views/public-single-task-view/files/common/__className@dasherize__.component.html.template +33 -0
  108. package/schematics/view/create-view-prompt/views/public-single-task-view/files/common/__className@dasherize__.component.scss.template +69 -0
  109. package/schematics/view/create-view-prompt/views/public-single-task-view/files/common/__className@dasherize__.component.spec.ts.template +52 -0
  110. package/schematics/view/create-view-prompt/views/public-single-task-view/files/common/__className@dasherize__.component.ts.template +151 -0
  111. package/schematics/view/create-view-prompt/views/public-task-view/create-public-task-view.d.ts +4 -0
  112. package/schematics/view/create-view-prompt/views/public-task-view/create-public-task-view.js +37 -0
  113. package/schematics/view/create-view-prompt/views/public-task-view/create-public-task-view.js.map +1 -0
  114. package/schematics/view/create-view-prompt/views/public-task-view/files/common/__className@dasherize__.component.html.template +6 -0
  115. package/schematics/view/create-view-prompt/views/public-task-view/files/common/__className@dasherize__.component.scss.template +24 -0
  116. package/schematics/view/create-view-prompt/views/public-task-view/files/common/__className@dasherize__.component.spec.ts.template +52 -0
  117. package/schematics/view/create-view-prompt/views/public-task-view/files/common/__className@dasherize__.component.ts.template +136 -0
  118. package/schematics/view/create-view-prompt/views/public-workflow-view/create-public-workflow-view.d.ts +4 -0
  119. package/schematics/view/create-view-prompt/views/public-workflow-view/create-public-workflow-view.js +38 -0
  120. package/schematics/view/create-view-prompt/views/public-workflow-view/create-public-workflow-view.js.map +1 -0
  121. package/schematics/view/create-view-prompt/views/public-workflow-view/files/common/__className@dasherize__.component.html.template +36 -0
  122. package/schematics/view/create-view-prompt/views/public-workflow-view/files/common/__className@dasherize__.component.scss.template +39 -0
  123. package/schematics/view/create-view-prompt/views/public-workflow-view/files/common/__className@dasherize__.component.spec.ts.template +67 -0
  124. package/schematics/view/create-view-prompt/views/public-workflow-view/files/common/__className@dasherize__.component.ts.template +72 -0
  125. package/schematics/view/create-view-prompt/views/role-assignment-view/files/__className@dasherize__.component.html.template +1 -0
  126. package/schematics/view/create-view-prompt/views/role-assignment-view/files/__className@dasherize__.component.scss.template +25 -0
  127. package/schematics/view/create-view-prompt/views/role-assignment-view/files/__className@dasherize__.component.ts.template +17 -0
  128. package/schematics/view/create-view-prompt/views/role-assignment-view/role-assignment-view.d.ts +3 -0
  129. package/schematics/view/create-view-prompt/views/role-assignment-view/role-assignment-view.js +36 -0
  130. package/schematics/view/create-view-prompt/views/role-assignment-view/role-assignment-view.js.map +1 -0
  131. package/schematics/view/create-view-prompt/views/sidenav-toolbar-view/create-sidenav-or-toolbar-view.js +13 -7
  132. package/schematics/view/create-view-prompt/views/sidenav-toolbar-view/create-sidenav-or-toolbar-view.js.map +1 -1
  133. package/schematics/view/create-view-prompt/views/sidenav-toolbar-view/files/__className@dasherize__.component.html.template +3 -3
  134. package/schematics/view/create-view-prompt/views/task-view/files/common/__className@dasherize__.component.scss.template +4 -4
  135. package/schematics/view/create-view-prompt/views/task-view/files/common/__className@dasherize__.component.spec.ts.template +5 -2
  136. package/schematics/view/create-view-prompt/views/task-view/files/simple/__className@dasherize__.component.ts.template +1 -1
  137. package/schematics/view/create-view-prompt/views/workflow-view/create-workflow-view.d.ts +3 -0
  138. package/schematics/view/create-view-prompt/views/workflow-view/create-workflow-view.js +38 -0
  139. package/schematics/view/create-view-prompt/views/workflow-view/create-workflow-view.js.map +1 -0
  140. package/schematics/view/create-view-prompt/views/workflow-view/files/__className@dasherize__.component.html.template +3 -0
  141. package/schematics/view/create-view-prompt/views/workflow-view/files/__className@dasherize__.component.scss.template +5 -0
  142. package/schematics/view/create-view-prompt/views/workflow-view/files/__className@dasherize__.component.ts.template +45 -0
  143. package/src/lib/data-fields/data-field.theme.scss +47 -1
  144. package/src/lib/header/header.theme.scss +6 -0
@@ -1,5 +1,5 @@
1
1
  import { Component } from '@angular/core';
2
- import { AbstractLdapGroupRoleAssignment, RoleAssignmentLdapGroupService, } from '@netgrif/components-core';
2
+ import { AbstractLdapGroupRoleAssignmentComponent, RoleAssignmentLdapGroupService, } from '@netgrif/components-core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@netgrif/components-core";
5
5
  import * as i2 from "@angular/material/toolbar";
@@ -20,7 +20,7 @@ import * as i16 from "@angular/forms";
20
20
  import * as i17 from "@angular/flex-layout/extended";
21
21
  import * as i18 from "@angular/material/core";
22
22
  import * as i19 from "@ngx-translate/core";
23
- export class LdapGroupRoleAssignmentComponent extends AbstractLdapGroupRoleAssignment {
23
+ export class LdapGroupRoleAssignmentComponent extends AbstractLdapGroupRoleAssignmentComponent {
24
24
  constructor(_service) {
25
25
  super(_service);
26
26
  this._service = _service;
@@ -29,11 +29,11 @@ export class LdapGroupRoleAssignmentComponent extends AbstractLdapGroupRoleAssig
29
29
  LdapGroupRoleAssignmentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LdapGroupRoleAssignmentComponent, deps: [{ token: i1.RoleAssignmentLdapGroupService }], target: i0.ɵɵFactoryTarget.Component });
30
30
  LdapGroupRoleAssignmentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: LdapGroupRoleAssignmentComponent, selector: "nc-ldap-group-role-assignment", providers: [
31
31
  RoleAssignmentLdapGroupService
32
- ], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"ldapGroup.ldapGroups$ | async as ldapGroups_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{ldapGroups_.length}}/{{ldapGroup.totalLdapGroups}}\">\n {{'admin.ldapGroup-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"ldapGroup-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.ldapGroup.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchLdapGroupControl\">\n <button mat-button *ngIf=\"searchLdapGroupControl.value\" matSuffix mat-icon-button\n (click)=\"searchLdapGroupControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button mat-icon-button matTooltip=\"Select All\" (click)=\"selectAllLdapGroup(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"Deselect All\" (click)=\"selectAllLdapGroup(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && ldapGroups_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.ldapGroup-list.noLdapGroupsWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #ldapGroupList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextLdapGroupPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let ldapGroup of ldapGroups_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"ldapGroup.selected\"\n [value]=\"ldapGroup\"\n [ngClass]=\"{'list-item-selected':ldapGroup.selected}\"\n (click)=\"ldapGroup.toggle();autoSelectRoles()\">\n <h3 matLine>{{ldapGroup.cn}}</h3>\n <p *ngIf=\"ldapGroup.description !== undefined\" matLine>DN: {{ldapGroup.dn}}, Description: {{ldapGroup.description}}</p>\n <p *ngIf=\"ldapGroup.description === undefined\" matLine>DN: {{ldapGroup.dn}}</p>\n </mat-list-option>\n\n <div *ngIf=\"ldapGroup.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"ldapGroup.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"], components: [{ type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "tabIndex", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i6.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i9.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i9.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i12.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i15.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i16.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i16.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i7.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i18.MatLine, selector: "[mat-line], [matLine]" }, { type: i9.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i9.MatExpansionPanelDescription, selector: "mat-panel-description" }], pipes: { "async": i13.AsyncPipe, "translate": i19.TranslatePipe } });
32
+ ], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"ldapGroup.ldapGroups$ | async as ldapGroups_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{ldapGroups_.length}}/{{ldapGroup.totalLdapGroups}}\">\n {{'admin.ldapGroup-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"ldapGroup-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.ldapGroup.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchLdapGroupControl\">\n <button mat-button *ngIf=\"searchLdapGroupControl.value\" matSuffix mat-icon-button\n (click)=\"searchLdapGroupControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.SelectAll' | translate }}\" (click)=\"selectAllLdapGroup(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.DeselectAll' | translate }}\" (click)=\"selectAllLdapGroup(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && ldapGroups_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.ldapGroup-list.noLdapGroupsWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #ldapGroupList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextLdapGroupPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let ldapGroup of ldapGroups_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"ldapGroup.selected\"\n [value]=\"ldapGroup\"\n [ngClass]=\"{'list-item-selected':ldapGroup.selected}\"\n (click)=\"ldapGroup.toggle();autoSelectRoles()\">\n <h3 matLine>{{ldapGroup.cn}}</h3>\n <p *ngIf=\"ldapGroup.description !== undefined\" matLine>DN: {{ldapGroup.dn}}, Description: {{ldapGroup.description}}</p>\n <p *ngIf=\"ldapGroup.description === undefined\" matLine>DN: {{ldapGroup.dn}}</p>\n </mat-list-option>\n\n <div *ngIf=\"ldapGroup.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"ldapGroup.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"], components: [{ type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "tabIndex", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i6.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i9.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i9.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i12.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i15.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i16.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i16.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i7.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i18.MatLine, selector: "[mat-line], [matLine]" }, { type: i9.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i9.MatExpansionPanelDescription, selector: "mat-panel-description" }], pipes: { "async": i13.AsyncPipe, "translate": i19.TranslatePipe } });
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LdapGroupRoleAssignmentComponent, decorators: [{
34
34
  type: Component,
35
35
  args: [{ selector: 'nc-ldap-group-role-assignment', providers: [
36
36
  RoleAssignmentLdapGroupService
37
- ], template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"ldapGroup.ldapGroups$ | async as ldapGroups_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{ldapGroups_.length}}/{{ldapGroup.totalLdapGroups}}\">\n {{'admin.ldapGroup-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"ldapGroup-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.ldapGroup.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchLdapGroupControl\">\n <button mat-button *ngIf=\"searchLdapGroupControl.value\" matSuffix mat-icon-button\n (click)=\"searchLdapGroupControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button mat-icon-button matTooltip=\"Select All\" (click)=\"selectAllLdapGroup(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"Deselect All\" (click)=\"selectAllLdapGroup(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && ldapGroups_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.ldapGroup-list.noLdapGroupsWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #ldapGroupList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextLdapGroupPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let ldapGroup of ldapGroups_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"ldapGroup.selected\"\n [value]=\"ldapGroup\"\n [ngClass]=\"{'list-item-selected':ldapGroup.selected}\"\n (click)=\"ldapGroup.toggle();autoSelectRoles()\">\n <h3 matLine>{{ldapGroup.cn}}</h3>\n <p *ngIf=\"ldapGroup.description !== undefined\" matLine>DN: {{ldapGroup.dn}}, Description: {{ldapGroup.description}}</p>\n <p *ngIf=\"ldapGroup.description === undefined\" matLine>DN: {{ldapGroup.dn}}</p>\n </mat-list-option>\n\n <div *ngIf=\"ldapGroup.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"ldapGroup.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"] }]
37
+ ], template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"ldapGroup.ldapGroups$ | async as ldapGroups_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{ldapGroups_.length}}/{{ldapGroup.totalLdapGroups}}\">\n {{'admin.ldapGroup-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"ldapGroup-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.ldapGroup.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchLdapGroupControl\">\n <button mat-button *ngIf=\"searchLdapGroupControl.value\" matSuffix mat-icon-button\n (click)=\"searchLdapGroupControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.SelectAll' | translate }}\" (click)=\"selectAllLdapGroup(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.DeselectAll' | translate }}\" (click)=\"selectAllLdapGroup(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && ldapGroups_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.ldapGroup-list.noLdapGroupsWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #ldapGroupList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextLdapGroupPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let ldapGroup of ldapGroups_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"ldapGroup.selected\"\n [value]=\"ldapGroup\"\n [ngClass]=\"{'list-item-selected':ldapGroup.selected}\"\n (click)=\"ldapGroup.toggle();autoSelectRoles()\">\n <h3 matLine>{{ldapGroup.cn}}</h3>\n <p *ngIf=\"ldapGroup.description !== undefined\" matLine>DN: {{ldapGroup.dn}}, Description: {{ldapGroup.description}}</p>\n <p *ngIf=\"ldapGroup.description === undefined\" matLine>DN: {{ldapGroup.dn}}</p>\n </mat-list-option>\n\n <div *ngIf=\"ldapGroup.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"ldapGroup.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"] }]
38
38
  }], ctorParameters: function () { return [{ type: i1.RoleAssignmentLdapGroupService }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvYWRtaW4vbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQvbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvYWRtaW4vbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQvbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLDhCQUE4QixHQUNqQyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVbEMsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLCtCQUErQjtJQUNqRixZQUFzQixRQUF3QztRQUMxRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFERSxhQUFRLEdBQVIsUUFBUSxDQUFnQztJQUU5RCxDQUFDOzs4SEFIUSxnQ0FBZ0M7a0hBQWhDLGdDQUFnQyx3REFKOUI7UUFDUCw4QkFBOEI7S0FDakMsaURDWkwsdWhRQXlJQTs0RkQzSGEsZ0NBQWdDO2tCQVI1QyxTQUFTOytCQUNJLCtCQUErQixhQUc5Qjt3QkFDUCw4QkFBOEI7cUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdExkYXBHcm91cFJvbGVBc3NpZ25tZW50LFxuICAgIFJvbGVBc3NpZ25tZW50TGRhcEdyb3VwU2VydmljZSxcbn0gZnJvbSAnQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYy1sZGFwLWdyb3VwLXJvbGUtYXNzaWdubWVudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xkYXAtZ3JvdXAtcm9sZS1hc3NpZ25tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9sZGFwLWdyb3VwLXJvbGUtYXNzaWdubWVudC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBSb2xlQXNzaWdubWVudExkYXBHcm91cFNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExkYXBHcm91cFJvbGVBc3NpZ25tZW50Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RMZGFwR3JvdXBSb2xlQXNzaWdubWVudCB7XG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9zZXJ2aWNlOiBSb2xlQXNzaWdubWVudExkYXBHcm91cFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoX3NlcnZpY2UpO1xuICAgIH1cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgY2xhc3M9XCJmdWxsLWhlaWdodCBmdWxsLXdpZHRoIHBhZGRpbmctZGVmYXVsdFwiPlxuXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZsZXg9XCI0N1wiIGNsYXNzPVwiZnVsbC1oZWlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxkYXBHcm91cC5sZGFwR3JvdXBzJCB8IGFzeW5jIGFzIGxkYXBHcm91cHNfXCI+XG5cbiAgICAgICAgICAgIDxtYXQtdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm1pbi1oZWlnaHQtNzJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBtYXRUb29sdGlwPVwie3tsZGFwR3JvdXBzXy5sZW5ndGh9fS97e2xkYXBHcm91cC50b3RhbExkYXBHcm91cHN9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydhZG1pbi5sZGFwR3JvdXAtbGlzdC5saXN0VGl0bGUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCI1XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwibmV0Z3JpZi1pbnB1dCBuZXRncmlmLWlucHV0LWZpeCBuZXRncmlmLWlucHV0LXByaW1hcnktZml4IG5ldGdyaWYtaW5wdXQtc2VhcmNoLWZpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZnhGbGV4IGNsYXNzPVwic2VhcmNoLWljb25cIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJsZGFwR3JvdXAtYXNzaWduLXNlYXJjaFwiIGNvbG9yPVwicHJpbWFyeVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdzaWRlLW1lbnUubGRhcEdyb3VwLmNob29zZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoTGRhcEdyb3VwQ29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uICpuZ0lmPVwic2VhcmNoTGRhcEdyb3VwQ29udHJvbC52YWx1ZVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaExkYXBHcm91cENvbnRyb2wuc2V0VmFsdWUoJycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAxIDEgYXV0bztcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIlNlbGVjdCBBbGxcIiAoY2xpY2spPVwic2VsZWN0QWxsTGRhcEdyb3VwKHRydWUpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kb25lX2FsbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkRlc2VsZWN0IEFsbFwiIChjbGljayk9XCJzZWxlY3RBbGxMZGFwR3JvdXAoZmFsc2UpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC10b29sYmFyPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGxkYXBHcm91cC5sb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiYgbGRhcEdyb3Vwc18ubGVuZ3RoID09PSAwXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleCBjbGFzcz1cIm1hcmdpbi10b3AteDJcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJhY2NlbnRcIiBjbGFzcz1cIm1hcmdpbi1ib3R0b20tZGVmYXVsdCBuby1sZGFwR3JvdXAtaWNvblwiPnBlcm1faWRlbnRpdHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLTIwXCI+e3sgJ2FkbWluLmxkYXBHcm91cC1saXN0Lm5vTGRhcEdyb3Vwc1dlcmVGb3VuZCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0ICNsZGFwR3JvdXBMaXN0IGNvbG9yPVwiYWNjZW50XCIgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG5cbiAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiNzJcIiAoc2Nyb2xsZWRJbmRleENoYW5nZSk9XCJsb2FkTmV4dExkYXBHcm91cFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGggZnVsbC1oZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiAqY2RrVmlydHVhbEZvcj1cImxldCBsZGFwR3JvdXAgb2YgbGRhcEdyb3Vwc187IGxldCBpID0gaW5kZXg7XCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImxkYXBHcm91cC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImxkYXBHcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsaXN0LWl0ZW0tc2VsZWN0ZWQnOmxkYXBHcm91cC5zZWxlY3RlZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJsZGFwR3JvdXAudG9nZ2xlKCk7YXV0b1NlbGVjdFJvbGVzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBtYXRMaW5lPnt7bGRhcEdyb3VwLmNufX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJsZGFwR3JvdXAuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZFwiIG1hdExpbmU+RE46IHt7bGRhcEdyb3VwLmRufX0sIERlc2NyaXB0aW9uOiB7e2xkYXBHcm91cC5kZXNjcmlwdGlvbn19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJsZGFwR3JvdXAuZGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZFwiIG1hdExpbmU+RE46IHt7bGRhcEdyb3VwLmRufX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsZGFwR3JvdXAubG9hZGluZyQgfCBhc3luY1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cInByaW1hcnlcIiBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBmeEZsZXg9XCIzXCI+PC9kaXY+XG5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4RmxleD1cIjUwXCIgY2xhc3M9XCJmdWxsLWhlaWdodFwiPlxuXG4gICAgICAgIDxtYXQtdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm1pbi1oZWlnaHQtNzJcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7J2FkbWluLnByb2Nlc3MtbGlzdC5saXN0VGl0bGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZsZXg6IDEgMSBhdXRvO1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImxkYXBHcm91cC51cGRhdGluZyQgfCBhc3luY1wiIGNvbG9yPVwiYWNjZW50XCIgZGlhbWV0ZXI9XCIzMFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvbWF0LXRvb2xiYXI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihsZGFwR3JvdXAubG9hZGluZyQgfCBhc3luYykgPT09IGZhbHNlICYmIG5ldHMucHJvY2Vzc2VzLmxlbmd0aCA9PT0gMFwiIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleCBjbGFzcz1cIm1hcmdpbi10b3AteDJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLWJvdHRvbS1kZWZhdWx0IG5vLWxkYXBHcm91cC1pY29uXCI+dGltZWxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNpemUtMjBcIj57eyAnYWRtaW4ucHJvY2Vzcy1saXN0Lm5vUHJvY2Vzc2VzV2VyZUZvdW5kJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LWFjY29yZGlvbiBjbGFzcz1cImZ1bGwtd2lkdGggbWFyZ2luLXRvcC1kZWZhdWx0IHByb2Nlc3MtbGlzdC1hY2NvcmRpb25cIiBtdWx0aSBmeEZsZXg+XG5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICpuZ0Zvcj1cImxldCBpdGVtIG9mIG5ldHMucHJvY2Vzc2VzXCIgKGFmdGVyRXhwYW5kKT1cIm5ldHMubG9hZFByb2Nlc3NJdGVtUm9sZXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFmdGVyQ29sbGFwc2UpPVwibmV0cy5wcmVwYXJlVG9UcnlBZ2FpblRvTG9hZFJvbGVzKGl0ZW0pXCI+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLnNvbWVSb2xlc1NlbGVjdGVkXCIgY29sb3I9XCJhY2NlbnRcIiBjbGFzcz1cIm1hcmdpbi1yaWdodC14MlwiPnRvdXI8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLmluaXRpYWxzfX0gLSB7e2l0ZW0udGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24gY2xhc3M9XCJwcm9jZXNzLWl0ZW0tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9jZXNzLWl0ZW0tZGVzY3JpcHRpb24gZnVsbC13aWR0aFwiPnt7J2FkbWluLnByb2Nlc3MtbGlzdC5uZXdlc3RWZXJzaW9uJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7e2l0ZW0ubmV3ZXN0VmVyc2lvbn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ubG9hZGluZ1wiIGZ4RmxleD1cIjEwMFwiIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbS5sb2FkaW5nICYmIGl0ZW0uZW1wdHlSb2xlc1wiIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGbGV4IGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodCBuZXQtcGFuZWwtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJhY2NlbnRcIiBjbGFzcz1cIm1hcmdpbi1ib3R0b20tZGVmYXVsdFwiPmFjY291bnRfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNpemUtMTVcIj57eyAnYWRtaW4ucHJvY2Vzcy1saXN0Lm5vUm9sZXMnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWl0ZW0ubG9hZGluZyAmJiAhaXRlbS5lbXB0eVJvbGVzXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdWxsLWhlaWdodCBmdWxsLXdpZHRoIG5ldC1wYW5lbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eyAnYWRtaW4ucHJvY2Vzcy1saXN0LnJvbGVzJyB8IHRyYW5zbGF0ZX19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbmV0IG9mIGl0ZW0ucHJvY2Vzc2VzOyBsZXQgZmlyc3QgPSBmaXJzdFwiIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCIhZmlyc3RcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwie3tpdGVtLnNvbWVSb2xlc1NlbGVjdGVkID8gJ0Rlc2VsZWN0IEFsbCcgOiAnU2VsZWN0IEFsbCd9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxSb2xlcyhuZXQsICFpdGVtLnNvbWVSb2xlc1NlbGVjdGVkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bmV0LnZlcnNpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgY29sb3I9XCJhY2NlbnRcIiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1vcHRpb24gKm5nRm9yPVwibGV0IHJvbGUgb2YgbmV0LnJvbGVzXCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwicm9sZS5zZWxlY3RlZFwiIChjbGljayk9XCJyb2xlLnRvZ2dsZSgpO3VwZGF0ZShyb2xlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmeEZsZXg9XCI1MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgbWF0TGluZT57e3JvbGUubmFtZX19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuXG4gICAgICAgIDwvbWF0LWFjY29yZGlvbj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwibmV0cy5sb2FkaW5nJCB8IGFzeW5jXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleD1cIjEwMFwiPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyIGNvbG9yPVwicHJpbWFyeVwiIGRpYW1ldGVyPVwiNjVcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvYWRtaW4vbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQvbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvYWRtaW4vbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQvbGRhcC1ncm91cC1yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQ0gsd0NBQXdDLEVBQ3hDLDhCQUE4QixHQUNqQyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVbEMsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLHdDQUF3QztJQUMxRixZQUFzQixRQUF3QztRQUMxRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFERSxhQUFRLEdBQVIsUUFBUSxDQUFnQztJQUU5RCxDQUFDOzs4SEFIUSxnQ0FBZ0M7a0hBQWhDLGdDQUFnQyx3REFKOUI7UUFDUCw4QkFBOEI7S0FDakMsaURDWkwsaW1RQXlJQTs0RkQzSGEsZ0NBQWdDO2tCQVI1QyxTQUFTOytCQUNJLCtCQUErQixhQUc5Qjt3QkFDUCw4QkFBOEI7cUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdExkYXBHcm91cFJvbGVBc3NpZ25tZW50Q29tcG9uZW50LFxuICAgIFJvbGVBc3NpZ25tZW50TGRhcEdyb3VwU2VydmljZSxcbn0gZnJvbSAnQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYy1sZGFwLWdyb3VwLXJvbGUtYXNzaWdubWVudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xkYXAtZ3JvdXAtcm9sZS1hc3NpZ25tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9sZGFwLWdyb3VwLXJvbGUtYXNzaWdubWVudC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBSb2xlQXNzaWdubWVudExkYXBHcm91cFNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExkYXBHcm91cFJvbGVBc3NpZ25tZW50Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RMZGFwR3JvdXBSb2xlQXNzaWdubWVudENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9zZXJ2aWNlOiBSb2xlQXNzaWdubWVudExkYXBHcm91cFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoX3NlcnZpY2UpO1xuICAgIH1cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgY2xhc3M9XCJmdWxsLWhlaWdodCBmdWxsLXdpZHRoIHBhZGRpbmctZGVmYXVsdFwiPlxuXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZsZXg9XCI0N1wiIGNsYXNzPVwiZnVsbC1oZWlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxkYXBHcm91cC5sZGFwR3JvdXBzJCB8IGFzeW5jIGFzIGxkYXBHcm91cHNfXCI+XG5cbiAgICAgICAgICAgIDxtYXQtdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm1pbi1oZWlnaHQtNzJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBtYXRUb29sdGlwPVwie3tsZGFwR3JvdXBzXy5sZW5ndGh9fS97e2xkYXBHcm91cC50b3RhbExkYXBHcm91cHN9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydhZG1pbi5sZGFwR3JvdXAtbGlzdC5saXN0VGl0bGUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCI1XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwibmV0Z3JpZi1pbnB1dCBuZXRncmlmLWlucHV0LWZpeCBuZXRncmlmLWlucHV0LXByaW1hcnktZml4IG5ldGdyaWYtaW5wdXQtc2VhcmNoLWZpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZnhGbGV4IGNsYXNzPVwic2VhcmNoLWljb25cIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJsZGFwR3JvdXAtYXNzaWduLXNlYXJjaFwiIGNvbG9yPVwicHJpbWFyeVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdzaWRlLW1lbnUubGRhcEdyb3VwLmNob29zZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoTGRhcEdyb3VwQ29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uICpuZ0lmPVwic2VhcmNoTGRhcEdyb3VwQ29udHJvbC52YWx1ZVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaExkYXBHcm91cENvbnRyb2wuc2V0VmFsdWUoJycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAxIDEgYXV0bztcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cInt7ICdzaWRlLW1lbnUudG9vbHRpcC5TZWxlY3RBbGwnIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cInNlbGVjdEFsbExkYXBHcm91cCh0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZG9uZV9hbGw8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJ7eyAnc2lkZS1tZW51LnRvb2x0aXAuRGVzZWxlY3RBbGwnIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cInNlbGVjdEFsbExkYXBHcm91cChmYWxzZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LXRvb2xiYXI+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIobGRhcEdyb3VwLmxvYWRpbmckIHwgYXN5bmMpID09PSBmYWxzZSAmJiBsZGFwR3JvdXBzXy5sZW5ndGggPT09IDBcIiBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGbGV4IGNsYXNzPVwibWFyZ2luLXRvcC14MlwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLWJvdHRvbS1kZWZhdWx0IG5vLWxkYXBHcm91cC1pY29uXCI+cGVybV9pZGVudGl0eTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNpemUtMjBcIj57eyAnYWRtaW4ubGRhcEdyb3VwLWxpc3Qubm9MZGFwR3JvdXBzV2VyZUZvdW5kJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgI2xkYXBHcm91cExpc3QgY29sb3I9XCJhY2NlbnRcIiBmeEZsZXg9XCIxMDBcIiBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cblxuICAgICAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCI3MlwiIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cImxvYWROZXh0TGRhcEdyb3VwUGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uICpjZGtWaXJ0dWFsRm9yPVwibGV0IGxkYXBHcm91cCBvZiBsZGFwR3JvdXBzXzsgbGV0IGkgPSBpbmRleDtcIiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwibGRhcEdyb3VwLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwibGRhcEdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xpc3QtaXRlbS1zZWxlY3RlZCc6bGRhcEdyb3VwLnNlbGVjdGVkfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImxkYXBHcm91cC50b2dnbGUoKTthdXRvU2VsZWN0Um9sZXMoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIG1hdExpbmU+e3tsZGFwR3JvdXAuY259fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImxkYXBHcm91cC5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkXCIgbWF0TGluZT5ETjoge3tsZGFwR3JvdXAuZG59fSwgRGVzY3JpcHRpb246IHt7bGRhcEdyb3VwLmRlc2NyaXB0aW9ufX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImxkYXBHcm91cC5kZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkXCIgbWF0TGluZT5ETjoge3tsZGFwR3JvdXAuZG59fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxkYXBHcm91cC5sb2FkaW5nJCB8IGFzeW5jXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIGNvbG9yPVwicHJpbWFyeVwiIGRpYW1ldGVyPVwiNTBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGZ4RmxleD1cIjNcIj48L2Rpdj5cblxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGbGV4PVwiNTBcIiBjbGFzcz1cImZ1bGwtaGVpZ2h0XCI+XG5cbiAgICAgICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibWluLWhlaWdodC03MlwiPlxuICAgICAgICAgICAgPHNwYW4+e3snYWRtaW4ucHJvY2Vzcy1saXN0Lmxpc3RUaXRsZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZmxleDogMSAxIGF1dG87XCI+PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwibGRhcEdyb3VwLnVwZGF0aW5nJCB8IGFzeW5jXCIgY29sb3I9XCJhY2NlbnRcIiBkaWFtZXRlcj1cIjMwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9tYXQtdG9vbGJhcj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGxkYXBHcm91cC5sb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiYgbmV0cy5wcm9jZXNzZXMubGVuZ3RoID09PSAwXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGbGV4IGNsYXNzPVwibWFyZ2luLXRvcC14MlwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJtYXJnaW4tYm90dG9tLWRlZmF1bHQgbm8tbGRhcEdyb3VwLWljb25cIj50aW1lbGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS0yMFwiPnt7ICdhZG1pbi5wcm9jZXNzLWxpc3Qubm9Qcm9jZXNzZXNXZXJlRm91bmQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxtYXQtYWNjb3JkaW9uIGNsYXNzPVwiZnVsbC13aWR0aCBtYXJnaW4tdG9wLWRlZmF1bHQgcHJvY2Vzcy1saXN0LWFjY29yZGlvblwiIG11bHRpIGZ4RmxleD5cblxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbmV0cy5wcm9jZXNzZXNcIiAoYWZ0ZXJFeHBhbmQpPVwibmV0cy5sb2FkUHJvY2Vzc0l0ZW1Sb2xlcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWZ0ZXJDb2xsYXBzZSk9XCJuZXRzLnByZXBhcmVUb1RyeUFnYWluVG9Mb2FkUm9sZXMoaXRlbSlcIj5cblxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uc29tZVJvbGVzU2VsZWN0ZWRcIiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLXJpZ2h0LXgyXCI+dG91cjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0uaW5pdGlhbHN9fSAtIHt7aXRlbS50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cInByb2Nlc3MtaXRlbS1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2Nlc3MtaXRlbS1kZXNjcmlwdGlvbiBmdWxsLXdpZHRoXCI+e3snYWRtaW4ucHJvY2Vzcy1saXN0Lm5ld2VzdFZlcnNpb24nIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt7aXRlbS5uZXdlc3RWZXJzaW9ufX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5sb2FkaW5nXCIgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtLmxvYWRpbmcgJiYgaXRlbS5lbXB0eVJvbGVzXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZsZXggY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtaGVpZ2h0IG5ldC1wYW5lbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLWJvdHRvbS1kZWZhdWx0XCI+YWNjb3VudF9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS0xNVwiPnt7ICdhZG1pbi5wcm9jZXNzLWxpc3Qubm9Sb2xlcycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbS5sb2FkaW5nICYmICFpdGVtLmVtcHR5Um9sZXNcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtaGVpZ2h0IGZ1bGwtd2lkdGggbmV0LXBhbmVsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdhZG1pbi5wcm9jZXNzLWxpc3Qucm9sZXMnIHwgdHJhbnNsYXRlfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBuZXQgb2YgaXRlbS5wcm9jZXNzZXM7IGxldCBmaXJzdCA9IGZpcnN0XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIiFmaXJzdFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJ7e2l0ZW0uc29tZVJvbGVzU2VsZWN0ZWQgPyAnRGVzZWxlY3QgQWxsJyA6ICdTZWxlY3QgQWxsJ319XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbFJvbGVzKG5ldCwgIWl0ZW0uc29tZVJvbGVzU2VsZWN0ZWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tuZXQudmVyc2lvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCBjb2xvcj1cImFjY2VudFwiIGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBuZXQucm9sZXNcIiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJyb2xlLnNlbGVjdGVkXCIgKGNsaWNrKT1cInJvbGUudG9nZ2xlKCk7dXBkYXRlKHJvbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4RmxleD1cIjUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBtYXRMaW5lPnt7cm9sZS5uYW1lfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJuZXRzLmxvYWRpbmckIHwgYXN5bmNcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGbGV4PVwiMTAwXCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJwcmltYXJ5XCIgZGlhbWV0ZXI9XCI2NVwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -30,11 +30,11 @@ export class RoleAssignmentComponent extends AbstractRoleAssignmentComponent {
30
30
  RoleAssignmentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RoleAssignmentComponent, deps: [{ token: i1.RoleAssignmentService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component });
31
31
  RoleAssignmentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RoleAssignmentComponent, selector: "nc-role-assignment", providers: [
32
32
  RoleAssignmentService
33
- ], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"users.users$ | async as users_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{users_.length}}/{{users.totalUsers}}\">\n {{'admin.user-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.user.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchUserControl\">\n <button mat-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button disabled mat-icon-button\n matTooltip=\"{{userMultiSelect ? 'Multi selection' : 'Single selection'}}\"\n (click)=\"userMultiSelect = !userMultiSelect\">\n <mat-icon>{{userMultiSelect ? 'group' : 'person'}}</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"Select All\" (click)=\"selectAllUsers(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"Deselect All\" (click)=\"selectAllUsers(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && users_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.user-list.noUsersWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #userList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextUserPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let user of users_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"user.selected\"\n [value]=\"user\"\n [ngClass]=\"{'list-item-selected':user.selected}\"\n (click)=\"user.toggle();autoSelectRoles()\">\n <h3 matLine>{{user.fullName}}</h3>\n <p matLine>ID: {{user.id}}, Email: {{user.email}}</p>\n </mat-list-option>\n\n <div *ngIf=\"users.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"users.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"], components: [{ type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "tabIndex", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i6.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i9.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i9.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i12.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i15.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i16.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i16.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i7.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i18.MatLine, selector: "[mat-line], [matLine]" }, { type: i9.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i9.MatExpansionPanelDescription, selector: "mat-panel-description" }], pipes: { "async": i13.AsyncPipe, "translate": i19.TranslatePipe } });
33
+ ], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"users.users$ | async as users_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{users_.length}}/{{users.totalUsers}}\">\n {{'admin.user-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.user.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchUserControl\">\n <button mat-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button disabled mat-icon-button\n matTooltip=\"{{userMultiSelect ? 'Multi selection' : 'Single selection'}}\"\n (click)=\"userMultiSelect = !userMultiSelect\">\n <mat-icon>{{userMultiSelect ? 'group' : 'person'}}</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.SelectAll' | translate }}\" (click)=\"selectAllUsers(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.DeselectAll' | translate }}\" (click)=\"selectAllUsers(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && users_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.user-list.noUsersWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #userList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextUserPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let user of users_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"user.selected\"\n [value]=\"user\"\n [ngClass]=\"{'list-item-selected':user.selected}\"\n (click)=\"user.toggle();autoSelectRoles()\">\n <h3 matLine>{{user.fullName}}</h3>\n <p matLine>ID: {{user.id}}, Email: {{user.email}}</p>\n </mat-list-option>\n\n <div *ngIf=\"users.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"users.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"], components: [{ type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "tabIndex", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i6.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i9.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i9.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i12.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i15.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i16.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i16.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i7.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i18.MatLine, selector: "[mat-line], [matLine]" }, { type: i9.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i9.MatExpansionPanelDescription, selector: "mat-panel-description" }], pipes: { "async": i13.AsyncPipe, "translate": i19.TranslatePipe } });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RoleAssignmentComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{ selector: 'nc-role-assignment', providers: [
37
37
  RoleAssignmentService
38
- ], template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"users.users$ | async as users_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{users_.length}}/{{users.totalUsers}}\">\n {{'admin.user-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.user.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchUserControl\">\n <button mat-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button disabled mat-icon-button\n matTooltip=\"{{userMultiSelect ? 'Multi selection' : 'Single selection'}}\"\n (click)=\"userMultiSelect = !userMultiSelect\">\n <mat-icon>{{userMultiSelect ? 'group' : 'person'}}</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"Select All\" (click)=\"selectAllUsers(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"Deselect All\" (click)=\"selectAllUsers(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && users_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.user-list.noUsersWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #userList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextUserPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let user of users_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"user.selected\"\n [value]=\"user\"\n [ngClass]=\"{'list-item-selected':user.selected}\"\n (click)=\"user.toggle();autoSelectRoles()\">\n <h3 matLine>{{user.fullName}}</h3>\n <p matLine>ID: {{user.id}}, Email: {{user.email}}</p>\n </mat-list-option>\n\n <div *ngIf=\"users.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"users.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"] }]
38
+ ], template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"47\" class=\"full-height\">\n <ng-container *ngIf=\"users.users$ | async as users_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span matTooltip=\"{{users_.length}}/{{users.totalUsers}}\">\n {{'admin.user-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix netgrif-input-primary-fix netgrif-input-search-fix\">\n <mat-icon fxFlex class=\"search-icon\">search</mat-icon>\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-label>{{ 'side-menu.user.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchUserControl\">\n <button mat-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button disabled mat-icon-button\n matTooltip=\"{{userMultiSelect ? 'Multi selection' : 'Single selection'}}\"\n (click)=\"userMultiSelect = !userMultiSelect\">\n <mat-icon>{{userMultiSelect ? 'group' : 'person'}}</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.SelectAll' | translate }}\" (click)=\"selectAllUsers(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.DeselectAll' | translate }}\" (click)=\"selectAllUsers(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && users_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.user-list.noUsersWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #userList color=\"accent\" fxFlex=\"100\" class=\"full-width\">\n\n <cdk-virtual-scroll-viewport itemSize=\"72\" (scrolledIndexChange)=\"loadNextUserPage()\"\n class=\"full-width full-height\">\n <mat-list-option *cdkVirtualFor=\"let user of users_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"user.selected\"\n [value]=\"user\"\n [ngClass]=\"{'list-item-selected':user.selected}\"\n (click)=\"user.toggle();autoSelectRoles()\">\n <h3 matLine>{{user.fullName}}</h3>\n <p matLine>ID: {{user.id}}, Email: {{user.email}}</p>\n </mat-list-option>\n\n <div *ngIf=\"users.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"3\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"50\" class=\"full-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-72\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"users.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of nets.processes\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\">\n\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n <h3>{{ 'admin.process-list.roles' | translate}}</h3>\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <button mat-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine>{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.user-assign-search{width:100%}.search-icon{margin-right:10px}.min-height-72{min-height:72px}\n"] }]
39
39
  }], ctorParameters: function () { return [{ type: i1.RoleAssignmentService }, { type: i1.UserService }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1hc3NpZ25tZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2FkbWluL3JvbGUtYXNzaWdubWVudC9yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvYWRtaW4vcm9sZS1hc3NpZ25tZW50L3JvbGUtYXNzaWdubWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQywrQkFBK0IsRUFBRSxxQkFBcUIsRUFBYyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVN0csTUFBTSxPQUFPLHVCQUF3QixTQUFRLCtCQUErQjtJQUN4RSxZQUFzQixRQUErQixFQUFZLFlBQXlCO1FBQ3RGLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFEWixhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUFZLGlCQUFZLEdBQVosWUFBWSxDQUFhO0lBRTFGLENBQUM7O3FIQUhRLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDZDQUpyQjtRQUNQLHFCQUFxQjtLQUN4QixpRENUTCxvaVFBNklBOzRGRGxJYSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0ksb0JBQW9CLGFBR25CO3dCQUNQLHFCQUFxQjtxQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Um9sZUFzc2lnbm1lbnRDb21wb25lbnQsIFJvbGVBc3NpZ25tZW50U2VydmljZSwgVXNlclNlcnZpY2V9IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmMtcm9sZS1hc3NpZ25tZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcm9sZS1hc3NpZ25tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBSb2xlQXNzaWdubWVudENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Um9sZUFzc2lnbm1lbnRDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfc2VydmljZTogUm9sZUFzc2lnbm1lbnRTZXJ2aWNlLCBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSkge1xuICAgICAgICBzdXBlcihfc2VydmljZSwgX3VzZXJTZXJ2aWNlKTtcbiAgICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwiZnVsbC1oZWlnaHQgZnVsbC13aWR0aCBwYWRkaW5nLWRlZmF1bHRcIj5cblxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGbGV4PVwiNDdcIiBjbGFzcz1cImZ1bGwtaGVpZ2h0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2Vycy51c2VycyQgfCBhc3luYyBhcyB1c2Vyc19cIj5cblxuICAgICAgICAgICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibWluLWhlaWdodC03MlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJ7e3VzZXJzXy5sZW5ndGh9fS97e3VzZXJzLnRvdGFsVXNlcnN9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydhZG1pbi51c2VyLWxpc3QubGlzdFRpdGxlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNVwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBjbGFzcz1cIm5ldGdyaWYtaW5wdXQgbmV0Z3JpZi1pbnB1dC1maXggbmV0Z3JpZi1pbnB1dC1wcmltYXJ5LWZpeCBuZXRncmlmLWlucHV0LXNlYXJjaC1maXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZ4RmxleCBjbGFzcz1cInNlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleD1cIjEwMFwiIGNsYXNzPVwidXNlci1hc3NpZ24tc2VhcmNoXCIgY29sb3I9XCJwcmltYXJ5XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NpZGUtbWVudS51c2VyLmNob29zZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoVXNlckNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAqbmdJZj1cInNlYXJjaFVzZXJDb250cm9sLnZhbHVlXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoVXNlckNvbnRyb2wuc2V0VmFsdWUoJycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAxIDEgYXV0bztcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZCBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e3VzZXJNdWx0aVNlbGVjdCA/ICdNdWx0aSBzZWxlY3Rpb24nIDogJ1NpbmdsZSBzZWxlY3Rpb24nfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJNdWx0aVNlbGVjdCA9ICF1c2VyTXVsdGlTZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7dXNlck11bHRpU2VsZWN0ID8gJ2dyb3VwJyA6ICdwZXJzb24nfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJTZWxlY3QgQWxsXCIgKGNsaWNrKT1cInNlbGVjdEFsbFVzZXJzKHRydWUpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kb25lX2FsbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkRlc2VsZWN0IEFsbFwiIChjbGljayk9XCJzZWxlY3RBbGxVc2VycyhmYWxzZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LXRvb2xiYXI+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIodXNlcnMubG9hZGluZyQgfCBhc3luYykgPT09IGZhbHNlICYmIHVzZXJzXy5sZW5ndGggPT09IDBcIiBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGbGV4IGNsYXNzPVwibWFyZ2luLXRvcC14MlwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLWJvdHRvbS1kZWZhdWx0IG5vLXVzZXItaWNvblwiPnBlcm1faWRlbnRpdHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLTIwXCI+e3sgJ2FkbWluLnVzZXItbGlzdC5ub1VzZXJzV2VyZUZvdW5kJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgI3VzZXJMaXN0IGNvbG9yPVwiYWNjZW50XCIgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG5cbiAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiNzJcIiAoc2Nyb2xsZWRJbmRleENoYW5nZSk9XCJsb2FkTmV4dFVzZXJQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtaGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgdXNlciBvZiB1c2Vyc187IGxldCBpID0gaW5kZXg7XCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInVzZXIuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ1c2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xpc3QtaXRlbS1zZWxlY3RlZCc6dXNlci5zZWxlY3RlZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1c2VyLnRvZ2dsZSgpO2F1dG9TZWxlY3RSb2xlcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgbWF0TGluZT57e3VzZXIuZnVsbE5hbWV9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBtYXRMaW5lPklEOiB7e3VzZXIuaWR9fSwgRW1haWw6IHt7dXNlci5lbWFpbH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlcnMubG9hZGluZyQgfCBhc3luY1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cInByaW1hcnlcIiBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBmeEZsZXg9XCIzXCI+PC9kaXY+XG5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4RmxleD1cIjUwXCIgY2xhc3M9XCJmdWxsLWhlaWdodFwiPlxuXG4gICAgICAgIDxtYXQtdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm1pbi1oZWlnaHQtNzJcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7J2FkbWluLnByb2Nlc3MtbGlzdC5saXN0VGl0bGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZsZXg6IDEgMSBhdXRvO1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cInVzZXJzLnVwZGF0aW5nJCB8IGFzeW5jXCIgY29sb3I9XCJhY2NlbnRcIiBkaWFtZXRlcj1cIjMwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9tYXQtdG9vbGJhcj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKHVzZXJzLmxvYWRpbmckIHwgYXN5bmMpID09PSBmYWxzZSAmJiBuZXRzLnByb2Nlc3Nlcy5sZW5ndGggPT09IDBcIiBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZsZXggY2xhc3M9XCJtYXJnaW4tdG9wLXgyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJhY2NlbnRcIiBjbGFzcz1cIm1hcmdpbi1ib3R0b20tZGVmYXVsdCBuby11c2VyLWljb25cIj50aW1lbGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS0yMFwiPnt7ICdhZG1pbi5wcm9jZXNzLWxpc3Qubm9Qcm9jZXNzZXNXZXJlRm91bmQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxtYXQtYWNjb3JkaW9uIGNsYXNzPVwiZnVsbC13aWR0aCBtYXJnaW4tdG9wLWRlZmF1bHQgcHJvY2Vzcy1saXN0LWFjY29yZGlvblwiIG11bHRpIGZ4RmxleD5cblxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbmV0cy5wcm9jZXNzZXNcIiAoYWZ0ZXJFeHBhbmQpPVwibmV0cy5sb2FkUHJvY2Vzc0l0ZW1Sb2xlcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWZ0ZXJDb2xsYXBzZSk9XCJuZXRzLnByZXBhcmVUb1RyeUFnYWluVG9Mb2FkUm9sZXMoaXRlbSlcIj5cblxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uc29tZVJvbGVzU2VsZWN0ZWRcIiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLXJpZ2h0LXgyXCI+dG91cjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0uaW5pdGlhbHN9fSAtIHt7aXRlbS50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cInByb2Nlc3MtaXRlbS1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2Nlc3MtaXRlbS1kZXNjcmlwdGlvbiBmdWxsLXdpZHRoXCI+e3snYWRtaW4ucHJvY2Vzcy1saXN0Lm5ld2VzdFZlcnNpb24nIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt7aXRlbS5uZXdlc3RWZXJzaW9ufX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5sb2FkaW5nXCIgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtLmxvYWRpbmcgJiYgaXRlbS5lbXB0eVJvbGVzXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZsZXggY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtaGVpZ2h0IG5ldC1wYW5lbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLWJvdHRvbS1kZWZhdWx0XCI+YWNjb3VudF9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS0xNVwiPnt7ICdhZG1pbi5wcm9jZXNzLWxpc3Qubm9Sb2xlcycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbS5sb2FkaW5nICYmICFpdGVtLmVtcHR5Um9sZXNcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtaGVpZ2h0IGZ1bGwtd2lkdGggbmV0LXBhbmVsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdhZG1pbi5wcm9jZXNzLWxpc3Qucm9sZXMnIHwgdHJhbnNsYXRlfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBuZXQgb2YgaXRlbS5wcm9jZXNzZXM7IGxldCBmaXJzdCA9IGZpcnN0XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIiFmaXJzdFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJ7e2l0ZW0uc29tZVJvbGVzU2VsZWN0ZWQgPyAnRGVzZWxlY3QgQWxsJyA6ICdTZWxlY3QgQWxsJ319XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbFJvbGVzKG5ldCwgIWl0ZW0uc29tZVJvbGVzU2VsZWN0ZWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tuZXQudmVyc2lvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCBjb2xvcj1cImFjY2VudFwiIGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBuZXQucm9sZXNcIiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJyb2xlLnNlbGVjdGVkXCIgKGNsaWNrKT1cInJvbGUudG9nZ2xlKCk7dXBkYXRlKHJvbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4RmxleD1cIjUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBtYXRMaW5lPnt7cm9sZS5uYW1lfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJuZXRzLmxvYWRpbmckIHwgYXN5bmNcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGbGV4PVwiMTAwXCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJwcmltYXJ5XCIgZGlhbWV0ZXI9XCI2NVwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1hc3NpZ25tZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2FkbWluL3JvbGUtYXNzaWdubWVudC9yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvYWRtaW4vcm9sZS1hc3NpZ25tZW50L3JvbGUtYXNzaWdubWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQywrQkFBK0IsRUFBRSxxQkFBcUIsRUFBYyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVN0csTUFBTSxPQUFPLHVCQUF3QixTQUFRLCtCQUErQjtJQUN4RSxZQUFzQixRQUErQixFQUFZLFlBQXlCO1FBQ3RGLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFEWixhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUFZLGlCQUFZLEdBQVosWUFBWSxDQUFhO0lBRTFGLENBQUM7O3FIQUhRLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDZDQUpyQjtRQUNQLHFCQUFxQjtLQUN4QixpRENUTCw4bVFBNklBOzRGRGxJYSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0ksb0JBQW9CLGFBR25CO3dCQUNQLHFCQUFxQjtxQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Um9sZUFzc2lnbm1lbnRDb21wb25lbnQsIFJvbGVBc3NpZ25tZW50U2VydmljZSwgVXNlclNlcnZpY2V9IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmMtcm9sZS1hc3NpZ25tZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcm9sZS1hc3NpZ25tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yb2xlLWFzc2lnbm1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBSb2xlQXNzaWdubWVudENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Um9sZUFzc2lnbm1lbnRDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfc2VydmljZTogUm9sZUFzc2lnbm1lbnRTZXJ2aWNlLCBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSkge1xuICAgICAgICBzdXBlcihfc2VydmljZSwgX3VzZXJTZXJ2aWNlKTtcbiAgICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwiZnVsbC1oZWlnaHQgZnVsbC13aWR0aCBwYWRkaW5nLWRlZmF1bHRcIj5cblxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGbGV4PVwiNDdcIiBjbGFzcz1cImZ1bGwtaGVpZ2h0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2Vycy51c2VycyQgfCBhc3luYyBhcyB1c2Vyc19cIj5cblxuICAgICAgICAgICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibWluLWhlaWdodC03MlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJ7e3VzZXJzXy5sZW5ndGh9fS97e3VzZXJzLnRvdGFsVXNlcnN9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydhZG1pbi51c2VyLWxpc3QubGlzdFRpdGxlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNVwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBjbGFzcz1cIm5ldGdyaWYtaW5wdXQgbmV0Z3JpZi1pbnB1dC1maXggbmV0Z3JpZi1pbnB1dC1wcmltYXJ5LWZpeCBuZXRncmlmLWlucHV0LXNlYXJjaC1maXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZ4RmxleCBjbGFzcz1cInNlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleD1cIjEwMFwiIGNsYXNzPVwidXNlci1hc3NpZ24tc2VhcmNoXCIgY29sb3I9XCJwcmltYXJ5XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NpZGUtbWVudS51c2VyLmNob29zZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoVXNlckNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAqbmdJZj1cInNlYXJjaFVzZXJDb250cm9sLnZhbHVlXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoVXNlckNvbnRyb2wuc2V0VmFsdWUoJycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAxIDEgYXV0bztcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZCBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e3VzZXJNdWx0aVNlbGVjdCA/ICdNdWx0aSBzZWxlY3Rpb24nIDogJ1NpbmdsZSBzZWxlY3Rpb24nfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJNdWx0aVNlbGVjdCA9ICF1c2VyTXVsdGlTZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7dXNlck11bHRpU2VsZWN0ID8gJ2dyb3VwJyA6ICdwZXJzb24nfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJ7eyAnc2lkZS1tZW51LnRvb2x0aXAuU2VsZWN0QWxsJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJzZWxlY3RBbGxVc2Vycyh0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZG9uZV9hbGw8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJ7eyAnc2lkZS1tZW51LnRvb2x0aXAuRGVzZWxlY3RBbGwnIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cInNlbGVjdEFsbFVzZXJzKGZhbHNlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtdG9vbGJhcj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIih1c2Vycy5sb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiYgdXNlcnNfLmxlbmd0aCA9PT0gMFwiIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZsZXggY2xhc3M9XCJtYXJnaW4tdG9wLXgyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJtYXJnaW4tYm90dG9tLWRlZmF1bHQgbm8tdXNlci1pY29uXCI+cGVybV9pZGVudGl0eTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNpemUtMjBcIj57eyAnYWRtaW4udXNlci1saXN0Lm5vVXNlcnNXZXJlRm91bmQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCAjdXNlckxpc3QgY29sb3I9XCJhY2NlbnRcIiBmeEZsZXg9XCIxMDBcIiBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cblxuICAgICAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCI3MlwiIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cImxvYWROZXh0VXNlclBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGggZnVsbC1oZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiAqY2RrVmlydHVhbEZvcj1cImxldCB1c2VyIG9mIHVzZXJzXzsgbGV0IGkgPSBpbmRleDtcIiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwidXNlci5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInVzZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbGlzdC1pdGVtLXNlbGVjdGVkJzp1c2VyLnNlbGVjdGVkfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXIudG9nZ2xlKCk7YXV0b1NlbGVjdFJvbGVzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBtYXRMaW5lPnt7dXNlci5mdWxsTmFtZX19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIG1hdExpbmU+SUQ6IHt7dXNlci5pZH19LCBFbWFpbDoge3t1c2VyLmVtYWlsfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2Vycy5sb2FkaW5nJCB8IGFzeW5jXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIGNvbG9yPVwicHJpbWFyeVwiIGRpYW1ldGVyPVwiNTBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGZ4RmxleD1cIjNcIj48L2Rpdj5cblxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGbGV4PVwiNTBcIiBjbGFzcz1cImZ1bGwtaGVpZ2h0XCI+XG5cbiAgICAgICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibWluLWhlaWdodC03MlwiPlxuICAgICAgICAgICAgPHNwYW4+e3snYWRtaW4ucHJvY2Vzcy1saXN0Lmxpc3RUaXRsZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZmxleDogMSAxIGF1dG87XCI+PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwidXNlcnMudXBkYXRpbmckIHwgYXN5bmNcIiBjb2xvcj1cImFjY2VudFwiIGRpYW1ldGVyPVwiMzBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L21hdC10b29sYmFyPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIodXNlcnMubG9hZGluZyQgfCBhc3luYykgPT09IGZhbHNlICYmIG5ldHMucHJvY2Vzc2VzLmxlbmd0aCA9PT0gMFwiIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleCBjbGFzcz1cIm1hcmdpbi10b3AteDJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwibWFyZ2luLWJvdHRvbS1kZWZhdWx0IG5vLXVzZXItaWNvblwiPnRpbWVsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLTIwXCI+e3sgJ2FkbWluLnByb2Nlc3MtbGlzdC5ub1Byb2Nlc3Nlc1dlcmVGb3VuZCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJmdWxsLXdpZHRoIG1hcmdpbi10b3AtZGVmYXVsdCBwcm9jZXNzLWxpc3QtYWNjb3JkaW9uXCIgbXVsdGkgZnhGbGV4PlxuXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBuZXRzLnByb2Nlc3Nlc1wiIChhZnRlckV4cGFuZCk9XCJuZXRzLmxvYWRQcm9jZXNzSXRlbVJvbGVzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZnRlckNvbGxhcHNlKT1cIm5ldHMucHJlcGFyZVRvVHJ5QWdhaW5Ub0xvYWRSb2xlcyhpdGVtKVwiPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5zb21lUm9sZXNTZWxlY3RlZFwiIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJtYXJnaW4tcmlnaHQteDJcIj50b3VyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5pbml0aWFsc319IC0ge3tpdGVtLnRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwicHJvY2Vzcy1pdGVtLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvY2Vzcy1pdGVtLWRlc2NyaXB0aW9uIGZ1bGwtd2lkdGhcIj57eydhZG1pbi5wcm9jZXNzLWxpc3QubmV3ZXN0VmVyc2lvbicgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge3tpdGVtLm5ld2VzdFZlcnNpb259fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmxvYWRpbmdcIiBmeEZsZXg9XCIxMDBcIiBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWl0ZW0ubG9hZGluZyAmJiBpdGVtLmVtcHR5Um9sZXNcIiBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleCBjbGFzcz1cImZ1bGwtd2lkdGggZnVsbC1oZWlnaHQgbmV0LXBhbmVsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJtYXJnaW4tYm90dG9tLWRlZmF1bHRcIj5hY2NvdW50X2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLTE1XCI+e3sgJ2FkbWluLnByb2Nlc3MtbGlzdC5ub1JvbGVzJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtLmxvYWRpbmcgJiYgIWl0ZW0uZW1wdHlSb2xlc1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnVsbC1oZWlnaHQgZnVsbC13aWR0aCBuZXQtcGFuZWwtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDM+e3sgJ2FkbWluLnByb2Nlc3MtbGlzdC5yb2xlcycgfCB0cmFuc2xhdGV9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG5ldCBvZiBpdGVtLnByb2Nlc3NlczsgbGV0IGZpcnN0ID0gZmlyc3RcIiBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiIWZpcnN0XCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cInt7aXRlbS5zb21lUm9sZXNTZWxlY3RlZCA/ICdEZXNlbGVjdCBBbGwnIDogJ1NlbGVjdCBBbGwnfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsUm9sZXMobmV0LCAhaXRlbS5zb21lUm9sZXNTZWxlY3RlZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e25ldC52ZXJzaW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IGNvbG9yPVwiYWNjZW50XCIgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uICpuZ0Zvcj1cImxldCByb2xlIG9mIG5ldC5yb2xlc1wiIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInJvbGUuc2VsZWN0ZWRcIiAoY2xpY2spPVwicm9sZS50b2dnbGUoKTt1cGRhdGUocm9sZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnhGbGV4PVwiNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIG1hdExpbmU+e3tyb2xlLm5hbWV9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICAgICAgICA8L21hdC1hY2NvcmRpb24+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm5ldHMubG9hZGluZyQgfCBhc3luY1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZsZXg9XCIxMDBcIj5cbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cInByaW1hcnlcIiBkaWFtZXRlcj1cIjY1XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -30,14 +30,14 @@ export class ButtonFieldComponent extends AbstractButtonFieldComponent {
30
30
  }
31
31
  }
32
32
  ButtonFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ButtonFieldComponent, deps: [{ token: i1.TranslateService }, { token: i2.DialogService }, { token: NAE_INFORM_ABOUT_INVALID_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
33
- ButtonFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ButtonFieldComponent, selector: "nc-button-field", usesInheritance: true, ngImport: i0, template: "<nc-data-field-template *ngIf=\"!dataField.behavior.hidden\"\n [dataField]=\"dataField\"\n [dataFieldTemplate]=\"button\"\n [offset]=\"taskOffset\">\n</nc-data-field-template>\n\n<ng-template #button let-showLargeLayout=\"showLargeLayout\">\n <div [ngClass]=\"{'flex-end': align === 'end', 'flex-start': align === 'start', 'flex-center': align === 'center', 'full-button-width': stretch === 'true'}\">\n <mat-label class=\"netgrif-label\" *ngIf=\"!showLargeLayout.value\">\n {{dataField.title}}\n <nc-required-label *ngIf=\"dataField.behavior.required\" [isIn]=\"!dataField.disabled\"></nc-required-label>\n <br>\n </mat-label>\n <button mat-button\n [ngClass]=\"{\n 'mat-raised-button': resolveComponentType() === 'raised',\n 'mat-stroked-button': resolveComponentType() === 'stroked',\n 'mat-flat-button': resolveComponentType() === 'flat',\n 'mat-icon-button': resolveComponentType() === 'icon',\n 'mat-fab': resolveComponentType() === 'fab',\n 'mat-mini-fab': resolveComponentType() === 'minifab',\n 'full-button-width': stretch === 'true'}\"\n color=\"primary\"\n [matTooltip]=\"dataField.description\"\n [disabled]=\"formControl.disabled || dataField.waitingForResponse\"\n (click)=\"resolveValue()\">\n <div class=\"grid-wrapper\">\n <mat-icon *ngIf=\"dataField.waitingForResponse\" class=\"grid-1-1 margin-auto\" >\n <mat-spinner color=\"warn\" diameter=\"22\"></mat-spinner>\n </mat-icon>\n <div [ngClass]=\"{'label-waiting': dataField.waitingForResponse}\" class=\"grid-1-1\">\n {{(dataField.placeholder === undefined || dataField.placeholder === '') ? dataField.title : (isIconTypeButton() ? '' : dataField.placeholder) }}\n </div>\n <mat-icon class=\"grid-1-1\"\n *ngIf=\"isIconTypeButton() && !dataField.waitingForResponse\">{{dataField.placeholder}}</mat-icon>\n </div>\n </button>\n\n <mat-error *ngIf=\"dataField.isInvalid(formControl)\">{{getErrorMessage()}}</mat-error>\n </div>\n</ng-template>\n", styles: [".label-waiting{opacity:0}.grid-wrapper{display:grid;place-items:center}.grid-1-1{grid-column:1;grid-row:1}.margin-auto{margin:0 auto}.flex-end{display:flex;place-content:flex-end}.flex-start{display:flex;place-content:flex-start}.flex-center{display:flex;place-content:center}.full-button-width{width:100%}\n"], components: [{ type: i3.DataFieldTemplateComponent, selector: "nc-data-field-template" }, { type: i4.RequiredLabelComponent, selector: "nc-required-label", inputs: ["isIn"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i10.MatLabel, selector: "mat-label" }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i10.MatError, selector: "mat-error", inputs: ["id"] }] });
33
+ ButtonFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ButtonFieldComponent, selector: "nc-button-field", usesInheritance: true, ngImport: i0, template: "<nc-data-field-template *ngIf=\"!dataField.behavior.hidden\"\n [dataField]=\"dataField\"\n [dataFieldTemplate]=\"button\"\n [offset]=\"taskOffset\">\n</nc-data-field-template>\n\n<ng-template #button let-showLargeLayout=\"showLargeLayout\">\n <div [ngClass]=\"{'flex-end': align === 'end', 'flex-start': align === 'start', 'flex-center': align === 'center', 'full-button-width': stretch === 'true'}\">\n <mat-label class=\"netgrif-label\" *ngIf=\"!showLargeLayout.value\">\n {{dataField.title}}\n <nc-required-label *ngIf=\"dataField.behavior.required\" [isIn]=\"!dataField.disabled\"></nc-required-label>\n <br>\n </mat-label>\n <button mat-button\n [ngClass]=\"{\n 'mat-raised-button': dataField.getComponentType() === 'raised',\n 'mat-stroked-button': dataField.getComponentType() === 'stroked',\n 'mat-flat-button': dataField.getComponentType() === 'flat',\n 'mat-icon-button': dataField.getComponentType() === 'icon',\n 'mat-fab': dataField.getComponentType() === 'fab',\n 'mat-mini-fab': dataField.getComponentType() === 'minifab',\n 'full-button-width': stretch === 'true'}\"\n color=\"primary\"\n [matTooltip]=\"dataField.description\"\n [disabled]=\"formControl.disabled || dataField.waitingForResponse\"\n (click)=\"resolveValue()\">\n <div class=\"grid-wrapper\">\n <mat-icon *ngIf=\"dataField.waitingForResponse\" class=\"grid-1-1 margin-auto\" >\n <mat-spinner color=\"warn\" diameter=\"22\"></mat-spinner>\n </mat-icon>\n <div [ngClass]=\"{'label-waiting': dataField.waitingForResponse}\" class=\"grid-1-1\">\n {{(dataField.placeholder === undefined || dataField.placeholder === '') ? dataField.title : (isIconTypeButton() ? '' : dataField.placeholder) }}\n </div>\n <mat-icon class=\"grid-1-1\"\n *ngIf=\"isIconTypeButton() && !dataField.waitingForResponse\">{{dataField.placeholder}}</mat-icon>\n </div>\n </button>\n\n <mat-error *ngIf=\"dataField.isInvalid(formControl)\">{{getErrorMessage()}}</mat-error>\n </div>\n</ng-template>\n", styles: [".label-waiting{opacity:0}.grid-wrapper{display:grid;place-items:center}.grid-1-1{grid-column:1;grid-row:1}.margin-auto{margin:0 auto}.flex-end{display:flex;place-content:flex-end}.flex-start{display:flex;place-content:flex-start}.flex-center{display:flex;place-content:center}.full-button-width{width:100%}\n"], components: [{ type: i3.DataFieldTemplateComponent, selector: "nc-data-field-template" }, { type: i4.RequiredLabelComponent, selector: "nc-required-label", inputs: ["isIn"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i10.MatLabel, selector: "mat-label" }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i10.MatError, selector: "mat-error", inputs: ["id"] }] });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ButtonFieldComponent, decorators: [{
35
35
  type: Component,
36
- args: [{ selector: 'nc-button-field', template: "<nc-data-field-template *ngIf=\"!dataField.behavior.hidden\"\n [dataField]=\"dataField\"\n [dataFieldTemplate]=\"button\"\n [offset]=\"taskOffset\">\n</nc-data-field-template>\n\n<ng-template #button let-showLargeLayout=\"showLargeLayout\">\n <div [ngClass]=\"{'flex-end': align === 'end', 'flex-start': align === 'start', 'flex-center': align === 'center', 'full-button-width': stretch === 'true'}\">\n <mat-label class=\"netgrif-label\" *ngIf=\"!showLargeLayout.value\">\n {{dataField.title}}\n <nc-required-label *ngIf=\"dataField.behavior.required\" [isIn]=\"!dataField.disabled\"></nc-required-label>\n <br>\n </mat-label>\n <button mat-button\n [ngClass]=\"{\n 'mat-raised-button': resolveComponentType() === 'raised',\n 'mat-stroked-button': resolveComponentType() === 'stroked',\n 'mat-flat-button': resolveComponentType() === 'flat',\n 'mat-icon-button': resolveComponentType() === 'icon',\n 'mat-fab': resolveComponentType() === 'fab',\n 'mat-mini-fab': resolveComponentType() === 'minifab',\n 'full-button-width': stretch === 'true'}\"\n color=\"primary\"\n [matTooltip]=\"dataField.description\"\n [disabled]=\"formControl.disabled || dataField.waitingForResponse\"\n (click)=\"resolveValue()\">\n <div class=\"grid-wrapper\">\n <mat-icon *ngIf=\"dataField.waitingForResponse\" class=\"grid-1-1 margin-auto\" >\n <mat-spinner color=\"warn\" diameter=\"22\"></mat-spinner>\n </mat-icon>\n <div [ngClass]=\"{'label-waiting': dataField.waitingForResponse}\" class=\"grid-1-1\">\n {{(dataField.placeholder === undefined || dataField.placeholder === '') ? dataField.title : (isIconTypeButton() ? '' : dataField.placeholder) }}\n </div>\n <mat-icon class=\"grid-1-1\"\n *ngIf=\"isIconTypeButton() && !dataField.waitingForResponse\">{{dataField.placeholder}}</mat-icon>\n </div>\n </button>\n\n <mat-error *ngIf=\"dataField.isInvalid(formControl)\">{{getErrorMessage()}}</mat-error>\n </div>\n</ng-template>\n", styles: [".label-waiting{opacity:0}.grid-wrapper{display:grid;place-items:center}.grid-1-1{grid-column:1;grid-row:1}.margin-auto{margin:0 auto}.flex-end{display:flex;place-content:flex-end}.flex-start{display:flex;place-content:flex-start}.flex-center{display:flex;place-content:center}.full-button-width{width:100%}\n"] }]
36
+ args: [{ selector: 'nc-button-field', template: "<nc-data-field-template *ngIf=\"!dataField.behavior.hidden\"\n [dataField]=\"dataField\"\n [dataFieldTemplate]=\"button\"\n [offset]=\"taskOffset\">\n</nc-data-field-template>\n\n<ng-template #button let-showLargeLayout=\"showLargeLayout\">\n <div [ngClass]=\"{'flex-end': align === 'end', 'flex-start': align === 'start', 'flex-center': align === 'center', 'full-button-width': stretch === 'true'}\">\n <mat-label class=\"netgrif-label\" *ngIf=\"!showLargeLayout.value\">\n {{dataField.title}}\n <nc-required-label *ngIf=\"dataField.behavior.required\" [isIn]=\"!dataField.disabled\"></nc-required-label>\n <br>\n </mat-label>\n <button mat-button\n [ngClass]=\"{\n 'mat-raised-button': dataField.getComponentType() === 'raised',\n 'mat-stroked-button': dataField.getComponentType() === 'stroked',\n 'mat-flat-button': dataField.getComponentType() === 'flat',\n 'mat-icon-button': dataField.getComponentType() === 'icon',\n 'mat-fab': dataField.getComponentType() === 'fab',\n 'mat-mini-fab': dataField.getComponentType() === 'minifab',\n 'full-button-width': stretch === 'true'}\"\n color=\"primary\"\n [matTooltip]=\"dataField.description\"\n [disabled]=\"formControl.disabled || dataField.waitingForResponse\"\n (click)=\"resolveValue()\">\n <div class=\"grid-wrapper\">\n <mat-icon *ngIf=\"dataField.waitingForResponse\" class=\"grid-1-1 margin-auto\" >\n <mat-spinner color=\"warn\" diameter=\"22\"></mat-spinner>\n </mat-icon>\n <div [ngClass]=\"{'label-waiting': dataField.waitingForResponse}\" class=\"grid-1-1\">\n {{(dataField.placeholder === undefined || dataField.placeholder === '') ? dataField.title : (isIconTypeButton() ? '' : dataField.placeholder) }}\n </div>\n <mat-icon class=\"grid-1-1\"\n *ngIf=\"isIconTypeButton() && !dataField.waitingForResponse\">{{dataField.placeholder}}</mat-icon>\n </div>\n </button>\n\n <mat-error *ngIf=\"dataField.isInvalid(formControl)\">{{getErrorMessage()}}</mat-error>\n </div>\n</ng-template>\n", styles: [".label-waiting{opacity:0}.grid-wrapper{display:grid;place-items:center}.grid-1-1{grid-column:1;grid-row:1}.margin-auto{margin:0 auto}.flex-end{display:flex;place-content:flex-end}.flex-start{display:flex;place-content:flex-start}.flex-center{display:flex;place-content:center}.full-button-width{width:100%}\n"] }]
37
37
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.DialogService }, { type: undefined, decorators: [{
38
38
  type: Optional
39
39
  }, {
40
40
  type: Inject,
41
41
  args: [NAE_INFORM_ABOUT_INVALID_DATA]
42
42
  }] }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RhdGEtZmllbGRzL2J1dHRvbi1maWVsZC9idXR0b24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWVsZHMvYnV0dG9uLWZpZWxkL2J1dHRvbi1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbEUsT0FBTyxFQUFDLDRCQUE0QixFQUFFLDZCQUE2QixFQUFnQixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBT3BILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSw0QkFBNEI7SUFLbEUsWUFBWSxTQUEyQixFQUNqQixhQUE0QixFQUNhLHNCQUFzQztRQUNqRyxLQUFLLENBQUMsU0FBUyxFQUFHLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBRnZDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBR2xELENBQUM7SUFHRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztTQUMxRDtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztTQUM5RDtJQUNMLENBQUM7O2tIQXRCUSxvQkFBb0IsK0VBT0csNkJBQTZCO3NHQVBwRCxvQkFBb0IsOEVDVGpDLCsxRUF5Q0E7NEZEaENhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxpQkFBaUI7OzBCQVdkLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdEJ1dHRvbkZpZWxkQ29tcG9uZW50LCBOQUVfSU5GT1JNX0FCT1VUX0lOVkFMSURfREFUQSwgRGlhbG9nU2VydmljZX0gZnJvbSAnQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYy1idXR0b24tZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2J1dHRvbi1maWVsZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RCdXR0b25GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgYWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgc3RyZXRjaDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEEpIGluZm9ybUFib3V0SW52YWxpZERhdGE6IGJvb2xlYW4gfCBudWxsKSB7XG4gICAgICAgIHN1cGVyKHRyYW5zbGF0ZSwgIGRpYWxvZ1NlcnZpY2UsIGluZm9ybUFib3V0SW52YWxpZERhdGEpO1xuICAgIH1cblxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQgJiYgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmFsaWduKSB7XG4gICAgICAgICAgICB0aGlzLmFsaWduID0gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuYWxpZ247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudCAmJiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcyAmJlxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuc3RyZXRjaCkge1xuICAgICAgICAgICAgdGhpcy5zdHJldGNoID0gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuc3RyZXRjaDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuYy1kYXRhLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiIWRhdGFGaWVsZC5iZWhhdmlvci5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFGaWVsZF09XCJkYXRhRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFGaWVsZFRlbXBsYXRlXT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb2Zmc2V0XT1cInRhc2tPZmZzZXRcIj5cbjwvbmMtZGF0YS1maWVsZC10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b24gbGV0LXNob3dMYXJnZUxheW91dD1cInNob3dMYXJnZUxheW91dFwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydmbGV4LWVuZCc6IGFsaWduID09PSAnZW5kJywgJ2ZsZXgtc3RhcnQnOiBhbGlnbiA9PT0gJ3N0YXJ0JywgJ2ZsZXgtY2VudGVyJzogYWxpZ24gPT09ICdjZW50ZXInLCAnZnVsbC1idXR0b24td2lkdGgnOiBzdHJldGNoID09PSAndHJ1ZSd9XCI+XG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJuZXRncmlmLWxhYmVsXCIgKm5nSWY9XCIhc2hvd0xhcmdlTGF5b3V0LnZhbHVlXCI+XG4gICAgICAgICAgICB7e2RhdGFGaWVsZC50aXRsZX19XG4gICAgICAgICAgICA8bmMtcmVxdWlyZWQtbGFiZWwgKm5nSWY9XCJkYXRhRmllbGQuYmVoYXZpb3IucmVxdWlyZWRcIiBbaXNJbl09XCIhZGF0YUZpZWxkLmRpc2FibGVkXCI+PC9uYy1yZXF1aXJlZC1sYWJlbD5cbiAgICAgICAgICAgIDxicj5cbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnbWF0LXJhaXNlZC1idXR0b24nOiByZXNvbHZlQ29tcG9uZW50VHlwZSgpID09PSAncmFpc2VkJyxcbiAgICAgICAgICAgICAgICAnbWF0LXN0cm9rZWQtYnV0dG9uJzogcmVzb2x2ZUNvbXBvbmVudFR5cGUoKSA9PT0gJ3N0cm9rZWQnLFxuICAgICAgICAgICAgICAgICdtYXQtZmxhdC1idXR0b24nOiByZXNvbHZlQ29tcG9uZW50VHlwZSgpID09PSAnZmxhdCcsXG4gICAgICAgICAgICAgICAgJ21hdC1pY29uLWJ1dHRvbic6IHJlc29sdmVDb21wb25lbnRUeXBlKCkgPT09ICdpY29uJyxcbiAgICAgICAgICAgICAgICAnbWF0LWZhYic6IHJlc29sdmVDb21wb25lbnRUeXBlKCkgPT09ICdmYWInLFxuICAgICAgICAgICAgICAgICdtYXQtbWluaS1mYWInOiByZXNvbHZlQ29tcG9uZW50VHlwZSgpID09PSAnbWluaWZhYicsXG4gICAgICAgICAgICAgICAgJ2Z1bGwtYnV0dG9uLXdpZHRoJzogc3RyZXRjaCA9PT0gJ3RydWUnfVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJkYXRhRmllbGQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCBkYXRhRmllbGQud2FpdGluZ0ZvclJlc3BvbnNlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzb2x2ZVZhbHVlKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJkYXRhRmllbGQud2FpdGluZ0ZvclJlc3BvbnNlXCIgY2xhc3M9XCJncmlkLTEtMSBtYXJnaW4tYXV0b1wiID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIGNvbG9yPVwid2FyblwiIGRpYW1ldGVyPVwiMjJcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2xhYmVsLXdhaXRpbmcnOiBkYXRhRmllbGQud2FpdGluZ0ZvclJlc3BvbnNlfVwiIGNsYXNzPVwiZ3JpZC0xLTFcIj5cbiAgICAgICAgICAgICAgICAgICAge3soZGF0YUZpZWxkLnBsYWNlaG9sZGVyID09PSB1bmRlZmluZWQgfHwgZGF0YUZpZWxkLnBsYWNlaG9sZGVyID09PSAnJykgPyBkYXRhRmllbGQudGl0bGUgOiAoaXNJY29uVHlwZUJ1dHRvbigpID8gJycgOiBkYXRhRmllbGQucGxhY2Vob2xkZXIpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZ3JpZC0xLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzSWNvblR5cGVCdXR0b24oKSAmJiAhZGF0YUZpZWxkLndhaXRpbmdGb3JSZXNwb25zZVwiPnt7ZGF0YUZpZWxkLnBsYWNlaG9sZGVyfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJkYXRhRmllbGQuaXNJbnZhbGlkKGZvcm1Db250cm9sKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKCl9fTwvbWF0LWVycm9yPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RhdGEtZmllbGRzL2J1dHRvbi1maWVsZC9idXR0b24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWVsZHMvYnV0dG9uLWZpZWxkL2J1dHRvbi1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbEUsT0FBTyxFQUFDLDRCQUE0QixFQUFFLDZCQUE2QixFQUFnQixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBT3BILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSw0QkFBNEI7SUFLbEUsWUFBWSxTQUEyQixFQUNqQixhQUE0QixFQUNhLHNCQUFzQztRQUNqRyxLQUFLLENBQUMsU0FBUyxFQUFHLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBRnZDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBR2xELENBQUM7SUFHRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztTQUMxRDtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztTQUM5RDtJQUNMLENBQUM7O2tIQXRCUSxvQkFBb0IsK0VBT0csNkJBQTZCO3NHQVBwRCxvQkFBb0IsOEVDVGpDLG00RUF5Q0E7NEZEaENhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxpQkFBaUI7OzBCQVdkLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdEJ1dHRvbkZpZWxkQ29tcG9uZW50LCBOQUVfSU5GT1JNX0FCT1VUX0lOVkFMSURfREFUQSwgRGlhbG9nU2VydmljZX0gZnJvbSAnQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYy1idXR0b24tZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2J1dHRvbi1maWVsZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RCdXR0b25GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgYWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgc3RyZXRjaDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEEpIGluZm9ybUFib3V0SW52YWxpZERhdGE6IGJvb2xlYW4gfCBudWxsKSB7XG4gICAgICAgIHN1cGVyKHRyYW5zbGF0ZSwgIGRpYWxvZ1NlcnZpY2UsIGluZm9ybUFib3V0SW52YWxpZERhdGEpO1xuICAgIH1cblxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQgJiYgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmFsaWduKSB7XG4gICAgICAgICAgICB0aGlzLmFsaWduID0gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuYWxpZ247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudCAmJiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcyAmJlxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuc3RyZXRjaCkge1xuICAgICAgICAgICAgdGhpcy5zdHJldGNoID0gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuc3RyZXRjaDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuYy1kYXRhLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiIWRhdGFGaWVsZC5iZWhhdmlvci5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFGaWVsZF09XCJkYXRhRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFGaWVsZFRlbXBsYXRlXT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb2Zmc2V0XT1cInRhc2tPZmZzZXRcIj5cbjwvbmMtZGF0YS1maWVsZC10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b24gbGV0LXNob3dMYXJnZUxheW91dD1cInNob3dMYXJnZUxheW91dFwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydmbGV4LWVuZCc6IGFsaWduID09PSAnZW5kJywgJ2ZsZXgtc3RhcnQnOiBhbGlnbiA9PT0gJ3N0YXJ0JywgJ2ZsZXgtY2VudGVyJzogYWxpZ24gPT09ICdjZW50ZXInLCAnZnVsbC1idXR0b24td2lkdGgnOiBzdHJldGNoID09PSAndHJ1ZSd9XCI+XG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJuZXRncmlmLWxhYmVsXCIgKm5nSWY9XCIhc2hvd0xhcmdlTGF5b3V0LnZhbHVlXCI+XG4gICAgICAgICAgICB7e2RhdGFGaWVsZC50aXRsZX19XG4gICAgICAgICAgICA8bmMtcmVxdWlyZWQtbGFiZWwgKm5nSWY9XCJkYXRhRmllbGQuYmVoYXZpb3IucmVxdWlyZWRcIiBbaXNJbl09XCIhZGF0YUZpZWxkLmRpc2FibGVkXCI+PC9uYy1yZXF1aXJlZC1sYWJlbD5cbiAgICAgICAgICAgIDxicj5cbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnbWF0LXJhaXNlZC1idXR0b24nOiBkYXRhRmllbGQuZ2V0Q29tcG9uZW50VHlwZSgpID09PSAncmFpc2VkJyxcbiAgICAgICAgICAgICAgICAnbWF0LXN0cm9rZWQtYnV0dG9uJzogZGF0YUZpZWxkLmdldENvbXBvbmVudFR5cGUoKSA9PT0gJ3N0cm9rZWQnLFxuICAgICAgICAgICAgICAgICdtYXQtZmxhdC1idXR0b24nOiBkYXRhRmllbGQuZ2V0Q29tcG9uZW50VHlwZSgpID09PSAnZmxhdCcsXG4gICAgICAgICAgICAgICAgJ21hdC1pY29uLWJ1dHRvbic6IGRhdGFGaWVsZC5nZXRDb21wb25lbnRUeXBlKCkgPT09ICdpY29uJyxcbiAgICAgICAgICAgICAgICAnbWF0LWZhYic6IGRhdGFGaWVsZC5nZXRDb21wb25lbnRUeXBlKCkgPT09ICdmYWInLFxuICAgICAgICAgICAgICAgICdtYXQtbWluaS1mYWInOiBkYXRhRmllbGQuZ2V0Q29tcG9uZW50VHlwZSgpID09PSAnbWluaWZhYicsXG4gICAgICAgICAgICAgICAgJ2Z1bGwtYnV0dG9uLXdpZHRoJzogc3RyZXRjaCA9PT0gJ3RydWUnfVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJkYXRhRmllbGQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCBkYXRhRmllbGQud2FpdGluZ0ZvclJlc3BvbnNlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzb2x2ZVZhbHVlKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJkYXRhRmllbGQud2FpdGluZ0ZvclJlc3BvbnNlXCIgY2xhc3M9XCJncmlkLTEtMSBtYXJnaW4tYXV0b1wiID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIGNvbG9yPVwid2FyblwiIGRpYW1ldGVyPVwiMjJcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2xhYmVsLXdhaXRpbmcnOiBkYXRhRmllbGQud2FpdGluZ0ZvclJlc3BvbnNlfVwiIGNsYXNzPVwiZ3JpZC0xLTFcIj5cbiAgICAgICAgICAgICAgICAgICAge3soZGF0YUZpZWxkLnBsYWNlaG9sZGVyID09PSB1bmRlZmluZWQgfHwgZGF0YUZpZWxkLnBsYWNlaG9sZGVyID09PSAnJykgPyBkYXRhRmllbGQudGl0bGUgOiAoaXNJY29uVHlwZUJ1dHRvbigpID8gJycgOiBkYXRhRmllbGQucGxhY2Vob2xkZXIpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZ3JpZC0xLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzSWNvblR5cGVCdXR0b24oKSAmJiAhZGF0YUZpZWxkLndhaXRpbmdGb3JSZXNwb25zZVwiPnt7ZGF0YUZpZWxkLnBsYWNlaG9sZGVyfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJkYXRhRmllbGQuaXNJbnZhbGlkKGZvcm1Db250cm9sKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKCl9fTwvbWF0LWVycm9yPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==