ng-kinintel 0.0.397 → 20.0.2

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 (184) hide show
  1. package/fesm2022/ng-kinintel.mjs +11874 -0
  2. package/fesm2022/ng-kinintel.mjs.map +1 -0
  3. package/index.d.ts +2818 -5
  4. package/package.json +6 -14
  5. package/esm2020/lib/components/alert-groups/alert-groups.component.mjs +0 -76
  6. package/esm2020/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.mjs +0 -83
  7. package/esm2020/lib/components/dashboard-editor/configure-item/configure-item.component.mjs +0 -853
  8. package/esm2020/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.mjs +0 -56
  9. package/esm2020/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.mjs +0 -114
  10. package/esm2020/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.mjs +0 -163
  11. package/esm2020/lib/components/dashboard-editor/configure-item/vis-network-options.json +0 -135
  12. package/esm2020/lib/components/dashboard-editor/dashboard-editor.component.mjs +0 -580
  13. package/esm2020/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.mjs +0 -15
  14. package/esm2020/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.mjs +0 -50
  15. package/esm2020/lib/components/dashboard-editor/item-component/item-component.component.mjs +0 -1226
  16. package/esm2020/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.mjs +0 -111
  17. package/esm2020/lib/components/dashboards/dashboards.component.mjs +0 -163
  18. package/esm2020/lib/components/dashboards/view-dashboard/view-dashboard.component.mjs +0 -429
  19. package/esm2020/lib/components/data-explorer/change-source-warning/change-source-warning.component.mjs +0 -20
  20. package/esm2020/lib/components/data-explorer/data-explorer.component.mjs +0 -243
  21. package/esm2020/lib/components/data-explorer/export-data/export-data.component.mjs +0 -62
  22. package/esm2020/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.mjs +0 -70
  23. package/esm2020/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.mjs +0 -190
  24. package/esm2020/lib/components/data-picker/data-picker.component.mjs +0 -79
  25. package/esm2020/lib/components/data-search/data-search.component.mjs +0 -11
  26. package/esm2020/lib/components/data-sharing-invite/data-sharing-invite.component.mjs +0 -52
  27. package/esm2020/lib/components/dataset/create-dataset/create-dataset.component.mjs +0 -47
  28. package/esm2020/lib/components/dataset/dataset-editor/available-columns/available-columns.component.mjs +0 -28
  29. package/esm2020/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.mjs +0 -344
  30. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.mjs +0 -80
  31. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.mjs +0 -54
  32. package/esm2020/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.mjs +0 -67
  33. package/esm2020/lib/components/dataset/dataset-editor/dataset-editor.component.mjs +0 -1134
  34. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.mjs +0 -201
  35. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.mjs +0 -25
  36. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.mjs +0 -72
  37. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.mjs +0 -62
  38. package/esm2020/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.mjs +0 -41
  39. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.mjs +0 -78
  40. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.mjs +0 -39
  41. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.mjs +0 -75
  42. package/esm2020/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.mjs +0 -107
  43. package/esm2020/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.mjs +0 -20
  44. package/esm2020/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.mjs +0 -20
  45. package/esm2020/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.mjs +0 -58
  46. package/esm2020/lib/components/dataset/dataset-editor/share-query/share-query.component.mjs +0 -110
  47. package/esm2020/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.mjs +0 -20
  48. package/esm2020/lib/components/dataset/dataset.component.mjs +0 -294
  49. package/esm2020/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.mjs +0 -130
  50. package/esm2020/lib/components/datasource/create-datasource/api-access/api-access.component.mjs +0 -132
  51. package/esm2020/lib/components/datasource/create-datasource/create-datasource.component.mjs +0 -729
  52. package/esm2020/lib/components/datasource/create-datasource/import-data/import-data.component.mjs +0 -146
  53. package/esm2020/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.mjs +0 -165
  54. package/esm2020/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.mjs +0 -145
  55. package/esm2020/lib/components/datasource/datasource.component.mjs +0 -162
  56. package/esm2020/lib/components/datasource/document-datasource/document-datasource.component.mjs +0 -297
  57. package/esm2020/lib/components/export-project/export-project.component.mjs +0 -29
  58. package/esm2020/lib/components/feeds/feed/feed.component.mjs +0 -92
  59. package/esm2020/lib/components/feeds/feeds.component.mjs +0 -145
  60. package/esm2020/lib/components/job-tasks/job-tasks.component.mjs +0 -25
  61. package/esm2020/lib/components/marketplace/marketplace.component.mjs +0 -65
  62. package/esm2020/lib/components/metadata/metadata.component.mjs +0 -65
  63. package/esm2020/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.mjs +0 -113
  64. package/esm2020/lib/components/notification-groups/notification-groups.component.mjs +0 -86
  65. package/esm2020/lib/components/project-picker/project-picker.component.mjs +0 -118
  66. package/esm2020/lib/components/project-settings/project-link-selection/project-link-selection.component.mjs +0 -104
  67. package/esm2020/lib/components/project-settings/project-settings.component.mjs +0 -155
  68. package/esm2020/lib/components/query-caching/edit-query-cache/edit-query-cache.component.mjs +0 -51
  69. package/esm2020/lib/components/query-caching/query-cache-view/query-cache-view.component.mjs +0 -121
  70. package/esm2020/lib/components/query-caching/query-caching.component.mjs +0 -162
  71. package/esm2020/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.mjs +0 -45
  72. package/esm2020/lib/components/shared-with-me/shared-with-me.component.mjs +0 -174
  73. package/esm2020/lib/components/snapshots/snapshots.component.mjs +0 -244
  74. package/esm2020/lib/components/tag-picker/tag-picker.component.mjs +0 -74
  75. package/esm2020/lib/components/task-time-periods/task-time-periods.component.mjs +0 -55
  76. package/esm2020/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.mjs +0 -40
  77. package/esm2020/lib/guards/dashboard-changes.guard.mjs +0 -22
  78. package/esm2020/lib/kinintel-config.mjs +0 -3
  79. package/esm2020/lib/ng-kinintel.module.mjs +0 -437
  80. package/esm2020/lib/objects/action-event.mjs +0 -16
  81. package/esm2020/lib/services/alert.service.mjs +0 -52
  82. package/esm2020/lib/services/dashboard.service.mjs +0 -75
  83. package/esm2020/lib/services/data-processor.service.mjs +0 -56
  84. package/esm2020/lib/services/data-search.service.mjs +0 -36
  85. package/esm2020/lib/services/dataset.service.mjs +0 -187
  86. package/esm2020/lib/services/datasource.service.mjs +0 -93
  87. package/esm2020/lib/services/external.service.mjs +0 -33
  88. package/esm2020/lib/services/feed.service.mjs +0 -50
  89. package/esm2020/lib/services/notification.service.mjs +0 -41
  90. package/esm2020/lib/services/project.service.mjs +0 -130
  91. package/esm2020/lib/services/tag.service.mjs +0 -63
  92. package/esm2020/ng-kinintel.mjs +0 -5
  93. package/esm2020/public-api.mjs +0 -43
  94. package/fesm2015/ng-kinintel.mjs +0 -12182
  95. package/fesm2015/ng-kinintel.mjs.map +0 -1
  96. package/fesm2020/ng-kinintel.mjs +0 -11872
  97. package/fesm2020/ng-kinintel.mjs.map +0 -1
  98. package/lib/components/alert-groups/alert-groups.component.d.ts +0 -30
  99. package/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.d.ts +0 -28
  100. package/lib/components/dashboard-editor/configure-item/configure-item.component.d.ts +0 -256
  101. package/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.d.ts +0 -16
  102. package/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.d.ts +0 -59
  103. package/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.d.ts +0 -26
  104. package/lib/components/dashboard-editor/dashboard-editor.component.d.ts +0 -85
  105. package/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.d.ts +0 -8
  106. package/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.d.ts +0 -22
  107. package/lib/components/dashboard-editor/item-component/item-component.component.d.ts +0 -264
  108. package/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.d.ts +0 -30
  109. package/lib/components/dashboards/dashboards.component.d.ts +0 -56
  110. package/lib/components/dashboards/view-dashboard/view-dashboard.component.d.ts +0 -81
  111. package/lib/components/data-explorer/change-source-warning/change-source-warning.component.d.ts +0 -11
  112. package/lib/components/data-explorer/data-explorer.component.d.ts +0 -61
  113. package/lib/components/data-explorer/export-data/export-data.component.d.ts +0 -17
  114. package/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.d.ts +0 -25
  115. package/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.d.ts +0 -44
  116. package/lib/components/data-picker/data-picker.component.d.ts +0 -32
  117. package/lib/components/data-search/data-search.component.d.ts +0 -5
  118. package/lib/components/data-sharing-invite/data-sharing-invite.component.d.ts +0 -21
  119. package/lib/components/dataset/create-dataset/create-dataset.component.d.ts +0 -17
  120. package/lib/components/dataset/dataset-editor/available-columns/available-columns.component.d.ts +0 -12
  121. package/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.d.ts +0 -61
  122. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.d.ts +0 -21
  123. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.d.ts +0 -20
  124. package/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.d.ts +0 -19
  125. package/lib/components/dataset/dataset-editor/dataset-editor.component.d.ts +0 -131
  126. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.d.ts +0 -63
  127. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.d.ts +0 -11
  128. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.d.ts +0 -20
  129. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.d.ts +0 -16
  130. package/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.d.ts +0 -18
  131. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.d.ts +0 -23
  132. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.d.ts +0 -13
  133. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.d.ts +0 -22
  134. package/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.d.ts +0 -27
  135. package/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.d.ts +0 -11
  136. package/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.d.ts +0 -11
  137. package/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.d.ts +0 -25
  138. package/lib/components/dataset/dataset-editor/share-query/share-query.component.d.ts +0 -41
  139. package/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.d.ts +0 -11
  140. package/lib/components/dataset/dataset.component.d.ts +0 -74
  141. package/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.d.ts +0 -26
  142. package/lib/components/datasource/create-datasource/api-access/api-access.component.d.ts +0 -31
  143. package/lib/components/datasource/create-datasource/create-datasource.component.d.ts +0 -112
  144. package/lib/components/datasource/create-datasource/import-data/import-data.component.d.ts +0 -28
  145. package/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.d.ts +0 -40
  146. package/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.d.ts +0 -34
  147. package/lib/components/datasource/datasource.component.d.ts +0 -46
  148. package/lib/components/datasource/document-datasource/document-datasource.component.d.ts +0 -64
  149. package/lib/components/export-project/export-project.component.d.ts +0 -9
  150. package/lib/components/feeds/feed/feed.component.d.ts +0 -30
  151. package/lib/components/feeds/feeds.component.d.ts +0 -47
  152. package/lib/components/job-tasks/job-tasks.component.d.ts +0 -11
  153. package/lib/components/marketplace/marketplace.component.d.ts +0 -42
  154. package/lib/components/metadata/metadata.component.d.ts +0 -24
  155. package/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.d.ts +0 -37
  156. package/lib/components/notification-groups/notification-groups.component.d.ts +0 -28
  157. package/lib/components/project-picker/project-picker.component.d.ts +0 -37
  158. package/lib/components/project-settings/project-link-selection/project-link-selection.component.d.ts +0 -32
  159. package/lib/components/project-settings/project-settings.component.d.ts +0 -40
  160. package/lib/components/query-caching/edit-query-cache/edit-query-cache.component.d.ts +0 -17
  161. package/lib/components/query-caching/query-cache-view/query-cache-view.component.d.ts +0 -35
  162. package/lib/components/query-caching/query-caching.component.d.ts +0 -38
  163. package/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.d.ts +0 -21
  164. package/lib/components/shared-with-me/shared-with-me.component.d.ts +0 -43
  165. package/lib/components/snapshots/snapshots.component.d.ts +0 -52
  166. package/lib/components/tag-picker/tag-picker.component.d.ts +0 -27
  167. package/lib/components/task-time-periods/task-time-periods.component.d.ts +0 -20
  168. package/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.d.ts +0 -17
  169. package/lib/guards/dashboard-changes.guard.d.ts +0 -11
  170. package/lib/kinintel-config.d.ts +0 -10
  171. package/lib/ng-kinintel.module.d.ts +0 -116
  172. package/lib/objects/action-event.d.ts +0 -12
  173. package/lib/services/alert.service.d.ts +0 -17
  174. package/lib/services/dashboard.service.d.ts +0 -25
  175. package/lib/services/data-processor.service.d.ts +0 -18
  176. package/lib/services/data-search.service.d.ts +0 -14
  177. package/lib/services/dataset.service.d.ts +0 -56
  178. package/lib/services/datasource.service.d.ts +0 -34
  179. package/lib/services/external.service.d.ts +0 -12
  180. package/lib/services/feed.service.d.ts +0 -19
  181. package/lib/services/notification.service.d.ts +0 -16
  182. package/lib/services/project.service.d.ts +0 -27
  183. package/lib/services/tag.service.d.ts +0 -19
  184. package/public-api.d.ts +0 -38
@@ -1,110 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import moment from "moment";
4
- import * as lodash from 'lodash';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/legacy-dialog";
7
- import * as i2 from "ng-kiniauth";
8
- import * as i3 from "../../../../services/dataset.service";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "@angular/material/legacy-button";
11
- import * as i6 from "@angular/material/icon";
12
- import * as i7 from "@angular/material/legacy-form-field";
13
- import * as i8 from "@angular/material/legacy-input";
14
- import * as i9 from "@angular/cdk/drag-drop";
15
- import * as i10 from "@angular/forms";
16
- import * as i11 from "@angular/material/legacy-core";
17
- import * as i12 from "@angular/material/legacy-checkbox";
18
- import * as i13 from "@angular/material/legacy-tabs";
19
- import * as i14 from "@angular/material/legacy-autocomplete";
20
- const _ = lodash.default;
21
- export class ShareQueryComponent {
22
- constructor(dialogRef, data, authService, accountService, datasetService) {
23
- this.dialogRef = dialogRef;
24
- this.data = data;
25
- this.authService = authService;
26
- this.accountService = accountService;
27
- this.datasetService = datasetService;
28
- this.shareWithAccount = false;
29
- this.hideShareWithAccount = false;
30
- this.sharedAccounts = [];
31
- this.invitedAccounts = [];
32
- this.accountSearch = '';
33
- this.enterSharingIdentifier = false;
34
- this.sharingIdentifier = '';
35
- this.sharingIdentifierError = false;
36
- this.moment = moment;
37
- this.marketplaceData = {};
38
- this.listOnMarketplace = false;
39
- this.String = String;
40
- }
41
- async ngOnInit() {
42
- this.hideShareWithAccount = !!this.data.hideShareWithAccount;
43
- this.session = await this.authService.getSessionData();
44
- this.loadSharedAccounts();
45
- this.loadInvitedAccounts();
46
- }
47
- async loadSharedAccounts() {
48
- this.sharedAccounts = await this.datasetService.getSharedAccessGroupsForDatasetInstance(this.data.datasetInstance.id);
49
- this.shareWithAccount = _.some(this.sharedAccounts, sharedAccount => {
50
- return _.find(sharedAccount.scopeAccesses, { itemIdentifier: String(this.session.account.accountId) });
51
- });
52
- }
53
- async loadInvitedAccounts() {
54
- this.invitedAccounts = await this.datasetService.getInvitedAccessGroupsForDatasetInstance(this.data.datasetInstance.id);
55
- }
56
- async filterSharableAccounts() {
57
- this.accounts = await this.accountService.searchForDiscoverableAccounts(this.accountSearch);
58
- }
59
- async setLoggedInAccountShareStatus(event) {
60
- await this.datasetService.setSharedAccessForDatasetInstanceForLoggedInAccount(this.data.datasetInstance.id, event.checked);
61
- this.loadSharedAccounts();
62
- }
63
- async lookupSharingIdentifier() {
64
- try {
65
- let account = await this.accountService.lookupDiscoverableAccountByExternalIdentifier(this.sharingIdentifier);
66
- this.selectAccount(account);
67
- }
68
- catch (e) {
69
- this.sharingIdentifierError = true;
70
- }
71
- }
72
- // Select account, and show additional options.
73
- selectAccount(account) {
74
- this.accountSearch = '';
75
- this.sharingIdentifierError = false;
76
- this.sharingIdentifier = '';
77
- this.selectedAccount = account;
78
- }
79
- // Invite the selected account to share with the current query.
80
- async inviteSelectedAccount() {
81
- await this.datasetService.inviteAccountToShareDatasetInstance(this.data.datasetInstance.id, this.selectedAccount.externalIdentifier, this.selectedExpiry);
82
- this.selectedAccount = null;
83
- this.loadInvitedAccounts();
84
- }
85
- // Revoke access to a group
86
- async revokeAccessToGroup(accessGroup) {
87
- const message = 'Are you sure you would like to revoke access to this account?';
88
- if (window.confirm(message)) {
89
- await this.datasetService.revokeAccessToGroupForDatasetInstance(this.data.datasetInstance.id, accessGroup);
90
- this.loadSharedAccounts();
91
- }
92
- }
93
- async cancelInvitation(accessGroup) {
94
- const message = 'Are you sure you would like to cancel this invitation?';
95
- if (window.confirm(message)) {
96
- await this.datasetService.cancelInvitationForAccessGroupForDatasetInstance(this.data.datasetInstance.id, accessGroup);
97
- this.loadInvitedAccounts();
98
- }
99
- }
100
- }
101
- ShareQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ShareQueryComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.AuthenticationService }, { token: i2.AccountService }, { token: i3.DatasetService }], target: i0.ɵɵFactoryTarget.Component });
102
- ShareQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ShareQueryComponent, selector: "ki-share-query", host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Share Query</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content p-0\">\n <mat-tab-group>\n <mat-tab label=\"Sharing\">\n <div class=\"bg-blue-50 p-4\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <!-- Heroicon name: mini/information-circle -->\n <svg class=\"h-5 w-5 text-blue-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\"\n fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M19 10.5a8.5 8.5 0 11-17 0 8.5 8.5 0 0117 0zM8.25 9.75A.75.75 0 019 9h.253a1.75 1.75 0 011.709 2.13l-.46 2.066a.25.25 0 00.245.304H11a.75.75 0 010 1.5h-.253a1.75 1.75 0 01-1.709-2.13l.46-2.066a.25.25 0 00-.245-.304H9a.75.75 0 01-.75-.75zM10 7a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <div class=\"ml-3 flex-1 md:flex md:justify-between\">\n <p class=\"text-sm text-blue-700 mb-0\">\n Share this query with other DAP users via a number of different methods.\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"!hideShareWithAccount\" class=\"px-6 pt-6 pb-4\">\n <mat-checkbox\n [(ngModel)]=\"shareWithAccount\" (change)=\"setLoggedInAccountShareStatus($event)\">\n Share With This Account\n </mat-checkbox>\n <div class=\"text-xs text-gray-400\">\n Make this query available to everyone who has access to the\n <b>{{ (session && session.account) ? session.account.name : '' }}</b> account.\n </div>\n </div>\n\n <div class=\"px-6 py-4\">\n\n <div class=\"font-medium mb-2\">Share with other accounts</div>\n\n <div>\n <mat-form-field class=\"w-full mt-0 mb-0\" appearance=\"fill\">\n <mat-label>Search for Account</mat-label>\n <input type=\"text\"\n placeholder=\"Enter account name\"\n matInput\n [(ngModel)]=\"accountSearch\"\n [matAutocomplete]=\"auto\" (keyup)=\"filterSharableAccounts()\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selectAccount($event.option.value)\">\n <mat-option *ngFor=\"let account of accounts\" [value]=\"account\">\n {{ account.accountName }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <a (click)=\"enterSharingIdentifier=true\"\n class=\"bg-secondary px-2 py-1 rounded text-white inline-block mb-4\">or enter\n a sharing identifier</a>\n\n <div *ngIf=\"enterSharingIdentifier\" class=\"flex\">\n <input class=\"full\" type=\"text\" [(ngModel)]=\"sharingIdentifier\"\n placeholder=\"Enter sharing identifier for other account\">\n <button (click)=\"lookupSharingIdentifier()\" mat-flat-button color=\"primary\" class=\"ml-2\">\n Lookup\n </button>\n </div>\n <div class=\"text-xs text-red-500\" *ngIf=\"sharingIdentifierError\">Invalid sharing identifier\n supplied.\n </div>\n\n </div>\n\n <div *ngIf=\"selectedAccount\" class=\"mt-8\">\n\n <h4>Share with account: {{selectedAccount.accountName}}</h4>\n\n <div class=\"flex items-center justify-between\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Expiry Date for sharing</mat-label>\n <input type=\"date\"\n matInput\n [(ngModel)]=\"selectedExpiry\">\n </mat-form-field>\n\n <button mat-flat-button color=\"primary\" (click)=\"inviteSelectedAccount()\">\n Invite to share\n </button>\n\n </div>\n\n\n </div>\n\n <hr class=\"my-8\">\n\n <div class=\" pl-3 tracking-wide uppercase border-b pb-2\">Invited Accounts</div>\n\n <table class=\"mb-10\">\n <thead class=\"bg-gray-100\">\n <tr>\n <th class=\"w-1/2 sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Account Name</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Access Expires</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\"></th>\n </tr>\n </thead>\n <tr *ngFor=\"let account of invitedAccounts\">\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">{{account.scopeAccesses[0].itemLabel}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">{{account.expiryDateString ? moment(account.expiryDateString).format('MMMM Do YYYY') : 'Never'}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500 text-right\">\n <a class=\"text-secondary bg-gray-50 border px-2 py-1 rounded\" (click)=\"cancelInvitation(account.groupName)\">cancel invite</a>\n </td>\n </tr>\n </table>\n\n\n <div class=\" pl-3 tracking-wide uppercase border-b pb-2\">Accounts with Access</div>\n\n <table>\n <thead class=\"bg-gray-100\">\n <tr>\n <th class=\"w-1/2 sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Account Name</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Access Expires</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\"></th>\n </tr>\n </thead>\n <ng-template ngFor let-account [ngForOf]=\"sharedAccounts\">\n <tr *ngIf=\"String(account.scopeAccesses[0].itemIdentifier) !== String(session.account.accountId)\">\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">{{account.scopeAccesses[0].itemLabel}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">{{account.expiryDateString ? moment(account.expiryDateString).format('MMMM Do YYYY') : 'Never'}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500 text-right\">\n <a class=\"text-secondary bg-gray-50 border px-2 py-1 rounded\" (click)=\"revokeAccessToGroup(account.groupName)\">revoke access</a>\n </td>\n </tr>\n </ng-template>\n </table>\n\n\n </div>\n </mat-tab>\n<!-- <mat-tab label=\"Marketplace\">-->\n<!-- <div class=\"px-6 py-4\">-->\n<!-- <mat-checkbox-->\n<!-- [(ngModel)]=\"listOnMarketplace\">-->\n<!-- List Query on Marketplace-->\n<!-- </mat-checkbox>-->\n<!-- <div class=\"text-xs text-gray-400\">-->\n<!-- Advertise this query to other users via the DAP Marketplace.-->\n<!-- </div>-->\n\n<!-- <div class=\"border-l pl-8\" *ngIf=\"listOnMarketplace\">-->\n\n<!-- <div class=\"my-4\">-->\n<!-- <p><b>Marketplace Description</b></p>-->\n<!-- <textarea [(ngModel)]=\"marketplaceData.description\" placeholder=\"Enter description\" rows=\"3\"-->\n<!-- class=\"w-full\"></textarea>-->\n<!-- <div class=\"text-xs text-gray-400\">Describe the data you are offering.</div>-->\n<!-- </div>-->\n\n<!-- <div class=\"my-4\">-->\n<!-- <p><b>Upload Icon</b></p>-->\n<!-- <input class=\"full\" type=\"file\" [(ngModel)]=\"marketplaceData.icon\">-->\n<!-- <div class=\"text-xs text-gray-400\">Attach a small image to help identify your data.</div>-->\n<!-- </div>-->\n\n<!-- <div class=\"my-4\">-->\n<!-- <p><b>Price</b></p>-->\n<!-- <input class=\"w-1/2\" type=\"number\" placeholder=\"Enter price\" [(ngModel)]=\"marketplaceData.price\">-->\n<!-- <div class=\"text-xs text-gray-400\">Set a price for accessing this dataset.</div>-->\n<!-- </div>-->\n\n<!-- <mat-checkbox-->\n<!-- [(ngModel)]=\"marketplaceData.requireVerification\">-->\n<!-- Require Account Confirmation/Verification-->\n<!-- </mat-checkbox>-->\n<!-- <div class=\"text-xs text-gray-400\">Perform additional validation on accounts requesting access-->\n<!-- to this query.</div>-->\n\n<!-- </div>-->\n\n<!-- </div>-->\n<!-- </mat-tab>-->\n </mat-tab-group>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close>Close</button>\n </div>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: i7.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i9.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i12.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatLegacyTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i13.MatLegacyTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i14.MatLegacyAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i14.MatLegacyAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }] });
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ShareQueryComponent, decorators: [{
104
- type: Component,
105
- args: [{ selector: 'ki-share-query', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Share Query</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content p-0\">\n <mat-tab-group>\n <mat-tab label=\"Sharing\">\n <div class=\"bg-blue-50 p-4\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <!-- Heroicon name: mini/information-circle -->\n <svg class=\"h-5 w-5 text-blue-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\"\n fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M19 10.5a8.5 8.5 0 11-17 0 8.5 8.5 0 0117 0zM8.25 9.75A.75.75 0 019 9h.253a1.75 1.75 0 011.709 2.13l-.46 2.066a.25.25 0 00.245.304H11a.75.75 0 010 1.5h-.253a1.75 1.75 0 01-1.709-2.13l.46-2.066a.25.25 0 00-.245-.304H9a.75.75 0 01-.75-.75zM10 7a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <div class=\"ml-3 flex-1 md:flex md:justify-between\">\n <p class=\"text-sm text-blue-700 mb-0\">\n Share this query with other DAP users via a number of different methods.\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"!hideShareWithAccount\" class=\"px-6 pt-6 pb-4\">\n <mat-checkbox\n [(ngModel)]=\"shareWithAccount\" (change)=\"setLoggedInAccountShareStatus($event)\">\n Share With This Account\n </mat-checkbox>\n <div class=\"text-xs text-gray-400\">\n Make this query available to everyone who has access to the\n <b>{{ (session && session.account) ? session.account.name : '' }}</b> account.\n </div>\n </div>\n\n <div class=\"px-6 py-4\">\n\n <div class=\"font-medium mb-2\">Share with other accounts</div>\n\n <div>\n <mat-form-field class=\"w-full mt-0 mb-0\" appearance=\"fill\">\n <mat-label>Search for Account</mat-label>\n <input type=\"text\"\n placeholder=\"Enter account name\"\n matInput\n [(ngModel)]=\"accountSearch\"\n [matAutocomplete]=\"auto\" (keyup)=\"filterSharableAccounts()\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selectAccount($event.option.value)\">\n <mat-option *ngFor=\"let account of accounts\" [value]=\"account\">\n {{ account.accountName }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <a (click)=\"enterSharingIdentifier=true\"\n class=\"bg-secondary px-2 py-1 rounded text-white inline-block mb-4\">or enter\n a sharing identifier</a>\n\n <div *ngIf=\"enterSharingIdentifier\" class=\"flex\">\n <input class=\"full\" type=\"text\" [(ngModel)]=\"sharingIdentifier\"\n placeholder=\"Enter sharing identifier for other account\">\n <button (click)=\"lookupSharingIdentifier()\" mat-flat-button color=\"primary\" class=\"ml-2\">\n Lookup\n </button>\n </div>\n <div class=\"text-xs text-red-500\" *ngIf=\"sharingIdentifierError\">Invalid sharing identifier\n supplied.\n </div>\n\n </div>\n\n <div *ngIf=\"selectedAccount\" class=\"mt-8\">\n\n <h4>Share with account: {{selectedAccount.accountName}}</h4>\n\n <div class=\"flex items-center justify-between\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Expiry Date for sharing</mat-label>\n <input type=\"date\"\n matInput\n [(ngModel)]=\"selectedExpiry\">\n </mat-form-field>\n\n <button mat-flat-button color=\"primary\" (click)=\"inviteSelectedAccount()\">\n Invite to share\n </button>\n\n </div>\n\n\n </div>\n\n <hr class=\"my-8\">\n\n <div class=\" pl-3 tracking-wide uppercase border-b pb-2\">Invited Accounts</div>\n\n <table class=\"mb-10\">\n <thead class=\"bg-gray-100\">\n <tr>\n <th class=\"w-1/2 sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Account Name</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Access Expires</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\"></th>\n </tr>\n </thead>\n <tr *ngFor=\"let account of invitedAccounts\">\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">{{account.scopeAccesses[0].itemLabel}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">{{account.expiryDateString ? moment(account.expiryDateString).format('MMMM Do YYYY') : 'Never'}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500 text-right\">\n <a class=\"text-secondary bg-gray-50 border px-2 py-1 rounded\" (click)=\"cancelInvitation(account.groupName)\">cancel invite</a>\n </td>\n </tr>\n </table>\n\n\n <div class=\" pl-3 tracking-wide uppercase border-b pb-2\">Accounts with Access</div>\n\n <table>\n <thead class=\"bg-gray-100\">\n <tr>\n <th class=\"w-1/2 sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Account Name</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">Access Expires</th>\n <th class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\"></th>\n </tr>\n </thead>\n <ng-template ngFor let-account [ngForOf]=\"sharedAccounts\">\n <tr *ngIf=\"String(account.scopeAccesses[0].itemIdentifier) !== String(session.account.accountId)\">\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">{{account.scopeAccesses[0].itemLabel}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">{{account.expiryDateString ? moment(account.expiryDateString).format('MMMM Do YYYY') : 'Never'}}</td>\n <td class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500 text-right\">\n <a class=\"text-secondary bg-gray-50 border px-2 py-1 rounded\" (click)=\"revokeAccessToGroup(account.groupName)\">revoke access</a>\n </td>\n </tr>\n </ng-template>\n </table>\n\n\n </div>\n </mat-tab>\n<!-- <mat-tab label=\"Marketplace\">-->\n<!-- <div class=\"px-6 py-4\">-->\n<!-- <mat-checkbox-->\n<!-- [(ngModel)]=\"listOnMarketplace\">-->\n<!-- List Query on Marketplace-->\n<!-- </mat-checkbox>-->\n<!-- <div class=\"text-xs text-gray-400\">-->\n<!-- Advertise this query to other users via the DAP Marketplace.-->\n<!-- </div>-->\n\n<!-- <div class=\"border-l pl-8\" *ngIf=\"listOnMarketplace\">-->\n\n<!-- <div class=\"my-4\">-->\n<!-- <p><b>Marketplace Description</b></p>-->\n<!-- <textarea [(ngModel)]=\"marketplaceData.description\" placeholder=\"Enter description\" rows=\"3\"-->\n<!-- class=\"w-full\"></textarea>-->\n<!-- <div class=\"text-xs text-gray-400\">Describe the data you are offering.</div>-->\n<!-- </div>-->\n\n<!-- <div class=\"my-4\">-->\n<!-- <p><b>Upload Icon</b></p>-->\n<!-- <input class=\"full\" type=\"file\" [(ngModel)]=\"marketplaceData.icon\">-->\n<!-- <div class=\"text-xs text-gray-400\">Attach a small image to help identify your data.</div>-->\n<!-- </div>-->\n\n<!-- <div class=\"my-4\">-->\n<!-- <p><b>Price</b></p>-->\n<!-- <input class=\"w-1/2\" type=\"number\" placeholder=\"Enter price\" [(ngModel)]=\"marketplaceData.price\">-->\n<!-- <div class=\"text-xs text-gray-400\">Set a price for accessing this dataset.</div>-->\n<!-- </div>-->\n\n<!-- <mat-checkbox-->\n<!-- [(ngModel)]=\"marketplaceData.requireVerification\">-->\n<!-- Require Account Confirmation/Verification-->\n<!-- </mat-checkbox>-->\n<!-- <div class=\"text-xs text-gray-400\">Perform additional validation on accounts requesting access-->\n<!-- to this query.</div>-->\n\n<!-- </div>-->\n\n<!-- </div>-->\n<!-- </mat-tab>-->\n </mat-tab-group>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close>Close</button>\n </div>\n\n</div>\n" }]
106
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
107
- type: Inject,
108
- args: [MAT_DIALOG_DATA]
109
- }] }, { type: i2.AuthenticationService }, { type: i2.AccountService }, { type: i3.DatasetService }]; } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmUtcXVlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3Ivc2hhcmUtcXVlcnkvc2hhcmUtcXVlcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3Ivc2hhcmUtcXVlcnkvc2hhcmUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUNILHNCQUFzQixJQUFJLGVBQWUsRUFFNUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUl6QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFakMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQVF6QixNQUFNLE9BQU8sbUJBQW1CO0lBb0I1QixZQUFtQixTQUE0QyxFQUNuQixJQUFTLEVBQ2pDLFdBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGNBQThCO1FBSi9CLGNBQVMsR0FBVCxTQUFTLENBQW1DO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUF0QjNDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFDekIsb0JB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bmVudCwgSW5qZWN0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSxcbiAgICBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZSwgQXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tICduZy1raW5pYXV0aCc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge0RhdGFzZXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9kYXRhc2V0LnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgKiBhcyBsb2Rhc2ggZnJvbSAnbG9kYXNoJztcblxuY29uc3QgXyA9IGxvZGFzaC5kZWZhdWx0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2tpLXNoYXJlLXF1ZXJ5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2hhcmUtcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NoYXJlLXF1ZXJ5LmNvbXBvbmVudC5zYXNzJ10sXG4gICAgaG9zdDoge2NsYXNzOiAnZGlhbG9nLXdyYXBwZXInfVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZVF1ZXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBzaGFyZVdpdGhBY2NvdW50ID0gZmFsc2U7XG4gICAgcHVibGljIGhpZGVTaGFyZVdpdGhBY2NvdW50ID0gZmFsc2U7XG4gICAgcHVibGljIHNoYXJlZEFjY291bnRzOiBhbnkgPSBbXTtcbiAgICBwdWJsaWMgaW52aXRlZEFjY291bnRzOiBhbnkgPSBbXTtcbiAgICBwdWJsaWMgc2Vzc2lvbjogYW55O1xuICAgIHB1YmxpYyBhY2NvdW50czogYW55O1xuICAgIHB1YmxpYyBhY2NvdW50U2VhcmNoOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgZW50ZXJTaGFyaW5nSWRlbnRpZmllcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBzaGFyaW5nSWRlbnRpZmllcjogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIHNoYXJpbmdJZGVudGlmaWVyRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRBY2NvdW50OiBhbnk7XG4gICAgcHVibGljIHNlbGVjdGVkRXhwaXJ5OiBzdHJpbmc7XG4gICAgcHVibGljIG1vbWVudDogYW55ID0gbW9tZW50O1xuICAgIHB1YmxpYyBtYXJrZXRwbGFjZURhdGE6IGFueSA9IHt9O1xuICAgIHB1YmxpYyBsaXN0T25NYXJrZXRwbGFjZSA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFN0cmluZyA9IFN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTaGFyZVF1ZXJ5Q29tcG9uZW50PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBkYXRhc2V0U2VydmljZTogRGF0YXNldFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5oaWRlU2hhcmVXaXRoQWNjb3VudCA9ICEhdGhpcy5kYXRhLmhpZGVTaGFyZVdpdGhBY2NvdW50O1xuICAgICAgICB0aGlzLnNlc3Npb24gPSBhd2FpdCB0aGlzLmF1dGhTZXJ2aWNlLmdldFNlc3Npb25EYXRhKCk7XG4gICAgICAgIHRoaXMubG9hZFNoYXJlZEFjY291bnRzKCk7XG4gICAgICAgIHRoaXMubG9hZEludml0ZWRBY2NvdW50cygpO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIGxvYWRTaGFyZWRBY2NvdW50cygpIHtcbiAgICAgICAgdGhpcy5zaGFyZWRBY2NvdW50cyA9IGF3YWl0IHRoaXMuZGF0YXNldFNlcnZpY2UuZ2V0U2hhcmVkQWNjZXNzR3JvdXBzRm9yRGF0YXNldEluc3RhbmNlKHRoaXMuZGF0YS5kYXRhc2V0SW5zdGFuY2UuaWQpO1xuICAgICAgICB0aGlzLnNoYXJlV2l0aEFjY291bnQgPSBfLnNvbWUodGhpcy5zaGFyZWRBY2NvdW50cywgc2hhcmVkQWNjb3VudCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gXy5maW5kKHNoYXJlZEFjY291bnQuc2NvcGVBY2Nlc3Nlcywge2l0ZW1JZGVudGlmaWVyOiBTdHJpbmcodGhpcy5zZXNzaW9uLmFjY291bnQuYWNjb3VudElkKX0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkSW52aXRlZEFjY291bnRzKCkge1xuICAgICAgICB0aGlzLmludml0ZWRBY2NvdW50cyA9IGF3YWl0IHRoaXMuZGF0YXNldFNlcnZpY2UuZ2V0SW52aXRlZEFjY2Vzc0dyb3Vwc0ZvckRhdGFzZXRJbnN0YW5jZSh0aGlzLmRhdGEuZGF0YXNldEluc3RhbmNlLmlkKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBmaWx0ZXJTaGFyYWJsZUFjY291bnRzKCkge1xuICAgICAgICB0aGlzLmFjY291bnRzID0gYXdhaXQgdGhpcy5hY2NvdW50U2VydmljZS5zZWFyY2hGb3JEaXNjb3ZlcmFibGVBY2NvdW50cyh0aGlzLmFjY291bnRTZWFyY2gpO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIHNldExvZ2dlZEluQWNjb3VudFNoYXJlU3RhdHVzKGV2ZW50KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YXNldFNlcnZpY2Uuc2V0U2hhcmVkQWNjZXNzRm9yRGF0YXNldEluc3RhbmNlRm9yTG9nZ2VkSW5BY2NvdW50KHRoaXMuZGF0YS5kYXRhc2V0SW5zdGFuY2UuaWQsIGV2ZW50LmNoZWNrZWQpO1xuICAgICAgICB0aGlzLmxvYWRTaGFyZWRBY2NvdW50cygpO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIGxvb2t1cFNoYXJpbmdJZGVudGlmaWVyKCkge1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgYWNjb3VudDogYW55ID0gYXdhaXQgdGhpcy5hY2NvdW50U2VydmljZS5sb29rdXBEaXNjb3ZlcmFibGVBY2NvdW50QnlFeHRlcm5hbElkZW50aWZpZXIodGhpcy5zaGFyaW5nSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFjY291bnQoYWNjb3VudCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcmluZ0lkZW50aWZpZXJFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIFNlbGVjdCBhY2NvdW50LCBhbmQgc2hvdyBhZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAgcHVibGljIHNlbGVjdEFjY291bnQoYWNjb3VudDogYW55KSB7XG5cbiAgICAgICAgdGhpcy5hY2NvdW50U2VhcmNoID0gJyc7XG4gICAgICAgIHRoaXMuc2hhcmluZ0lkZW50aWZpZXJFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNoYXJpbmdJZGVudGlmaWVyID0gJyc7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEFjY291bnQgPSBhY2NvdW50O1xuXG4gICAgfVxuXG4gICAgLy8gSW52aXRlIHRoZSBzZWxlY3RlZCBhY2NvdW50IHRvIHNoYXJlIHdpdGggdGhlIGN1cnJlbnQgcXVlcnkuXG4gICAgcHVibGljIGFzeW5jIGludml0ZVNlbGVjdGVkQWNjb3VudCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhc2V0U2VydmljZS5pbnZpdGVBY2NvdW50VG9TaGFyZURhdGFzZXRJbnN0YW5jZSh0aGlzLmRhdGEuZGF0YXNldEluc3RhbmNlLmlkLCB0aGlzLnNlbGVjdGVkQWNjb3VudC5leHRlcm5hbElkZW50aWZpZXIsIHRoaXMuc2VsZWN0ZWRFeHBpcnkpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQWNjb3VudCA9IG51bGw7XG4gICAgICAgIHRoaXMubG9hZEludml0ZWRBY2NvdW50cygpO1xuICAgIH1cblxuXG4gICAgLy8gUmV2b2tlIGFjY2VzcyB0byBhIGdyb3VwXG4gICAgcHVibGljIGFzeW5jIHJldm9rZUFjY2Vzc1RvR3JvdXAoYWNjZXNzR3JvdXApIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gcmV2b2tlIGFjY2VzcyB0byB0aGlzIGFjY291bnQ/JztcbiAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRhdGFzZXRTZXJ2aWNlLnJldm9rZUFjY2Vzc1RvR3JvdXBGb3JEYXRhc2V0SW5zdGFuY2UodGhpcy5kYXRhLmRhdGFzZXRJbnN0YW5jZS5pZCwgYWNjZXNzR3JvdXApO1xuICAgICAgICAgICAgdGhpcy5sb2FkU2hhcmVkQWNjb3VudHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjYW5jZWxJbnZpdGF0aW9uKGFjY2Vzc0dyb3VwKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIGNhbmNlbCB0aGlzIGludml0YXRpb24/JztcbiAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRhdGFzZXRTZXJ2aWNlLmNhbmNlbEludml0YXRpb25Gb3JBY2Nlc3NHcm91cEZvckRhdGFzZXRJbnN0YW5jZSh0aGlzLmRhdGEuZGF0YXNldEluc3RhbmNlLmlkLCBhY2Nlc3NHcm91cCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRJbnZpdGVkQWNjb3VudHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2dcIiBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLXRpdGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+U2hhcmUgUXVlcnk8L2gyPlxuXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudCBwLTBcIj5cbiAgICAgICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlNoYXJpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctYmx1ZS01MCBwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBIZXJvaWNvbiBuYW1lOiBtaW5pL2luZm9ybWF0aW9uLWNpcmNsZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSB0ZXh0LWJsdWUtNDAwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOSAxMC41YTguNSA4LjUgMCAxMS0xNyAwIDguNSA4LjUgMCAwMTE3IDB6TTguMjUgOS43NUEuNzUuNzUgMCAwMTkgOWguMjUzYTEuNzUgMS43NSAwIDAxMS43MDkgMi4xM2wtLjQ2IDIuMDY2YS4yNS4yNSAwIDAwLjI0NS4zMDRIMTFhLjc1Ljc1IDAgMDEwIDEuNWgtLjI1M2ExLjc1IDEuNzUgMCAwMS0xLjcwOS0yLjEzbC40Ni0yLjA2NmEuMjUuMjUgMCAwMC0uMjQ1LS4zMDRIOWEuNzUuNzUgMCAwMS0uNzUtLjc1ek0xMCA3YTEgMSAwIDEwMC0yIDEgMSAwIDAwMCAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0zIGZsZXgtMSBtZDpmbGV4IG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWJsdWUtNzAwIG1iLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmUgdGhpcyBxdWVyeSB3aXRoIG90aGVyIERBUCB1c2VycyB2aWEgYSBudW1iZXIgb2YgZGlmZmVyZW50IG1ldGhvZHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaGlkZVNoYXJlV2l0aEFjY291bnRcIiBjbGFzcz1cInB4LTYgcHQtNiBwYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2hhcmVXaXRoQWNjb3VudFwiIChjaGFuZ2UpPVwic2V0TG9nZ2VkSW5BY2NvdW50U2hhcmVTdGF0dXMoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmUgV2l0aCBUaGlzIEFjY291bnRcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1ha2UgdGhpcyBxdWVyeSBhdmFpbGFibGUgdG8gZXZlcnlvbmUgd2hvIGhhcyBhY2Nlc3MgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyAoc2Vzc2lvbiAmJiBzZXNzaW9uLmFjY291bnQpID8gc2Vzc2lvbi5hY2NvdW50Lm5hbWUgOiAnJyB9fTwvYj4gYWNjb3VudC5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNiBweS00XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbWVkaXVtIG1iLTJcIj5TaGFyZSB3aXRoIG90aGVyIGFjY291bnRzPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctZnVsbCBtdC0wIG1iLTBcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoIGZvciBBY2NvdW50PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBhY2NvdW50IG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFjY291bnRTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiAoa2V5dXApPVwiZmlsdGVyU2hhcmFibGVBY2NvdW50cygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0QWNjb3VudCgkZXZlbnQub3B0aW9uLnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgYWNjb3VudCBvZiBhY2NvdW50c1wiIFt2YWx1ZV09XCJhY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhY2NvdW50LmFjY291bnROYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImVudGVyU2hhcmluZ0lkZW50aWZpZXI9dHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLXNlY29uZGFyeSBweC0yIHB5LTEgcm91bmRlZCB0ZXh0LXdoaXRlIGlubGluZS1ibG9jayBtYi00XCI+b3IgZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHNoYXJpbmcgaWRlbnRpZmllcjwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudGVyU2hhcmluZ0lkZW50aWZpZXJcIiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmdWxsXCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNoYXJpbmdJZGVudGlmaWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBzaGFyaW5nIGlkZW50aWZpZXIgZm9yIG90aGVyIGFjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb29rdXBTaGFyaW5nSWRlbnRpZmllcigpXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgdGV4dC1yZWQtNTAwXCIgKm5nSWY9XCJzaGFyaW5nSWRlbnRpZmllckVycm9yXCI+SW52YWxpZCBzaGFyaW5nIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEFjY291bnRcIiBjbGFzcz1cIm10LThcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlNoYXJlIHdpdGggYWNjb3VudDoge3tzZWxlY3RlZEFjY291bnQuYWNjb3VudE5hbWV9fTwvaDQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5FeHBpcnkgRGF0ZSBmb3Igc2hhcmluZzwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFeHBpcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImludml0ZVNlbGVjdGVkQWNjb3VudCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludml0ZSB0byBzaGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LThcIj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHBsLTMgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgYm9yZGVyLWIgcGItMlwiPkludml0ZWQgQWNjb3VudHM8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJtYi0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwiYmctZ3JheS0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ3LTEvMiBzdGlja3kgdG9wLTAgei0xMCBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCBiZy1vcGFjaXR5LTc1IHB5LTMuNSBweC00IHRleHQtbGVmdCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBiYWNrZHJvcC1ibHVyIGJhY2tkcm9wLWZpbHRlclwiPkFjY291bnQgTmFtZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgYmFja2Ryb3AtYmx1ciBiYWNrZHJvcC1maWx0ZXJcIj5BY2Nlc3MgRXhwaXJlczwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgYmFja2Ryb3AtYmx1ciBiYWNrZHJvcC1maWx0ZXJcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGFjY291bnQgb2YgaW52aXRlZEFjY291bnRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXAgYm9yZGVyLWdyYXktMjAwIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj57e2FjY291bnQuc2NvcGVBY2Nlc3Nlc1swXS5pdGVtTGFiZWx9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXAgYm9yZGVyLWdyYXktMjAwIHB4LTQgcHktMiB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57e2FjY291bnQuZXhwaXJ5RGF0ZVN0cmluZyA/IG1vbWVudChhY2NvdW50LmV4cGlyeURhdGVTdHJpbmcpLmZvcm1hdCgnTU1NTSBEbyBZWVlZJykgOiAnTmV2ZXInfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIHRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSBiZy1ncmF5LTUwIGJvcmRlciBweC0yIHB5LTEgcm91bmRlZFwiIChjbGljayk9XCJjYW5jZWxJbnZpdGF0aW9uKGFjY291bnQuZ3JvdXBOYW1lKVwiPmNhbmNlbCBpbnZpdGU8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHBsLTMgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgYm9yZGVyLWIgcGItMlwiPkFjY291bnRzIHdpdGggQWNjZXNzPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwiYmctZ3JheS0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ3LTEvMiBzdGlja3kgdG9wLTAgei0xMCBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCBiZy1vcGFjaXR5LTc1IHB5LTMuNSBweC00IHRleHQtbGVmdCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBiYWNrZHJvcC1ibHVyIGJhY2tkcm9wLWZpbHRlclwiPkFjY291bnQgTmFtZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgYmFja2Ryb3AtYmx1ciBiYWNrZHJvcC1maWx0ZXJcIj5BY2Nlc3MgRXhwaXJlczwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgYmFja2Ryb3AtYmx1ciBiYWNrZHJvcC1maWx0ZXJcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWFjY291bnQgW25nRm9yT2ZdPVwic2hhcmVkQWNjb3VudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJTdHJpbmcoYWNjb3VudC5zY29wZUFjY2Vzc2VzWzBdLml0ZW1JZGVudGlmaWVyKSAhPT0gU3RyaW5nKHNlc3Npb24uYWNjb3VudC5hY2NvdW50SWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+e3thY2NvdW50LnNjb3BlQWNjZXNzZXNbMF0uaXRlbUxhYmVsfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBib3JkZXItZ3JheS0yMDAgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPnt7YWNjb3VudC5leHBpcnlEYXRlU3RyaW5nID8gbW9tZW50KGFjY291bnQuZXhwaXJ5RGF0ZVN0cmluZykuZm9ybWF0KCdNTU1NIERvIFlZWVknKSA6ICdOZXZlcid9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIHRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgYmctZ3JheS01MCBib3JkZXIgcHgtMiBweS0xIHJvdW5kZWRcIiAoY2xpY2spPVwicmV2b2tlQWNjZXNzVG9Hcm91cChhY2NvdW50Lmdyb3VwTmFtZSlcIj5yZXZva2UgYWNjZXNzPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuXG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbjwhLS0gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIk1hcmtldHBsYWNlXCI+LS0+XG48IS0tICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC02IHB5LTRcIj4tLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3gtLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxpc3RPbk1hcmtldHBsYWNlXCI+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBRdWVyeSBvbiBNYXJrZXRwbGFjZS0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgQWR2ZXJ0aXNlIHRoaXMgcXVlcnkgdG8gb3RoZXIgdXNlcnMgdmlhIHRoZSBEQVAgTWFya2V0cGxhY2UuLS0+XG48IS0tICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cblxuPCEtLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1sIHBsLThcIiAqbmdJZj1cImxpc3RPbk1hcmtldHBsYWNlXCI+LS0+XG5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48Yj5NYXJrZXRwbGFjZSBEZXNjcmlwdGlvbjwvYj48L3A+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cIm1hcmtldHBsYWNlRGF0YS5kZXNjcmlwdGlvblwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIiByb3dzPVwiM1wiLS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbFwiPjwvdGV4dGFyZWE+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5EZXNjcmliZSB0aGUgZGF0YSB5b3UgYXJlIG9mZmVyaW5nLjwvZGl2Pi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxuXG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj4tLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PGI+VXBsb2FkIEljb248L2I+PC9wPi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmdWxsXCIgdHlwZT1cImZpbGVcIiBbKG5nTW9kZWwpXT1cIm1hcmtldHBsYWNlRGF0YS5pY29uXCI+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5BdHRhY2ggYSBzbWFsbCBpbWFnZSB0byBoZWxwIGlkZW50aWZ5IHlvdXIgZGF0YS48L2Rpdj4tLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cblxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCI+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxiPlByaWNlPC9iPjwvcD4tLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy0xLzJcIiB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBwcmljZVwiIFsobmdNb2RlbCldPVwibWFya2V0cGxhY2VEYXRhLnByaWNlXCI+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5TZXQgYSBwcmljZSBmb3IgYWNjZXNzaW5nIHRoaXMgZGF0YXNldC48L2Rpdj4tLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cblxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3gtLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtYXJrZXRwbGFjZURhdGEucmVxdWlyZVZlcmlmaWNhdGlvblwiPi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlIEFjY291bnQgQ29uZmlybWF0aW9uL1ZlcmlmaWNhdGlvbi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94Pi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5QZXJmb3JtIGFkZGl0aW9uYWwgdmFsaWRhdGlvbiBvbiBhY2NvdW50cyByZXF1ZXN0aW5nIGFjY2Vzcy0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGlzIHF1ZXJ5LjwvZGl2Pi0tPlxuXG48IS0tICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cblxuPCEtLSAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cbjwhLS0gICAgICAgICAgICA8L21hdC10YWI+LS0+XG4gICAgICAgIDwvbWF0LXRhYi1ncm91cD5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+Q2xvc2U8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
@@ -1,20 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/material/legacy-dialog";
4
- export class UpstreamChangesConfirmationComponent {
5
- constructor(dialogRef) {
6
- this.dialogRef = dialogRef;
7
- }
8
- ngOnInit() {
9
- }
10
- close(res) {
11
- this.dialogRef.close(res);
12
- }
13
- }
14
- UpstreamChangesConfirmationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UpstreamChangesConfirmationComponent, deps: [{ token: i1.MatLegacyDialogRef }], target: i0.ɵɵFactoryTarget.Component });
15
- UpstreamChangesConfirmationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UpstreamChangesConfirmationComponent, selector: "ki-upstream-changes-confirmation", ngImport: i0, template: "<div class=\"flex flex-col h-full justify-between p-8\">\n <div>\n <div class=\"mx-auto flex h-12 w-12 items-center justify-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"w-12 h-12 text-orange-500\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" />\n </svg>\n\n </div>\n <div class=\"mt-3 text-center sm:mt-5\">\n <h3 class=\"text-lg font-medium leading-6 text-gray-900\" id=\"modal-title\">Transformation Changes</h3>\n <div class=\"mt-2\">\n <p class=\"text-sm text-gray-500\">\n You have made changes which may result in upstream transformations becoming incompatible, causing\n the evaluation to fail.\n </p>\n\n <p class=\"text-sm text-gray-500\">\n You can choose to proceed with the evaluation keeping all transformations in place, remove the\n affected transformations, or cancel the changes you have made.\n </p>\n </div>\n </div>\n </div>\n <div class=\"mt-5 flex align-center justify-between\">\n <button type=\"button\" (click)=\"close()\"\n class=\"mr-2 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm\">Cancel</button>\n <button type=\"button\" (click)=\"close('proceed')\"\n class=\"mx-2 inline-flex w-full justify-center rounded-md border border-primary text-primary bg-white px-4 py-2 text-sm font-medium shadow-sm\">Proceed Anyway</button>\n <button type=\"button\" (click)=\"close('remove')\"\n class=\"ml-2 inline-flex w-full justify-center rounded-md border border-transparent bg-primary px-4 py-2 text-sm font-medium text-white shadow-sm\">Remove Transformations</button>\n </div>\n</div>\n\n", styles: [":host{display:block;height:100%}\n"] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UpstreamChangesConfirmationComponent, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'ki-upstream-changes-confirmation', template: "<div class=\"flex flex-col h-full justify-between p-8\">\n <div>\n <div class=\"mx-auto flex h-12 w-12 items-center justify-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"w-12 h-12 text-orange-500\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" />\n </svg>\n\n </div>\n <div class=\"mt-3 text-center sm:mt-5\">\n <h3 class=\"text-lg font-medium leading-6 text-gray-900\" id=\"modal-title\">Transformation Changes</h3>\n <div class=\"mt-2\">\n <p class=\"text-sm text-gray-500\">\n You have made changes which may result in upstream transformations becoming incompatible, causing\n the evaluation to fail.\n </p>\n\n <p class=\"text-sm text-gray-500\">\n You can choose to proceed with the evaluation keeping all transformations in place, remove the\n affected transformations, or cancel the changes you have made.\n </p>\n </div>\n </div>\n </div>\n <div class=\"mt-5 flex align-center justify-between\">\n <button type=\"button\" (click)=\"close()\"\n class=\"mr-2 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm\">Cancel</button>\n <button type=\"button\" (click)=\"close('proceed')\"\n class=\"mx-2 inline-flex w-full justify-center rounded-md border border-primary text-primary bg-white px-4 py-2 text-sm font-medium shadow-sm\">Proceed Anyway</button>\n <button type=\"button\" (click)=\"close('remove')\"\n class=\"ml-2 inline-flex w-full justify-center rounded-md border border-transparent bg-primary px-4 py-2 text-sm font-medium text-white shadow-sm\">Remove Transformations</button>\n </div>\n</div>\n\n", styles: [":host{display:block;height:100%}\n"] }]
19
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }]; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzdHJlYW0tY2hhbmdlcy1jb25maXJtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvdXBzdHJlYW0tY2hhbmdlcy1jb25maXJtYXRpb24vdXBzdHJlYW0tY2hhbmdlcy1jb25maXJtYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvdXBzdHJlYW0tY2hhbmdlcy1jb25maXJtYXRpb24vdXBzdHJlYW0tY2hhbmdlcy1jb25maXJtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQzs7O0FBUWhELE1BQU0sT0FBTyxvQ0FBb0M7SUFFN0MsWUFBbUIsU0FBNkQ7UUFBN0QsY0FBUyxHQUFULFNBQVMsQ0FBb0Q7SUFDaEYsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUk7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOztrSUFWUSxvQ0FBb0M7c0hBQXBDLG9DQUFvQyx3RUNSakQsNnFFQWtDQTs0RkQxQmEsb0NBQW9DO2tCQUxoRCxTQUFTOytCQUNJLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS11cHN0cmVhbS1jaGFuZ2VzLWNvbmZpcm1hdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Vwc3RyZWFtLWNoYW5nZXMtY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91cHN0cmVhbS1jaGFuZ2VzLWNvbmZpcm1hdGlvbi5jb21wb25lbnQuc2FzcyddXG59KVxuZXhwb3J0IGNsYXNzIFVwc3RyZWFtQ2hhbmdlc0NvbmZpcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VXBzdHJlYW1DaGFuZ2VzQ29uZmlybWF0aW9uQ29tcG9uZW50Pikge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZShyZXM/KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlcyk7XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGwganVzdGlmeS1iZXR3ZWVuIHAtOFwiPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIGZsZXggaC0xMiB3LTEyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEyIGgtMTIgdGV4dC1vcmFuZ2UtNTAwXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgZD1cIk0xMiA5djMuNzVtLTkuMzAzIDMuMzc2Yy0uODY2IDEuNS4yMTcgMy4zNzQgMS45NDggMy4zNzRoMTQuNzFjMS43MyAwIDIuODEzLTEuODc0IDEuOTQ4LTMuMzc0TDEzLjk0OSAzLjM3OGMtLjg2Ni0xLjUtMy4wMzItMS41LTMuODk4IDBMMi42OTcgMTYuMTI2ek0xMiAxNS43NWguMDA3di4wMDhIMTJ2LS4wMDh6XCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlciBzbTptdC01XCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIGxlYWRpbmctNiB0ZXh0LWdyYXktOTAwXCIgaWQ9XCJtb2RhbC10aXRsZVwiPlRyYW5zZm9ybWF0aW9uIENoYW5nZXM8L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSBtYWRlIGNoYW5nZXMgd2hpY2ggbWF5IHJlc3VsdCBpbiB1cHN0cmVhbSB0cmFuc2Zvcm1hdGlvbnMgYmVjb21pbmcgaW5jb21wYXRpYmxlLCBjYXVzaW5nXG4gICAgICAgICAgICAgICAgICAgIHRoZSBldmFsdWF0aW9uIHRvIGZhaWwuXG4gICAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gcHJvY2VlZCB3aXRoIHRoZSBldmFsdWF0aW9uIGtlZXBpbmcgYWxsIHRyYW5zZm9ybWF0aW9ucyBpbiBwbGFjZSwgcmVtb3ZlIHRoZVxuICAgICAgICAgICAgICAgICAgICBhZmZlY3RlZCB0cmFuc2Zvcm1hdGlvbnMsIG9yIGNhbmNlbCB0aGUgY2hhbmdlcyB5b3UgaGF2ZSBtYWRlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNSBmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMiBpbmxpbmUtZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgc2hhZG93LXNtXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZSgncHJvY2VlZCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm14LTIgaW5saW5lLWZsZXggdy1mdWxsIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSBiZy13aGl0ZSBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSBzaGFkb3ctc21cIj5Qcm9jZWVkIEFueXdheTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoJ3JlbW92ZScpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTIgaW5saW5lLWZsZXggdy1mdWxsIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1wcmltYXJ5IHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUgc2hhZG93LXNtXCI+UmVtb3ZlIFRyYW5zZm9ybWF0aW9uczwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==