taxtank-core 0.30.66 → 0.30.69

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 (143) hide show
  1. package/esm2020/lib/forms/sole/sole-invoice-item.form.mjs +7 -1
  2. package/esm2020/lib/interceptors/basiq-client-id.interceptor.mjs +3 -3
  3. package/esm2020/lib/interceptors/basiq-token.interceptor.mjs +3 -3
  4. package/esm2020/lib/interceptors/corelogic-interceptor.mjs +3 -3
  5. package/esm2020/lib/interceptors/financial-year-interceptor.mjs +3 -3
  6. package/esm2020/lib/interceptors/interceptors.module.mjs +4 -4
  7. package/esm2020/lib/interceptors/jwt-interceptor.mjs +3 -3
  8. package/esm2020/lib/interceptors/preloader.interceptor.mjs +3 -3
  9. package/esm2020/lib/interceptors/user-switcher-interceptor.mjs +3 -3
  10. package/esm2020/lib/models/bank/bank-connection.mjs +1 -1
  11. package/esm2020/lib/models/bank/basiq/basiq-job-response.mjs +4 -1
  12. package/esm2020/lib/models/bank/basiq/basiq-job-step.mjs +7 -1
  13. package/esm2020/lib/models/event/app-event-type.enum.mjs +61 -60
  14. package/esm2020/lib/models/pdf/pdf-settings.mjs +6 -1
  15. package/esm2020/lib/models/sole/sole-invoice-item.mjs +3 -3
  16. package/esm2020/lib/models/sole/sole-invoice.mjs +1 -1
  17. package/esm2020/lib/services/account-setup/account-setup.service.mjs +17 -5
  18. package/esm2020/lib/services/affiliate/rewardful/rewardful.service.mjs +3 -3
  19. package/esm2020/lib/services/asset/assets.service.mjs +3 -3
  20. package/esm2020/lib/services/auth/auth.service.mjs +3 -3
  21. package/esm2020/lib/services/auth/jwt.service.mjs +3 -3
  22. package/esm2020/lib/services/bank/bank-account-calculation.service.mjs +3 -3
  23. package/esm2020/lib/services/bank/bank-transaction-calculation.service.mjs +3 -3
  24. package/esm2020/lib/services/data.service.mjs +3 -3
  25. package/esm2020/lib/services/event/event-dispatcher.service.mjs +3 -3
  26. package/esm2020/lib/services/event/sse.service.mjs +3 -3
  27. package/esm2020/lib/services/export/export-formatter.service.mjs +3 -3
  28. package/esm2020/lib/services/header-title/header-title.service.mjs +3 -3
  29. package/esm2020/lib/services/http/address/address.service.mjs +3 -3
  30. package/esm2020/lib/services/http/bank/bank-account/bank-account.service.mjs +3 -3
  31. package/esm2020/lib/services/http/bank/bank-connection/bank-connection.service.mjs +5 -22
  32. package/esm2020/lib/services/http/bank/bank-transaction/bank-transaction.service.mjs +3 -3
  33. package/esm2020/lib/services/http/bank/bank.service.mjs +3 -3
  34. package/esm2020/lib/services/http/bank/basiq/basiq-token.service.mjs +7 -5
  35. package/esm2020/lib/services/http/bank/basiq/basiq.service.mjs +61 -53
  36. package/esm2020/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.mjs +3 -3
  37. package/esm2020/lib/services/http/chart-accounts/chart-accounts.service.mjs +3 -3
  38. package/esm2020/lib/services/http/chat/chat.service.mjs +3 -3
  39. package/esm2020/lib/services/http/chat/message-document.service.mjs +3 -3
  40. package/esm2020/lib/services/http/chat/message.service.mjs +3 -3
  41. package/esm2020/lib/services/http/client/capital-gain/annual-client-details.service.mjs +3 -3
  42. package/esm2020/lib/services/http/client/occupation/occupation.service.mjs +3 -3
  43. package/esm2020/lib/services/http/depreciation/depreciation-capital-project/depreciation-capital-project.service.mjs +3 -3
  44. package/esm2020/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.mjs +3 -3
  45. package/esm2020/lib/services/http/depreciation/depreciation.service.mjs +3 -3
  46. package/esm2020/lib/services/http/document/document-folder/document-folder.service.mjs +3 -3
  47. package/esm2020/lib/services/http/document/document.service.mjs +3 -3
  48. package/esm2020/lib/services/http/facebook/facebook.service.mjs +3 -3
  49. package/esm2020/lib/services/http/file/file.service.mjs +3 -3
  50. package/esm2020/lib/services/http/firm/client-income/client-income-types.service.mjs +3 -3
  51. package/esm2020/lib/services/http/firm/client-invite/client-invite.service.mjs +3 -3
  52. package/esm2020/lib/services/http/firm/client-movement/client-movement.service.mjs +3 -3
  53. package/esm2020/lib/services/http/firm/employee/employee.service.mjs +3 -3
  54. package/esm2020/lib/services/http/firm/employee-invite/employee-invite.service.mjs +3 -3
  55. package/esm2020/lib/services/http/firm/firm.service.mjs +3 -3
  56. package/esm2020/lib/services/http/firm/portfolio-report/client-portfolio-report.service.mjs +3 -3
  57. package/esm2020/lib/services/http/google/google.service.mjs +3 -3
  58. package/esm2020/lib/services/http/holding/holding-sale.service.mjs +3 -3
  59. package/esm2020/lib/services/http/holding/holding-type.service.mjs +3 -3
  60. package/esm2020/lib/services/http/holding/holding.service.mjs +3 -3
  61. package/esm2020/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.mjs +3 -3
  62. package/esm2020/lib/services/http/income-source/income-source.service.mjs +3 -3
  63. package/esm2020/lib/services/http/income-source/salary-forecast/salary-forecast.service.mjs +3 -3
  64. package/esm2020/lib/services/http/income-source/sole-forecast/sole-forecast.service.mjs +3 -3
  65. package/esm2020/lib/services/http/loan/borrowing-expense/borrowing-expense.service.mjs +3 -3
  66. package/esm2020/lib/services/http/loan/loan.service.mjs +3 -3
  67. package/esm2020/lib/services/http/property/property-category/property-category.service.mjs +3 -3
  68. package/esm2020/lib/services/http/property/property-category-movement/property-category-movement.service.mjs +3 -3
  69. package/esm2020/lib/services/http/property/property-document/property-document.service.mjs +3 -3
  70. package/esm2020/lib/services/http/property/property-sale/property-sale.service.mjs +3 -3
  71. package/esm2020/lib/services/http/property/property-share/property-share.service.mjs +3 -3
  72. package/esm2020/lib/services/http/property/property.service.mjs +3 -3
  73. package/esm2020/lib/services/http/receipt/receipt.service.mjs +3 -3
  74. package/esm2020/lib/services/http/rest/rest-old.service.mjs +3 -3
  75. package/esm2020/lib/services/http/rest/rest.service.mjs +8 -6
  76. package/esm2020/lib/services/http/service-notification/service-notification.service.mjs +3 -3
  77. package/esm2020/lib/services/http/sole/bas-report/bas-report.service.mjs +3 -3
  78. package/esm2020/lib/services/http/sole/sole-business/sole-business.service.mjs +3 -3
  79. package/esm2020/lib/services/http/sole/sole-business-activity/sole-business-activity.service.mjs +3 -3
  80. package/esm2020/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.mjs +3 -3
  81. package/esm2020/lib/services/http/sole/sole-business-loss/sole-business-loss.service.mjs +3 -3
  82. package/esm2020/lib/services/http/sole/sole-contact/sole-contact.service.mjs +3 -3
  83. package/esm2020/lib/services/http/sole/sole-depreciation-method/sole-depreciation-method.service.mjs +3 -3
  84. package/esm2020/lib/services/http/sole/sole-details/sole-details.service.mjs +3 -3
  85. package/esm2020/lib/services/http/sole/sole-invoice/sole-invoice.service.mjs +3 -3
  86. package/esm2020/lib/services/http/sole/sole-invoice-template/sole-invoice-template.service.mjs +3 -3
  87. package/esm2020/lib/services/http/subscription/service-payment/service-payment.service.mjs +3 -3
  88. package/esm2020/lib/services/http/subscription/service-payment-method/service-payment-method.service.mjs +3 -3
  89. package/esm2020/lib/services/http/subscription/service-price/service-price.service.mjs +3 -3
  90. package/esm2020/lib/services/http/subscription/service-product/service-product.service.mjs +3 -3
  91. package/esm2020/lib/services/http/subscription/service-subscription/subscription.service.mjs +3 -3
  92. package/esm2020/lib/services/http/tax-review/tax-review-history/tax-review-history.service.mjs +3 -3
  93. package/esm2020/lib/services/http/tax-review/tax-review.service.mjs +3 -3
  94. package/esm2020/lib/services/http/tax-summary/tax-summary.service.mjs +3 -3
  95. package/esm2020/lib/services/http/transaction/transaction-allocation/allocation-rule/allocation-rule.service.mjs +3 -3
  96. package/esm2020/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.mjs +3 -3
  97. package/esm2020/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.mjs +3 -3
  98. package/esm2020/lib/services/http/transaction/transaction.service.mjs +3 -3
  99. package/esm2020/lib/services/http/tutorial-video/tutorial-video.service.mjs +3 -3
  100. package/esm2020/lib/services/http/user/user-event-setting/user-event-setting.service.mjs +3 -3
  101. package/esm2020/lib/services/http/user/user-event-type/user-event-type.service.mjs +3 -3
  102. package/esm2020/lib/services/http/user/user.service.mjs +11 -4
  103. package/esm2020/lib/services/http/user/users-invite/users-invite.service.mjs +3 -3
  104. package/esm2020/lib/services/http/vehicle/vehicle-claim-details.service.mjs +3 -3
  105. package/esm2020/lib/services/http/vehicle/vehicle-claim.service.mjs +3 -3
  106. package/esm2020/lib/services/http/vehicle/vehicle-logbook.service.mjs +3 -3
  107. package/esm2020/lib/services/http/vehicle/vehicle.service.mjs +3 -3
  108. package/esm2020/lib/services/intercom/intercom.service.mjs +3 -3
  109. package/esm2020/lib/services/json/holding/holding-type-exchange.service.mjs +3 -3
  110. package/esm2020/lib/services/json/income-source/income-source-type.service.mjs +3 -3
  111. package/esm2020/lib/services/json/tax-exemption/tax-exemption.service.mjs +3 -3
  112. package/esm2020/lib/services/pdf/pdf-from-dom-element/pdf-from-dom-element.service.mjs +3 -3
  113. package/esm2020/lib/services/pdf/pdf-from-table/file-settings.mjs +6 -1
  114. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-data-table/pdf-from-data-table.service.mjs +6 -4
  115. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.mjs +3 -3
  116. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-table.service.mjs +14 -4
  117. package/esm2020/lib/services/preloader/preloader.service.mjs +3 -3
  118. package/esm2020/lib/services/property/corelogic/corelogic.service.mjs +3 -3
  119. package/esm2020/lib/services/property/equity-position-chart/equity-position-chart.service.mjs +3 -3
  120. package/esm2020/lib/services/property/property-calculation/property-calculation.service.mjs +3 -3
  121. package/esm2020/lib/services/report/property/property-transaction-report.service.mjs +3 -3
  122. package/esm2020/lib/services/toast/toast.service.mjs +3 -3
  123. package/esm2020/lib/services/transaction/transaction-calculation.service.mjs +3 -3
  124. package/esm2020/lib/services/user/user-switcher.service.mjs +3 -3
  125. package/esm2020/lib/services/vehicle/logbook-best-period.service.mjs +3 -3
  126. package/esm2020/lib/services/xlsx/xlsx.service.mjs +3 -3
  127. package/esm2020/lib/tt-core.module.mjs +4 -4
  128. package/fesm2015/taxtank-core.mjs +536 -485
  129. package/fesm2015/taxtank-core.mjs.map +1 -1
  130. package/fesm2020/taxtank-core.mjs +536 -485
  131. package/fesm2020/taxtank-core.mjs.map +1 -1
  132. package/lib/models/bank/basiq/basiq-job-response.d.ts +1 -0
  133. package/lib/models/bank/basiq/basiq-job-step.d.ts +2 -0
  134. package/lib/models/event/app-event-type.enum.d.ts +60 -59
  135. package/lib/models/pdf/pdf-settings.d.ts +5 -0
  136. package/lib/models/sole/sole-invoice-item.d.ts +2 -2
  137. package/lib/services/account-setup/account-setup.service.d.ts +4 -0
  138. package/lib/services/http/bank/bank-connection/bank-connection.service.d.ts +0 -4
  139. package/lib/services/http/bank/basiq/basiq.service.d.ts +35 -20
  140. package/lib/services/http/rest/rest.service.d.ts +4 -0
  141. package/lib/services/http/user/user.service.d.ts +4 -0
  142. package/lib/services/pdf/pdf-from-table/pdf-from-table.service.d.ts +2 -0
  143. package/package.json +1 -1
@@ -32,57 +32,68 @@ export class BasiqService extends RestService {
32
32
  */
33
33
  listenEvents() {
34
34
  this.listenNotifications();
35
- this.listenJobCreated();
36
35
  }
37
36
  /**
38
- * Start basiq login process.
39
- * Create a basiq job, which contain credentials verifying status.
40
- * We can not see login result immediately, because it may take some time (average 10-20 sec)
37
+ * Open basiq consent ui to allow user to log in to bank
38
+ * @param token User's basiq token
39
+ * @param bankId External id of selected bank
40
+ * @param action 'connect' - for the 1st connection, 'update' - for reconnect, null - for new not 1st connection
41
41
  */
42
- login(loginData, userId) {
43
- this.http.post(`${BasiqService.basiqApiUrl}/users/${userId}/connections`, loginData)
44
- .subscribe((response) => {
45
- // we need jobId to check credentials verifying statis from Basiq API
46
- // we need connectionId to know if we are creating a new connection or reconnecting existing invalid connection
47
- const data = {
48
- jobId: response.id,
49
- connectionId: loginData.id
50
- };
51
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_JOB_CREATED, data));
52
- });
42
+ redirectToBasiqConsent(token, bankId, action = null) {
43
+ // keep bank id because we need it after redirect from basiq
44
+ localStorage.setItem('basiqBankId', bankId);
45
+ window.location.replace(`${BasiqService.basiqConsentUrl}?token=${token}&institutionId=${bankId}${action ? '&action=' + action : ''}`);
46
+ }
47
+ /**
48
+ * Get Basiq job result
49
+ */
50
+ retrieveJob(jobId) {
51
+ return this.http.get(`${BasiqService.basiqApiUrl}/jobs/${jobId}`)
52
+ .pipe(map((response) => {
53
+ // if we get a jobId then we know that user accepted basiq consent
54
+ this.updateBasiqConsentAgreement();
55
+ return plainToClass(BasiqJobResponse, response);
56
+ }));
53
57
  }
54
58
  /**
55
- * Get status of credentials verifying. Expected statuses: 'in-progress', 'failed' or 'success'
56
- * We send this request by interval until basiq return success or failed.
57
- *
58
- * Because of Basiq login may take a long time (10-20sec) we have to check job status until it seccess or failed.
59
- *
60
- * @TODO Alex (TT-2431): check logic and try to remove subscribe, use pipes instead
61
- * @TODO Alex (TT-2431): implement some limit and handle (message or something) if basiq stuck
62
- * @TODO Alex (TT-2431): check logic and handle case when user cancelled loading
63
- */
64
- checkLoginStatus(data) {
65
- this.http.get(`${BasiqService.basiqApiUrl}/jobs/${data.jobId}`)
59
+ * Recoursive method, watch basiq job retrieve accounts status
60
+ * @param jobId id of basiq job to check
61
+ * @returns observable boolean. True - accounts retrieved, false - accounts not retrieved (time is out)
62
+ */
63
+ watchBankAccountsRetrieved(jobId) {
64
+ // init timeout for the first iteration of recoursion
65
+ if (!this.retrieveAccountsTimer) {
66
+ this.isRetrieveAccountsTimeOut = false;
67
+ this.retrieveAccountsTimer = setTimeout(() => {
68
+ this.isRetrieveAccountsTimeOut = true;
69
+ }, BasiqService.retrieveAccountsTimeout);
70
+ }
71
+ return this.retrieveJob(jobId)
66
72
  .pipe(
67
- // get verify-credentials step from basiq job
68
- map((response) => plainToClass(BasiqJobResponse, response)),
69
- // check credentials status again if not finished
73
+ // continue when time is out or when accounts retireved successfully
70
74
  filter((response) => {
71
- if (!response.getVerifyCredentialsStep().isInProgress()) {
75
+ // stop watcher when accounts retrieved successfully or time is out
76
+ if (this.isRetrieveAccountsTimeOut || response.getRetrieveAccountsStep().isSuccess()) {
77
+ clearTimeout(this.retrieveAccountsTimer);
72
78
  return true;
73
79
  }
80
+ // continue watch retrieve accounts status
74
81
  setTimeout(() => {
75
- this.checkLoginStatus(data);
76
- }, BasiqService.bankCredintialsCheckInterval);
82
+ this.watchBankAccountsRetrieved(jobId);
83
+ }, BasiqService.retrieveAccountsCheckInterval);
77
84
  return false;
78
- }))
79
- .subscribe((response) => {
80
- if (response.getVerifyCredentialsStep().isSuccess()) {
81
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_SUCCESS, data));
82
- }
83
- else {
84
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_FAILED, null));
85
- }
85
+ }), map((response) => {
86
+ // no need to keep bank id anymore
87
+ localStorage.removeItem('basiqBankId');
88
+ return response.getRetrieveAccountsStep().isSuccess();
89
+ }));
90
+ }
91
+ /**
92
+ * Ask backend to update user's basiq consent flag
93
+ */
94
+ updateBasiqConsentAgreement() {
95
+ this.http.put(`${this.environment.apiV2}/basiq/consents`, {}).subscribe((result) => {
96
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_CONSENT_UPDATED, result));
86
97
  });
87
98
  }
88
99
  /**
@@ -95,23 +106,20 @@ export class BasiqService extends RestService {
95
106
  }
96
107
  });
97
108
  }
98
- /**
99
- * Start check job credential status when it created
100
- */
101
- listenJobCreated() {
102
- this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_JOB_CREATED).subscribe((data) => {
103
- this.checkLoginStatus(data);
104
- });
105
- }
106
109
  }
107
110
  BasiqService.basiqApiUrl = 'https://au-api.basiq.io';
111
+ BasiqService.basiqConsentUrl = 'https://consent.basiq.io/home';
108
112
  /**
109
113
  * Basiq does not provide a hook, so we have to check job status manually every x seconds
110
114
  */
111
- BasiqService.bankCredintialsCheckInterval = 3000;
112
- BasiqService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BasiqService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.BankConnectionService }], target: i0.ɵɵFactoryTarget.Injectable });
113
- BasiqService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BasiqService, providedIn: 'root' });
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BasiqService, decorators: [{
115
+ BasiqService.retrieveAccountsCheckInterval = 3000;
116
+ /**
117
+ * How long we will wait accounts retrieving, break after timeout if not retireved
118
+ */
119
+ BasiqService.retrieveAccountsTimeout = 20000;
120
+ BasiqService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: BasiqService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.BankConnectionService }], target: i0.ɵɵFactoryTarget.Injectable });
121
+ BasiqService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: BasiqService, providedIn: 'root' });
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: BasiqService, decorators: [{
115
123
  type: Injectable,
116
124
  args: [{
117
125
  providedIn: 'root'
@@ -120,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
120
128
  type: Inject,
121
129
  args: ['environment']
122
130
  }] }, { type: i3.BankConnectionService }]; } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaXEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL2JhbmsvYmFzaXEvYmFzaXEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCxRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLFdBQVcsRUFDb0MsZ0JBQWdCLEVBRWhFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBRTVCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxZQUFhLFNBQVEsV0FBZ0U7SUFhaEcsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7SUFDakQsb0ZBQW9GO0lBQzVFLHFCQUE0QztRQUVwRCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBTnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUV6QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBVjVDLGdCQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsb0JBQWUsR0FBaUMscUJBQXFCLENBQUM7UUFDdEUsZUFBVSxHQUF1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QUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUF5QixFQUFFLEVBQUU7WUFDekcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7QUF4R00sd0JBQVcsR0FBRyx5QkFBeUIsQ0FBQztBQUUvQzs7R0FFRztBQUNJLHlDQUE0QixHQUFHLElBQUksQ0FBQzt5R0FOaEMsWUFBWSxrRkFnQmIsYUFBYTs2R0FoQlosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWlCSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFua0FjY291bnQgYXMgQmFua0FjY291bnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzJztcbmltcG9ydCB7IFJlc3RNZXRob2QsIFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdCc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudCc7XG5pbXBvcnQgeyBCYW5rQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9iYW5rLWNvbm5lY3Rpb24nO1xuaW1wb3J0IHsgQmFua0FjY291bnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgVXNlckV2ZW50VHlwZVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvRW51bXMvdXNlci1ldmVudC10eXBlLXR5cGUuZW51bSc7XG5pbXBvcnQge1xuICBBcHBFdmVudCwgQXBwRXZlbnRUeXBlRW51bSxcbiAgQmFua0FjY291bnQsIEJhbmtMb2dpbkRhdGEsXG4gIEJhc2lxQ29ubmVjdGlvbkRhdGEsIEJhc2lxQ29ubmVjdGlvbnNSZXNwb25zZSwgQmFzaXFKb2JSZXNwb25zZSxcbiAgTm90aWZpY2F0aW9uXG59IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5cbi8qKlxuICogYmFzaXEgaXMgYSBtaWRkbGVtYW4gYmV0d2VlbiBiYW5rIGFuZCB1c2VyXG4gKiBzZXJ2aWNlIGlzIHJlc3BvbnNpYmxlIGZvciBmZXRjaGluZyBiYW5rIHJlbGF0ZWQgaW5mb3JtYXRpb25cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFzaXFTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8QmFua0FjY291bnRCYXNlLCBCYW5rQWNjb3VudCwgQmFua0FjY291bnRDb2xsZWN0aW9uPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgc3RhdGljIGJhc2lxQXBpVXJsID0gJ2h0dHBzOi8vYXUtYXBpLmJhc2lxLmlvJztcblxuICAvKipcbiAgICogQmFzaXEgZG9lcyBub3QgcHJvdmlkZSBhIGhvb2ssIHNvIHdlIGhhdmUgdG8gY2hlY2sgam9iIHN0YXR1cyBtYW51YWxseSBldmVyeSB4IHNlY29uZHNcbiAgICovXG4gIHN0YXRpYyBiYW5rQ3JlZGludGlhbHNDaGVja0ludGVydmFsID0gMzAwMDtcblxuICBwcm90ZWN0ZWQgZW5kcG9pbnRVcmkgPSAnYmFzaXEvYWNjb3VudHMnO1xuICBjb2xsZWN0aW9uQ2xhc3M6IHR5cGVvZiBCYW5rQWNjb3VudENvbGxlY3Rpb24gPSBCYW5rQWNjb3VudENvbGxlY3Rpb247XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBCYW5rQWNjb3VudCA9IEJhbmtBY2NvdW50O1xuICBkaXNhYmxlZE1ldGhvZHM6IFJlc3RNZXRob2RbXSA9IFsncG9zdCcsICdwb3N0QmF0Y2gnLCAncHV0JywgJ3B1dEJhdGNoJywgJ2RlbGV0ZScsICdkZWxldGVCYXRjaCddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnksXG4gICAgLy8gdGhpcyBpbmplY3QgcmVxdWlyZWQgdG8gaW5pdCBiYW5rIGNvbm5lY3Rpb24gc2VydmljZSBhbmQgbGlzdGVuIGJhc2lxIGxvZ2luIGV2ZW50XG4gICAgcHJpdmF0ZSBiYW5rQ29ubmVjdGlvblNlcnZpY2U6IEJhbmtDb25uZWN0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGV2ZW50cyBmcm9tIEV2ZW50IERpc3BhdGNoZXIgc2VydmljZVxuICAgKi9cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuTm90aWZpY2F0aW9ucygpO1xuICAgIHRoaXMubGlzdGVuSm9iQ3JlYXRlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGJhc2lxIGxvZ2luIHByb2Nlc3MuXG4gICAqIENyZWF0ZSBhIGJhc2lxIGpvYiwgd2hpY2ggY29udGFpbiBjcmVkZW50aWFscyB2ZXJpZnlpbmcgc3RhdHVzLlxuICAgKiBXZSBjYW4gbm90IHNlZSBsb2dpbiByZXN1bHQgaW1tZWRpYXRlbHksIGJlY2F1c2UgaXQgbWF5IHRha2Ugc29tZSB0aW1lIChhdmVyYWdlIDEwLTIwIHNlYylcbiAgICovXG4gIGxvZ2luKGxvZ2luRGF0YTogQmFua0xvZ2luRGF0YSwgdXNlcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmh0dHAucG9zdChgJHtCYXNpcVNlcnZpY2UuYmFzaXFBcGlVcmx9L3VzZXJzLyR7dXNlcklkfS9jb25uZWN0aW9uc2AsIGxvZ2luRGF0YSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCYXNpcUNvbm5lY3Rpb25zUmVzcG9uc2UpID0+IHtcbiAgICAgICAgLy8gd2UgbmVlZCBqb2JJZCB0byBjaGVjayBjcmVkZW50aWFscyB2ZXJpZnlpbmcgc3RhdGlzIGZyb20gQmFzaXEgQVBJXG4gICAgICAgIC8vIHdlIG5lZWQgY29ubmVjdGlvbklkIHRvIGtub3cgaWYgd2UgYXJlIGNyZWF0aW5nIGEgbmV3IGNvbm5lY3Rpb24gb3IgcmVjb25uZWN0aW5nIGV4aXN0aW5nIGludmFsaWQgY29ubmVjdGlvblxuICAgICAgICBjb25zdCBkYXRhOiBCYXNpcUNvbm5lY3Rpb25EYXRhID0ge1xuICAgICAgICAgIGpvYklkOiByZXNwb25zZS5pZCxcbiAgICAgICAgICBjb25uZWN0aW9uSWQ6IGxvZ2luRGF0YS5pZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQVNJUV9KT0JfQ1JFQVRFRCwgZGF0YSkpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBHZXQgc3RhdHVzIG9mIGNyZWRlbnRpYWxzIHZlcmlmeWluZy4gRXhwZWN0ZWQgc3RhdHVzZXM6ICdpbi1wcm9ncmVzcycsICdmYWlsZWQnIG9yICdzdWNjZXNzJ1xuICAqIFdlIHNlbmQgdGhpcyByZXF1ZXN0IGJ5IGludGVydmFsIHVudGlsIGJhc2lxIHJldHVybiBzdWNjZXNzIG9yIGZhaWxlZC5cbiAgKlxuICAqIEJlY2F1c2Ugb2YgQmFzaXEgbG9naW4gbWF5IHRha2UgYSBsb25nIHRpbWUgKDEwLTIwc2VjKSB3ZSBoYXZlIHRvIGNoZWNrIGpvYiBzdGF0dXMgdW50aWwgaXQgc2VjY2VzcyBvciBmYWlsZWQuXG4gICpcbiAgKiBAVE9ETyBBbGV4IChUVC0yNDMxKTogY2hlY2sgbG9naWMgYW5kIHRyeSB0byByZW1vdmUgc3Vic2NyaWJlLCB1c2UgcGlwZXMgaW5zdGVhZFxuICAqIEBUT0RPIEFsZXggKFRULTI0MzEpOiBpbXBsZW1lbnQgc29tZSBsaW1pdCBhbmQgaGFuZGxlIChtZXNzYWdlIG9yIHNvbWV0aGluZykgaWYgYmFzaXEgc3R1Y2tcbiAgKiBAVE9ETyBBbGV4IChUVC0yNDMxKTogY2hlY2sgbG9naWMgYW5kIGhhbmRsZSBjYXNlIHdoZW4gdXNlciBjYW5jZWxsZWQgbG9hZGluZ1xuICAqL1xuICBwcml2YXRlIGNoZWNrTG9naW5TdGF0dXMoZGF0YTogQmFzaXFDb25uZWN0aW9uRGF0YSk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5nZXQoYCR7QmFzaXFTZXJ2aWNlLmJhc2lxQXBpVXJsfS9qb2JzLyR7ZGF0YS5qb2JJZH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIGdldCB2ZXJpZnktY3JlZGVudGlhbHMgc3RlcCBmcm9tIGJhc2lxIGpvYlxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhCYXNpcUpvYlJlc3BvbnNlLCByZXNwb25zZSkpLFxuICAgICAgICAvLyBjaGVjayBjcmVkZW50aWFscyBzdGF0dXMgYWdhaW4gaWYgbm90IGZpbmlzaGVkXG4gICAgICAgIGZpbHRlcigocmVzcG9uc2U6IEJhc2lxSm9iUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAoIXJlc3BvbnNlLmdldFZlcmlmeUNyZWRlbnRpYWxzU3RlcCgpLmlzSW5Qcm9ncmVzcygpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tMb2dpblN0YXR1cyhkYXRhKTtcbiAgICAgICAgICB9LCBCYXNpcVNlcnZpY2UuYmFua0NyZWRpbnRpYWxzQ2hlY2tJbnRlcnZhbCk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogQmFzaXFKb2JSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UuZ2V0VmVyaWZ5Q3JlZGVudGlhbHNTdGVwKCkuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfTE9HSU5fU1VDQ0VTUywgZGF0YSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQVNJUV9MT0dJTl9GQUlMRUQsIG51bGwpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBsaXN0ZW4gdG8gbm90aWZpY2F0aW9ucyB0byB1cGRhdGUgYmFzaXEgYWNjb3VudHMgbGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ob3RpZmljYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk5PVElGSUNBVElPTl9BRERFRCkuc3Vic2NyaWJlKChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNSZWFkICYmIG5vdGlmaWNhdGlvbi5ldmVudFR5cGUgPT09IFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9ORVdfQUNDT1VOVFMpIHtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgY2hlY2sgam9iIGNyZWRlbnRpYWwgc3RhdHVzIHdoZW4gaXQgY3JlYXRlZFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Kb2JDcmVhdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLkJBU0lRX0pPQl9DUkVBVEVEKS5zdWJzY3JpYmUoKGRhdGE6IEJhc2lxQ29ubmVjdGlvbkRhdGEpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tMb2dpblN0YXR1cyhkYXRhKTtcbiAgICB9KVxuICB9XG59XG4iXX0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaXEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL2JhbmsvYmFzaXEvYmFzaXEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFBRSxnQkFBZ0IsRUFFOUIsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFHNUI7OztHQUdHO0FBSUgsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFnRTtJQThCaEcsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7SUFDakQsb0ZBQW9GO0lBQzVFLHFCQUE0QztRQUVwRCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBTnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUV6QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBVjVDLGdCQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsb0JBQWUsR0FBaUMscUJBQXFCLENBQUM7UUFDdEUsZUFBVSxHQUF1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LFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUEwQixFQUFRLEVBQUU7WUFDakgsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDL0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXBJTSx3QkFBVyxHQUFHLHlCQUF5QixDQUFDO0FBQ3hDLDRCQUFlLEdBQUcsK0JBQStCLENBQUM7QUFFekQ7O0dBRUc7QUFDSSwwQ0FBNkIsR0FBRyxJQUFJLENBQUM7QUFFNUM7O0dBRUc7QUFDSSxvQ0FBdUIsR0FBRyxLQUFLLENBQUM7eUdBWjVCLFlBQVksa0ZBaUNiLGFBQWE7NkdBakNaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFrQ0ksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhbmtBY2NvdW50IGFzIEJhbmtBY2NvdW50QmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscyc7XG5pbXBvcnQgeyBSZXN0TWV0aG9kLCBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QnO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZXZlbnQnO1xuaW1wb3J0IHsgQmFua0Nvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYmFuay1jb25uZWN0aW9uJztcbmltcG9ydCB7IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFVzZXJFdmVudFR5cGVUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL0VudW1zL3VzZXItZXZlbnQtdHlwZS10eXBlLmVudW0nO1xuaW1wb3J0IHtcbiAgQXBwRXZlbnQsXG4gIEFwcEV2ZW50VHlwZUVudW0sXG4gIEJhbmtBY2NvdW50LCBCYXNpcUpvYlJlc3BvbnNlLFxuICBOb3RpZmljYXRpb25cbn0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBiYXNpcSBpcyBhIG1pZGRsZW1hbiBiZXR3ZWVuIGJhbmsgYW5kIHVzZXJcbiAqIHNlcnZpY2UgaXMgcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIGJhbmsgcmVsYXRlZCBpbmZvcm1hdGlvblxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNpcVNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxCYW5rQWNjb3VudEJhc2UsIEJhbmtBY2NvdW50LCBCYW5rQWNjb3VudENvbGxlY3Rpb24+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBzdGF0aWMgYmFzaXFBcGlVcmwgPSAnaHR0cHM6Ly9hdS1hcGkuYmFzaXEuaW8nO1xuICBzdGF0aWMgYmFzaXFDb25zZW50VXJsID0gJ2h0dHBzOi8vY29uc2VudC5iYXNpcS5pby9ob21lJztcblxuICAvKipcbiAgICogQmFzaXEgZG9lcyBub3QgcHJvdmlkZSBhIGhvb2ssIHNvIHdlIGhhdmUgdG8gY2hlY2sgam9iIHN0YXR1cyBtYW51YWxseSBldmVyeSB4IHNlY29uZHNcbiAgICovXG4gIHN0YXRpYyByZXRyaWV2ZUFjY291bnRzQ2hlY2tJbnRlcnZhbCA9IDMwMDA7XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIHdlIHdpbGwgd2FpdCBhY2NvdW50cyByZXRyaWV2aW5nLCBicmVhayBhZnRlciB0aW1lb3V0IGlmIG5vdCByZXRpcmV2ZWRcbiAgICovXG4gIHN0YXRpYyByZXRyaWV2ZUFjY291bnRzVGltZW91dCA9IDIwMDAwO1xuXG4gIC8qKlxuICAgKiBGbGFnIHNob3dzIHJldHJpZXZlIGFjY291bnRzIHRpbWUgaXMgb3V0XG4gICAqL1xuICBpc1JldHJpZXZlQWNjb3VudHNUaW1lT3V0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciByZXRyaWV2ZSBhY2NvdW50cyBzdGF0dXMgY2hlY2tpbmcuXG4gICAqIFN0b3Agd2F0Y2ggcmV0cmlldmUgYWNjb3VudHMgc3RhdHVzIHdoZW4gdGltZSBpcyBvdXQuXG4gICAqL1xuICByZXRyaWV2ZUFjY291bnRzVGltZXI7XG5cbiAgcHJvdGVjdGVkIGVuZHBvaW50VXJpID0gJ2Jhc2lxL2FjY291bnRzJztcbiAgY29sbGVjdGlvbkNsYXNzOiB0eXBlb2YgQmFua0FjY291bnRDb2xsZWN0aW9uID0gQmFua0FjY291bnRDb2xsZWN0aW9uO1xuICBtb2RlbENsYXNzOiB0eXBlb2YgQmFua0FjY291bnQgPSBCYW5rQWNjb3VudDtcbiAgZGlzYWJsZWRNZXRob2RzOiBSZXN0TWV0aG9kW10gPSBbJ3Bvc3QnLCAncG9zdEJhdGNoJywgJ3B1dCcsICdwdXRCYXRjaCcsICdkZWxldGUnLCAnZGVsZXRlQmF0Y2gnXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55LFxuICAgIC8vIHRoaXMgaW5qZWN0IHJlcXVpcmVkIHRvIGluaXQgYmFuayBjb25uZWN0aW9uIHNlcnZpY2UgYW5kIGxpc3RlbiBiYXNpcSBsb2dpbiBldmVudFxuICAgIHByaXZhdGUgYmFua0Nvbm5lY3Rpb25TZXJ2aWNlOiBCYW5rQ29ubmVjdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaHR0cCwgZXZlbnREaXNwYXRjaGVyU2VydmljZSwgZW52aXJvbm1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBldmVudHMgZnJvbSBFdmVudCBEaXNwYXRjaGVyIHNlcnZpY2VcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3Rlbk5vdGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGJhc2lxIGNvbnNlbnQgdWkgdG8gYWxsb3cgdXNlciB0byBsb2cgaW4gdG8gYmFuayBcbiAgICogQHBhcmFtIHRva2VuIFVzZXIncyBiYXNpcSB0b2tlblxuICAgKiBAcGFyYW0gYmFua0lkIEV4dGVybmFsIGlkIG9mIHNlbGVjdGVkIGJhbmtcbiAgICogQHBhcmFtIGFjdGlvbiAnY29ubmVjdCcgLSBmb3IgdGhlIDFzdCBjb25uZWN0aW9uLCAndXBkYXRlJyAtIGZvciByZWNvbm5lY3QsIG51bGwgLSBmb3IgbmV3IG5vdCAxc3QgY29ubmVjdGlvblxuICAgKi9cbiAgcmVkaXJlY3RUb0Jhc2lxQ29uc2VudCh0b2tlbjogc3RyaW5nLCBiYW5rSWQ6IHN0cmluZywgYWN0aW9uOiBudWxsIHwgJ2Nvbm5lY3QnIHwgJ3VwZGF0ZScgPSBudWxsKTogdm9pZCB7XG4gICAgLy8ga2VlcCBiYW5rIGlkIGJlY2F1c2Ugd2UgbmVlZCBpdCBhZnRlciByZWRpcmVjdCBmcm9tIGJhc2lxXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Jhc2lxQmFua0lkJywgYmFua0lkKTtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShgJHtCYXNpcVNlcnZpY2UuYmFzaXFDb25zZW50VXJsfT90b2tlbj0ke3Rva2VufSZpbnN0aXR1dGlvbklkPSR7YmFua0lkfSR7YWN0aW9uID8gJyZhY3Rpb249JyArIGFjdGlvbiA6ICcnfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBCYXNpcSBqb2IgcmVzdWx0XG4gICAqL1xuICByZXRyaWV2ZUpvYihqb2JJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYXNpcUpvYlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7QmFzaXFTZXJ2aWNlLmJhc2lxQXBpVXJsfS9qb2JzLyR7am9iSWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBvYmplY3QpID0+IHtcbiAgICAgICAgICAvLyBpZiB3ZSBnZXQgYSBqb2JJZCB0aGVuIHdlIGtub3cgdGhhdCB1c2VyIGFjY2VwdGVkIGJhc2lxIGNvbnNlbnRcbiAgICAgICAgICB0aGlzLnVwZGF0ZUJhc2lxQ29uc2VudEFncmVlbWVudCgpO1xuXG4gICAgICAgICAgcmV0dXJuIHBsYWluVG9DbGFzcyhCYXNpcUpvYlJlc3BvbnNlLCByZXNwb25zZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY291cnNpdmUgbWV0aG9kLCB3YXRjaCBiYXNpcSBqb2IgcmV0cmlldmUgYWNjb3VudHMgc3RhdHVzXG4gICAqIEBwYXJhbSBqb2JJZCBpZCBvZiBiYXNpcSBqb2IgdG8gY2hlY2tcbiAgICogQHJldHVybnMgb2JzZXJ2YWJsZSBib29sZWFuLiBUcnVlIC0gYWNjb3VudHMgcmV0cmlldmVkLCBmYWxzZSAtIGFjY291bnRzIG5vdCByZXRyaWV2ZWQgKHRpbWUgaXMgb3V0KVxuICAgKi9cbiAgd2F0Y2hCYW5rQWNjb3VudHNSZXRyaWV2ZWQoam9iSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIC8vIGluaXQgdGltZW91dCBmb3IgdGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiByZWNvdXJzaW9uXG4gICAgaWYgKCF0aGlzLnJldHJpZXZlQWNjb3VudHNUaW1lcikge1xuICAgICAgdGhpcy5pc1JldHJpZXZlQWNjb3VudHNUaW1lT3V0ID0gZmFsc2U7XG5cbiAgICAgIHRoaXMucmV0cmlldmVBY2NvdW50c1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXRyaWV2ZUFjY291bnRzVGltZU91dCA9IHRydWU7XG4gICAgICB9LCBCYXNpcVNlcnZpY2UucmV0cmlldmVBY2NvdW50c1RpbWVvdXQpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5yZXRyaWV2ZUpvYihqb2JJZClcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBjb250aW51ZSB3aGVuIHRpbWUgaXMgb3V0IG9yIHdoZW4gYWNjb3VudHMgcmV0aXJldmVkIHN1Y2Nlc3NmdWxseVxuICAgICAgICBmaWx0ZXIoKHJlc3BvbnNlOiBCYXNpcUpvYlJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgLy8gc3RvcCB3YXRjaGVyIHdoZW4gYWNjb3VudHMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSBvciB0aW1lIGlzIG91dFxuICAgICAgICAgIGlmICh0aGlzLmlzUmV0cmlldmVBY2NvdW50c1RpbWVPdXQgfHwgcmVzcG9uc2UuZ2V0UmV0cmlldmVBY2NvdW50c1N0ZXAoKS5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmV0cmlldmVBY2NvdW50c1RpbWVyKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGNvbnRpbnVlIHdhdGNoIHJldHJpZXZlIGFjY291bnRzIHN0YXR1c1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy53YXRjaEJhbmtBY2NvdW50c1JldHJpZXZlZChqb2JJZCk7XG4gICAgICAgICAgfSwgQmFzaXFTZXJ2aWNlLnJldHJpZXZlQWNjb3VudHNDaGVja0ludGVydmFsKTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEJhc2lxSm9iUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAvLyBubyBuZWVkIHRvIGtlZXAgYmFuayBpZCBhbnltb3JlXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Jhc2lxQmFua0lkJyk7XG5cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZ2V0UmV0cmlldmVBY2NvdW50c1N0ZXAoKS5pc1N1Y2Nlc3MoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQXNrIGJhY2tlbmQgdG8gdXBkYXRlIHVzZXIncyBiYXNpcSBjb25zZW50IGZsYWdcbiAgICovXG4gIHVwZGF0ZUJhc2lxQ29uc2VudEFncmVlbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L2Jhc2lxL2NvbnNlbnRzYCwge30pLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfQ09OU0VOVF9VUERBVEVELCByZXN1bHQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsaXN0ZW4gdG8gbm90aWZpY2F0aW9ucyB0byB1cGRhdGUgYmFzaXEgYWNjb3VudHMgbGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ob3RpZmljYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk5PVElGSUNBVElPTl9BRERFRCkuc3Vic2NyaWJlKChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNSZWFkICYmIG5vdGlmaWNhdGlvbi5ldmVudFR5cGUgPT09IFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9ORVdfQUNDT1VOVFMpIHtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -16,9 +16,9 @@ export class ChartAccountsDepreciationService extends RestService {
16
16
  this.disabledMethods = ['post', 'postBatch', 'put', 'putBatch', 'delete', 'deleteBatch'];
17
17
  }
18
18
  }
19
- ChartAccountsDepreciationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChartAccountsDepreciationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
20
- ChartAccountsDepreciationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChartAccountsDepreciationService, providedIn: 'root' });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChartAccountsDepreciationService, decorators: [{
19
+ ChartAccountsDepreciationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChartAccountsDepreciationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
20
+ ChartAccountsDepreciationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChartAccountsDepreciationService, providedIn: 'root' });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChartAccountsDepreciationService, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{
24
24
  providedIn: 'root'
@@ -38,9 +38,9 @@ export class ChartAccountsService extends RestService {
38
38
  }));
39
39
  }
40
40
  }
41
- ChartAccountsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChartAccountsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
42
- ChartAccountsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChartAccountsService, providedIn: 'root' });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChartAccountsService, decorators: [{
41
+ ChartAccountsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChartAccountsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
42
+ ChartAccountsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChartAccountsService, providedIn: 'root' });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChartAccountsService, decorators: [{
44
44
  type: Injectable,
45
45
  args: [{
46
46
  providedIn: 'root'
@@ -68,9 +68,9 @@ export class ChatService extends RestService {
68
68
  });
69
69
  }
70
70
  }
71
- ChatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChatService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i2.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
72
- ChatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChatService, providedIn: 'root' });
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ChatService, decorators: [{
71
+ ChatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChatService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i2.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
72
+ ChatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChatService, providedIn: 'root' });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ChatService, decorators: [{
74
74
  type: Injectable,
75
75
  args: [{
76
76
  providedIn: 'root'
@@ -65,9 +65,9 @@ export class MessageDocumentService extends RestService {
65
65
  return combineLatest(files.map((file) => this.add(chatId, file))).pipe(map((docsBase) => docsBase.map((docBase) => plainToClass(MessageDocument, docBase))));
66
66
  }
67
67
  }
68
- MessageDocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MessageDocumentService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
69
- MessageDocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MessageDocumentService, providedIn: 'root' });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MessageDocumentService, decorators: [{
68
+ MessageDocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MessageDocumentService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
69
+ MessageDocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MessageDocumentService, providedIn: 'root' });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MessageDocumentService, decorators: [{
71
71
  type: Injectable,
72
72
  args: [{
73
73
  providedIn: 'root'
@@ -54,9 +54,9 @@ export class MessageService extends RestService {
54
54
  });
55
55
  }
56
56
  }
57
- MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MessageService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i2.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
58
- MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MessageService, providedIn: 'root' });
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MessageService, decorators: [{
57
+ MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MessageService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i2.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
58
+ MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MessageService, providedIn: 'root' });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MessageService, decorators: [{
60
60
  type: Injectable,
61
61
  args: [{
62
62
  providedIn: 'root'
@@ -13,9 +13,9 @@ export class AnnualClientDetailsService extends RestService {
13
13
  this.disabledMethods = ['postBatch', 'putBatch', 'deleteBatch', 'delete'];
14
14
  }
15
15
  }
16
- AnnualClientDetailsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AnnualClientDetailsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
- AnnualClientDetailsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AnnualClientDetailsService, providedIn: 'root' });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AnnualClientDetailsService, decorators: [{
16
+ AnnualClientDetailsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: AnnualClientDetailsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
+ AnnualClientDetailsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: AnnualClientDetailsService, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: AnnualClientDetailsService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: 'root'
@@ -29,9 +29,9 @@ export class OccupationService {
29
29
  return this.occupationsSubject.asObservable();
30
30
  }
31
31
  }
32
- OccupationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: OccupationService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
33
- OccupationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: OccupationService, providedIn: 'root' });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: OccupationService, decorators: [{
32
+ OccupationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: OccupationService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
33
+ OccupationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: OccupationService, providedIn: 'root' });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: OccupationService, decorators: [{
35
35
  type: Injectable,
36
36
  args: [{
37
37
  providedIn: 'root'
@@ -46,9 +46,9 @@ export class DepreciationCapitalProjectService {
46
46
  }));
47
47
  }
48
48
  }
49
- DepreciationCapitalProjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationCapitalProjectService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
50
- DepreciationCapitalProjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationCapitalProjectService, providedIn: 'root' });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationCapitalProjectService, decorators: [{
49
+ DepreciationCapitalProjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationCapitalProjectService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
50
+ DepreciationCapitalProjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationCapitalProjectService, providedIn: 'root' });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationCapitalProjectService, decorators: [{
52
52
  type: Injectable,
53
53
  args: [{
54
54
  providedIn: 'root'
@@ -26,9 +26,9 @@ export class DepreciationReceiptService extends ReceiptService {
26
26
  this.listenEvents();
27
27
  }
28
28
  }
29
- DepreciationReceiptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationReceiptService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
30
- DepreciationReceiptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationReceiptService, providedIn: 'root' });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationReceiptService, decorators: [{
29
+ DepreciationReceiptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationReceiptService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
30
+ DepreciationReceiptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationReceiptService, providedIn: 'root' });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationReceiptService, decorators: [{
32
32
  type: Injectable,
33
33
  args: [{
34
34
  providedIn: 'root'
@@ -122,9 +122,9 @@ export class DepreciationService extends RestService {
122
122
  });
123
123
  }
124
124
  }
125
- DepreciationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
126
- DepreciationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationService, providedIn: 'root' });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DepreciationService, decorators: [{
125
+ DepreciationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
126
+ DepreciationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationService, providedIn: 'root' });
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DepreciationService, decorators: [{
128
128
  type: Injectable,
129
129
  args: [{
130
130
  providedIn: 'root'
@@ -65,9 +65,9 @@ export class DocumentFolderService extends RestService {
65
65
  }));
66
66
  }
67
67
  }
68
- DocumentFolderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DocumentFolderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
69
- DocumentFolderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DocumentFolderService, providedIn: 'root' });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DocumentFolderService, decorators: [{
68
+ DocumentFolderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DocumentFolderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
69
+ DocumentFolderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DocumentFolderService, providedIn: 'root' });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DocumentFolderService, decorators: [{
71
71
  type: Injectable,
72
72
  args: [{
73
73
  providedIn: 'root'
@@ -9,9 +9,9 @@ export class DocumentService extends RestService {
9
9
  this.modelClass = Document;
10
10
  }
11
11
  }
12
- DocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DocumentService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
13
- DocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DocumentService, providedIn: 'root' });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DocumentService, decorators: [{
12
+ DocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DocumentService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
13
+ DocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DocumentService, providedIn: 'root' });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DocumentService, decorators: [{
15
15
  type: Injectable,
16
16
  args: [{
17
17
  providedIn: 'root'
@@ -73,9 +73,9 @@ FacebookService.authOptions = {
73
73
  auth_type: 'rerequest',
74
74
  return_scopes: true
75
75
  };
76
- FacebookService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FacebookService, deps: [{ token: i1.HttpClient }, { token: i2.ToastService }, { token: i3.JwtService }, { token: i4.Router }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
77
- FacebookService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FacebookService, providedIn: 'root' });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FacebookService, decorators: [{
76
+ FacebookService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FacebookService, deps: [{ token: i1.HttpClient }, { token: i2.ToastService }, { token: i3.JwtService }, { token: i4.Router }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ FacebookService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FacebookService, providedIn: 'root' });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FacebookService, decorators: [{
79
79
  type: Injectable,
80
80
  args: [{
81
81
  providedIn: 'root'
@@ -24,9 +24,9 @@ export class FileService extends RestService {
24
24
  return this.http.get(`${this.apiUrl}/${file.id}/download`, { responseType: 'blob' });
25
25
  }
26
26
  }
27
- FileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FileService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
28
- FileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FileService, providedIn: 'root' });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FileService, decorators: [{
27
+ FileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FileService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
28
+ FileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FileService, providedIn: 'root' });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FileService, decorators: [{
30
30
  type: Injectable,
31
31
  args: [{
32
32
  providedIn: 'root'
@@ -13,9 +13,9 @@ export class ClientIncomeTypesService extends RestService {
13
13
  this.disabledMethods = ['postBatch', 'putBatch', 'delete', 'deleteBatch'];
14
14
  }
15
15
  }
16
- ClientIncomeTypesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientIncomeTypesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
- ClientIncomeTypesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientIncomeTypesService, providedIn: 'root' });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientIncomeTypesService, decorators: [{
16
+ ClientIncomeTypesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientIncomeTypesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
+ ClientIncomeTypesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientIncomeTypesService, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientIncomeTypesService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: 'root'
@@ -115,9 +115,9 @@ export class ClientInviteService extends RestService {
115
115
  });
116
116
  }
117
117
  }
118
- ClientInviteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientInviteService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
119
- ClientInviteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientInviteService, providedIn: 'root' });
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientInviteService, decorators: [{
118
+ ClientInviteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientInviteService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
119
+ ClientInviteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientInviteService, providedIn: 'root' });
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientInviteService, decorators: [{
121
121
  type: Injectable,
122
122
  args: [{
123
123
  providedIn: 'root'
@@ -75,9 +75,9 @@ export class ClientMovementService extends RestService {
75
75
  });
76
76
  }
77
77
  }
78
- ClientMovementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientMovementService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
79
- ClientMovementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientMovementService, providedIn: 'root' });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientMovementService, decorators: [{
78
+ ClientMovementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientMovementService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
79
+ ClientMovementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientMovementService, providedIn: 'root' });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientMovementService, decorators: [{
81
81
  type: Injectable,
82
82
  args: [{
83
83
  providedIn: 'root'
@@ -28,9 +28,9 @@ export class EmployeeService extends RestService {
28
28
  }));
29
29
  }
30
30
  }
31
- EmployeeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmployeeService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
32
- EmployeeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmployeeService, providedIn: 'root' });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmployeeService, decorators: [{
31
+ EmployeeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: EmployeeService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
32
+ EmployeeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: EmployeeService, providedIn: 'root' });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: EmployeeService, decorators: [{
34
34
  type: Injectable,
35
35
  args: [{
36
36
  providedIn: 'root'
@@ -40,9 +40,9 @@ export class EmployeeInviteService extends RestService {
40
40
  }));
41
41
  }
42
42
  }
43
- EmployeeInviteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmployeeInviteService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
44
- EmployeeInviteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmployeeInviteService, providedIn: 'root' });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmployeeInviteService, decorators: [{
43
+ EmployeeInviteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: EmployeeInviteService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
44
+ EmployeeInviteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: EmployeeInviteService, providedIn: 'root' });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: EmployeeInviteService, decorators: [{
46
46
  type: Injectable,
47
47
  args: [{
48
48
  providedIn: 'root'
@@ -57,9 +57,9 @@ export class FirmService {
57
57
  }));
58
58
  }
59
59
  }
60
- FirmService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FirmService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
61
- FirmService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FirmService, providedIn: 'root' });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FirmService, decorators: [{
60
+ FirmService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FirmService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
61
+ FirmService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FirmService, providedIn: 'root' });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FirmService, decorators: [{
63
63
  type: Injectable,
64
64
  args: [{
65
65
  providedIn: 'root'
@@ -23,9 +23,9 @@ export class ClientPortfolioReportService {
23
23
  }));
24
24
  }
25
25
  }
26
- ClientPortfolioReportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientPortfolioReportService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
27
- ClientPortfolioReportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientPortfolioReportService, providedIn: 'root' });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ClientPortfolioReportService, decorators: [{
26
+ ClientPortfolioReportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientPortfolioReportService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
27
+ ClientPortfolioReportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientPortfolioReportService, providedIn: 'root' });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ClientPortfolioReportService, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{
31
31
  providedIn: 'root'
@@ -63,9 +63,9 @@ export class GoogleService {
63
63
  google.accounts.id.disableAutoSelect();
64
64
  }
65
65
  }
66
- GoogleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: GoogleService, deps: [{ token: i1.HttpClient }, { token: i2.ToastService }, { token: i3.JwtService }, { token: i4.Router }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
67
- GoogleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: GoogleService, providedIn: 'root' });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: GoogleService, decorators: [{
66
+ GoogleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: GoogleService, deps: [{ token: i1.HttpClient }, { token: i2.ToastService }, { token: i3.JwtService }, { token: i4.Router }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
67
+ GoogleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: GoogleService, providedIn: 'root' });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: GoogleService, decorators: [{
69
69
  type: Injectable,
70
70
  args: [{
71
71
  providedIn: 'root'
@@ -13,9 +13,9 @@ export class HoldingSaleService extends RestService {
13
13
  this.disabledMethods = ['postBatch', 'putBatch', 'deleteBatch'];
14
14
  }
15
15
  }
16
- HoldingSaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingSaleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
- HoldingSaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingSaleService, providedIn: 'root' });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingSaleService, decorators: [{
16
+ HoldingSaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingSaleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
+ HoldingSaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingSaleService, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingSaleService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: 'root'
@@ -13,9 +13,9 @@ export class HoldingTypeService extends RestService {
13
13
  this.disabledMethods = ['postBatch', 'putBatch', 'deleteBatch'];
14
14
  }
15
15
  }
16
- HoldingTypeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingTypeService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
- HoldingTypeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingTypeService, providedIn: 'root' });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingTypeService, decorators: [{
16
+ HoldingTypeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingTypeService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
+ HoldingTypeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingTypeService, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingTypeService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: 'root'
@@ -16,9 +16,9 @@ export class HoldingService extends RestService {
16
16
  this.listenCSE(HoldingSale, ['post', 'put', 'delete'], this.resetCache);
17
17
  }
18
18
  }
19
- HoldingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
20
- HoldingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingService, providedIn: 'root' });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: HoldingService, decorators: [{
19
+ HoldingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
20
+ HoldingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingService, providedIn: 'root' });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: HoldingService, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{
24
24
  providedIn: 'root'
@@ -67,9 +67,9 @@ export class IncomeSourceForecastService extends RestService {
67
67
  }).flat();
68
68
  }
69
69
  }
70
- IncomeSourceForecastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: IncomeSourceForecastService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
71
- IncomeSourceForecastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: IncomeSourceForecastService, providedIn: 'root' });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: IncomeSourceForecastService, decorators: [{
70
+ IncomeSourceForecastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: IncomeSourceForecastService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
71
+ IncomeSourceForecastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: IncomeSourceForecastService, providedIn: 'root' });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: IncomeSourceForecastService, decorators: [{
73
73
  type: Injectable,
74
74
  args: [{
75
75
  providedIn: 'root'