@sachin9822/reports-lib 0.0.210 → 0.0.212

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 (211) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +17 -0
  3. package/package.json +16 -31
  4. package/src/assets/images/BreadcrumbArrow.png +0 -0
  5. package/src/lib/assets/images/Search.svg +10 -0
  6. package/src/lib/assets/images/XMLogo.png +0 -0
  7. package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.html +27 -0
  8. package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.scss +46 -0
  9. package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.spec.ts +23 -0
  10. package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.ts +292 -0
  11. package/src/lib/components/accounting-report/accounting-report.component.html +64 -0
  12. package/src/lib/components/accounting-report/accounting-report.component.scss +24 -0
  13. package/src/lib/components/accounting-report/accounting-report.component.spec.ts +23 -0
  14. package/src/lib/components/accounting-report/accounting-report.component.ts +738 -0
  15. package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.html +46 -0
  16. package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.scss +2 -0
  17. package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.spec.ts +23 -0
  18. package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.ts +247 -0
  19. package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.html +46 -0
  20. package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.scss +3 -0
  21. package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.spec.ts +23 -0
  22. package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.ts +276 -0
  23. package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.html +51 -0
  24. package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.scss +7 -0
  25. package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.spec.ts +23 -0
  26. package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.ts +840 -0
  27. package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.html +68 -0
  28. package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.scss +65 -0
  29. package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.spec.ts +23 -0
  30. package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.ts +290 -0
  31. package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.html +25 -0
  32. package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.scss +1 -0
  33. package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.spec.ts +23 -0
  34. package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.ts +213 -0
  35. package/src/lib/components/funding-report/funding-report.component.html +49 -0
  36. package/src/lib/components/funding-report/funding-report.component.scss +1 -0
  37. package/src/lib/components/funding-report/funding-report.component.spec.ts +23 -0
  38. package/src/lib/components/funding-report/funding-report.component.ts +221 -0
  39. package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.html +26 -0
  40. package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.scss +1 -0
  41. package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.spec.ts +23 -0
  42. package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.ts +267 -0
  43. package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.html +95 -0
  44. package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.scss +54 -0
  45. package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.spec.ts +23 -0
  46. package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.ts +904 -0
  47. package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.html +49 -0
  48. package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.scss +2 -0
  49. package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.spec.ts +32 -0
  50. package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.ts +304 -0
  51. package/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.html +46 -0
  52. package/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.scss +7 -0
  53. package/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.ts +343 -0
  54. package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.html +25 -0
  55. package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.scss +23 -0
  56. package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.spec.ts +23 -0
  57. package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.ts +745 -0
  58. package/src/lib/models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel.ts +10 -0
  59. package/src/lib/models/acc-gl-details-enquiry-report/journal-voucher-entry-model.ts +20 -0
  60. package/src/lib/models/accounting-report/accounting-report-branch-group.ts +7 -0
  61. package/src/lib/models/accounting-report/accounting-report-entry-model.ts +25 -0
  62. package/src/lib/models/accounting-report/accounting-report-model.ts +7 -0
  63. package/{lib/models/accounting-report/accounting-report-sub-group.d.ts → src/lib/models/accounting-report/accounting-report-sub-group.ts} +3 -2
  64. package/{lib/models/app-config.model.d.ts → src/lib/models/app-config.model.ts} +8 -7
  65. package/src/lib/models/branch-activity-receive-report/branch-activity-receive.model.ts +18 -0
  66. package/src/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.ts +16 -0
  67. package/src/lib/models/branch-activity-report/branch-activity-send-report.ts +26 -0
  68. package/src/lib/models/cancellation-transaction-report/cancellation-transaction.model.ts +65 -0
  69. package/src/lib/models/component-loading-states.ts +5 -0
  70. package/src/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.ts +28 -0
  71. package/{lib/models/revenue-per-transaction-report/revenue-per-transaction.model.d.ts → src/lib/models/revenue-per-transaction-report/revenue-per-transaction.model.ts} +1 -1
  72. package/src/lib/models/statement-of-account-report/statement-of-accounts.model.ts +21 -0
  73. package/src/lib/models/transaction-enquiry-report/transaction-enquiry.model.ts +127 -0
  74. package/src/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.ts +16 -0
  75. package/src/lib/models/transaction-monitoring-report/transaction-monitoring-report.ts +29 -0
  76. package/src/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.ts +46 -0
  77. package/src/lib/reports-lib-routing.module.ts +20 -0
  78. package/src/lib/reports-lib.component.spec.ts +23 -0
  79. package/src/lib/reports-lib.component.ts +20 -0
  80. package/src/lib/reports-lib.module.ts +102 -0
  81. package/src/lib/reports-lib.service.spec.ts +16 -0
  82. package/src/lib/reports-lib.service.ts +9 -0
  83. package/src/lib/services/config.service.ts +43 -0
  84. package/src/lib/services/report.service.spec.ts +16 -0
  85. package/src/lib/services/report.service.ts +463 -0
  86. package/src/lib/shared/export-generic.service.ts +557 -0
  87. package/src/lib/shared/export.service.spec.ts +16 -0
  88. package/src/lib/shared/export.service.ts +457 -0
  89. package/src/lib/shared/loader/loader.component.html +8 -0
  90. package/src/lib/shared/loader/loader.component.scss +52 -0
  91. package/src/lib/shared/loader/loader.component.ts +10 -0
  92. package/src/lib/shared/metadata/metadata.component.html +42 -0
  93. package/src/lib/shared/metadata/metadata.component.scss +95 -0
  94. package/src/lib/shared/metadata/metadata.component.spec.ts +23 -0
  95. package/src/lib/shared/metadata/metadata.component.ts +38 -0
  96. package/src/lib/shared/page-size-selector/page-size-selector.component.html +7 -0
  97. package/src/lib/shared/page-size-selector/page-size-selector.component.scss +42 -0
  98. package/src/lib/shared/page-size-selector/page-size-selector.component.spec.ts +23 -0
  99. package/src/lib/shared/page-size-selector/page-size-selector.component.ts +38 -0
  100. package/src/lib/shared/search-filter/search-filter.component.html +601 -0
  101. package/src/lib/shared/search-filter/search-filter.component.scss +203 -0
  102. package/src/lib/shared/search-filter/search-filter.component.spec.ts +23 -0
  103. package/src/lib/shared/search-filter/search-filter.component.ts +2387 -0
  104. package/src/lib/shared/shared.module.ts +13 -0
  105. package/{public-api.d.ts → src/public-api.ts} +17 -7
  106. package/src/styles/ag-grid-report-style.scss +71 -0
  107. package/src/styles/common-ag-grid-style.scss +146 -0
  108. package/src/styles/common-report-style.scss +395 -0
  109. package/src/styles/common-style.scss +615 -0
  110. package/src/test.ts +27 -0
  111. package/tsconfig.lib.json +15 -0
  112. package/tsconfig.lib.prod.json +10 -0
  113. package/tsconfig.spec.json +17 -0
  114. package/esm2020/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.mjs +0 -240
  115. package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +0 -596
  116. package/esm2020/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.mjs +0 -218
  117. package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +0 -243
  118. package/esm2020/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.mjs +0 -700
  119. package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +0 -255
  120. package/esm2020/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.mjs +0 -192
  121. package/esm2020/lib/components/funding-report/funding-report.component.mjs +0 -198
  122. package/esm2020/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.mjs +0 -244
  123. package/esm2020/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.mjs +0 -776
  124. package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +0 -266
  125. package/esm2020/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.mjs +0 -311
  126. package/esm2020/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.mjs +0 -631
  127. package/esm2020/lib/models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel.mjs +0 -2
  128. package/esm2020/lib/models/acc-gl-details-enquiry-report/journal-voucher-entry-model.mjs +0 -2
  129. package/esm2020/lib/models/accounting-report/accounting-report-branch-group.mjs +0 -2
  130. package/esm2020/lib/models/accounting-report/accounting-report-entry-model.mjs +0 -2
  131. package/esm2020/lib/models/accounting-report/accounting-report-model.mjs +0 -2
  132. package/esm2020/lib/models/accounting-report/accounting-report-sub-group.mjs +0 -2
  133. package/esm2020/lib/models/app-config.model.mjs +0 -2
  134. package/esm2020/lib/models/branch-activity-receive-report/branch-activity-receive.model.mjs +0 -2
  135. package/esm2020/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.mjs +0 -6
  136. package/esm2020/lib/models/branch-activity-report/branch-activity-send-report.mjs +0 -3
  137. package/esm2020/lib/models/cancellation-transaction-report/cancellation-transaction.model.mjs +0 -10
  138. package/esm2020/lib/models/component-loading-states.mjs +0 -7
  139. package/esm2020/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.mjs +0 -5
  140. package/esm2020/lib/models/revenue-per-transaction-report/revenue-per-transaction.model.mjs +0 -2
  141. package/esm2020/lib/models/statement-of-account-report/statement-of-accounts.model.mjs +0 -2
  142. package/esm2020/lib/models/transaction-enquiry-report/transaction-enquiry.model.mjs +0 -8
  143. package/esm2020/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.mjs +0 -6
  144. package/esm2020/lib/models/transaction-monitoring-report/transaction-monitoring-report.mjs +0 -5
  145. package/esm2020/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.mjs +0 -3
  146. package/esm2020/lib/reports-lib-routing.module.mjs +0 -24
  147. package/esm2020/lib/reports-lib.component.mjs +0 -22
  148. package/esm2020/lib/reports-lib.module.mjs +0 -172
  149. package/esm2020/lib/reports-lib.service.mjs +0 -14
  150. package/esm2020/lib/services/config.service.mjs +0 -39
  151. package/esm2020/lib/services/report.service.mjs +0 -374
  152. package/esm2020/lib/shared/export-generic.service.mjs +0 -443
  153. package/esm2020/lib/shared/export.service.mjs +0 -379
  154. package/esm2020/lib/shared/loader/loader.component.mjs +0 -11
  155. package/esm2020/lib/shared/metadata/metadata.component.mjs +0 -51
  156. package/esm2020/lib/shared/page-size-selector/page-size-selector.component.mjs +0 -44
  157. package/esm2020/lib/shared/search-filter/search-filter.component.mjs +0 -2134
  158. package/esm2020/lib/shared/shared.module.mjs +0 -21
  159. package/esm2020/public-api.mjs +0 -41
  160. package/esm2020/sachin9822-reports-lib.mjs +0 -5
  161. package/fesm2015/sachin9822-reports-lib.mjs +0 -8402
  162. package/fesm2015/sachin9822-reports-lib.mjs.map +0 -1
  163. package/fesm2020/sachin9822-reports-lib.mjs +0 -8384
  164. package/fesm2020/sachin9822-reports-lib.mjs.map +0 -1
  165. package/index.d.ts +0 -5
  166. package/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.d.ts +0 -70
  167. package/lib/components/accounting-report/accounting-report.component.d.ts +0 -76
  168. package/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.d.ts +0 -58
  169. package/lib/components/branch-activity-send-report/branch-activity-send-report.component.d.ts +0 -69
  170. package/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.d.ts +0 -78
  171. package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +0 -95
  172. package/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.d.ts +0 -55
  173. package/lib/components/funding-report/funding-report.component.d.ts +0 -55
  174. package/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.d.ts +0 -57
  175. package/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.d.ts +0 -109
  176. package/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.d.ts +0 -76
  177. package/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.d.ts +0 -68
  178. package/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.d.ts +0 -71
  179. package/lib/models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel.d.ts +0 -8
  180. package/lib/models/acc-gl-details-enquiry-report/journal-voucher-entry-model.d.ts +0 -18
  181. package/lib/models/accounting-report/accounting-report-branch-group.d.ts +0 -6
  182. package/lib/models/accounting-report/accounting-report-entry-model.d.ts +0 -24
  183. package/lib/models/accounting-report/accounting-report-model.d.ts +0 -6
  184. package/lib/models/branch-activity-receive-report/branch-activity-receive.model.d.ts +0 -18
  185. package/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.d.ts +0 -13
  186. package/lib/models/branch-activity-report/branch-activity-send-report.d.ts +0 -24
  187. package/lib/models/cancellation-transaction-report/cancellation-transaction.model.d.ts +0 -44
  188. package/lib/models/component-loading-states.d.ts +0 -5
  189. package/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.d.ts +0 -26
  190. package/lib/models/statement-of-account-report/statement-of-accounts.model.d.ts +0 -18
  191. package/lib/models/transaction-enquiry-report/transaction-enquiry.model.d.ts +0 -113
  192. package/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.d.ts +0 -13
  193. package/lib/models/transaction-monitoring-report/transaction-monitoring-report.d.ts +0 -23
  194. package/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.d.ts +0 -38
  195. package/lib/reports-lib-routing.module.d.ts +0 -7
  196. package/lib/reports-lib.component.d.ts +0 -8
  197. package/lib/reports-lib.module.d.ts +0 -33
  198. package/lib/reports-lib.service.d.ts +0 -6
  199. package/lib/services/config.service.d.ts +0 -20
  200. package/lib/services/report.service.d.ts +0 -80
  201. package/lib/shared/export-generic.service.d.ts +0 -50
  202. package/lib/shared/export.service.d.ts +0 -32
  203. package/lib/shared/loader/loader.component.d.ts +0 -5
  204. package/lib/shared/metadata/metadata.component.d.ts +0 -24
  205. package/lib/shared/page-size-selector/page-size-selector.component.d.ts +0 -15
  206. package/lib/shared/search-filter/search-filter.component.d.ts +0 -127
  207. package/lib/shared/shared.module.d.ts +0 -11
  208. /package/{lib → src}/assets/images/Search.svg +0 -0
  209. /package/{lib/assets/images/XMLogo.png → src/assets/images/XMCoral.png} +0 -0
  210. /package/{lib → src/lib}/assets/config/app-config.json +0 -0
  211. /package/{lib → src/lib}/assets/svg-loaders/blue-tail-spin.svg +0 -0
@@ -1,244 +0,0 @@
1
- import { Component, inject } from '@angular/core';
2
- import { ReportService } from '../../services/report.service';
3
- import { ExportService } from '../../shared/export.service';
4
- import { ComponentLoadingStates } from '../../models/component-loading-states';
5
- import { formatDate } from '@angular/common';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "ag-grid-angular";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "../../shared/page-size-selector/page-size-selector.component";
10
- import * as i4 from "../../shared/metadata/metadata.component";
11
- import * as i5 from "../../shared/loader/loader.component";
12
- import * as i6 from "../../shared/search-filter/search-filter.component";
13
- export class RevenuePerTransactionReportComponent {
14
- constructor() {
15
- this.data = [];
16
- this.filteredData = [];
17
- this.user = "";
18
- this.sysUserId = "";
19
- this.ReportName = "Revenue Per Transaction";
20
- this.reportService = inject(ReportService);
21
- this.exportService = inject(ExportService);
22
- this.ComponentLoadingState = ComponentLoadingStates;
23
- this.loadingState = ComponentLoadingStates.Complete;
24
- this.searchText = '';
25
- this.pageSize = 15;
26
- this.showReport = false;
27
- this.noDataFound = false;
28
- this.isFormValid = false;
29
- this.columnDefs = [
30
- { field: 'businessDate', headerName: 'Business Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, tooltipField: 'businessDate' },
31
- { field: 'payInDate', headerName: 'Send Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, tooltipField: 'payInDate' },
32
- { field: 'payOutDate', headerName: 'Receive Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'payOutDate' },
33
- { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionNumber' },
34
- { field: 'productCode', headerName: 'Product', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'productCode' },
35
- { field: 'sendCountry', headerName: 'Send Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendCountry' },
36
- { field: 'sendAgentName', headerName: 'SendClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendAgentName' },
37
- { field: 'sendAgentCode', headerName: 'SendClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentCode' },
38
- { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchCode' },
39
- { field: 'receiveCountry', headerName: 'Receive Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'receiveCountry' },
40
- { field: 'receiveAgentName', headerName: 'ReceiveClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentName' },
41
- { field: 'receiveAgentCode', headerName: 'ReceiveClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentCode' },
42
- { field: 'payInCurrency', headerName: 'Send CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payInCurrency' },
43
- { field: 'payInAmount', headerName: 'Send Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payInAmount' },
44
- { field: 'transactionCommission', headerName: 'Service Fee', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommission' },
45
- { field: 'usdRate', headerName: 'USD Rate', flex: 1, headerClass: 'ag-header-cell', wrapText: true, minWidth: 80, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRate' },
46
- { field: 'ezRemitSellMargin', headerName: 'XM SellMargin', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellMargin' },
47
- { field: 'ezRemitSellRate', headerName: 'XM SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellRate' },
48
- { field: 'bankSellRate', headerName: 'Bank SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'bankSellRate' },
49
- { field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payOutCurrency' },
50
- { field: 'payOutAmount', headerName: 'Receive Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payOutAmount' },
51
- { field: 'beneDeductAmount', headerName: 'BeneDeduct Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'beneDeductAmount' },
52
- { field: 'usdRateAppliedPayout', headerName: 'USDRate @Payout', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRateAppliedPayout' },
53
- { field: 'xMsCommissionShare', headerName: "XM's Service Fee Share", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsCommissionShare' },
54
- { field: 'xmExchangeVariation', headerName: 'XM Exchange Variation (Gain/Loss)', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmExchangeVariation' },
55
- { field: 'xMsBeneDeductShare', headerName: "XM's BeneDeduct Share", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsBeneDeductShare' },
56
- { field: 'revenuePerTransaction', headerName: 'Revenue Per Transaction', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'revenuePerTransaction' },
57
- { field: 'totalSettleAmount', headerName: 'Total Settlement', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalSettleAmount' },
58
- { field: 'transactionStatus', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionStatus' },
59
- ];
60
- this.defaultColDef = {
61
- sortable: true,
62
- filter: true,
63
- resizable: true,
64
- minwidth: 40,
65
- wrapHeaderText: true,
66
- autoHeaderHeight: true,
67
- suppressSizeToFit: false,
68
- wrapText: true
69
- };
70
- }
71
- ngOnInit() {
72
- if (sessionStorage.getItem('fossilusername')) {
73
- this.sysUserId = sessionStorage.getItem('fossilusername');
74
- }
75
- else {
76
- this.sysUserId = sessionStorage.getItem('ezremitusername');
77
- }
78
- this.sysUserId = this.sysUserId.replace(/^["'](.*)["']$/, '$1');
79
- }
80
- onGridReady(params) {
81
- this.gridApi = params.api;
82
- this.gridColumnApi = params.columnApi;
83
- }
84
- // Currency Formatter
85
- formatAmount(params) {
86
- if (params.value == null)
87
- return '0.000';
88
- const num = Number(params.value);
89
- return num.toFixed(3);
90
- }
91
- formatRate(params) {
92
- const value = params?.value;
93
- if (value !== null && value !== undefined && value !== '') {
94
- const num = Number(value);
95
- // return (Math.trunc(num * 100000000) / 100000000).toFixed(8);
96
- return parseFloat(value).toFixed(8);
97
- }
98
- return '';
99
- }
100
- onSearch(text) {
101
- this.searchText = text;
102
- if (this.searchText == null) {
103
- return;
104
- }
105
- if (this.searchText === "") {
106
- this.filteredData = JSON.parse(JSON.stringify(this.data));
107
- return;
108
- }
109
- const data = JSON.parse(JSON.stringify(this.data));
110
- this.filteredData = data.filter((row) => Object.values(row).some(val => String(val).toLowerCase().includes(this.searchText?.toLowerCase())));
111
- }
112
- handleExport(option) {
113
- this.selectedExportOption = option;
114
- if (this.selectedExportOption === 'pdf') {
115
- this.exportToPDF();
116
- }
117
- else if (this.selectedExportOption === 'excel') {
118
- this.exportToExcel();
119
- }
120
- else if (this.selectedExportOption === 'csv') {
121
- this.exportToCSV();
122
- }
123
- else {
124
- alert('Please select a valid export format.');
125
- }
126
- }
127
- exportToExcel() {
128
- if (!this.data?.length)
129
- return;
130
- const title = this.ReportName;
131
- const metadata = this.exportService.generateReportMetadata([
132
- ['Report Period ', this.fromDate + " - " + this.toDate],
133
- ['Report User & Time', this.user ? this.user + " @ " + this.reportDate : '' + " @ " + this.reportDate],
134
- ]);
135
- // --- search criteria ---
136
- const searchCriteria = this.searchCriteria;
137
- const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {
138
- currencyFields: ['payInAmount', 'payOutAmount',
139
- 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',
140
- 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'
141
- ],
142
- rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]
143
- });
144
- this.exportService.exportToExcelUniversal(title, metadata, searchCriteria, headers, rows, 'Revenue_Per_Transaction.xlsx');
145
- }
146
- exportToCSV() {
147
- if (!this.data?.length)
148
- return;
149
- const title = this.ReportName;
150
- const metadata = this.exportService.generateReportMetadata([
151
- ['Report Period ', this.fromDate + " - " + this.toDate],
152
- ['Report User & Time', this.user ? this.user + " @ " + this.reportDate : '' + " @ " + this.reportDate],
153
- ]);
154
- // --- search criteria ---
155
- const searchCriteria = this.searchCriteria;
156
- const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {
157
- currencyFields: ['payInAmount', 'payOutAmount',
158
- 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',
159
- 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'
160
- ],
161
- rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]
162
- });
163
- this.exportService.exportToCsvUniversal(title, metadata, searchCriteria, headers, rows, 'Revenue_Per_Transaction.csv');
164
- }
165
- exportToPDF() {
166
- if (!this.data?.length)
167
- return;
168
- const title = this.ReportName;
169
- const metadata = this.exportService.generateReportMetadata([
170
- ['Report Period ', this.fromDate + " - " + this.toDate],
171
- ['Report User & Time', this.user ? this.user + " @ " + this.reportDate : '' + " @ " + this.reportDate],
172
- ]);
173
- // --- search criteria ---
174
- const searchCriteria = this.searchCriteria;
175
- const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {
176
- currencyFields: ['payInAmount', 'payOutAmount',
177
- 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',
178
- 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'
179
- ],
180
- rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]
181
- });
182
- this.exportService.exportToPdfUniversal(title, metadata, searchCriteria, headers, rows, 'Revenue_Per_Transaction.pdf')
183
- .then(() => {
184
- console.log('PDF export completed.');
185
- })
186
- .catch(err => {
187
- console.error('PDF export failed:', err);
188
- });
189
- }
190
- handleSearch(criteria) {
191
- this.searchCriteria = criteria.searchCriteria;
192
- this.reportDate = new Date().toISOString();
193
- this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');
194
- const modal = criteria.modal;
195
- this.user = this.sysUserId;
196
- this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);
197
- this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);
198
- console.log(modal);
199
- // Code For Meta Data
200
- this.metaDataOne = {
201
- 'Report Period': this.fromDate + " - " + this.toDate,
202
- };
203
- this.metaDataTwo = {
204
- 'Report User & Time': this.user + " @ " + this.reportDate,
205
- };
206
- const searchData = {
207
- "StartDate": modal.fromDate,
208
- "EndDate": modal.toDate,
209
- "SendCountryCode": modal.sendCountry,
210
- "RecvCountryCode": modal.receiveCountry,
211
- "sendBusinessPartnerId": modal.sendBusinessPartner,
212
- "RecvBusinessPartenrId": modal.recvBusinessPartner,
213
- "TransactionStatus": modal.transactionStatus.join(",")
214
- };
215
- this.loadingState = ComponentLoadingStates.Loading;
216
- this.reportService.getRevenuePerTransactionReport(searchData)
217
- .subscribe({
218
- next: (data) => {
219
- this.data = data;
220
- this.filteredData = JSON.parse(JSON.stringify(this.data));
221
- console.log(this.data);
222
- this.noDataFound = data?.length === 0 ? true : false;
223
- },
224
- error: (err) => {
225
- console.log(err);
226
- this.loadingState = ComponentLoadingStates.Complete;
227
- },
228
- complete: () => {
229
- this.showReport = true;
230
- this.loadingState = ComponentLoadingStates.Complete;
231
- }
232
- });
233
- }
234
- handleFormValid(isValid) {
235
- this.isFormValid = isValid;
236
- }
237
- }
238
- RevenuePerTransactionReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RevenuePerTransactionReportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
239
- RevenuePerTransactionReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RevenuePerTransactionReportComponent, selector: "lib-revenue-per-transaction-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"filteredData?.length>0\">\r\n <lib-page-size-selector [totalEntries]=\"data?.length\" [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"filteredData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\"\r\n (gridReady)=\"onGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\r\n </div>\r\n\r\n</section>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}\n"], dependencies: [{ kind: "component", type: i1.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i4.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i5.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i6.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName", "initialFilters"], outputs: ["searchClicked", "formValid"] }] });
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RevenuePerTransactionReportComponent, decorators: [{
241
- type: Component,
242
- args: [{ selector: 'lib-revenue-per-transaction-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"filteredData?.length>0\">\r\n <lib-page-size-selector [totalEntries]=\"data?.length\" [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"filteredData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\"\r\n (gridReady)=\"onGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\r\n </div>\r\n\r\n</section>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}\n"] }]
243
- }], ctorParameters: function () { return []; } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZXZlbnVlLXBlci10cmFuc2FjdGlvbi1yZXBvcnQvcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZXZlbnVlLXBlci10cmFuc2FjdGlvbi1yZXBvcnQvcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQU83QyxNQUFNLE9BQU8sb0NBQW9DO0lBb0UvQztRQW5FQSxTQUFJLEdBQXlDLEVBQUUsQ0FBQztRQUNoRCxpQkFBWSxHQUF5QyxFQUFFLENBQUM7UUFDeEQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyx5QkFBeUIsQ0FBQTtRQUN0QyxrQkFBYSxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsa0JBQWEsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBTXJELDBCQUFxQixHQUFHLHNCQUFzQixDQUFD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RUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztZQUN0RCxDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7WUFDdEQsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDN0IsQ0FBQzs7aUlBM1BVLG9DQUFvQztxSEFBcEMsb0NBQW9DLDBFQ2JqRCwyL0NBeUJVOzJGRFpHLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDRSxvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJldmVudWVQZXJUcmFuc2FjdGlvblJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0L3JldmVudWUtcGVyLXRyYW5zYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuaW1wb3J0IHsgQ29sRGVmLCBDb2x1bW5BcGksIEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXJldmVudWUtcGVyLXRyYW5zYWN0aW9uLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JldmVudWUtcGVyLXRyYW5zYWN0aW9uLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJldmVudWVQZXJUcmFuc2FjdGlvblJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZGF0YTogUmV2ZW51ZVBlclRyYW5zYWN0aW9uUmVzcG9uc2VNb2RlbFtdID0gW107XHJcbiAgZmlsdGVyZWREYXRhOiBSZXZlbnVlUGVyVHJhbnNhY3Rpb25SZXNwb25zZU1vZGVsW10gPSBbXTtcclxuICB1c2VyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHN5c1VzZXJJZDogc3RyaW5nID0gXCJcIjtcclxuICBSZXBvcnROYW1lID0gXCJSZXZlbnVlIFBlciBUcmFuc2FjdGlvblwiXHJcbiAgcmVwb3J0U2VydmljZTogUmVwb3J0U2VydmljZSA9IGluamVjdChSZXBvcnRTZXJ2aWNlKTtcclxuICBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlID0gaW5qZWN0KEV4cG9ydFNlcnZpY2UpO1xyXG4gIHJlcG9ydERhdGU6IHN0cmluZztcclxuICBmcm9tRGF0ZTogc3RyaW5nO1xyXG4gIHRvRGF0ZTogc3RyaW5nO1xyXG4gIG1ldGFEYXRhT25lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIG1ldGFEYXRhVHdvOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICBzZWxlY3RlZEV4cG9ydE9wdGlvbjogc3RyaW5nO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxNTtcclxuICBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdO1xyXG5cclxuICBncmlkQXBpOiBHcmlkQXBpO1xyXG4gIGdyaWRDb2x1bW5BcGk6IENvbHVtbkFwaTtcclxuICBzaG93UmVwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9EYXRhRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Zvcm1WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb2x1bW5EZWZzOiBDb2xEZWY8UmV2ZW51ZVBlclRyYW5zYWN0aW9uUmVzcG9uc2VNb2RlbD5bXSA9IFtcclxuICAgIHsgZmllbGQ6ICdidXNpbmVzc0RhdGUnLCBoZWFkZXJOYW1lOiAnQnVzaW5lc3MgRGF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHRvb2x0aXBGaWVsZDogJ2J1c2luZXNzRGF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlJbkRhdGUnLCBoZWFkZXJOYW1lOiAnU2VuZCBEYXRlJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiAxMDAsIHRvb2x0aXBGaWVsZDogJ3BheUluRGF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlPdXREYXRlJywgaGVhZGVyTmFtZTogJ1JlY2VpdmUgRGF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogMTAwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAncGF5T3V0RGF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicsIGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBOdW1iZXInLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInIH0sXHJcbiAgICB7IGZpZWxkOiAncHJvZHVjdENvZGUnLCBoZWFkZXJOYW1lOiAnUHJvZHVjdCcsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdwcm9kdWN0Q29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdzZW5kQ291bnRyeScsIGhlYWRlck5hbWU6ICdTZW5kIENvdW50cnknLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDEyMCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3NlbmRDb3VudHJ5JyB9LFxyXG4gICAgeyBmaWVsZDogJ3NlbmRBZ2VudE5hbWUnLCBoZWFkZXJOYW1lOiAnU2VuZENsaWVudCBOYW1lJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiAxMjAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdzZW5kQWdlbnROYW1lJyB9LFxyXG4gICAgeyBmaWVsZDogJ3NlbmRBZ2VudENvZGUnLCBoZWFkZXJOYW1lOiAnU2VuZENsaWVudCBDb2RlJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3NlbmRBZ2VudENvZGUnIH0sXHJcbiAgICB7IGZpZWxkOiAnc2VuZEFnZW50QnJhbmNoQ29kZScsIGhlYWRlck5hbWU6ICdTZW5kQ2xpZW50IEJyYW5jaENvZGUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAnc2VuZEFnZW50QnJhbmNoQ29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdyZWNlaXZlQ291bnRyeScsIGhlYWRlck5hbWU6ICdSZWNlaXZlIENvdW50cnknLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAncmVjZWl2ZUNvdW50cnknIH0sXHJcbiAgICB7IGZpZWxkOiAncmVjZWl2ZUFnZW50TmFtZScsIGhlYWRlck5hbWU6ICdSZWNlaXZlQ2xpZW50IE5hbWUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDE1MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVBZ2VudE5hbWUnIH0sXHJcbiAgICB7IGZpZWxkOiAncmVjZWl2ZUFnZW50Q29kZScsIGhlYWRlck5hbWU6ICdSZWNlaXZlQ2xpZW50IENvZGUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDkwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAncmVjZWl2ZUFnZW50Q29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlJbkN1cnJlbmN5JywgaGVhZGVyTmFtZTogJ1NlbmQgQ2N5Q29kZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdwYXlJbkN1cnJlbmN5JyB9LFxyXG4gICAgeyBmaWVsZDogJ3BheUluQW1vdW50JywgaGVhZGVyTmFtZTogJ1NlbmQgQW1vdW50JywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3BheUluQW1vdW50JyB9LFxyXG4gICAgeyBmaWVsZDogJ3RyYW5zYWN0aW9uQ29tbWlzc2lvbicsIGhlYWRlck5hbWU6ICdTZXJ2aWNlIEZlZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkNvbW1pc3Npb24nIH0sXHJcbiAgICB7IGZpZWxkOiAndXNkUmF0ZScsIGhlYWRlck5hbWU6ICdVU0QgUmF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCB3cmFwVGV4dDogdHJ1ZSwgbWluV2lkdGg6IDgwLCBhdXRvSGVpZ2h0OiB0cnVlLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAndXNkUmF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdlelJlbWl0U2VsbE1hcmdpbicsIGhlYWRlck5hbWU6ICdYTSBTZWxsTWFyZ2luJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICdlelJlbWl0U2VsbE1hcmdpbicgfSxcclxuICAgIHsgZmllbGQ6ICdlelJlbWl0U2VsbFJhdGUnLCBoZWFkZXJOYW1lOiAnWE0gU2VsbFJhdGUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ2V6UmVtaXRTZWxsUmF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdiYW5rU2VsbFJhdGUnLCBoZWFkZXJOYW1lOiAnQmFuayBTZWxsUmF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAnYmFua1NlbGxSYXRlJyB9LFxyXG4gICAgeyBmaWVsZDogJ3BheU91dEN1cnJlbmN5JywgaGVhZGVyTmFtZTogJ1JlY2VpdmUgQ2N5Q29kZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdwYXlPdXRDdXJyZW5jeScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlPdXRBbW91bnQnLCBoZWFkZXJOYW1lOiAnUmVjZWl2ZSBBbW91bnQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAncGF5T3V0QW1vdW50JyB9LFxyXG4gICAgeyBmaWVsZDogJ2JlbmVEZWR1Y3RBbW91bnQnLCBoZWFkZXJOYW1lOiAnQmVuZURlZHVjdCBBbW91bnQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAnYmVuZURlZHVjdEFtb3VudCcgfSxcclxuICAgIHsgZmllbGQ6ICd1c2RSYXRlQXBwbGllZFBheW91dCcsIGhlYWRlck5hbWU6ICdVU0RSYXRlIEBQYXlvdXQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3VzZFJhdGVBcHBsaWVkUGF5b3V0JyB9LFxyXG4gICAgeyBmaWVsZDogJ3hNc0NvbW1pc3Npb25TaGFyZScsIGhlYWRlck5hbWU6IFwiWE0ncyBTZXJ2aWNlIEZlZSBTaGFyZVwiLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAneG1zQ29tbWlzc2lvblNoYXJlJyB9LFxyXG4gICAgeyBmaWVsZDogJ3htRXhjaGFuZ2VWYXJpYXRpb24nLCBoZWFkZXJOYW1lOiAnWE0gRXhjaGFuZ2UgVmFyaWF0aW9uIChHYWluL0xvc3MpJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3htRXhjaGFuZ2VWYXJpYXRpb24nIH0sXHJcbiAgICB7IGZpZWxkOiAneE1zQmVuZURlZHVjdFNoYXJlJywgaGVhZGVyTmFtZTogXCJYTSdzIEJlbmVEZWR1Y3QgU2hhcmVcIiwgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3htc0JlbmVEZWR1Y3RTaGFyZScgfSxcclxuICAgIHsgZmllbGQ6ICdyZXZlbnVlUGVyVHJhbnNhY3Rpb24nLCBoZWFkZXJOYW1lOiAnUmV2ZW51ZSBQZXIgVHJhbnNhY3Rpb24nLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAncmV2ZW51ZVBlclRyYW5zYWN0aW9uJyB9LFxyXG4gICAgeyBmaWVsZDogJ3RvdGFsU2V0dGxlQW1vdW50JywgaGVhZGVyTmFtZTogJ1RvdGFsIFNldHRsZW1lbnQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAndG90YWxTZXR0bGVBbW91bnQnIH0sXHJcbiAgICB7IGZpZWxkOiAndHJhbnNhY3Rpb25TdGF0dXMnLCBoZWFkZXJOYW1lOiAnVHJhbnNhY3Rpb24gU3RhdHVzJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJyB9LFxyXG4gIF1cclxuXHJcbiAgZGVmYXVsdENvbERlZiA9IHtcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgbWlud2lkdGg6IDQwLFxyXG4gICAgd3JhcEhlYWRlclRleHQ6IHRydWUsXHJcbiAgICBhdXRvSGVhZGVySGVpZ2h0OiB0cnVlLFxyXG4gICAgc3VwcHJlc3NTaXplVG9GaXQ6IGZhbHNlLFxyXG4gICAgd3JhcFRleHQ6IHRydWVcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2Zvc3NpbHVzZXJuYW1lJykpIHtcclxuICAgICAgdGhpcy5zeXNVc2VySWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdmb3NzaWx1c2VybmFtZScpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zeXNVc2VySWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlenJlbWl0dXNlcm5hbWUnKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3lzVXNlcklkID0gdGhpcy5zeXNVc2VySWQucmVwbGFjZSgvXltcIiddKC4qKVtcIiddJC8sICckMScpO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHkocGFyYW1zOiBHcmlkUmVhZHlFdmVudCkge1xyXG4gICAgdGhpcy5ncmlkQXBpID0gcGFyYW1zLmFwaTtcclxuICAgIHRoaXMuZ3JpZENvbHVtbkFwaSA9IHBhcmFtcy5jb2x1bW5BcGk7XHJcbiAgfVxyXG5cclxuICAvLyBDdXJyZW5jeSBGb3JtYXR0ZXJcclxuICBmb3JtYXRBbW91bnQocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSByZXR1cm4gJzAuMDAwJztcclxuICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXJhbXMudmFsdWUpO1xyXG4gICAgcmV0dXJuIG51bS50b0ZpeGVkKDMpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0UmF0ZShwYXJhbXM6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtcz8udmFsdWU7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHtcclxuICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcclxuICAgICAgLy8gcmV0dXJuIChNYXRoLnRydW5jKG51bSAqIDEwMDAwMDAwMCkgLyAxMDAwMDAwMDApLnRvRml4ZWQoOCk7XHJcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKS50b0ZpeGVkKDgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2godGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaFRleHQgPT09IFwiXCIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcclxuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gZGF0YS5maWx0ZXIoKHJvdykgPT5cclxuICAgICAgT2JqZWN0LnZhbHVlcyhyb3cpLnNvbWUodmFsID0+IFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0Py50b0xvd2VyQ2FzZSgpKSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIGhhbmRsZUV4cG9ydChvcHRpb246IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV4cG9ydE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID09PSAncGRmJykge1xyXG4gICAgICB0aGlzLmV4cG9ydFRvUERGKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24gPT09ICdleGNlbCcpIHtcclxuICAgICAgdGhpcy5leHBvcnRUb0V4Y2VsKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24gPT09ICdjc3YnKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0VG9DU1YoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGEgdmFsaWQgZXhwb3J0IGZvcm1hdC4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydFRvRXhjZWwoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLlJlcG9ydE5hbWU7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgIFsnUmVwb3J0IFBlcmlvZCAnLCB0aGlzLmZyb21EYXRlICsgXCIgLSBcIiArIHRoaXMudG9EYXRlXSxcclxuICAgICAgWydSZXBvcnQgVXNlciAmIFRpbWUnLCB0aGlzLnVzZXI/dGhpcy51c2VyK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlOicnK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlXSxcclxuICAgIF0pO1xyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSAtLS1cclxuICAgIGNvbnN0IHNlYXJjaENyaXRlcmlhOiBbc3RyaW5nLCBzdHJpbmddW10gPSB0aGlzLnNlYXJjaENyaXRlcmlhO1xyXG5cclxuICAgIGNvbnN0IHsgaGVhZGVycywgcm93cyB9ID0gdGhpcy5leHBvcnRTZXJ2aWNlLnByZXBhcmVFeHBvcnRUYWJsZSh0aGlzLmRhdGEsIHRoaXMuY29sdW1uRGVmcywge1xyXG4gICAgICBjdXJyZW5jeUZpZWxkczogWydwYXlJbkFtb3VudCcsICdwYXlPdXRBbW91bnQnLFxyXG4gICAgICAgICd0cmFuc2FjdGlvbkNvbW1pc3Npb24nLCAnYmVuZURlZHVjdEFtb3VudCcsICd4TXNDb21taXNzaW9uU2hhcmUnLCAneG1FeGNoYW5nZVZhcmlhdGlvbicsXHJcbiAgICAgICAgJ3hNc0JlbmVEZWR1Y3RTaGFyZScsICdyZXZlbnVlUGVyVHJhbnNhY3Rpb24nLCAndG90YWxTZXR0bGVBbW91bnQnXHJcbiAgICAgIF0sXHJcbiAgICAgIHJhdGVGaWVsZHM6IFsndXNkUmF0ZScsICdlelJlbWl0U2VsbE1hcmdpbicsICdlelJlbWl0U2VsbFJhdGUnLCAnYmFua1NlbGxSYXRlJywgJ3VzZFJhdGVBcHBsaWVkUGF5b3V0JyxdXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0VG9FeGNlbFVuaXZlcnNhbCh0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBoZWFkZXJzLCByb3dzLCAnUmV2ZW51ZV9QZXJfVHJhbnNhY3Rpb24ueGxzeCcpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9DU1YoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLlJlcG9ydE5hbWU7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgIFsnUmVwb3J0IFBlcmlvZCAnLCB0aGlzLmZyb21EYXRlICsgXCIgLSBcIiArIHRoaXMudG9EYXRlXSxcclxuICAgICAgWydSZXBvcnQgVXNlciAmIFRpbWUnLCB0aGlzLnVzZXI/dGhpcy51c2VyK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlOicnK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlXSxcclxuICAgIF0pO1xyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSAtLS1cclxuICAgIGNvbnN0IHNlYXJjaENyaXRlcmlhOiBbc3RyaW5nLCBzdHJpbmddW10gPSB0aGlzLnNlYXJjaENyaXRlcmlhO1xyXG5cclxuICAgIGNvbnN0IHsgaGVhZGVycywgcm93cyB9ID0gdGhpcy5leHBvcnRTZXJ2aWNlLnByZXBhcmVFeHBvcnRUYWJsZSh0aGlzLmRhdGEsIHRoaXMuY29sdW1uRGVmcywge1xyXG4gICAgICBjdXJyZW5jeUZpZWxkczogWydwYXlJbkFtb3VudCcsICdwYXlPdXRBbW91bnQnLFxyXG4gICAgICAgICd0cmFuc2FjdGlvbkNvbW1pc3Npb24nLCAnYmVuZURlZHVjdEFtb3VudCcsICd4TXNDb21taXNzaW9uU2hhcmUnLCAneG1FeGNoYW5nZVZhcmlhdGlvbicsXHJcbiAgICAgICAgJ3hNc0JlbmVEZWR1Y3RTaGFyZScsICdyZXZlbnVlUGVyVHJhbnNhY3Rpb24nLCAndG90YWxTZXR0bGVBbW91bnQnXHJcbiAgICAgIF0sXHJcbiAgICAgIHJhdGVGaWVsZHM6IFsndXNkUmF0ZScsICdlelJlbWl0U2VsbE1hcmdpbicsICdlelJlbWl0U2VsbFJhdGUnLCAnYmFua1NlbGxSYXRlJywgJ3VzZFJhdGVBcHBsaWVkUGF5b3V0JyxdXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0VG9Dc3ZVbml2ZXJzYWwodGl0bGUsIG1ldGFkYXRhLCBzZWFyY2hDcml0ZXJpYSwgaGVhZGVycywgcm93cywgJ1JldmVudWVfUGVyX1RyYW5zYWN0aW9uLmNzdicpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9QREYoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLlJlcG9ydE5hbWU7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgWydSZXBvcnQgUGVyaW9kICcsIHRoaXMuZnJvbURhdGUgKyBcIiAtIFwiICsgdGhpcy50b0RhdGVdLFxyXG4gICAgICBbJ1JlcG9ydCBVc2VyICYgVGltZScsIHRoaXMudXNlcj90aGlzLnVzZXIrXCIgQCBcIit0aGlzLnJlcG9ydERhdGU6JycrXCIgQCBcIit0aGlzLnJlcG9ydERhdGVdLFxyXG4gICAgXSk7XHJcbiAgICAvLyAtLS0gc2VhcmNoIGNyaXRlcmlhIC0tLVxyXG4gICAgY29uc3Qgc2VhcmNoQ3JpdGVyaWE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG4gICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLmV4cG9ydFNlcnZpY2UucHJlcGFyZUV4cG9ydFRhYmxlKHRoaXMuZGF0YSwgdGhpcy5jb2x1bW5EZWZzLCB7XHJcbiAgICAgIGN1cnJlbmN5RmllbGRzOiBbJ3BheUluQW1vdW50JywgJ3BheU91dEFtb3VudCcsXHJcbiAgICAgICAgJ3RyYW5zYWN0aW9uQ29tbWlzc2lvbicsICdiZW5lRGVkdWN0QW1vdW50JywgJ3hNc0NvbW1pc3Npb25TaGFyZScsICd4bUV4Y2hhbmdlVmFyaWF0aW9uJyxcclxuICAgICAgICAneE1zQmVuZURlZHVjdFNoYXJlJywgJ3JldmVudWVQZXJUcmFuc2FjdGlvbicsICd0b3RhbFNldHRsZUFtb3VudCdcclxuICAgICAgXSxcclxuICAgICAgcmF0ZUZpZWxkczogWyd1c2RSYXRlJywgJ2V6UmVtaXRTZWxsTWFyZ2luJywgJ2V6UmVtaXRTZWxsUmF0ZScsICdiYW5rU2VsbFJhdGUnLCAndXNkUmF0ZUFwcGxpZWRQYXlvdXQnLF1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRUb1BkZlVuaXZlcnNhbCh0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBoZWFkZXJzLCByb3dzLCAnUmV2ZW51ZV9QZXJfVHJhbnNhY3Rpb24ucGRmJylcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdQREYgZXhwb3J0IGNvbXBsZXRlZC4nKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignUERGIGV4cG9ydCBmYWlsZWQ6JywgZXJyKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWFyY2goY3JpdGVyaWE6IGFueSkge1xyXG4gICAgdGhpcy5zZWFyY2hDcml0ZXJpYSA9IGNyaXRlcmlhLnNlYXJjaENyaXRlcmlhO1xyXG4gICAgdGhpcy5yZXBvcnREYXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xyXG4gICAgdGhpcy5yZXBvcnREYXRlID0gZm9ybWF0RGF0ZSh0aGlzLnJlcG9ydERhdGUsICdkZC9NTS95eXl5IGhoOm1tIGEnLCAnZW4tVVMnKTtcclxuICAgIGNvbnN0IG1vZGFsID0gY3JpdGVyaWEubW9kYWw7XHJcbiAgICB0aGlzLnVzZXIgPSB0aGlzLnN5c1VzZXJJZDtcclxuICAgIHRoaXMuZnJvbURhdGUgPSBmb3JtYXREYXRlKG1vZGFsLmZyb21EYXRlLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJykuc2xpY2UoMCwxMCk7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IGZvcm1hdERhdGUobW9kYWwudG9EYXRlLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJykuc2xpY2UoMCwxMCk7XHJcbiAgICBjb25zb2xlLmxvZyhtb2RhbCk7XHJcbiAgICAvLyBDb2RlIEZvciBNZXRhIERhdGFcclxuICAgIHRoaXMubWV0YURhdGFPbmUgPSB7XHJcbiAgICAgICdSZXBvcnQgUGVyaW9kJzogdGhpcy5mcm9tRGF0ZSArIFwiIC0gXCIgKyB0aGlzLnRvRGF0ZSxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1ldGFEYXRhVHdvID0ge1xyXG4gICAgICAnUmVwb3J0IFVzZXIgJiBUaW1lJzogdGhpcy51c2VyK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlLFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlYXJjaERhdGEgPSB7XHJcbiAgICAgIFwiU3RhcnREYXRlXCI6IG1vZGFsLmZyb21EYXRlLFxyXG4gICAgICBcIkVuZERhdGVcIjogbW9kYWwudG9EYXRlLFxyXG4gICAgICBcIlNlbmRDb3VudHJ5Q29kZVwiOiBtb2RhbC5zZW5kQ291bnRyeSxcclxuICAgICAgXCJSZWN2Q291bnRyeUNvZGVcIjogbW9kYWwucmVjZWl2ZUNvdW50cnksXHJcbiAgICAgIFwic2VuZEJ1c2luZXNzUGFydG5lcklkXCI6IG1vZGFsLnNlbmRCdXNpbmVzc1BhcnRuZXIsXHJcbiAgICAgIFwiUmVjdkJ1c2luZXNzUGFydGVucklkXCI6IG1vZGFsLnJlY3ZCdXNpbmVzc1BhcnRuZXIsXHJcbiAgICAgIFwiVHJhbnNhY3Rpb25TdGF0dXNcIjogbW9kYWwudHJhbnNhY3Rpb25TdGF0dXMuam9pbihcIixcIilcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Mb2FkaW5nO1xyXG4gICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldFJldmVudWVQZXJUcmFuc2FjdGlvblJlcG9ydChzZWFyY2hEYXRhKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YUZvdW5kID0gZGF0YT8ubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVwb3J0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb3JtVmFsaWQoaXNWYWxpZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1WYWxpZCA9IGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bGliLXNlYXJjaC1maWx0ZXIgW1JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIChzZWFyY2hDbGlja2VkKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCIgKGZvcm1WYWxpZCk9XCJoYW5kbGVGb3JtVmFsaWQoJGV2ZW50KVwiPlxyXG48L2xpYi1zZWFyY2gtZmlsdGVyPlxyXG48YXBwLWxvYWRlciBjbGFzcz1cIlwiICpuZ0lmPVwibG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG48c2VjdGlvbiAqbmdJZj1cInNob3dSZXBvcnQgJiYgaXNGb3JtVmFsaWRcIiBjbGFzcz1cIm15LTIgbXgtMVwiPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhRm91bmRcIj5cclxuICAgICAgICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbbWV0YURhdGFPbmVdPVwibWV0YURhdGFPbmVcIiBbbWV0YURhdGFUd29dPVwibWV0YURhdGFUd29cIiAoZXhwb3J0RXZlbnQpPVwiaGFuZGxlRXhwb3J0KCRldmVudClcIlxyXG4gICAgICAgICAgICAoc2VhcmNoRXZlbnQpPVwib25TZWFyY2goJGV2ZW50KVwiPjwvbGliLW1ldGFkYXRhPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgKm5nSWY9XCJmaWx0ZXJlZERhdGE/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiZGF0YT8ubGVuZ3RoXCIgW2RlZmF1bHRTaXplXT1cIicxNSdcIiBbZ3JpZEFwaV09XCJncmlkQXBpXCI+XHJcbiAgICAgICAgICAgICAgICA+PC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZSB0cmFuc2FjdGlvbi1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDQwN3B4O1wiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFtyb3dEYXRhXT1cImZpbHRlcmVkRGF0YVwiIFtyb3dIZWlnaHRdPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgW2hlYWRlckhlaWdodF09XCIyMlwiIFtwYWdpbmF0aW9uXT1cInRydWVcIiBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG10LTNcIiAqbmdJZj1cIm5vRGF0YUZvdW5kXCI+XHJcbiAgICAgICAgTm8gRGF0YSBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYS5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9zZWN0aW9uPiJdfQ==