@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47

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 (170) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
  3. package/esm2020/lib/components/loader/loader.component.mjs +23 -23
  4. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
  5. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
  6. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
  7. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
  8. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
  9. package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
  10. package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
  11. package/esm2020/lib/config.mjs +4 -4
  12. package/esm2020/lib/helpers.service.mjs +470 -470
  13. package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
  14. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
  15. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
  16. package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
  17. package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
  18. package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
  19. package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
  20. package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
  21. package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
  22. package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
  23. package/esm2020/lib/mattertagData.mjs +165 -165
  24. package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
  25. package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
  26. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
  27. package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
  28. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
  29. package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
  30. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
  31. package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
  32. package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
  33. package/esm2020/lib/services/base-tab.service.mjs +24 -24
  34. package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
  35. package/esm2020/lib/services/content.service.mjs +135 -135
  36. package/esm2020/lib/services/filter.service.mjs +599 -599
  37. package/esm2020/lib/services/intervention.service.mjs +236 -236
  38. package/esm2020/lib/services/locale.service.mjs +45 -45
  39. package/esm2020/lib/services/matterport-import.service.mjs +340 -340
  40. package/esm2020/lib/services/matterport.service.mjs +1587 -1587
  41. package/esm2020/lib/services/models/affectation.service.mjs +60 -60
  42. package/esm2020/lib/services/models/base-object.service.mjs +70 -70
  43. package/esm2020/lib/services/models/capture.service.mjs +34 -34
  44. package/esm2020/lib/services/models/comment.service.mjs +98 -98
  45. package/esm2020/lib/services/models/domain.service.mjs +78 -78
  46. package/esm2020/lib/services/models/equipment.service.mjs +683 -683
  47. package/esm2020/lib/services/models/event.service.mjs +128 -128
  48. package/esm2020/lib/services/models/feature.service.mjs +380 -380
  49. package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
  50. package/esm2020/lib/services/models/layer.service.mjs +33 -33
  51. package/esm2020/lib/services/models/measurement.service.mjs +199 -199
  52. package/esm2020/lib/services/models/mission.service.mjs +206 -206
  53. package/esm2020/lib/services/models/navigation.service.mjs +92 -92
  54. package/esm2020/lib/services/models/node.service.mjs +31 -31
  55. package/esm2020/lib/services/models/object3D.service.mjs +364 -364
  56. package/esm2020/lib/services/models/operation.service.mjs +59 -59
  57. package/esm2020/lib/services/models/organisation.service.mjs +73 -73
  58. package/esm2020/lib/services/models/plan.service.mjs +799 -799
  59. package/esm2020/lib/services/models/poi.service.mjs +103 -103
  60. package/esm2020/lib/services/models/profile.service.mjs +58 -58
  61. package/esm2020/lib/services/models/property.service.mjs +44 -44
  62. package/esm2020/lib/services/models/space.service.mjs +204 -204
  63. package/esm2020/lib/services/models/template.service.mjs +41 -41
  64. package/esm2020/lib/services/models/ticket.service.mjs +526 -526
  65. package/esm2020/lib/services/models/visit.service.mjs +130 -130
  66. package/esm2020/lib/services/models/zone.service.mjs +225 -225
  67. package/esm2020/lib/services/navigator.service.mjs +212 -212
  68. package/esm2020/lib/services/s3.service.mjs +137 -137
  69. package/esm2020/lib/services/search.service.mjs +124 -124
  70. package/esm2020/lib/services/support.service.mjs +42 -42
  71. package/esm2020/lib/services/tag.service.mjs +111 -111
  72. package/esm2020/lib/services/user.service.mjs +501 -501
  73. package/esm2020/lib/services/validators.service.mjs +50 -50
  74. package/esm2020/lib/services/viewer.service.mjs +389 -389
  75. package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
  76. package/esm2020/lib/services/zoneChange.service.mjs +30 -30
  77. package/esm2020/lib/types.service.mjs +311 -311
  78. package/esm2020/lib/validators/email.directive.mjs +7 -7
  79. package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
  80. package/esm2020/lib/validators/number.directive.mjs +12 -12
  81. package/esm2020/lib/validators/text.directive.mjs +12 -12
  82. package/esm2020/public-api.mjs +72 -72
  83. package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
  84. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
  85. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  86. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
  87. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  88. package/lib/components/csv-export/csv-export.component.d.ts +18 -18
  89. package/lib/components/loader/loader.component.d.ts +10 -10
  90. package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
  91. package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
  92. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
  93. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
  94. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
  95. package/lib/components/search-bar/search-bar.component.d.ts +16 -16
  96. package/lib/components/support-modal/support-modal.component.d.ts +26 -26
  97. package/lib/config.d.ts +22 -22
  98. package/lib/helpers.service.d.ts +79 -79
  99. package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
  100. package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
  101. package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
  102. package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
  103. package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
  104. package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
  105. package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
  106. package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
  107. package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
  108. package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
  109. package/lib/mattertagData.d.ts +70 -70
  110. package/lib/ngx-smarterplan-core.module.d.ts +29 -29
  111. package/lib/ngx-smarterplan-core.service.d.ts +6 -6
  112. package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
  113. package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
  114. package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
  115. package/lib/pipes/safe-url.pipe.d.ts +10 -10
  116. package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
  117. package/lib/pipes/username-from-id.pipe.d.ts +11 -11
  118. package/lib/services/amplify-cache.service.d.ts +37 -37
  119. package/lib/services/base-tab.service.d.ts +10 -10
  120. package/lib/services/baseVisibility.service.d.ts +9 -9
  121. package/lib/services/content.service.d.ts +28 -28
  122. package/lib/services/filter.service.d.ts +60 -60
  123. package/lib/services/intervention.service.d.ts +25 -25
  124. package/lib/services/locale.service.d.ts +23 -23
  125. package/lib/services/matterport-import.service.d.ts +53 -53
  126. package/lib/services/matterport.service.d.ts +336 -336
  127. package/lib/services/models/affectation.service.d.ts +14 -14
  128. package/lib/services/models/base-object.service.d.ts +20 -20
  129. package/lib/services/models/capture.service.d.ts +13 -13
  130. package/lib/services/models/comment.service.d.ts +26 -26
  131. package/lib/services/models/domain.service.d.ts +19 -19
  132. package/lib/services/models/equipment.service.d.ts +93 -93
  133. package/lib/services/models/event.service.d.ts +43 -43
  134. package/lib/services/models/feature.service.d.ts +75 -75
  135. package/lib/services/models/hashtag.service.d.ts +13 -13
  136. package/lib/services/models/layer.service.d.ts +11 -11
  137. package/lib/services/models/measurement.service.d.ts +51 -51
  138. package/lib/services/models/mission.service.d.ts +39 -39
  139. package/lib/services/models/navigation.service.d.ts +29 -29
  140. package/lib/services/models/node.service.d.ts +12 -12
  141. package/lib/services/models/object3D.service.d.ts +57 -57
  142. package/lib/services/models/operation.service.d.ts +15 -15
  143. package/lib/services/models/organisation.service.d.ts +19 -19
  144. package/lib/services/models/plan.service.d.ts +133 -133
  145. package/lib/services/models/poi.service.d.ts +25 -25
  146. package/lib/services/models/profile.service.d.ts +16 -16
  147. package/lib/services/models/property.service.d.ts +13 -13
  148. package/lib/services/models/space.service.d.ts +46 -46
  149. package/lib/services/models/template.service.d.ts +15 -15
  150. package/lib/services/models/ticket.service.d.ts +93 -93
  151. package/lib/services/models/visit.service.d.ts +24 -24
  152. package/lib/services/models/zone.service.d.ts +50 -50
  153. package/lib/services/navigator.service.d.ts +61 -61
  154. package/lib/services/s3.service.d.ts +14 -14
  155. package/lib/services/search.service.d.ts +20 -20
  156. package/lib/services/support.service.d.ts +17 -17
  157. package/lib/services/tag.service.d.ts +29 -29
  158. package/lib/services/user.service.d.ts +118 -118
  159. package/lib/services/validators.service.d.ts +18 -18
  160. package/lib/services/viewer.service.d.ts +110 -110
  161. package/lib/services/zone-drawer.service.d.ts +7 -7
  162. package/lib/services/zoneChange.service.d.ts +17 -17
  163. package/lib/types.service.d.ts +842 -842
  164. package/lib/validators/email.directive.d.ts +2 -2
  165. package/lib/validators/no-empty.directive.d.ts +2 -2
  166. package/lib/validators/number.directive.d.ts +2 -2
  167. package/lib/validators/text.directive.d.ts +2 -2
  168. package/package.json +2 -2
  169. package/public-api.d.ts +64 -64
  170. package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
@@ -1,124 +1,124 @@
1
- /* eslint-disable no-case-declarations */
2
- /* eslint-disable no-param-reassign */
3
- /* eslint-disable no-await-in-loop */
4
- import { Injectable } from "@angular/core";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./filter.service";
7
- import * as i2 from "./models/equipment.service";
8
- export var SearchObjectType;
9
- (function (SearchObjectType) {
10
- SearchObjectType["USER"] = "USER";
11
- SearchObjectType["EQUIPMENT"] = "EQUIPMENT";
12
- SearchObjectType["TICKET"] = "TICKET";
13
- SearchObjectType["LOCATION"] = "LOCATION";
14
- SearchObjectType["FEATURE"] = "FEATURE";
15
- SearchObjectType["TEMPLATE"] = "TEMPLATE";
16
- })(SearchObjectType || (SearchObjectType = {}));
17
- export class SearchService {
18
- constructor(filterService, equipmentService) {
19
- this.filterService = filterService;
20
- this.equipmentService = equipmentService;
21
- }
22
- async searchForTermForTypeInMap(term, objectType, searchable) {
23
- let results;
24
- switch (objectType) {
25
- case SearchObjectType.EQUIPMENT:
26
- results = new Map();
27
- for (const [space, equips] of searchable.entries()) {
28
- const filteredEquips = this.filterService.filterEquipmentsForTerm(equips, term);
29
- results.set(space, filteredEquips);
30
- }
31
- break;
32
- case SearchObjectType.TICKET:
33
- results = new Map();
34
- for (const [space, tickets] of searchable.entries()) {
35
- await Promise.all(tickets.map(async (ticket) => {
36
- const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
37
- if (equips.length > 0) {
38
- ticket.equipments = equips;
39
- }
40
- }));
41
- const filteredTickets = this.filterService.filterTicketsForTerm(tickets, term);
42
- results.set(space, filteredTickets);
43
- }
44
- break;
45
- case SearchObjectType.LOCATION:
46
- results = this.filterService.filterLocationsForTerm(searchable, term);
47
- break;
48
- case SearchObjectType.USER:
49
- results = [];
50
- for (const orgObject of searchable) {
51
- const orgResults = this.filterService.filterOrganisationsForTerm([orgObject.org], term);
52
- if (orgResults.length === 0) {
53
- const profiles = orgObject.users.map((object) => object.user);
54
- const userResults = this.filterService.filterUsersForTerm(profiles, term);
55
- const filteredUserMissions = orgObject.users.filter((object) => userResults.includes(object.user));
56
- if (userResults.length > 0) {
57
- results.push({
58
- org: orgObject.org,
59
- users: filteredUserMissions,
60
- });
61
- }
62
- }
63
- else {
64
- results.push(orgObject);
65
- }
66
- }
67
- break;
68
- case SearchObjectType.FEATURE:
69
- results = new Map();
70
- for (const [space, features] of searchable.entries()) {
71
- const filteredFeatures = await this.filterService.filterFeaturesForTerm(features, term);
72
- results.set(space, filteredFeatures);
73
- }
74
- break;
75
- case SearchObjectType.TEMPLATE:
76
- results = new Map();
77
- for (const [zone, templates] of searchable) {
78
- const templateResults = this.filterService.filterTemplatesForTerm(templates, term);
79
- if (templateResults.length > 0) {
80
- results.set(zone, templateResults);
81
- }
82
- }
83
- break;
84
- default:
85
- break;
86
- }
87
- return results;
88
- }
89
- async searchForTermForTypeInList(term, objectType, searchable) {
90
- let results;
91
- switch (objectType) {
92
- case SearchObjectType.EQUIPMENT:
93
- results = this.filterService.filterEquipmentsForTerm(searchable, term);
94
- break;
95
- case SearchObjectType.TICKET:
96
- await Promise.all(searchable.map(async (ticket) => {
97
- const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
98
- if (equips.length > 0) {
99
- ticket.equipements = equips;
100
- }
101
- }));
102
- results = this.filterService.filterTicketsForTerm(searchable, term);
103
- break;
104
- case SearchObjectType.LOCATION:
105
- results = this.filterService.filterLocationsForTerm(searchable, term);
106
- break;
107
- case SearchObjectType.FEATURE:
108
- results = this.filterService.filterFeaturesForTerm(searchable, term);
109
- break;
110
- default:
111
- break;
112
- }
113
- return results;
114
- }
115
- }
116
- SearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, deps: [{ token: i1.FilterService }, { token: i2.EquipmentService }], target: i0.ɵɵFactoryTarget.Injectable });
117
- SearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, providedIn: "root" });
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, decorators: [{
119
- type: Injectable,
120
- args: [{
121
- providedIn: "root",
122
- }]
123
- }], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.EquipmentService }]; } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRTtZQUNoQixLQUFLLGdCQUFnQixDQUFDLFNBQVM7Z0JBQzNCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNoRCxNQUFNLGNBQWMsR0FDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FDdEMsTUFBTSxFQUNOLElBQUksQ0FDUCxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUN4QixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDakQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO3dCQUN6QixNQUFNLE1BQU0sR0FDUixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FDOUMsTUFBTSxDQUNULENBQUM7d0JBQ04sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDbkIsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7eUJBQzlCO29CQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7b0JBQ0YsTUFBTSxlQUFlLEdBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQ1AsQ0FBQztvQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztpQkFDdkM7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQy9DLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUN0QixPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO29CQUNoQyxNQUFNLFVBQVUsR0FDWixJQUFJLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUN6QyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFDZixJQUFJLENBQ1AsQ0FBQztvQkFDTixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUN6QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDaEMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzFCLENBQUM7d0JBQ0YsTUFBTSxXQUFXLEdBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDakMsUUFBUSxFQUNSLElBQUksQ0FDUCxDQUFDO3dCQUNOLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQy9DLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQzt3QkFDRixJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDO2dDQUNULEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRztnQ0FDbEIsS0FBSyxFQUFFLG9CQUFvQjs2QkFDOUIsQ0FBQyxDQUFDO3lCQUNOO3FCQUNKO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQzNCO2lCQUNKO2dCQUNELE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNsRCxNQUFNLGdCQUFnQixHQUNsQixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQzFDLFFBQVEsRUFDUixJQUFJLENBQ1AsQ0FBQztvQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUN4QztnQkFDRCxNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRTtvQkFDeEMsTUFBTSxlQUFlLEdBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQ3JDLFNBQXNCLEVBQ3RCLElBQUksQ0FDUCxDQUFDO29CQUNOLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO3FCQUN0QztpQkFDSjtnQkFDRCxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTTtTQUNiO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQywwQkFBMEIsQ0FDNUIsSUFBWSxFQUNaLFVBQTRCLEVBQzVCLFVBQWlCO1FBRWpCLElBQUksT0FBTyxDQUFDO1FBQ1osUUFBUSxVQUFVLEVBQUU7WUFDaEIsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTO2dCQUMzQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FDaEQsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE1BQU07Z0JBQ3hCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDYixVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtvQkFDNUIsTUFBTSxNQUFNLEdBQ1IsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQzlDLE1BQU0sQ0FDVCxDQUFDO29CQUNOLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ25CLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO3FCQUMvQjtnQkFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO2dCQUNGLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUM3QyxVQUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQy9DLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FDOUMsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVjtnQkFDSSxNQUFNO1NBQ2I7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzswR0EvSlEsYUFBYTs4R0FBYixhQUFhLGNBRlYsTUFBTTsyRkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNaXNzaW9uIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi9maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gXCIuL21vZGVscy9lcXVpcG1lbnQuc2VydmljZVwiO1xuXG5leHBvcnQgZW51bSBTZWFyY2hPYmplY3RUeXBlIHtcbiAgICBVU0VSID0gXCJVU0VSXCIsXG4gICAgRVFVSVBNRU5UID0gXCJFUVVJUE1FTlRcIixcbiAgICBUSUNLRVQgPSBcIlRJQ0tFVFwiLFxuICAgIExPQ0FUSU9OID0gXCJMT0NBVElPTlwiLFxuICAgIEZFQVRVUkUgPSBcIkZFQVRVUkVcIixcbiAgICBURU1QTEFURSA9IFwiVEVNUExBVEVcIixcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVxdWlwbWVudFNlcnZpY2U6IEVxdWlwbWVudFNlcnZpY2UsXG4gICAgKSB7IH1cblxuICAgIGFzeW5jIHNlYXJjaEZvclRlcm1Gb3JUeXBlSW5NYXAoXG4gICAgICAgIHRlcm06IHN0cmluZyxcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcbiAgICAgICAgc2VhcmNoYWJsZTogYW55LFxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGxldCByZXN1bHRzO1xuICAgICAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5FUVVJUE1FTlQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtzcGFjZSwgZXF1aXBzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEVxdWlwcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRFcXVpcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5USUNLRVQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtzcGFjZSwgdGlja2V0c10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLm1hcChhc3luYyAodGlja2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JUaWNrZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWlwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcG1lbnRzID0gZXF1aXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFRpY2tldHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZFRpY2tldHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckxvY2F0aW9uc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5VU0VSOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ09iamVjdCBvZiBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZ1Jlc3VsdHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9yZ2FuaXNhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmdPYmplY3Qub3JnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yZ1Jlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9maWxlcyA9IG9yZ09iamVjdC51c2Vycy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gb2JqZWN0LnVzZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclJlc3VsdHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJVc2Vyc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFVzZXJNaXNzaW9ucyA9IG9yZ09iamVjdC51c2Vycy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gdXNlclJlc3VsdHMuaW5jbHVkZXMob2JqZWN0LnVzZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VyUmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnOiBvcmdPYmplY3Qub3JnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyczogZmlsdGVyZWRVc2VyTWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gob3JnT2JqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGZlYXR1cmVzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZlYXR1cmVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJGZWF0dXJlc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZEZlYXR1cmVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVEVNUExBVEU6XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFt6b25lLCB0ZW1wbGF0ZXNdIG9mIHNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUZW1wbGF0ZXNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlcyBhcyBNaXNzaW9uW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wbGF0ZVJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoem9uZSwgdGVtcGxhdGVSZXN1bHRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbkxpc3QoXG4gICAgICAgIHRlcm06IHN0cmluZyxcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcbiAgICAgICAgc2VhcmNoYWJsZTogYW55W10sXG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICBsZXQgcmVzdWx0cztcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5USUNLRVQ6XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUubWFwKGFzeW5jICh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVxdWlwcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JUaWNrZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWlwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LmVxdWlwZW1lbnRzID0gZXF1aXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckxvY2F0aW9uc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbn1cbiJdfQ==
1
+ /* eslint-disable no-case-declarations */
2
+ /* eslint-disable no-param-reassign */
3
+ /* eslint-disable no-await-in-loop */
4
+ import { Injectable } from "@angular/core";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./filter.service";
7
+ import * as i2 from "./models/equipment.service";
8
+ export var SearchObjectType;
9
+ (function (SearchObjectType) {
10
+ SearchObjectType["USER"] = "USER";
11
+ SearchObjectType["EQUIPMENT"] = "EQUIPMENT";
12
+ SearchObjectType["TICKET"] = "TICKET";
13
+ SearchObjectType["LOCATION"] = "LOCATION";
14
+ SearchObjectType["FEATURE"] = "FEATURE";
15
+ SearchObjectType["TEMPLATE"] = "TEMPLATE";
16
+ })(SearchObjectType || (SearchObjectType = {}));
17
+ export class SearchService {
18
+ constructor(filterService, equipmentService) {
19
+ this.filterService = filterService;
20
+ this.equipmentService = equipmentService;
21
+ }
22
+ async searchForTermForTypeInMap(term, objectType, searchable) {
23
+ let results;
24
+ switch (objectType) {
25
+ case SearchObjectType.EQUIPMENT:
26
+ results = new Map();
27
+ for (const [space, equips] of searchable.entries()) {
28
+ const filteredEquips = this.filterService.filterEquipmentsForTerm(equips, term);
29
+ results.set(space, filteredEquips);
30
+ }
31
+ break;
32
+ case SearchObjectType.TICKET:
33
+ results = new Map();
34
+ for (const [space, tickets] of searchable.entries()) {
35
+ await Promise.all(tickets.map(async (ticket) => {
36
+ const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
37
+ if (equips.length > 0) {
38
+ ticket.equipments = equips;
39
+ }
40
+ }));
41
+ const filteredTickets = this.filterService.filterTicketsForTerm(tickets, term);
42
+ results.set(space, filteredTickets);
43
+ }
44
+ break;
45
+ case SearchObjectType.LOCATION:
46
+ results = this.filterService.filterLocationsForTerm(searchable, term);
47
+ break;
48
+ case SearchObjectType.USER:
49
+ results = [];
50
+ for (const orgObject of searchable) {
51
+ const orgResults = this.filterService.filterOrganisationsForTerm([orgObject.org], term);
52
+ if (orgResults.length === 0) {
53
+ const profiles = orgObject.users.map((object) => object.user);
54
+ const userResults = this.filterService.filterUsersForTerm(profiles, term);
55
+ const filteredUserMissions = orgObject.users.filter((object) => userResults.includes(object.user));
56
+ if (userResults.length > 0) {
57
+ results.push({
58
+ org: orgObject.org,
59
+ users: filteredUserMissions,
60
+ });
61
+ }
62
+ }
63
+ else {
64
+ results.push(orgObject);
65
+ }
66
+ }
67
+ break;
68
+ case SearchObjectType.FEATURE:
69
+ results = new Map();
70
+ for (const [space, features] of searchable.entries()) {
71
+ const filteredFeatures = await this.filterService.filterFeaturesForTerm(features, term);
72
+ results.set(space, filteredFeatures);
73
+ }
74
+ break;
75
+ case SearchObjectType.TEMPLATE:
76
+ results = new Map();
77
+ for (const [zone, templates] of searchable) {
78
+ const templateResults = this.filterService.filterTemplatesForTerm(templates, term);
79
+ if (templateResults.length > 0) {
80
+ results.set(zone, templateResults);
81
+ }
82
+ }
83
+ break;
84
+ default:
85
+ break;
86
+ }
87
+ return results;
88
+ }
89
+ async searchForTermForTypeInList(term, objectType, searchable) {
90
+ let results;
91
+ switch (objectType) {
92
+ case SearchObjectType.EQUIPMENT:
93
+ results = this.filterService.filterEquipmentsForTerm(searchable, term);
94
+ break;
95
+ case SearchObjectType.TICKET:
96
+ await Promise.all(searchable.map(async (ticket) => {
97
+ const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
98
+ if (equips.length > 0) {
99
+ ticket.equipements = equips;
100
+ }
101
+ }));
102
+ results = this.filterService.filterTicketsForTerm(searchable, term);
103
+ break;
104
+ case SearchObjectType.LOCATION:
105
+ results = this.filterService.filterLocationsForTerm(searchable, term);
106
+ break;
107
+ case SearchObjectType.FEATURE:
108
+ results = this.filterService.filterFeaturesForTerm(searchable, term);
109
+ break;
110
+ default:
111
+ break;
112
+ }
113
+ return results;
114
+ }
115
+ }
116
+ SearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, deps: [{ token: i1.FilterService }, { token: i2.EquipmentService }], target: i0.ɵɵFactoryTarget.Injectable });
117
+ SearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, providedIn: "root" });
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, decorators: [{
119
+ type: Injectable,
120
+ args: [{
121
+ providedIn: "root",
122
+ }]
123
+ }], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.EquipmentService }]; } });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRTtZQUNoQixLQUFLLGdCQUFnQixDQUFDLFNBQVM7Z0JBQzNCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNoRCxNQUFNLGNBQWMsR0FDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FDdEMsTUFBTSxFQUNOLElBQUksQ0FDUCxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFH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QUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQy9DLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FDOUMsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVjtnQkFDSSxNQUFNO1NBQ2I7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzswR0EvSlEsYUFBYTs4R0FBYixhQUFhLGNBRlYsTUFBTTsyRkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1pc3Npb24gfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsdGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gXCIuL21vZGVscy9lcXVpcG1lbnQuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGVudW0gU2VhcmNoT2JqZWN0VHlwZSB7XHJcbiAgICBVU0VSID0gXCJVU0VSXCIsXHJcbiAgICBFUVVJUE1FTlQgPSBcIkVRVUlQTUVOVFwiLFxyXG4gICAgVElDS0VUID0gXCJUSUNLRVRcIixcclxuICAgIExPQ0FUSU9OID0gXCJMT0NBVElPTlwiLFxyXG4gICAgRkVBVFVSRSA9IFwiRkVBVFVSRVwiLFxyXG4gICAgVEVNUExBVEUgPSBcIlRFTVBMQVRFXCIsXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2hGb3JUZXJtRm9yVHlwZUluTWFwKFxyXG4gICAgICAgIHRlcm06IHN0cmluZyxcclxuICAgICAgICBvYmplY3RUeXBlOiBTZWFyY2hPYmplY3RUeXBlLFxyXG4gICAgICAgIHNlYXJjaGFibGU6IGFueSxcclxuICAgICk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdHM7XHJcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGVxdWlwc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEVxdWlwcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJFcXVpcG1lbnRzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoc3BhY2UsIGZpbHRlcmVkRXF1aXBzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCB0aWNrZXRzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLm1hcChhc3luYyAodGlja2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcXVpcHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcG1lbnRzID0gZXF1aXBzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkVGlja2V0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZFRpY2tldHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTG9jYXRpb25zRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5VU0VSOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcmdPYmplY3Qgb2Ygc2VhcmNoYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZ1Jlc3VsdHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT3JnYW5pc2F0aW9uc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JnT2JqZWN0Lm9yZ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmdSZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9maWxlcyA9IG9yZ09iamVjdC51c2Vycy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0KSA9PiBvYmplY3QudXNlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclJlc3VsdHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclVzZXJzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRVc2VyTWlzc2lvbnMgPSBvcmdPYmplY3QudXNlcnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gdXNlclJlc3VsdHMuaW5jbHVkZXMob2JqZWN0LnVzZXIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlclJlc3VsdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmc6IG9yZ09iamVjdC5vcmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcnM6IGZpbHRlcmVkVXNlck1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gob3JnT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkZFQVRVUkU6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGZlYXR1cmVzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRmVhdHVyZXMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZEZlYXR1cmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVEVNUExBVEU6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbem9uZSwgdGVtcGxhdGVzXSBvZiBzZWFyY2hhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRlbXBsYXRlc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXMgYXMgTWlzc2lvbltdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcGxhdGVSZXN1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoem9uZSwgdGVtcGxhdGVSZXN1bHRzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2hGb3JUZXJtRm9yVHlwZUluTGlzdChcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcclxuICAgICAgICBzZWFyY2hhYmxlOiBhbnlbXSxcclxuICAgICk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICBsZXQgcmVzdWx0cztcclxuICAgICAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkVRVUlQTUVOVDpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZS5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcXVpcHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JUaWNrZXQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWlwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBlbWVudHMgPSBlcXVpcHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkxPQ0FUSU9OOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkZFQVRVUkU6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,42 +1,42 @@
1
- import { Injectable } from '@angular/core';
2
- import { API } from "aws-amplify";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ng-bootstrap/ng-bootstrap";
5
- export class SupportService {
6
- constructor(modalService) {
7
- this.modalService = modalService;
8
- }
9
- /**
10
- * Open the support form
11
- */
12
- openSupportForm(formComponent) {
13
- this.modalReference = this.modalService.open(formComponent, {
14
- modalDialogClass: 'modal-padding',
15
- });
16
- }
17
- /**
18
- * Send support request to jira
19
- */
20
- async sendSupport(data) {
21
- return new Promise(async (resolve) => {
22
- const response = await API.post("helpEmail", "/jira-email/new", {
23
- body: data,
24
- });
25
- if (response.err) {
26
- resolve('error');
27
- }
28
- else {
29
- resolve('send');
30
- }
31
- });
32
- }
33
- }
34
- SupportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, deps: [{ token: i1.NgbModal }], target: i0.ɵɵFactoryTarget.Injectable });
35
- SupportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, providedIn: 'root' });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, decorators: [{
37
- type: Injectable,
38
- args: [{
39
- providedIn: 'root'
40
- }]
41
- }], ctorParameters: function () { return [{ type: i1.NgbModal }]; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBbUIsWUFBc0I7UUFBdEIsaUJBQVksR0FBWixZQUFZLENBQVU7SUFBSSxDQUFDO0lBRTlDOztPQUVHO0lBQ0gsZUFBZSxDQUFDLGFBQWE7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsZUFBZTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQVE7UUFDeEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLEVBQUU7WUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRTtnQkFDOUQsSUFBSSxFQUFHLElBQUk7YUFDWixDQUFDLENBQUM7WUFDSCxJQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUM7Z0JBQ2QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ2pCO2lCQUFJO2dCQUNILE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNoQjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7MkdBNUJVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyAgQVBJIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTdXBwb3J0U2VydmljZSB7XG4gIG1vZGFsUmVmZXJlbmNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7IH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgc3VwcG9ydCBmb3JtXG4gICAqL1xuICBvcGVuU3VwcG9ydEZvcm0oZm9ybUNvbXBvbmVudCkge1xuICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGZvcm1Db21wb25lbnQsIHtcbiAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6ICdtb2RhbC1wYWRkaW5nJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIHN1cHBvcnQgcmVxdWVzdCB0byBqaXJhXG4gICAqL1xuICBhc3luYyBzZW5kU3VwcG9ydChkYXRhOmFueSk6UHJvbWlzZTxzdHJpbmc+e1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSk9PntcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQVBJLnBvc3QoXCJoZWxwRW1haWxcIiwgXCIvamlyYS1lbWFpbC9uZXdcIiwge1xuICAgICAgICBib2R5IDogZGF0YSxcbiAgICAgIH0pO1xuICAgICAgaWYocmVzcG9uc2UuZXJyKXtcbiAgICAgICAgcmVzb2x2ZSgnZXJyb3InKVxuICAgICAgfWVsc2V7XG4gICAgICAgIHJlc29sdmUoJ3NlbmQnKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
1
+ import { Injectable } from '@angular/core';
2
+ import { API } from "aws-amplify";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
5
+ export class SupportService {
6
+ constructor(modalService) {
7
+ this.modalService = modalService;
8
+ }
9
+ /**
10
+ * Open the support form
11
+ */
12
+ openSupportForm(formComponent) {
13
+ this.modalReference = this.modalService.open(formComponent, {
14
+ modalDialogClass: 'modal-padding',
15
+ });
16
+ }
17
+ /**
18
+ * Send support request to jira
19
+ */
20
+ async sendSupport(data) {
21
+ return new Promise(async (resolve) => {
22
+ const response = await API.post("helpEmail", "/jira-email/new", {
23
+ body: data,
24
+ });
25
+ if (response.err) {
26
+ resolve('error');
27
+ }
28
+ else {
29
+ resolve('send');
30
+ }
31
+ });
32
+ }
33
+ }
34
+ SupportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, deps: [{ token: i1.NgbModal }], target: i0.ɵɵFactoryTarget.Injectable });
35
+ SupportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, providedIn: 'root' });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, decorators: [{
37
+ type: Injectable,
38
+ args: [{
39
+ providedIn: 'root'
40
+ }]
41
+ }], ctorParameters: function () { return [{ type: i1.NgbModal }]; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBbUIsWUFBc0I7UUFBdEIsaUJBQVksR0FBWixZQUFZLENBQVU7SUFBSSxDQUFDO0lBRTlDOztPQUVHO0lBQ0gsZUFBZSxDQUFDLGFBQWE7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsZUFBZTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQVE7UUFDeEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLEVBQUU7WUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRTtnQkFDOUQsSUFBSSxFQUFHLElBQUk7YUFDWixDQUFDLENBQUM7WUFDSCxJQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUM7Z0JBQ2QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ2pCO2lCQUFJO2dCQUNILE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNoQjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7MkdBNUJVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7ICBBUEkgfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cHBvcnRTZXJ2aWNlIHtcclxuICBtb2RhbFJlZmVyZW5jZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIHRoZSBzdXBwb3J0IGZvcm1cclxuICAgKi9cclxuICBvcGVuU3VwcG9ydEZvcm0oZm9ybUNvbXBvbmVudCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZm9ybUNvbXBvbmVudCwge1xyXG4gICAgICBtb2RhbERpYWxvZ0NsYXNzOiAnbW9kYWwtcGFkZGluZycsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgc3VwcG9ydCByZXF1ZXN0IHRvIGppcmFcclxuICAgKi9cclxuICBhc3luYyBzZW5kU3VwcG9ydChkYXRhOmFueSk6UHJvbWlzZTxzdHJpbmc+e1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKT0+e1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEFQSS5wb3N0KFwiaGVscEVtYWlsXCIsIFwiL2ppcmEtZW1haWwvbmV3XCIsIHtcclxuICAgICAgICBib2R5IDogZGF0YSxcclxuICAgICAgfSk7XHJcbiAgICAgIGlmKHJlc3BvbnNlLmVycil7XHJcbiAgICAgICAgcmVzb2x2ZSgnZXJyb3InKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZXNvbHZlKCdzZW5kJylcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl19