@senior-gestao-relacionamento/angular-components 1.3.0 → 1.4.0

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 (180) hide show
  1. package/bundles/senior-gestao-relacionamento-angular-components.umd.js +903 -158
  2. package/bundles/senior-gestao-relacionamento-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js.map +1 -1
  5. package/components/index.d.ts +2 -0
  6. package/components/refresh-websocket-alert/index.d.ts +2 -0
  7. package/components/refresh-websocket-alert/refresh-websocket-alert.component.d.ts +14 -0
  8. package/components/refresh-websocket-alert/refresh-websocket-alert.module.d.ts +2 -0
  9. package/components/reports/enums/format-enum.d.ts +9 -0
  10. package/components/reports/enums/index.d.ts +2 -0
  11. package/components/reports/enums/view-mode-enum.d.ts +4 -0
  12. package/components/reports/index.d.ts +5 -0
  13. package/components/reports/models/callback-event.d.ts +4 -0
  14. package/components/reports/models/generate-report-input-dto.d.ts +11 -0
  15. package/components/reports/models/generate-report-output-dto.d.ts +3 -0
  16. package/components/reports/models/index.d.ts +7 -0
  17. package/components/reports/models/parameter.d.ts +4 -0
  18. package/components/reports/models/report-dto.d.ts +6 -0
  19. package/components/reports/models/reports-options.d.ts +14 -0
  20. package/components/reports/models/response-list-report-dto.d.ts +8 -0
  21. package/components/reports/reports.component.d.ts +41 -0
  22. package/components/reports/reports.module.d.ts +2 -0
  23. package/components/reports/reports.service.d.ts +16 -0
  24. package/esm2015/components/index.js +3 -0
  25. package/esm2015/components/refresh-websocket-alert/index.js +3 -0
  26. package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.component.js +57 -0
  27. package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.module.js +26 -0
  28. package/esm2015/components/reports/enums/format-enum.js +11 -0
  29. package/esm2015/components/reports/enums/index.js +3 -0
  30. package/esm2015/components/reports/enums/view-mode-enum.js +6 -0
  31. package/esm2015/components/reports/index.js +5 -0
  32. package/esm2015/components/reports/models/callback-event.js +1 -0
  33. package/esm2015/components/reports/models/generate-report-input-dto.js +1 -0
  34. package/esm2015/components/reports/models/generate-report-output-dto.js +1 -0
  35. package/esm2015/components/reports/models/index.js +1 -0
  36. package/esm2015/components/reports/models/parameter.js +1 -0
  37. package/esm2015/components/reports/models/report-dto.js +1 -0
  38. package/esm2015/components/reports/models/reports-options.js +1 -0
  39. package/esm2015/components/reports/models/response-list-report-dto.js +1 -0
  40. package/esm2015/components/reports/reports.component.js +202 -0
  41. package/esm2015/components/reports/reports.module.js +43 -0
  42. package/esm2015/components/reports/reports.service.js +73 -0
  43. package/esm2015/locale/fallback.js +16 -0
  44. package/esm2015/public-api.js +5 -7
  45. package/esm2015/senior-gestao-relacionamento-angular-components.js +3 -2
  46. package/esm2015/services/current-collaborator/current-collaborator.module.js +4 -2
  47. package/esm2015/services/current-collaborator/current-collaborator.service.js +24 -8
  48. package/esm2015/services/current-collaborator/models/collaborator-dto.js +1 -1
  49. package/esm2015/services/current-collaborator/models/collaborator.js +1 -1
  50. package/esm2015/services/current-collaborator/models/e-070-fil-crmx-dto.js +1 -1
  51. package/esm2015/services/current-collaborator/models/e-070-fil-crmx.js +1 -1
  52. package/esm2015/services/index.js +7 -0
  53. package/esm2015/services/schedule-form-rules/enums/index.js +6 -0
  54. package/esm2015/services/schedule-form-rules/enums/month-enum.js +16 -0
  55. package/esm2015/services/schedule-form-rules/enums/ordinal-week-day-enum.js +9 -0
  56. package/esm2015/services/schedule-form-rules/enums/recurrence-enum.js +8 -0
  57. package/esm2015/services/schedule-form-rules/enums/repeat-when-enum.js +6 -0
  58. package/esm2015/services/schedule-form-rules/enums/week-day-enum.js +11 -0
  59. package/esm2015/services/schedule-form-rules/index.js +4 -0
  60. package/esm2015/services/schedule-form-rules/schedule-form-rules.module.js +15 -0
  61. package/esm2015/services/schedule-form-rules/schedule-form-rules.service.js +105 -0
  62. package/esm2015/services/standard-filters/index.js +3 -3
  63. package/esm2015/services/standard-filters/{standard filters.module.js → standard-filters.module.js} +2 -2
  64. package/esm2015/services/standard-filters/{standard filters.service.js → standard-filters.service.js} +1 -1
  65. package/esm2015/services/storage/storage.module.js +17 -0
  66. package/esm2015/services/storage/storage.service.js +39 -27
  67. package/esm2015/services/websocket/index.js +3 -1
  68. package/esm2015/services/websocket/models/event-dto.js +1 -0
  69. package/esm2015/services/websocket/models/event.js +13 -0
  70. package/esm2015/services/websocket/models/index.js +3 -0
  71. package/esm2015/services/websocket/models/topic-dto.js +1 -0
  72. package/esm2015/services/websocket/models/topic.js +25 -0
  73. package/esm2015/services/websocket/websocket.module.js +18 -0
  74. package/esm2015/services/websocket/websocket.service.js +103 -51
  75. package/esm2015/utils/index.js +3 -0
  76. package/esm2015/utils/string-converter.service.js +7 -0
  77. package/esm2015/utils/value-changes.service.js +7 -0
  78. package/esm5/components/index.js +3 -0
  79. package/esm5/components/refresh-websocket-alert/index.js +3 -0
  80. package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.component.js +59 -0
  81. package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.module.js +29 -0
  82. package/esm5/components/reports/enums/format-enum.js +11 -0
  83. package/esm5/components/reports/enums/index.js +3 -0
  84. package/esm5/components/reports/enums/view-mode-enum.js +6 -0
  85. package/esm5/components/reports/index.js +5 -0
  86. package/esm5/components/reports/models/callback-event.js +1 -0
  87. package/esm5/components/reports/models/generate-report-input-dto.js +1 -0
  88. package/esm5/components/reports/models/generate-report-output-dto.js +1 -0
  89. package/esm5/components/reports/models/index.js +1 -0
  90. package/esm5/components/reports/models/parameter.js +1 -0
  91. package/esm5/components/reports/models/report-dto.js +1 -0
  92. package/esm5/components/reports/models/reports-options.js +1 -0
  93. package/esm5/components/reports/models/response-list-report-dto.js +1 -0
  94. package/esm5/components/reports/reports.component.js +208 -0
  95. package/esm5/components/reports/reports.module.js +46 -0
  96. package/esm5/components/reports/reports.service.js +75 -0
  97. package/esm5/locale/fallback.js +16 -0
  98. package/esm5/public-api.js +5 -7
  99. package/esm5/senior-gestao-relacionamento-angular-components.js +3 -2
  100. package/esm5/services/current-collaborator/current-collaborator.module.js +4 -2
  101. package/esm5/services/current-collaborator/current-collaborator.service.js +26 -9
  102. package/esm5/services/current-collaborator/models/collaborator-dto.js +1 -1
  103. package/esm5/services/current-collaborator/models/collaborator.js +1 -1
  104. package/esm5/services/current-collaborator/models/e-070-fil-crmx-dto.js +1 -1
  105. package/esm5/services/current-collaborator/models/e-070-fil-crmx.js +1 -1
  106. package/esm5/services/index.js +7 -0
  107. package/esm5/services/schedule-form-rules/enums/index.js +6 -0
  108. package/esm5/services/schedule-form-rules/enums/month-enum.js +16 -0
  109. package/esm5/services/schedule-form-rules/enums/ordinal-week-day-enum.js +9 -0
  110. package/esm5/services/schedule-form-rules/enums/recurrence-enum.js +8 -0
  111. package/esm5/services/schedule-form-rules/enums/repeat-when-enum.js +6 -0
  112. package/esm5/services/schedule-form-rules/enums/week-day-enum.js +11 -0
  113. package/esm5/services/schedule-form-rules/index.js +4 -0
  114. package/esm5/services/schedule-form-rules/schedule-form-rules.module.js +18 -0
  115. package/esm5/services/schedule-form-rules/schedule-form-rules.service.js +109 -0
  116. package/esm5/services/standard-filters/index.js +3 -3
  117. package/esm5/services/standard-filters/{standard filters.module.js → standard-filters.module.js} +2 -2
  118. package/esm5/services/standard-filters/{standard filters.service.js → standard-filters.service.js} +1 -1
  119. package/esm5/services/storage/storage.module.js +20 -0
  120. package/esm5/services/storage/storage.service.js +35 -26
  121. package/esm5/services/websocket/index.js +3 -1
  122. package/esm5/services/websocket/models/event-dto.js +1 -0
  123. package/esm5/services/websocket/models/event.js +20 -0
  124. package/esm5/services/websocket/models/index.js +3 -0
  125. package/esm5/services/websocket/models/topic-dto.js +1 -0
  126. package/esm5/services/websocket/models/topic.js +29 -0
  127. package/esm5/services/websocket/websocket.module.js +21 -0
  128. package/esm5/services/websocket/websocket.service.js +107 -51
  129. package/esm5/utils/index.js +3 -0
  130. package/esm5/utils/string-converter.service.js +11 -0
  131. package/esm5/utils/value-changes.service.js +11 -0
  132. package/fesm2015/senior-gestao-relacionamento-angular-components.js +848 -148
  133. package/fesm2015/senior-gestao-relacionamento-angular-components.js.map +1 -1
  134. package/fesm5/senior-gestao-relacionamento-angular-components.js +902 -159
  135. package/fesm5/senior-gestao-relacionamento-angular-components.js.map +1 -1
  136. package/locale/fallback.d.ts +1 -0
  137. package/package.json +45 -43
  138. package/public-api.d.ts +4 -6
  139. package/senior-gestao-relacionamento-angular-components.d.ts +2 -1
  140. package/senior-gestao-relacionamento-angular-components.metadata.json +1 -1
  141. package/services/current-collaborator/current-collaborator.service.d.ts +5 -2
  142. package/services/current-collaborator/models/collaborator-dto.d.ts +1 -0
  143. package/services/current-collaborator/models/collaborator.d.ts +1 -0
  144. package/services/current-collaborator/models/e-070-fil-crmx-dto.d.ts +1 -0
  145. package/services/current-collaborator/models/e-070-fil-crmx.d.ts +1 -0
  146. package/services/index.d.ts +6 -0
  147. package/services/schedule-form-rules/enums/index.d.ts +5 -0
  148. package/services/schedule-form-rules/enums/month-enum.d.ts +14 -0
  149. package/services/schedule-form-rules/enums/ordinal-week-day-enum.d.ts +7 -0
  150. package/services/schedule-form-rules/enums/recurrence-enum.d.ts +6 -0
  151. package/services/schedule-form-rules/enums/repeat-when-enum.d.ts +4 -0
  152. package/services/schedule-form-rules/enums/week-day-enum.d.ts +9 -0
  153. package/services/schedule-form-rules/index.d.ts +3 -0
  154. package/services/schedule-form-rules/schedule-form-rules.module.d.ts +2 -0
  155. package/services/schedule-form-rules/schedule-form-rules.service.d.ts +12 -0
  156. package/services/standard-filters/index.d.ts +2 -2
  157. package/services/storage/storage.module.d.ts +2 -0
  158. package/services/storage/storage.service.d.ts +15 -12
  159. package/services/websocket/index.d.ts +2 -0
  160. package/services/websocket/models/event-dto.d.ts +5 -0
  161. package/services/websocket/models/event.d.ts +8 -0
  162. package/services/websocket/models/index.d.ts +4 -0
  163. package/services/websocket/{primitive-event-dto.d.ts → models/topic-dto.d.ts} +1 -1
  164. package/services/websocket/models/topic.d.ts +10 -0
  165. package/services/websocket/websocket.module.d.ts +2 -0
  166. package/services/websocket/websocket.service.d.ts +20 -12
  167. package/{services/utils → utils}/index.d.ts +1 -0
  168. package/utils/value-changes.service.d.ts +4 -0
  169. package/esm2015/services/utils/index.js +0 -2
  170. package/esm2015/services/utils/string-converter.service.js +0 -7
  171. package/esm2015/services/websocket/primitive-event-dto.js +0 -1
  172. package/esm2015/services/websocket/send-event-dto.js +0 -1
  173. package/esm5/services/utils/index.js +0 -2
  174. package/esm5/services/utils/string-converter.service.js +0 -11
  175. package/esm5/services/websocket/primitive-event-dto.js +0 -1
  176. package/esm5/services/websocket/send-event-dto.js +0 -1
  177. package/services/websocket/send-event-dto.d.ts +0 -5
  178. /package/services/standard-filters/{standard filters.module.d.ts → standard-filters.module.d.ts} +0 -0
  179. /package/services/standard-filters/{standard filters.service.d.ts → standard-filters.service.d.ts} +0 -0
  180. /package/{services/utils → utils}/string-converter.service.d.ts +0 -0
@@ -1,69 +1,125 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { Injectable } from '@angular/core';
3
- import { Subject } from 'rxjs';
3
+ import { Observable, Subject } from 'rxjs';
4
4
  import { Stomp } from '@stomp/stompjs';
5
5
  import * as SockJS from 'sockjs-client';
6
- import { StorageService } from '../storage';
6
+ import { StorageService } from '../storage/storage.service';
7
+ import { concatMap } from 'rxjs/operators';
8
+ import { Router } from "@angular/router";
9
+ import { Event } from "./models/event";
7
10
  import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/router";
12
+ import * as i2 from "../storage/storage.service";
8
13
  var WebsocketService = /** @class */ (function () {
9
- function WebsocketService() {
10
- this.primitiveEventObservables = [];
11
- var url = StorageService.getBaseUrl().concat('/websocket/subscription');
12
- var socket = new SockJS(url);
13
- this.client = Stomp.over(socket);
14
+ function WebsocketService(router, storageService) {
15
+ var _this = this;
16
+ this.router = router;
17
+ this.storageService = storageService;
18
+ this._client = Stomp.over(new SockJS(this.storageService.getBaseUrl().concat('/websocket/subscription')));
19
+ this._bindQueue = new Subject();
20
+ this._eventBindingList = [];
21
+ this._messageQueue = [];
22
+ this._bindQueue.pipe(concatMap(function (event) { return _this._bindObservable(event); })).subscribe();
14
23
  }
15
- WebsocketService.prototype.startConnect = function () {
24
+ WebsocketService.prototype.bind = function (eventDto) {
25
+ eventDto.originCallback = eventDto.originCallback || this.router.url;
26
+ this._bindQueue.next(Event.fromDto(eventDto));
27
+ };
28
+ WebsocketService.prototype._bindObservable = function (event) {
16
29
  var _this = this;
17
- this.client.connect({}, function () { return _this.onConnected(); }, function () { return _this.onConnectError(); });
30
+ return new Observable(function (observer) {
31
+ if (_this._client.connected) {
32
+ _this._registerBind(event);
33
+ _this._finishBindObservable(observer);
34
+ }
35
+ else {
36
+ _this._connectClient(event, observer);
37
+ }
38
+ });
18
39
  };
19
- WebsocketService.prototype.onEvent = function (primitiveEvent) {
20
- var domain = primitiveEvent.domain, service = primitiveEvent.service, primitive = primitiveEvent.primitive, allUsers = primitiveEvent.allUsers;
21
- var observable = new Subject();
22
- var primitiveEventWithObservable = {
23
- domain: domain,
24
- service: service,
25
- primitive: primitive,
26
- allUsers: allUsers,
27
- observable: observable,
28
- };
29
- this.primitiveEventObservables.push(primitiveEventWithObservable);
30
- return observable;
40
+ WebsocketService.prototype._finishBindObservable = function (observer) {
41
+ observer.next();
42
+ observer.complete();
31
43
  };
32
- WebsocketService.prototype.sendEvent = function (params) {
33
- var topic = this.getTopicEvent(params);
34
- this.client.send(topic, params.headers, JSON.stringify({
35
- data: params.message
36
- }));
44
+ WebsocketService.prototype._connectClient = function (event, observer) {
45
+ var _this = this;
46
+ this._client.connect({}, function () {
47
+ _this._registerBind(event);
48
+ _this._finishBindObservable(observer);
49
+ }, function () { return observer.error(new Error('Websocket connection error!')); });
50
+ };
51
+ WebsocketService.prototype._registerBind = function (event) {
52
+ var eventBinding = this._findEventBinding(event);
53
+ if (eventBinding) {
54
+ this._remakeBind(event, eventBinding);
55
+ }
56
+ else {
57
+ this._makeBind(event);
58
+ }
37
59
  };
38
- WebsocketService.prototype.onConnected = function () {
60
+ WebsocketService.prototype._remakeBind = function (event, eventBinding) {
39
61
  var _this = this;
40
- this.primitiveEventObservables.forEach(function (event) {
41
- _this.client.subscribe(_this.getTopicEvent(event), (function (message) {
42
- var body = JSON.parse(message.body);
43
- event.observable.next(body.data);
44
- }));
45
- });
62
+ eventBinding.callback = event.callback;
63
+ this._messageQueue
64
+ .filter(function (messageQueue) { return messageQueue.event.match(event); })
65
+ .forEach(function (messageQueue) { return _this._executeCallback(messageQueue.message, event); });
46
66
  };
47
- WebsocketService.prototype.onConnectError = function () {
48
- console.log('Error in connect!');
67
+ WebsocketService.prototype._makeBind = function (event) {
68
+ var _this = this;
69
+ this._eventBindingList.push(event);
70
+ this._client.subscribe(event.getTopic(this.storageService.getTenantDomain(), this.storageService.getToken()), function (message) { return _this._executeCallback(message, event); });
49
71
  };
50
- WebsocketService.prototype.getTopicEvent = function (primitiveEvent) {
51
- var topic = '/topic/'.concat(StorageService.getTenantDomain());
52
- if (primitiveEvent.allUsers === false) {
53
- topic = topic
54
- .concat('/')
55
- .concat(StorageService.getToken());
72
+ WebsocketService.prototype._executeCallback = function (message, event) {
73
+ var _this = this;
74
+ var eventBinding = this._findEventBinding(event);
75
+ if (eventBinding.originCallback === this.router.url) {
76
+ this._findEventBinding(event).callback(this._resolveRefs(JSON.parse(message.body).data));
77
+ }
78
+ else {
79
+ this._messageQueue
80
+ .filter(function (messageQueue) { return messageQueue.event.match(event); })
81
+ .forEach(function (messageQueue, index) { return _this._messageQueue.splice(index, 1); });
82
+ this._messageQueue.push({ message: message, event: event });
56
83
  }
57
- topic = topic
58
- .concat('/')
59
- .concat(primitiveEvent.domain)
60
- .concat('/')
61
- .concat(primitiveEvent.service)
62
- .concat('/')
63
- .concat(primitiveEvent.primitive);
64
- return topic;
65
84
  };
66
- WebsocketService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WebsocketService_Factory() { return new WebsocketService(); }, token: WebsocketService, providedIn: "root" });
85
+ WebsocketService.prototype._findEventBinding = function (event) {
86
+ return this._eventBindingList.find(function (eventBinding) { return eventBinding.match(event); });
87
+ };
88
+ WebsocketService.prototype._resolveRefs = function (payload) {
89
+ var resolve = function (obj, rootObj) {
90
+ if (Array.isArray(obj)) {
91
+ obj.forEach(function (item) { return resolve(item, rootObj); });
92
+ }
93
+ else if (obj !== null && typeof obj === 'object') {
94
+ Object.keys(obj).forEach(function (key) {
95
+ if (key === '$ref' && obj[key]) {
96
+ var refPath = obj[key]; // Caminho da referência
97
+ Object.assign(obj, getDataFromRef(refPath, rootObj));
98
+ delete obj[key];
99
+ }
100
+ else {
101
+ resolve(obj[key], rootObj);
102
+ }
103
+ });
104
+ }
105
+ };
106
+ var getDataFromRef = function (ref, rootObj) {
107
+ var regex = /\["(.*?)"\]/g;
108
+ var result = [];
109
+ var match;
110
+ while ((match = regex.exec(ref)) !== null) {
111
+ result.push(match[1]);
112
+ }
113
+ return result.reduce(function (acc, part) { return acc && acc[part]; }, rootObj);
114
+ };
115
+ resolve(payload, payload);
116
+ return payload;
117
+ };
118
+ WebsocketService.ctorParameters = function () { return [
119
+ { type: Router },
120
+ { type: StorageService }
121
+ ]; };
122
+ WebsocketService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WebsocketService_Factory() { return new WebsocketService(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.StorageService)); }, token: WebsocketService, providedIn: "root" });
67
123
  WebsocketService = __decorate([
68
124
  Injectable({
69
125
  providedIn: 'root',
@@ -72,4 +128,4 @@ var WebsocketService = /** @class */ (function () {
72
128
  return WebsocketService;
73
129
  }());
74
130
  export { WebsocketService };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1yZWxhY2lvbmFtZW50by9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJzZXJ2aWNlcy93ZWJzb2NrZXQvd2Vic29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQWUsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFlBQVksQ0FBQzs7QUFXMUM7SUFLSTtRQUZpQiw4QkFBeUIsR0FBd0MsRUFBRSxDQUFDO1FBS2pGLElBQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMxRSxJQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLHVDQUFZLEdBQW5CO1FBQUEsaUJBTUM7UUFMRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDZixFQUFFLEVBQ0YsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLEVBQUUsRUFBbEIsQ0FBa0IsRUFDeEIsY0FBTSxPQUFBLEtBQUksQ0FBQyxjQUFjLEVBQUUsRUFBckIsQ0FBcUIsQ0FDOUIsQ0FBQztJQUNOLENBQUM7SUFFTSxrQ0FBTyxHQUFkLFVBQWtCLGNBQWlDO1FBQ3hDLElBQUEsOEJBQU0sRUFBRSxnQ0FBTyxFQUFFLG9DQUFTLEVBQUUsa0NBQVEsQ0FBbUI7UUFFOUQsSUFBTSxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUssQ0FBQztRQUVwQyxJQUFNLDRCQUE0QixHQUFvQztZQUNsRSxNQUFNLFFBQUE7WUFDTixPQUFPLFNBQUE7WUFDUCxTQUFTLFdBQUE7WUFDVCxRQUFRLFVBQUE7WUFDUixVQUFVLFlBQUE7U0FDYixDQUFDO1FBRUYsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBRWxFLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxvQ0FBUyxHQUFoQixVQUFpQixNQUFvQjtRQUNqQyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNaLEtBQUssRUFDTCxNQUFNLENBQUMsT0FBTyxFQUNkLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDWCxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU8sc0NBQVcsR0FBbkI7UUFBQSxpQkFVQztRQVRHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLO1lBQ3hDLEtBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUNqQixLQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUN6QixDQUFDLFVBQUMsT0FBTztnQkFDTCxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx5Q0FBYyxHQUF0QjtRQUNJLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sd0NBQWEsR0FBckIsVUFBc0IsY0FBaUM7UUFDbkQsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUUvRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO1lBQ25DLEtBQUssR0FBRyxLQUFLO2lCQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ1gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUNyQztTQUNKO1FBRUQsS0FBSyxHQUFHLEtBQUs7YUFDUixNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ1gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7YUFDN0IsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUNYLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO2FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDWCxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUNwQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O0lBeEZRLGdCQUFnQjtRQUg1QixVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO09BQ1csZ0JBQWdCLENBMEY1QjsyQkF6R0Q7Q0F5R0MsQUExRkQsSUEwRkM7U0ExRlksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbXBhdENsaWVudCwgU3RvbXB9IGZyb20gJ0BzdG9tcC9zdG9tcGpzJztcbmltcG9ydCAqIGFzIFNvY2tKUyBmcm9tICdzb2NranMtY2xpZW50JztcbmltcG9ydCB7U3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uL3N0b3JhZ2UnO1xuaW1wb3J0IHsgUHJpbWl0aXZlRXZlbnREdG8gfSBmcm9tICcuL3ByaW1pdGl2ZS1ldmVudC1kdG8nO1xuaW1wb3J0IHsgU2VuZEV2ZW50RHRvIH0gZnJvbSAnLi9zZW5kLWV2ZW50LWR0byc7XG5cbmludGVyZmFjZSBQcmltaXRpdmVFdmVudFdpdGhPYnNlcnZhYmxlPFQ+IGV4dGVuZHMgUHJpbWl0aXZlRXZlbnREdG8ge1xuICAgIG9ic2VydmFibGU6IFN1YmplY3Q8VD47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IENvbXBhdENsaWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW1pdGl2ZUV2ZW50T2JzZXJ2YWJsZXM6IFByaW1pdGl2ZUV2ZW50V2l0aE9ic2VydmFibGU8YW55PltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcblxuICAgICkge1xuICAgICAgICBjb25zdCB1cmwgPSBTdG9yYWdlU2VydmljZS5nZXRCYXNlVXJsKCkuY29uY2F0KCcvd2Vic29ja2V0L3N1YnNjcmlwdGlvbicpO1xuICAgICAgICBjb25zdCBzb2NrZXQgPSBuZXcgU29ja0pTKHVybCk7XG5cbiAgICAgICAgdGhpcy5jbGllbnQgPSBTdG9tcC5vdmVyKHNvY2tldCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0Q29ubmVjdCgpIHtcbiAgICAgICAgdGhpcy5jbGllbnQuY29ubmVjdChcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5vbkNvbm5lY3RlZCgpLFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5vbkNvbm5lY3RFcnJvcigpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkV2ZW50PFQ+KHByaW1pdGl2ZUV2ZW50OiBQcmltaXRpdmVFdmVudER0byk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBjb25zdCB7ZG9tYWluLCBzZXJ2aWNlLCBwcmltaXRpdmUsIGFsbFVzZXJzfSA9IHByaW1pdGl2ZUV2ZW50O1xuXG4gICAgICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgU3ViamVjdDxUPigpO1xuXG4gICAgICAgIGNvbnN0IHByaW1pdGl2ZUV2ZW50V2l0aE9ic2VydmFibGU6IFByaW1pdGl2ZUV2ZW50V2l0aE9ic2VydmFibGU8VD4gPSB7XG4gICAgICAgICAgICBkb21haW4sXG4gICAgICAgICAgICBzZXJ2aWNlLFxuICAgICAgICAgICAgcHJpbWl0aXZlLFxuICAgICAgICAgICAgYWxsVXNlcnMsXG4gICAgICAgICAgICBvYnNlcnZhYmxlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucHJpbWl0aXZlRXZlbnRPYnNlcnZhYmxlcy5wdXNoKHByaW1pdGl2ZUV2ZW50V2l0aE9ic2VydmFibGUpO1xuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kRXZlbnQocGFyYW1zOiBTZW5kRXZlbnREdG8pIHtcbiAgICAgICAgY29uc3QgdG9waWMgPSB0aGlzLmdldFRvcGljRXZlbnQocGFyYW1zKTtcblxuICAgICAgICB0aGlzLmNsaWVudC5zZW5kKFxuICAgICAgICAgICAgdG9waWMsXG4gICAgICAgICAgICBwYXJhbXMuaGVhZGVycyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBkYXRhOiBwYXJhbXMubWVzc2FnZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ29ubmVjdGVkKCkge1xuICAgICAgICB0aGlzLnByaW1pdGl2ZUV2ZW50T2JzZXJ2YWJsZXMuZm9yRWFjaChldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsaWVudC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRUb3BpY0V2ZW50KGV2ZW50KSxcbiAgICAgICAgICAgICAgICAoKG1lc3NhZ2UgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBKU09OLnBhcnNlKG1lc3NhZ2UuYm9keSk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50Lm9ic2VydmFibGUubmV4dChib2R5LmRhdGEpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ29ubmVjdEVycm9yKCkge1xuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gY29ubmVjdCEnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRvcGljRXZlbnQocHJpbWl0aXZlRXZlbnQ6IFByaW1pdGl2ZUV2ZW50RHRvKSB7XG4gICAgICAgIGxldCB0b3BpYyA9ICcvdG9waWMvJy5jb25jYXQoU3RvcmFnZVNlcnZpY2UuZ2V0VGVuYW50RG9tYWluKCkpO1xuXG4gICAgICAgIGlmIChwcmltaXRpdmVFdmVudC5hbGxVc2VycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRvcGljID0gdG9waWNcbiAgICAgICAgICAgICAgICAuY29uY2F0KCcvJylcbiAgICAgICAgICAgICAgICAuY29uY2F0KFN0b3JhZ2VTZXJ2aWNlLmdldFRva2VuKCkpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cblxuICAgICAgICB0b3BpYyA9IHRvcGljXG4gICAgICAgICAgICAuY29uY2F0KCcvJylcbiAgICAgICAgICAgIC5jb25jYXQocHJpbWl0aXZlRXZlbnQuZG9tYWluKVxuICAgICAgICAgICAgLmNvbmNhdCgnLycpXG4gICAgICAgICAgICAuY29uY2F0KHByaW1pdGl2ZUV2ZW50LnNlcnZpY2UpXG4gICAgICAgICAgICAuY29uY2F0KCcvJylcbiAgICAgICAgICAgIC5jb25jYXQocHJpbWl0aXZlRXZlbnQucHJpbWl0aXZlKVxuICAgICAgICA7XG5cbiAgICAgICAgcmV0dXJuIHRvcGljO1xuICAgIH1cblxufVxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1yZWxhY2lvbmFtZW50by9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJzZXJ2aWNlcy93ZWJzb2NrZXQvd2Vic29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFPdkM7SUFjSSwwQkFDcUIsTUFBYyxFQUNkLGNBQThCO1FBRm5ELGlCQU9DO1FBTm9CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFkbEMsWUFBTyxHQUFpQixLQUFLLENBQUMsSUFBSSxDQUMvQyxJQUFJLE1BQU0sQ0FDTixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUNyRSxDQUNKLENBQUM7UUFFZSxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQUVsQyxzQkFBaUIsR0FBWSxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBd0MsRUFBRSxDQUFDO1FBTXJFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNoQixTQUFTLENBQUMs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QUFDO2FBQ3pCO1lBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQUMsR0FBRyxFQUFFLElBQUksSUFBSyxPQUFBLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQWhCLENBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFBO1FBRUQsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxQixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOztnQkF0SDRCLE1BQU07Z0JBQ0UsY0FBYzs7O0lBaEIxQyxnQkFBZ0I7UUFINUIsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztPQUNXLGdCQUFnQixDQXNJNUI7MkJBcEpEO0NBb0pDLEFBdElELElBc0lDO1NBdElZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBhdENsaWVudCwgU3RvbXAgfSBmcm9tICdAc3RvbXAvc3RvbXBqcyc7XG5pbXBvcnQgKiBhcyBTb2NrSlMgZnJvbSAnc29ja2pzLWNsaWVudCc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3N0b3JhZ2Uvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4vbW9kZWxzL2V2ZW50XCI7XG5pbXBvcnQgeyBFdmVudER0byB9IGZyb20gXCIuL21vZGVscy9ldmVudC1kdG9cIjtcbmltcG9ydCB7IElNZXNzYWdlIH0gZnJvbSBcIkBzdG9tcC9zdG9tcGpzL2VzbTUvaS1tZXNzYWdlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2xpZW50OiBDb21wYXRDbGllbnQgPSBTdG9tcC5vdmVyKFxuICAgICAgICBuZXcgU29ja0pTIChcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QmFzZVVybCgpLmNvbmNhdCgnL3dlYnNvY2tldC9zdWJzY3JpcHRpb24nKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2JpbmRRdWV1ZSA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRCaW5kaW5nTGlzdDogRXZlbnRbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZVF1ZXVlOiB7bWVzc2FnZTogSU1lc3NhZ2UsIGV2ZW50OiBFdmVudH1bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2JpbmRRdWV1ZS5waXBlKFxuICAgICAgICAgICAgY29uY2F0TWFwKGV2ZW50ID0+IHRoaXMuX2JpbmRPYnNlcnZhYmxlKGV2ZW50KSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmluZChldmVudER0bzogRXZlbnREdG8pIHtcbiAgICAgICAgZXZlbnREdG8ub3JpZ2luQ2FsbGJhY2sgPSBldmVudER0by5vcmlnaW5DYWxsYmFjayB8fCB0aGlzLnJvdXRlci51cmxcbiAgICAgICAgdGhpcy5fYmluZFF1ZXVlLm5leHQoRXZlbnQuZnJvbUR0byhldmVudER0bykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2JpbmRPYnNlcnZhYmxlKGV2ZW50OiBFdmVudCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4ob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NsaWVudC5jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWdpc3RlckJpbmQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaEJpbmRPYnNlcnZhYmxlKG9ic2VydmVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29ubmVjdENsaWVudChldmVudCwgb2JzZXJ2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9maW5pc2hCaW5kT2JzZXJ2YWJsZShvYnNlcnZlcjogYW55KSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb25uZWN0Q2xpZW50KGV2ZW50OiBFdmVudCwgb2JzZXJ2ZXI6IGFueSkge1xuICAgICAgICB0aGlzLl9jbGllbnQuY29ubmVjdChcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyQmluZChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmluaXNoQmluZE9ic2VydmFibGUob2JzZXJ2ZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmVycm9yKG5ldyBFcnJvcignV2Vic29ja2V0IGNvbm5lY3Rpb24gZXJyb3IhJykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVnaXN0ZXJCaW5kKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBldmVudEJpbmRpbmcgPSB0aGlzLl9maW5kRXZlbnRCaW5kaW5nKGV2ZW50KTtcblxuICAgICAgICBpZiAoZXZlbnRCaW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1ha2VCaW5kKGV2ZW50LCBldmVudEJpbmRpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbWFrZUJpbmQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVtYWtlQmluZChldmVudDogRXZlbnQsIGV2ZW50QmluZGluZzogRXZlbnQpIHtcbiAgICAgICAgZXZlbnRCaW5kaW5nLmNhbGxiYWNrID0gZXZlbnQuY2FsbGJhY2s7XG5cbiAgICAgICAgdGhpcy5fbWVzc2FnZVF1ZXVlXG4gICAgICAgICAgICAuZmlsdGVyKG1lc3NhZ2VRdWV1ZSA9PiBtZXNzYWdlUXVldWUuZXZlbnQubWF0Y2goZXZlbnQpKVxuICAgICAgICAgICAgLmZvckVhY2gobWVzc2FnZVF1ZXVlID0+IHRoaXMuX2V4ZWN1dGVDYWxsYmFjayhtZXNzYWdlUXVldWUubWVzc2FnZSwgZXZlbnQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tYWtlQmluZChldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRCaW5kaW5nTGlzdC5wdXNoKGV2ZW50KTtcblxuICAgICAgICB0aGlzLl9jbGllbnQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgZXZlbnQuZ2V0VG9waWModGhpcy5zdG9yYWdlU2VydmljZS5nZXRUZW5hbnREb21haW4oKSwgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRUb2tlbigpKSxcbiAgICAgICAgICAgIChtZXNzYWdlKSA9PiB0aGlzLl9leGVjdXRlQ2FsbGJhY2sobWVzc2FnZSwgZXZlbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZXhlY3V0ZUNhbGxiYWNrKG1lc3NhZ2U6IElNZXNzYWdlLCBldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZXZlbnRCaW5kaW5nID0gdGhpcy5fZmluZEV2ZW50QmluZGluZyhldmVudCk7XG5cbiAgICAgICAgaWYgKGV2ZW50QmluZGluZy5vcmlnaW5DYWxsYmFjayA9PT0gdGhpcy5yb3V0ZXIudXJsKSB7XG4gICAgICAgICAgICB0aGlzLl9maW5kRXZlbnRCaW5kaW5nKGV2ZW50KS5jYWxsYmFjayh0aGlzLl9yZXNvbHZlUmVmcyhKU09OLnBhcnNlKG1lc3NhZ2UuYm9keSkuZGF0YSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVF1ZXVlXG4gICAgICAgICAgICAgICAgLmZpbHRlcihtZXNzYWdlUXVldWUgPT4gbWVzc2FnZVF1ZXVlLmV2ZW50Lm1hdGNoKGV2ZW50KSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgobWVzc2FnZVF1ZXVlLCBpbmRleCkgPT4gdGhpcy5fbWVzc2FnZVF1ZXVlLnNwbGljZShpbmRleCwgMSkpO1xuXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlUXVldWUucHVzaCh7bWVzc2FnZSwgZXZlbnR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRFdmVudEJpbmRpbmcoZXZlbnQ6IEV2ZW50KTogRXZlbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRCaW5kaW5nTGlzdC5maW5kKGV2ZW50QmluZGluZyA9PiBldmVudEJpbmRpbmcubWF0Y2goZXZlbnQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNvbHZlUmVmcyhwYXlsb2FkOiBhbnkpOiAgYW55IHtcblxuICAgICAgICBjb25zdCByZXNvbHZlID0gKG9iajogYW55LCByb290T2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgICAgICBvYmouZm9yRWFjaChpdGVtID0+IHJlc29sdmUoaXRlbSwgcm9vdE9iaikpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJyRyZWYnICYmIG9ialtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZQYXRoID0gb2JqW2tleV07IC8vIENhbWluaG8gZGEgcmVmZXLDqm5jaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCBnZXREYXRhRnJvbVJlZihyZWZQYXRoLCByb290T2JqKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9ialtrZXldLCByb290T2JqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ2V0RGF0YUZyb21SZWYgPSAocmVmOiBzdHJpbmcsIHJvb3RPYmo6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVnZXggPSAvXFxbXCIoLio/KVwiXFxdL2c7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGxldCBtYXRjaDtcblxuICAgICAgICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMocmVmKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXRjaFsxXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIHJvb3RPYmopO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShwYXlsb2FkLCBwYXlsb2FkKTtcblxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './string-converter.service';
2
+ export * from './value-changes.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1yZWxhY2lvbmFtZW50by9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJ1dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0cmluZy1jb252ZXJ0ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlLWNoYW5nZXMuc2VydmljZSc7Il19
@@ -0,0 +1,11 @@
1
+ var StringConverterService = /** @class */ (function () {
2
+ function StringConverterService() {
3
+ }
4
+ StringConverterService.toUnderscore = function (camelCase) {
5
+ var regex = /([a-z])([A-Z])/g;
6
+ return camelCase.replace(regex, '$1_$2').toLowerCase();
7
+ };
8
+ return StringConverterService;
9
+ }());
10
+ export { StringConverterService };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWNvbnZlcnRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcmVsYWNpb25hbWVudG8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsidXRpbHMvc3RyaW5nLWNvbnZlcnRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0lBQUE7SUFNQSxDQUFDO0lBSmlCLG1DQUFZLEdBQTFCLFVBQTJCLFNBQWlCO1FBQ3hDLElBQU0sS0FBSyxHQUFXLGlCQUFpQixDQUFDO1FBQ3hDLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUNMLDZCQUFDO0FBQUQsQ0FBQyxBQU5ELElBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjbGFzcyBTdHJpbmdDb252ZXJ0ZXJTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgdG9VbmRlcnNjb3JlKGNhbWVsQ2FzZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVnZXg6IFJlZ0V4cCA9IC8oW2Etel0pKFtBLVpdKS9nO1xuICAgICAgICByZXR1cm4gY2FtZWxDYXNlLnJlcGxhY2UocmVnZXgsICckMV8kMicpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,11 @@
1
+ import { distinctUntilChanged } from "rxjs/operators";
2
+ var ValueChangesService = /** @class */ (function () {
3
+ function ValueChangesService() {
4
+ }
5
+ ValueChangesService.pipeDefault = function (control) {
6
+ return control.valueChanges.pipe(distinctUntilChanged());
7
+ };
8
+ return ValueChangesService;
9
+ }());
10
+ export { ValueChangesService };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtY2hhbmdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcmVsYWNpb25hbWVudG8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsidXRpbHMvdmFsdWUtY2hhbmdlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3REO0lBQUE7SUFLQSxDQUFDO0lBSGlCLCtCQUFXLEdBQXpCLFVBQTBCLE9BQVk7UUFDbEMsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNMLDBCQUFDO0FBQUQsQ0FBQyxBQUxELElBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCBjbGFzcyBWYWx1ZUNoYW5nZXNTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcGlwZURlZmF1bHQoY29udHJvbDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxufVxuXG4iXX0=