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.
- package/fesm2022/ng-kinintel.mjs +11874 -0
- package/fesm2022/ng-kinintel.mjs.map +1 -0
- package/index.d.ts +2818 -5
- package/package.json +6 -14
- package/esm2020/lib/components/alert-groups/alert-groups.component.mjs +0 -76
- package/esm2020/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.mjs +0 -83
- package/esm2020/lib/components/dashboard-editor/configure-item/configure-item.component.mjs +0 -853
- package/esm2020/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.mjs +0 -56
- package/esm2020/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.mjs +0 -114
- package/esm2020/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.mjs +0 -163
- package/esm2020/lib/components/dashboard-editor/configure-item/vis-network-options.json +0 -135
- package/esm2020/lib/components/dashboard-editor/dashboard-editor.component.mjs +0 -580
- package/esm2020/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.mjs +0 -15
- package/esm2020/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.mjs +0 -50
- package/esm2020/lib/components/dashboard-editor/item-component/item-component.component.mjs +0 -1226
- package/esm2020/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.mjs +0 -111
- package/esm2020/lib/components/dashboards/dashboards.component.mjs +0 -163
- package/esm2020/lib/components/dashboards/view-dashboard/view-dashboard.component.mjs +0 -429
- package/esm2020/lib/components/data-explorer/change-source-warning/change-source-warning.component.mjs +0 -20
- package/esm2020/lib/components/data-explorer/data-explorer.component.mjs +0 -243
- package/esm2020/lib/components/data-explorer/export-data/export-data.component.mjs +0 -62
- package/esm2020/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.mjs +0 -70
- package/esm2020/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.mjs +0 -190
- package/esm2020/lib/components/data-picker/data-picker.component.mjs +0 -79
- package/esm2020/lib/components/data-search/data-search.component.mjs +0 -11
- package/esm2020/lib/components/data-sharing-invite/data-sharing-invite.component.mjs +0 -52
- package/esm2020/lib/components/dataset/create-dataset/create-dataset.component.mjs +0 -47
- package/esm2020/lib/components/dataset/dataset-editor/available-columns/available-columns.component.mjs +0 -28
- package/esm2020/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.mjs +0 -344
- package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.mjs +0 -80
- package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.mjs +0 -54
- package/esm2020/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.mjs +0 -67
- package/esm2020/lib/components/dataset/dataset-editor/dataset-editor.component.mjs +0 -1134
- package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.mjs +0 -201
- package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.mjs +0 -25
- package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.mjs +0 -72
- package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.mjs +0 -62
- package/esm2020/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.mjs +0 -41
- package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.mjs +0 -78
- package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.mjs +0 -39
- package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.mjs +0 -75
- package/esm2020/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.mjs +0 -107
- package/esm2020/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.mjs +0 -20
- package/esm2020/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.mjs +0 -20
- package/esm2020/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.mjs +0 -58
- package/esm2020/lib/components/dataset/dataset-editor/share-query/share-query.component.mjs +0 -110
- package/esm2020/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.mjs +0 -20
- package/esm2020/lib/components/dataset/dataset.component.mjs +0 -294
- package/esm2020/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.mjs +0 -130
- package/esm2020/lib/components/datasource/create-datasource/api-access/api-access.component.mjs +0 -132
- package/esm2020/lib/components/datasource/create-datasource/create-datasource.component.mjs +0 -729
- package/esm2020/lib/components/datasource/create-datasource/import-data/import-data.component.mjs +0 -146
- package/esm2020/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.mjs +0 -165
- package/esm2020/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.mjs +0 -145
- package/esm2020/lib/components/datasource/datasource.component.mjs +0 -162
- package/esm2020/lib/components/datasource/document-datasource/document-datasource.component.mjs +0 -297
- package/esm2020/lib/components/export-project/export-project.component.mjs +0 -29
- package/esm2020/lib/components/feeds/feed/feed.component.mjs +0 -92
- package/esm2020/lib/components/feeds/feeds.component.mjs +0 -145
- package/esm2020/lib/components/job-tasks/job-tasks.component.mjs +0 -25
- package/esm2020/lib/components/marketplace/marketplace.component.mjs +0 -65
- package/esm2020/lib/components/metadata/metadata.component.mjs +0 -65
- package/esm2020/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.mjs +0 -113
- package/esm2020/lib/components/notification-groups/notification-groups.component.mjs +0 -86
- package/esm2020/lib/components/project-picker/project-picker.component.mjs +0 -118
- package/esm2020/lib/components/project-settings/project-link-selection/project-link-selection.component.mjs +0 -104
- package/esm2020/lib/components/project-settings/project-settings.component.mjs +0 -155
- package/esm2020/lib/components/query-caching/edit-query-cache/edit-query-cache.component.mjs +0 -51
- package/esm2020/lib/components/query-caching/query-cache-view/query-cache-view.component.mjs +0 -121
- package/esm2020/lib/components/query-caching/query-caching.component.mjs +0 -162
- package/esm2020/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.mjs +0 -45
- package/esm2020/lib/components/shared-with-me/shared-with-me.component.mjs +0 -174
- package/esm2020/lib/components/snapshots/snapshots.component.mjs +0 -244
- package/esm2020/lib/components/tag-picker/tag-picker.component.mjs +0 -74
- package/esm2020/lib/components/task-time-periods/task-time-periods.component.mjs +0 -55
- package/esm2020/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.mjs +0 -40
- package/esm2020/lib/guards/dashboard-changes.guard.mjs +0 -22
- package/esm2020/lib/kinintel-config.mjs +0 -3
- package/esm2020/lib/ng-kinintel.module.mjs +0 -437
- package/esm2020/lib/objects/action-event.mjs +0 -16
- package/esm2020/lib/services/alert.service.mjs +0 -52
- package/esm2020/lib/services/dashboard.service.mjs +0 -75
- package/esm2020/lib/services/data-processor.service.mjs +0 -56
- package/esm2020/lib/services/data-search.service.mjs +0 -36
- package/esm2020/lib/services/dataset.service.mjs +0 -187
- package/esm2020/lib/services/datasource.service.mjs +0 -93
- package/esm2020/lib/services/external.service.mjs +0 -33
- package/esm2020/lib/services/feed.service.mjs +0 -50
- package/esm2020/lib/services/notification.service.mjs +0 -41
- package/esm2020/lib/services/project.service.mjs +0 -130
- package/esm2020/lib/services/tag.service.mjs +0 -63
- package/esm2020/ng-kinintel.mjs +0 -5
- package/esm2020/public-api.mjs +0 -43
- package/fesm2015/ng-kinintel.mjs +0 -12182
- package/fesm2015/ng-kinintel.mjs.map +0 -1
- package/fesm2020/ng-kinintel.mjs +0 -11872
- package/fesm2020/ng-kinintel.mjs.map +0 -1
- package/lib/components/alert-groups/alert-groups.component.d.ts +0 -30
- package/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.d.ts +0 -28
- package/lib/components/dashboard-editor/configure-item/configure-item.component.d.ts +0 -256
- package/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.d.ts +0 -16
- package/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.d.ts +0 -59
- package/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.d.ts +0 -26
- package/lib/components/dashboard-editor/dashboard-editor.component.d.ts +0 -85
- package/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.d.ts +0 -8
- package/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.d.ts +0 -22
- package/lib/components/dashboard-editor/item-component/item-component.component.d.ts +0 -264
- package/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.d.ts +0 -30
- package/lib/components/dashboards/dashboards.component.d.ts +0 -56
- package/lib/components/dashboards/view-dashboard/view-dashboard.component.d.ts +0 -81
- package/lib/components/data-explorer/change-source-warning/change-source-warning.component.d.ts +0 -11
- package/lib/components/data-explorer/data-explorer.component.d.ts +0 -61
- package/lib/components/data-explorer/export-data/export-data.component.d.ts +0 -17
- package/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.d.ts +0 -25
- package/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.d.ts +0 -44
- package/lib/components/data-picker/data-picker.component.d.ts +0 -32
- package/lib/components/data-search/data-search.component.d.ts +0 -5
- package/lib/components/data-sharing-invite/data-sharing-invite.component.d.ts +0 -21
- package/lib/components/dataset/create-dataset/create-dataset.component.d.ts +0 -17
- package/lib/components/dataset/dataset-editor/available-columns/available-columns.component.d.ts +0 -12
- package/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.d.ts +0 -61
- package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.d.ts +0 -21
- package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.d.ts +0 -20
- package/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.d.ts +0 -19
- package/lib/components/dataset/dataset-editor/dataset-editor.component.d.ts +0 -131
- package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.d.ts +0 -63
- package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.d.ts +0 -11
- package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.d.ts +0 -20
- package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.d.ts +0 -16
- package/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.d.ts +0 -18
- package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.d.ts +0 -23
- package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.d.ts +0 -13
- package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.d.ts +0 -22
- package/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.d.ts +0 -27
- package/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.d.ts +0 -11
- package/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.d.ts +0 -11
- package/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.d.ts +0 -25
- package/lib/components/dataset/dataset-editor/share-query/share-query.component.d.ts +0 -41
- package/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.d.ts +0 -11
- package/lib/components/dataset/dataset.component.d.ts +0 -74
- package/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.d.ts +0 -26
- package/lib/components/datasource/create-datasource/api-access/api-access.component.d.ts +0 -31
- package/lib/components/datasource/create-datasource/create-datasource.component.d.ts +0 -112
- package/lib/components/datasource/create-datasource/import-data/import-data.component.d.ts +0 -28
- package/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.d.ts +0 -40
- package/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.d.ts +0 -34
- package/lib/components/datasource/datasource.component.d.ts +0 -46
- package/lib/components/datasource/document-datasource/document-datasource.component.d.ts +0 -64
- package/lib/components/export-project/export-project.component.d.ts +0 -9
- package/lib/components/feeds/feed/feed.component.d.ts +0 -30
- package/lib/components/feeds/feeds.component.d.ts +0 -47
- package/lib/components/job-tasks/job-tasks.component.d.ts +0 -11
- package/lib/components/marketplace/marketplace.component.d.ts +0 -42
- package/lib/components/metadata/metadata.component.d.ts +0 -24
- package/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.d.ts +0 -37
- package/lib/components/notification-groups/notification-groups.component.d.ts +0 -28
- package/lib/components/project-picker/project-picker.component.d.ts +0 -37
- package/lib/components/project-settings/project-link-selection/project-link-selection.component.d.ts +0 -32
- package/lib/components/project-settings/project-settings.component.d.ts +0 -40
- package/lib/components/query-caching/edit-query-cache/edit-query-cache.component.d.ts +0 -17
- package/lib/components/query-caching/query-cache-view/query-cache-view.component.d.ts +0 -35
- package/lib/components/query-caching/query-caching.component.d.ts +0 -38
- package/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.d.ts +0 -21
- package/lib/components/shared-with-me/shared-with-me.component.d.ts +0 -43
- package/lib/components/snapshots/snapshots.component.d.ts +0 -52
- package/lib/components/tag-picker/tag-picker.component.d.ts +0 -27
- package/lib/components/task-time-periods/task-time-periods.component.d.ts +0 -20
- package/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.d.ts +0 -17
- package/lib/guards/dashboard-changes.guard.d.ts +0 -11
- package/lib/kinintel-config.d.ts +0 -10
- package/lib/ng-kinintel.module.d.ts +0 -116
- package/lib/objects/action-event.d.ts +0 -12
- package/lib/services/alert.service.d.ts +0 -17
- package/lib/services/dashboard.service.d.ts +0 -25
- package/lib/services/data-processor.service.d.ts +0 -18
- package/lib/services/data-search.service.d.ts +0 -14
- package/lib/services/dataset.service.d.ts +0 -56
- package/lib/services/datasource.service.d.ts +0 -34
- package/lib/services/external.service.d.ts +0 -12
- package/lib/services/feed.service.d.ts +0 -19
- package/lib/services/notification.service.d.ts +0 -16
- package/lib/services/project.service.d.ts +0 -27
- package/lib/services/tag.service.d.ts +0 -19
- package/public-api.d.ts +0 -38
|
@@ -1,45 +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 * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/material/legacy-dialog";
|
|
5
|
-
import * as i2 from "@angular/common/http";
|
|
6
|
-
import * as i3 from "@angular/material/snack-bar";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
8
|
-
import * as i5 from "@angular/material/legacy-button";
|
|
9
|
-
import * as i6 from "@angular/material/icon";
|
|
10
|
-
import * as i7 from "@angular/cdk/drag-drop";
|
|
11
|
-
export class FeedApiModalComponent {
|
|
12
|
-
constructor(dialogRef, data, dialog, http, snackBar) {
|
|
13
|
-
this.dialogRef = dialogRef;
|
|
14
|
-
this.data = data;
|
|
15
|
-
this.dialog = dialog;
|
|
16
|
-
this.http = http;
|
|
17
|
-
this.snackBar = snackBar;
|
|
18
|
-
}
|
|
19
|
-
async ngOnInit() {
|
|
20
|
-
this.feed = this.data.feed;
|
|
21
|
-
this.feedUrl = this.data.feedUrl;
|
|
22
|
-
this.apiKeys = await this.http.get('/account/apikey/first/feedaccess').toPromise();
|
|
23
|
-
}
|
|
24
|
-
async copy(text) {
|
|
25
|
-
await navigator.clipboard.writeText(text.trim());
|
|
26
|
-
this.copied();
|
|
27
|
-
}
|
|
28
|
-
copied() {
|
|
29
|
-
this.snackBar.open('Copied to Clipboard', null, {
|
|
30
|
-
duration: 2000,
|
|
31
|
-
verticalPosition: 'top',
|
|
32
|
-
panelClass: 'bg-white'
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
FeedApiModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FeedApiModalComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i1.MatLegacyDialog }, { token: i2.HttpClient }, { token: i3.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
-
FeedApiModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FeedApiModalComponent, selector: "ki-feed-api-modal", host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title bg-gray-50\" cdkDragHandle>\n <h2 mat-dialog-title>\n Signal API Access\n </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\">\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">cURL</div>\n <div class=\"text-sm mb-2\">\n This is the recommended approach for consuming the API.\n </div>\n <div #createCurl class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\ncurl -H <span class=\"text-emerald-400\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-emerald-400\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre>\n <pre class=\"whitespace-normal\">\n-X <b>GET</b> <span class=\"text-emerald-400\">{{feedUrl}}{{feed.path}}<ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\" let-i=index>{{i === 0 ? '?' : '&'}}{{param}}=<b>[[VALUE]]</b></ng-template></span></pre>\n\n </div>\n <button mat-icon-button (click)=\"copy(createCurl.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">HTTPS</div>\n <div class=\"text-sm mb-2\">\n We recommend only using this for testing the API endpoint.\n </div>\n <div #createHttps class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\"><pre class=\"whitespace-normal\">{{feedUrl}}{{feed.path}}<span class=\"text-emerald-400\">?apiKey=<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>&apiSecret=<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b></span><ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\"><span class=\"text-emerald-400\">&{{param}}=<b>[[VALUE]]</b></span></ng-template></pre></div>\n\n <button mat-icon-button (click)=\"copy(createHttps.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"text-sm my-4\">\n <div class=\"mb-4 font-medium text-base\">\n Example request parameters\n </div>\n\n <div class=\"mb-4\">\n Filtering of the returned data can be effected by supplying parameters of the format <b>filter_COLUMNNAME</b>. The parameter value can either be\n simply a value for exact match filtering or a value followed by a | and a match type which should be one of the following values:\n </div>\n <table>\n <tr>\n <td>eq</td>\n <td>for an equals match</td>\n </tr>\n <tr>\n <td>neq</td>\n <td>for a not equals match</td>\n </tr>\n <tr>\n <td>null</td>\n <td>for a null match</td>\n </tr>\n <tr>\n <td>notnull</td>\n <td>for a not null match</td>\n </tr>\n <tr>\n <td>gt</td>\n <td>for a greater than match</td>\n </tr>\n <tr>\n <td>lt</td>\n <td>for a less than match</td>\n </tr>\n <tr>\n <td>gte</td>\n <td>for a greater than or equals match</td>\n </tr>\n <tr>\n <td>lte</td>\n <td>for a less than or equals match</td>\n </tr>\n <tr>\n <td>startswith</td>\n <td>for a string starts with match</td>\n </tr>\n <tr>\n <td>endswith</td>\n <td>for a string ends with match</td>\n </tr>\n <tr>\n <td>contains</td>\n <td>or a string contains match</td>\n </tr>\n </table>\n <br><br>\n Results can be sorted by supplying a <b>sort</b> parameter which identifies columns to sort and directions (either asc or desc) using pipe separation\n <br><br>\n By default the first 100 rows will be returned. Paging can be achieved by supplying\n <b>limit</b> and <b>offset</b> parameters.\n </div>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n </div>\n\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: "directive", type: i7.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: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] });
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FeedApiModalComponent, decorators: [{
|
|
39
|
-
type: Component,
|
|
40
|
-
args: [{ selector: 'ki-feed-api-modal', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title bg-gray-50\" cdkDragHandle>\n <h2 mat-dialog-title>\n Signal API Access\n </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\">\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">cURL</div>\n <div class=\"text-sm mb-2\">\n This is the recommended approach for consuming the API.\n </div>\n <div #createCurl class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\ncurl -H <span class=\"text-emerald-400\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-emerald-400\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre>\n <pre class=\"whitespace-normal\">\n-X <b>GET</b> <span class=\"text-emerald-400\">{{feedUrl}}{{feed.path}}<ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\" let-i=index>{{i === 0 ? '?' : '&'}}{{param}}=<b>[[VALUE]]</b></ng-template></span></pre>\n\n </div>\n <button mat-icon-button (click)=\"copy(createCurl.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">HTTPS</div>\n <div class=\"text-sm mb-2\">\n We recommend only using this for testing the API endpoint.\n </div>\n <div #createHttps class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\"><pre class=\"whitespace-normal\">{{feedUrl}}{{feed.path}}<span class=\"text-emerald-400\">?apiKey=<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>&apiSecret=<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b></span><ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\"><span class=\"text-emerald-400\">&{{param}}=<b>[[VALUE]]</b></span></ng-template></pre></div>\n\n <button mat-icon-button (click)=\"copy(createHttps.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"text-sm my-4\">\n <div class=\"mb-4 font-medium text-base\">\n Example request parameters\n </div>\n\n <div class=\"mb-4\">\n Filtering of the returned data can be effected by supplying parameters of the format <b>filter_COLUMNNAME</b>. The parameter value can either be\n simply a value for exact match filtering or a value followed by a | and a match type which should be one of the following values:\n </div>\n <table>\n <tr>\n <td>eq</td>\n <td>for an equals match</td>\n </tr>\n <tr>\n <td>neq</td>\n <td>for a not equals match</td>\n </tr>\n <tr>\n <td>null</td>\n <td>for a null match</td>\n </tr>\n <tr>\n <td>notnull</td>\n <td>for a not null match</td>\n </tr>\n <tr>\n <td>gt</td>\n <td>for a greater than match</td>\n </tr>\n <tr>\n <td>lt</td>\n <td>for a less than match</td>\n </tr>\n <tr>\n <td>gte</td>\n <td>for a greater than or equals match</td>\n </tr>\n <tr>\n <td>lte</td>\n <td>for a less than or equals match</td>\n </tr>\n <tr>\n <td>startswith</td>\n <td>for a string starts with match</td>\n </tr>\n <tr>\n <td>endswith</td>\n <td>for a string ends with match</td>\n </tr>\n <tr>\n <td>contains</td>\n <td>or a string contains match</td>\n </tr>\n </table>\n <br><br>\n Results can be sorted by supplying a <b>sort</b> parameter which identifies columns to sort and directions (either asc or desc) using pipe separation\n <br><br>\n By default the first 100 rows will be returned. Paging can be achieved by supplying\n <b>limit</b> and <b>offset</b> parameters.\n </div>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n </div>\n\n</div>\n\n\n" }]
|
|
41
|
-
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
42
|
-
type: Inject,
|
|
43
|
-
args: [MAT_DIALOG_DATA]
|
|
44
|
-
}] }, { type: i1.MatLegacyDialog }, { type: i2.HttpClient }, { type: i3.MatSnackBar }]; } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1hcGktbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC13aXRoLW1lL2ZlZWQtYXBpLW1vZGFsL2ZlZWQtYXBpLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpbmludGVsL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtd2l0aC1tZS9mZWVkLWFwaS1tb2RhbC9mZWVkLWFwaS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQ0gsc0JBQXNCLElBQUksZUFBZSxFQUU1QyxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFVekMsTUFBTSxPQUFPLHFCQUFxQjtJQU05QixZQUFtQixTQUE4QyxFQUNyQixJQUFTLEVBQ2pDLE1BQWlCLEVBQ2pCLElBQWdCLEVBQ2hCLFFBQXFCO1FBSnRCLGNBQVMsR0FBVCxTQUFTLENBQXFDO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWE7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRWpDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQVk7UUFDMUIsTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU07UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLEVBQUU7WUFDNUMsUUFBUSxFQUFFLElBQUk7WUFDZCxnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLFVBQVUsRUFBRSxVQUFVO1NBQ3pCLENBQUMsQ0FBQztJQUNQLENBQUM7O21IQS9CUSxxQkFBcUIsb0RBT1YsZUFBZTt1R0FQMUIscUJBQXFCLHFHQ2RsQyxxaEtBb0hBOzRGRHRHYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksbUJBQW1CLFFBR3ZCLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFDOzswQkFTbEIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgTUFUX0xFR0FDWV9ESUFMT0dfREFUQSBhcyBNQVRfRElBTE9HX0RBVEEsIE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csXG4gICAgTWF0TGVnYWN5RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZlxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtNYXRTbmFja0Jhcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS1mZWVkLWFwaS1tb2RhbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZlZWQtYXBpLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mZWVkLWFwaS1tb2RhbC5jb21wb25lbnQuc2FzcyddLFxuICAgIGhvc3Q6IHtjbGFzczogJ2RpYWxvZy13cmFwcGVyJ31cbn0pXG5leHBvcnQgY2xhc3MgRmVlZEFwaU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBmZWVkOiBhbnk7XG4gICAgcHVibGljIGFwaUtleXM6IGFueTtcbiAgICBwdWJsaWMgZmVlZFVybDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEZlZWRBcGlNb2RhbENvbXBvbmVudD4sXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5mZWVkID0gdGhpcy5kYXRhLmZlZWQ7XG4gICAgICAgIHRoaXMuZmVlZFVybCA9IHRoaXMuZGF0YS5mZWVkVXJsO1xuXG4gICAgICAgIHRoaXMuYXBpS2V5cyA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoJy9hY2NvdW50L2FwaWtleS9maXJzdC9mZWVkYWNjZXNzJykudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvcHkodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQudHJpbSgpKTtcbiAgICAgICAgdGhpcy5jb3BpZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29waWVkKCkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0NvcGllZCB0byBDbGlwYm9hcmQnLCBudWxsLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb246ICd0b3AnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ2JnLXdoaXRlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2dcIiBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLXRpdGxlIGJnLWdyYXktNTBcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT5cbiAgICAgICAgICAgIFNpZ25hbCBBUEkgQWNjZXNzXG4gICAgICAgIDwvaDI+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LXNlbWlib2xkXCI+Y1VSTDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItMlwiPlxuICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIGZvciBjb25zdW1pbmcgdGhlIEFQSS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjY3JlYXRlQ3VybCBjbGFzcz1cIiBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNCBtYi04XCI+XG4gICAgICAgICAgICA8cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj5cbmN1cmwgLUggPHNwYW4gY2xhc3M9XCJ0ZXh0LWVtZXJhbGQtNDAwXCI+XCJBUEktS0VZOjxiPnt7YXBpS2V5cyA/IGFwaUtleXMuYXBpS2V5IDogJ1tbYXBpS2V5XV0nfX08L2I+XCI8L3NwYW4+IC1IIDxzcGFuIGNsYXNzPVwidGV4dC1lbWVyYWxkLTQwMFwiPlwiQVBJLVNFQ1JFVDo8Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaVNlY3JldCA6ICdbW2FwaVNlY3JldF1dJ319PC9iPlwiPC9zcGFuPjwvcHJlPlxuICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPlxuLVggPGI+R0VUPC9iPiA8c3BhbiBjbGFzcz1cInRleHQtZW1lcmFsZC00MDBcIj57e2ZlZWRVcmx9fXt7ZmVlZC5wYXRofX08bmctdGVtcGxhdGUgbmdGb3IgbGV0LXBhcmFtIFtuZ0Zvck9mXT1cImZlZWQuZXhwb3NlZFBhcmFtZXRlck5hbWVzXCIgbGV0LWk9aW5kZXg+e3tpID09PSAwID8gJz8nIDogJyYnfX17e3BhcmFtfX09PGI+W1tWQUxVRV1dPC9iPjwvbmctdGVtcGxhdGU+PC9zcGFuPjwvcHJlPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb3B5KGNyZWF0ZUN1cmwudGV4dENvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdoaXRlIGFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTBcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj5IVFRQUzwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItMlwiPlxuICAgICAgICAgICAgICAgIFdlIHJlY29tbWVuZCBvbmx5IHVzaW5nIHRoaXMgZm9yIHRlc3RpbmcgdGhlIEFQSSBlbmRwb2ludC5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjY3JlYXRlSHR0cHMgY2xhc3M9XCIgYmctZ3JheS04MDAgYm9yZGVyLTIgYm9yZGVyLWdyYXktOTAwIHRleHQtd2hpdGUgcm91bmRlZC1tZCBwLTRcIj48cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj57e2ZlZWRVcmx9fXt7ZmVlZC5wYXRofX08c3BhbiBjbGFzcz1cInRleHQtZW1lcmFsZC00MDBcIj4/YXBpS2V5PTxiPnt7YXBpS2V5cyA/IGFwaUtleXMuYXBpS2V5IDogJ1tbYXBpS2V5XV0nfX08L2I+JmFwaVNlY3JldD08Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaVNlY3JldCA6ICdbW2FwaVNlY3JldF1dJ319PC9iPjwvc3Bhbj48bmctdGVtcGxhdGUgbmdGb3IgbGV0LXBhcmFtIFtuZ0Zvck9mXT1cImZlZWQuZXhwb3NlZFBhcmFtZXRlck5hbWVzXCI+PHNwYW4gY2xhc3M9XCJ0ZXh0LWVtZXJhbGQtNDAwXCI+Jnt7cGFyYW19fT08Yj5bW1ZBTFVFXV08L2I+PC9zcGFuPjwvbmctdGVtcGxhdGU+PC9wcmU+PC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb3B5KGNyZWF0ZUh0dHBzLnRleHRDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbXktNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTQgZm9udC1tZWRpdW0gdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgICAgRXhhbXBsZSByZXF1ZXN0IHBhcmFtZXRlcnNcbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICAgIEZpbHRlcmluZyBvZiB0aGUgcmV0dXJuZWQgZGF0YSBjYW4gYmUgZWZmZWN0ZWQgYnkgc3VwcGx5aW5nIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdCA8Yj5maWx0ZXJfQ09MVU1OTkFNRTwvYj4uICBUaGUgcGFyYW1ldGVyIHZhbHVlIGNhbiBlaXRoZXIgYmVcbiAgICAgICAgICAgICAgICBzaW1wbHkgYSB2YWx1ZSBmb3IgZXhhY3QgbWF0Y2ggZmlsdGVyaW5nIG9yIGEgdmFsdWUgZm9sbG93ZWQgYnkgYSB8IGFuZCBhIG1hdGNoIHR5cGUgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPmVxPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPmZvciBhbiBlcXVhbHMgbWF0Y2g8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+bmVxPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPmZvciBhIG5vdCBlcXVhbHMgbWF0Y2g8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+bnVsbDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5mb3IgYSBudWxsIG1hdGNoPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPm5vdG51bGw8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+Zm9yIGEgbm90IG51bGwgbWF0Y2g8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+Z3Q8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+Zm9yIGEgZ3JlYXRlciB0aGFuIG1hdGNoPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPmx0PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPmZvciBhIGxlc3MgdGhhbiBtYXRjaDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5ndGU8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+Zm9yIGEgZ3JlYXRlciB0aGFuIG9yIGVxdWFscyBtYXRjaDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5sdGU8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+Zm9yIGEgbGVzcyB0aGFuIG9yIGVxdWFscyBtYXRjaDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5zdGFydHN3aXRoPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPmZvciBhIHN0cmluZyBzdGFydHMgd2l0aCBtYXRjaDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5lbmRzd2l0aDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5mb3IgYSBzdHJpbmcgZW5kcyB3aXRoIG1hdGNoPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPmNvbnRhaW5zPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPm9yIGEgc3RyaW5nIGNvbnRhaW5zIG1hdGNoPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDxicj48YnI+XG4gICAgICAgICAgICBSZXN1bHRzIGNhbiBiZSBzb3J0ZWQgYnkgc3VwcGx5aW5nIGEgPGI+c29ydDwvYj4gcGFyYW1ldGVyIHdoaWNoIGlkZW50aWZpZXMgY29sdW1ucyB0byBzb3J0IGFuZCBkaXJlY3Rpb25zIChlaXRoZXIgYXNjIG9yIGRlc2MpIHVzaW5nIHBpcGUgc2VwYXJhdGlvblxuICAgICAgICAgICAgPGJyPjxicj5cbiAgICAgICAgICAgIEJ5IGRlZmF1bHQgdGhlIGZpcnN0IDEwMCByb3dzIHdpbGwgYmUgcmV0dXJuZWQuICBQYWdpbmcgY2FuIGJlIGFjaGlldmVkIGJ5IHN1cHBseWluZ1xuICAgICAgICAgICAgPGI+bGltaXQ8L2I+IGFuZCA8Yj5vZmZzZXQ8L2I+IHBhcmFtZXRlcnMuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZSBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiPkNsb3NlPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuXG5cbiJdfQ==
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, merge, Subject } from 'rxjs';
|
|
3
|
-
import { debounceTime, switchMap } from 'rxjs/operators';
|
|
4
|
-
import { DataExplorerComponent } from '../data-explorer/data-explorer.component';
|
|
5
|
-
import shortHash from 'short-hash';
|
|
6
|
-
import * as lodash from 'lodash';
|
|
7
|
-
import { FeedApiModalComponent } from '../shared-with-me/feed-api-modal/feed-api-modal.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../../services/dataset.service";
|
|
10
|
-
import * as i2 from "@angular/material/legacy-dialog";
|
|
11
|
-
import * as i3 from "@angular/router";
|
|
12
|
-
import * as i4 from "../../services/feed.service";
|
|
13
|
-
import * as i5 from "@angular/common";
|
|
14
|
-
import * as i6 from "@angular/material/legacy-button";
|
|
15
|
-
import * as i7 from "@angular/material/icon";
|
|
16
|
-
import * as i8 from "@angular/forms";
|
|
17
|
-
const _ = lodash.default;
|
|
18
|
-
export class SharedWithMeComponent {
|
|
19
|
-
constructor(datasetService, dialog, router, feedService) {
|
|
20
|
-
this.datasetService = datasetService;
|
|
21
|
-
this.dialog = dialog;
|
|
22
|
-
this.router = router;
|
|
23
|
-
this.feedService = feedService;
|
|
24
|
-
this.hideHeading = false;
|
|
25
|
-
this.datasetEditorReadonly = false;
|
|
26
|
-
this.apiDocsUrl = '';
|
|
27
|
-
this.loaded = new EventEmitter();
|
|
28
|
-
this.datasets = [];
|
|
29
|
-
this.searchText = new BehaviorSubject('');
|
|
30
|
-
this.limit = 10;
|
|
31
|
-
this.offset = 0;
|
|
32
|
-
this.page = 1;
|
|
33
|
-
this.endOfResults = false;
|
|
34
|
-
this.loading = true;
|
|
35
|
-
this.reload = new Subject();
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
merge(this.searchText, this.reload)
|
|
39
|
-
.pipe(debounceTime(300),
|
|
40
|
-
// distinctUntilChanged(),
|
|
41
|
-
switchMap(() => this.getDatasets())).subscribe((datasets) => {
|
|
42
|
-
this.endOfResults = datasets.length < this.limit;
|
|
43
|
-
this.datasets = datasets;
|
|
44
|
-
this.loading = false;
|
|
45
|
-
this.loaded.next(this.datasets);
|
|
46
|
-
});
|
|
47
|
-
this.searchText.subscribe(() => {
|
|
48
|
-
this.page = 1;
|
|
49
|
-
this.offset = 0;
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
increaseOffset() {
|
|
53
|
-
this.page = this.page + 1;
|
|
54
|
-
this.offset = (this.limit * this.page) - this.limit;
|
|
55
|
-
this.reload.next(Date.now());
|
|
56
|
-
}
|
|
57
|
-
decreaseOffset() {
|
|
58
|
-
this.page = this.page <= 1 ? 1 : this.page - 1;
|
|
59
|
-
this.offset = (this.limit * this.page) - this.limit;
|
|
60
|
-
this.reload.next(Date.now());
|
|
61
|
-
}
|
|
62
|
-
pageSizeChange(value) {
|
|
63
|
-
this.page = 1;
|
|
64
|
-
this.offset = 0;
|
|
65
|
-
this.limit = value;
|
|
66
|
-
this.reload.next(Date.now());
|
|
67
|
-
}
|
|
68
|
-
async apiAccess(dataset) {
|
|
69
|
-
dataset._loadingAPI = true;
|
|
70
|
-
const hash = shortHash(String(dataset.id));
|
|
71
|
-
const feeds = await this.feedService.listFeeds(hash, '1', '0').toPromise();
|
|
72
|
-
let feedId = null;
|
|
73
|
-
if (!feeds.length) {
|
|
74
|
-
const feedData = {
|
|
75
|
-
exporterConfiguration: { includeHeaderRow: true, separator: ',' },
|
|
76
|
-
cacheTimeSeconds: 0,
|
|
77
|
-
path: hash,
|
|
78
|
-
datasetInstanceId: dataset.id,
|
|
79
|
-
datasetLabel: dataset,
|
|
80
|
-
exporterKey: 'json',
|
|
81
|
-
advancedQuerying: true,
|
|
82
|
-
adhocFiltering: true
|
|
83
|
-
};
|
|
84
|
-
feedId = await this.feedService.saveFeed(feedData);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
feedId = feeds[0].id;
|
|
88
|
-
}
|
|
89
|
-
const feed = await this.feedService.getFeed(feedId);
|
|
90
|
-
dataset._loadingAPI = false;
|
|
91
|
-
if (this.apiDocsUrl) {
|
|
92
|
-
window.location.href = this.apiDocsUrl + "?sharedDatasetId=" + dataset.id;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
const dialog = this.dialog.open(FeedApiModalComponent, {
|
|
96
|
-
width: '700px',
|
|
97
|
-
height: '650px',
|
|
98
|
-
data: {
|
|
99
|
-
feed,
|
|
100
|
-
feedUrl: this.feedUrl
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
getDatasets() {
|
|
106
|
-
const searchString = this.nameReplaceString + this.searchText.getValue();
|
|
107
|
-
return this.datasetService.getAccountSharedDatasets(searchString, this.limit, this.offset).toPromise();
|
|
108
|
-
}
|
|
109
|
-
// Create extended dataset from source id.
|
|
110
|
-
extend(id) {
|
|
111
|
-
this.datasetService.getExtendedDataset(id).then(datasetInstanceSummary => {
|
|
112
|
-
this.viewDataset(datasetInstanceSummary);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
// View dataset
|
|
116
|
-
viewDataset(datasetInstanceSummary) {
|
|
117
|
-
this.router.navigate([this.url || '/dataset'], { fragment: _.kebabCase(datasetInstanceSummary.title) });
|
|
118
|
-
const dialogRef = this.dialog.open(DataExplorerComponent, {
|
|
119
|
-
width: '100vw',
|
|
120
|
-
height: '100vh',
|
|
121
|
-
maxWidth: '100vw',
|
|
122
|
-
maxHeight: '100vh',
|
|
123
|
-
hasBackdrop: false,
|
|
124
|
-
closeOnNavigation: true,
|
|
125
|
-
data: {
|
|
126
|
-
datasetInstanceSummary,
|
|
127
|
-
backendUrl: this.backendUrl,
|
|
128
|
-
showChart: false,
|
|
129
|
-
admin: false,
|
|
130
|
-
breadcrumb: this.headingLabel || 'Datasets',
|
|
131
|
-
url: this.url,
|
|
132
|
-
datasetEditorReadonly: this.datasetEditorReadonly
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
dialogRef.afterClosed().subscribe(res => {
|
|
136
|
-
if (res) {
|
|
137
|
-
if (res.breadcrumb) {
|
|
138
|
-
return this.router.navigate([res.breadcrumb], { fragment: null });
|
|
139
|
-
}
|
|
140
|
-
this.router.navigate([this.url || '/dataset'], { fragment: null });
|
|
141
|
-
this.reload.next(Date.now());
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
SharedWithMeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SharedWithMeComponent, deps: [{ token: i1.DatasetService }, { token: i2.MatLegacyDialog }, { token: i3.Router }, { token: i4.FeedService }], target: i0.ɵɵFactoryTarget.Component });
|
|
147
|
-
SharedWithMeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SharedWithMeComponent, selector: "ki-shared-with-me", inputs: { headingDescription: "headingDescription", backendUrl: "backendUrl", url: "url", tableHeading: "tableHeading", headingLabel: "headingLabel", hideHeading: "hideHeading", datasetEditorReadonly: "datasetEditorReadonly", nameReplaceString: "nameReplaceString", feedUrl: "feedUrl", apiDocsUrl: "apiDocsUrl" }, outputs: { loaded: "loaded" }, ngImport: i0, template: "<div *ngIf=\"!hideHeading\" class=\"p-6 bg-white border-b border-gray-200\">\n <div class=\"md:flex md:items-center md:justify-between md:space-x-5\">\n <div class=\"flex items-start flex-1\">\n <div class=\"pt-1.5\">\n <h1 class=\"text-2xl font-bold text-gray-900\">Shared With Me</h1>\n <p class=\"text-sm font-medium text-gray-500\">\n A list of all the datasets that are currently shared with your account.\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-4 sm:px-6 lg:px-8 mt-0\">\n <div class=\"flex flex-col\">\n\n <div class=\"-my-2 -mx-4 sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle\">\n <div class=\"mt-3 sm:mt-0 flex-1\">\n <label for=\"mobile-search-candidate\" class=\"sr-only\">Search</label>\n <div class=\"flex\">\n <div class=\"relative flex-grow focus-within:z-10\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg class=\"h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <input type=\"text\" name=\"mobile-search-candidate\" id=\"mobile-search-candidate\"\n class=\"text-sm block w-full rounded-none pl-10 border-t-0 border-l-0 border-r-0 border-gray-300\"\n placeholder=\"Search data feeds shared with me\"\n (keyup)=\"searchText.next($event.target.value)\">\n </div>\n </div>\n </div>\n <table class=\"min-w-full border-separate bg-white\" style=\"border-spacing: 0\">\n\n\n <thead class=\"bg-gray-100\">\n <tr>\n <th scope=\"col\"\n class=\"uppercase tracking-widest 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\">\n Data Feed\n </th>\n <th scope=\"col\"\n class=\"uppercase tracking-widest 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\">\n Shared by\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 backdrop-blur backdrop-filter\">\n <span class=\"sr-only\">Edit</span>\n </th>\n </tr>\n </thead>\n <tr *ngIf=\"!datasets.length\">\n <td colspan=\"4\" class=\"px-4 py-2\">No datasets found</td>\n </tr>\n <ng-template [ngIf]=\"datasets.length\">\n <tbody *ngFor=\"let item of datasets\" class=\"hover:bg-gray-50\">\n <tr class=\"hover:bg-gray-50 cursor-pointer\">\n <td (click)=\"extend(item.id)\" class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">\n {{ (item.title || '').replace((nameReplaceString || ''), '') }}\n </td>\n <td (click)=\"extend(item.id)\" class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n {{ item.owningAccountName }}\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 text-right px-4 py-2 text-sm text-gray-500\">\n <div class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\" (click)=\"apiAccess(item)\" [disabled]=\"item._loadingAPI\">\n <span *ngIf=\"!item._loadingAPI\">API</span>\n <span *ngIf=\"item._loadingAPI\" class=\"flex items-center\">\n <svg class=\"animate-spin -ml-1 mr-2 h-4 w-4 text-gray-400\"\n xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\"\n stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n Loading API\n </span>\n </button>\n\n <div class=\"divider\"></div>\n <button mat-button color=\"primary\" (click)=\"extend(item.id)\">\n View\n </button>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <tbody>\n <tr>\n <td colspan=\"4\"\n class=\"bg-gray-50 whitespace-nowrap border-b border-gray-200 py-1 px-4 text-sm text-gray-900\">\n <div class=\"paging-toolbar flex align-center justify-end\">\n\n <div class=\"flex items-center justify-center\">\n <div class=\"text-xs text-gray-400 mr-10\">\n Showing {{ offset + 1 }} - {{ (page * limit) - (limit - datasets.length) }}\n </div>\n <select [value]=\"limit\" (change)=\"pageSizeChange($event.target.value)\"\n class=\"mr-8 p-1.5\">\n <option [value]=\"1\">1</option>\n <option [value]=\"5\">5</option>\n <option [value]=\"10\">10</option>\n <option [value]=\"25\">25</option>\n <option [value]=\"50\">50</option>\n <option [value]=\"100\">100</option>\n <option [value]=\"250\">250</option>\n <option [value]=\"1000\">1000</option>\n </select>\n <button mat-icon-button class=\"mr-4\" (click)=\"decreaseOffset()\"\n [disabled]=\"page <= 1\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"increaseOffset()\" [disabled]=\"endOfResults\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n\n </table>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SharedWithMeComponent, decorators: [{
|
|
149
|
-
type: Component,
|
|
150
|
-
args: [{ selector: 'ki-shared-with-me', template: "<div *ngIf=\"!hideHeading\" class=\"p-6 bg-white border-b border-gray-200\">\n <div class=\"md:flex md:items-center md:justify-between md:space-x-5\">\n <div class=\"flex items-start flex-1\">\n <div class=\"pt-1.5\">\n <h1 class=\"text-2xl font-bold text-gray-900\">Shared With Me</h1>\n <p class=\"text-sm font-medium text-gray-500\">\n A list of all the datasets that are currently shared with your account.\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-4 sm:px-6 lg:px-8 mt-0\">\n <div class=\"flex flex-col\">\n\n <div class=\"-my-2 -mx-4 sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle\">\n <div class=\"mt-3 sm:mt-0 flex-1\">\n <label for=\"mobile-search-candidate\" class=\"sr-only\">Search</label>\n <div class=\"flex\">\n <div class=\"relative flex-grow focus-within:z-10\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg class=\"h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <input type=\"text\" name=\"mobile-search-candidate\" id=\"mobile-search-candidate\"\n class=\"text-sm block w-full rounded-none pl-10 border-t-0 border-l-0 border-r-0 border-gray-300\"\n placeholder=\"Search data feeds shared with me\"\n (keyup)=\"searchText.next($event.target.value)\">\n </div>\n </div>\n </div>\n <table class=\"min-w-full border-separate bg-white\" style=\"border-spacing: 0\">\n\n\n <thead class=\"bg-gray-100\">\n <tr>\n <th scope=\"col\"\n class=\"uppercase tracking-widest 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\">\n Data Feed\n </th>\n <th scope=\"col\"\n class=\"uppercase tracking-widest 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\">\n Shared by\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 backdrop-blur backdrop-filter\">\n <span class=\"sr-only\">Edit</span>\n </th>\n </tr>\n </thead>\n <tr *ngIf=\"!datasets.length\">\n <td colspan=\"4\" class=\"px-4 py-2\">No datasets found</td>\n </tr>\n <ng-template [ngIf]=\"datasets.length\">\n <tbody *ngFor=\"let item of datasets\" class=\"hover:bg-gray-50\">\n <tr class=\"hover:bg-gray-50 cursor-pointer\">\n <td (click)=\"extend(item.id)\" class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">\n {{ (item.title || '').replace((nameReplaceString || ''), '') }}\n </td>\n <td (click)=\"extend(item.id)\" class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n {{ item.owningAccountName }}\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 text-right px-4 py-2 text-sm text-gray-500\">\n <div class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\" (click)=\"apiAccess(item)\" [disabled]=\"item._loadingAPI\">\n <span *ngIf=\"!item._loadingAPI\">API</span>\n <span *ngIf=\"item._loadingAPI\" class=\"flex items-center\">\n <svg class=\"animate-spin -ml-1 mr-2 h-4 w-4 text-gray-400\"\n xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\"\n stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n Loading API\n </span>\n </button>\n\n <div class=\"divider\"></div>\n <button mat-button color=\"primary\" (click)=\"extend(item.id)\">\n View\n </button>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <tbody>\n <tr>\n <td colspan=\"4\"\n class=\"bg-gray-50 whitespace-nowrap border-b border-gray-200 py-1 px-4 text-sm text-gray-900\">\n <div class=\"paging-toolbar flex align-center justify-end\">\n\n <div class=\"flex items-center justify-center\">\n <div class=\"text-xs text-gray-400 mr-10\">\n Showing {{ offset + 1 }} - {{ (page * limit) - (limit - datasets.length) }}\n </div>\n <select [value]=\"limit\" (change)=\"pageSizeChange($event.target.value)\"\n class=\"mr-8 p-1.5\">\n <option [value]=\"1\">1</option>\n <option [value]=\"5\">5</option>\n <option [value]=\"10\">10</option>\n <option [value]=\"25\">25</option>\n <option [value]=\"50\">50</option>\n <option [value]=\"100\">100</option>\n <option [value]=\"250\">250</option>\n <option [value]=\"1000\">1000</option>\n </select>\n <button mat-icon-button class=\"mr-4\" (click)=\"decreaseOffset()\"\n [disabled]=\"page <= 1\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"increaseOffset()\" [disabled]=\"endOfResults\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n\n </table>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
151
|
-
}], ctorParameters: function () { return [{ type: i1.DatasetService }, { type: i2.MatLegacyDialog }, { type: i3.Router }, { type: i4.FeedService }]; }, propDecorators: { headingDescription: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], backendUrl: [{
|
|
154
|
-
type: Input
|
|
155
|
-
}], url: [{
|
|
156
|
-
type: Input
|
|
157
|
-
}], tableHeading: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], headingLabel: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], hideHeading: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], datasetEditorReadonly: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], nameReplaceString: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], feedUrl: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], apiDocsUrl: [{
|
|
170
|
-
type: Input
|
|
171
|
-
}], loaded: [{
|
|
172
|
-
type: Output
|
|
173
|
-
}] } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLXdpdGgtbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC13aXRoLW1lL3NoYXJlZC13aXRoLW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpbmludGVsL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtd2l0aC1tZS9zaGFyZWQtd2l0aC1tZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxlQUFlLEVBQUUsS0FBSyxFQUFrQixPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUcvRSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFakMsT0FBTyxFQUNILHFCQUFxQixFQUN4QixNQUFNLDJEQUEyRCxDQUFDOzs7Ozs7Ozs7O0FBRW5FLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFPekIsTUFBTSxPQUFPLHFCQUFxQjtJQXlCOUIsWUFBb0IsY0FBOEIsRUFDOUIsTUFBaUIsRUFDakIsTUFBYyxFQUNkLFdBQXdCO1FBSHhCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXJCbkMsZ0JBQVcsR0FB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LGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0RhdGFzZXRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHtEYXRhRXhwbG9yZXJDb21wb25lbnR9IGZyb20gJy4uL2RhdGEtZXhwbG9yZXIvZGF0YS1leHBsb3Jlci5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHNob3J0SGFzaCBmcm9tICdzaG9ydC1oYXNoJztcbmltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtGZWVkU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmVlZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgRmVlZEFwaU1vZGFsQ29tcG9uZW50XG59IGZyb20gJy4uL3NoYXJlZC13aXRoLW1lL2ZlZWQtYXBpLW1vZGFsL2ZlZWQtYXBpLW1vZGFsLmNvbXBvbmVudCc7XG5cbmNvbnN0IF8gPSBsb2Rhc2guZGVmYXVsdDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS1zaGFyZWQtd2l0aC1tZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoYXJlZC13aXRoLW1lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zaGFyZWQtd2l0aC1tZS5jb21wb25lbnQuc2FzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZFdpdGhNZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBASW5wdXQoKSBoZWFkaW5nRGVzY3JpcHRpb246IHN0cmluZztcbiAgICBASW5wdXQoKSBiYWNrZW5kVXJsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdXJsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGFibGVIZWFkaW5nOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaGVhZGluZ0xhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaGlkZUhlYWRpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkYXRhc2V0RWRpdG9yUmVhZG9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBuYW1lUmVwbGFjZVN0cmluZzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZlZWRVcmw6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcGlEb2NzVXJsOiBzdHJpbmcgPSAnJztcblxuICAgIEBPdXRwdXQoKSBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgZGF0YXNldHM6IGFueSA9IFtdO1xuICAgIHB1YmxpYyBzZWFyY2hUZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gICAgcHVibGljIGxpbWl0ID0gMTA7XG4gICAgcHVibGljIG9mZnNldCA9IDA7XG4gICAgcHVibGljIHBhZ2UgPSAxO1xuICAgIHB1YmxpYyBlbmRPZlJlc3VsdHMgPSBmYWxzZTtcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG5cbiAgICBwcml2YXRlIHJlbG9hZCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFzZXRTZXJ2aWNlOiBEYXRhc2V0U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBmZWVkU2VydmljZTogRmVlZFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgbWVyZ2UodGhpcy5zZWFyY2hUZXh0LCB0aGlzLnJlbG9hZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICAgICAgICAgIC8vIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YXNldHMoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKChkYXRhc2V0czogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mUmVzdWx0cyA9IGRhdGFzZXRzLmxlbmd0aCA8IHRoaXMubGltaXQ7XG4gICAgICAgICAgICB0aGlzLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkLm5leHQodGhpcy5kYXRhc2V0cyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gMTtcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluY3JlYXNlT2Zmc2V0KCkge1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9ICh0aGlzLmxpbWl0ICogdGhpcy5wYWdlKSAtIHRoaXMubGltaXQ7XG4gICAgICAgIHRoaXMucmVsb2FkLm5leHQoRGF0ZS5ub3coKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY3JlYXNlT2Zmc2V0KCkge1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgPD0gMSA/IDEgOiB0aGlzLnBhZ2UgLSAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9ICh0aGlzLmxpbWl0ICogdGhpcy5wYWdlKSAtIHRoaXMubGltaXQ7XG4gICAgICAgIHRoaXMucmVsb2FkLm5leHQoRGF0ZS5ub3coKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhZ2VTaXplQ2hhbmdlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgdGhpcy5saW1pdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJlbG9hZC5uZXh0KERhdGUubm93KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBhcGlBY2Nlc3MoZGF0YXNldDogYW55KSB7XG4gICAgICAgIGRhdGFzZXQuX2xvYWRpbmdBUEkgPSB0cnVlO1xuICAgICAgICBjb25zdCBoYXNoID0gc2hvcnRIYXNoKFN0cmluZyhkYXRhc2V0LmlkKSk7XG4gICAgICAgIGNvbnN0IGZlZWRzOiBhbnkgPSBhd2FpdCB0aGlzLmZlZWRTZXJ2aWNlLmxpc3RGZWVkcyhoYXNoLCAnMScsICcwJykudG9Qcm9taXNlKCk7XG4gICAgICAgIGxldCBmZWVkSWQgPSBudWxsO1xuICAgICAgICBpZiAoIWZlZWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZmVlZERhdGEgPSB7XG4gICAgICAgICAgICAgICAgZXhwb3J0ZXJDb25maWd1cmF0aW9uOiB7aW5jbHVkZUhlYWRlclJvdzogdHJ1ZSwgc2VwYXJhdG9yOiAnLCd9LFxuICAgICAgICAgICAgICAgIGNhY2hlVGltZVNlY29uZHM6IDAsXG4gICAgICAgICAgICAgICAgcGF0aDogaGFzaCxcbiAgICAgICAgICAgICAgICBkYXRhc2V0SW5zdGFuY2VJZDogZGF0YXNldC5pZCxcbiAgICAgICAgICAgICAgICBkYXRhc2V0TGFiZWw6IGRhdGFzZXQsXG4gICAgICAgICAgICAgICAgZXhwb3J0ZXJLZXk6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBhZHZhbmNlZFF1ZXJ5aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFkaG9jRmlsdGVyaW5nOiB0cnVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmZWVkSWQgPSBhd2FpdCB0aGlzLmZlZWRTZXJ2aWNlLnNhdmVGZWVkKGZlZWREYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZlZWRJZCA9IGZlZWRzWzBdLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmVlZCA9IGF3YWl0IHRoaXMuZmVlZFNlcnZpY2UuZ2V0RmVlZChmZWVkSWQpO1xuICAgICAgICBkYXRhc2V0Ll9sb2FkaW5nQVBJID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuYXBpRG9jc1VybCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmFwaURvY3NVcmwgKyBcIj9zaGFyZWREYXRhc2V0SWQ9XCIgKyBkYXRhc2V0LmlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihGZWVkQXBpTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogJzcwMHB4JyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICc2NTBweCcsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBmZWVkLFxuICAgICAgICAgICAgICAgICAgICBmZWVkVXJsOiB0aGlzLmZlZWRVcmxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhc2V0cygpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoU3RyaW5nID0gdGhpcy5uYW1lUmVwbGFjZVN0cmluZyArIHRoaXMuc2VhcmNoVGV4dC5nZXRWYWx1ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc2V0U2VydmljZS5nZXRBY2NvdW50U2hhcmVkRGF0YXNldHMoc2VhcmNoU3RyaW5nLCB0aGlzLmxpbWl0LCB0aGlzLm9mZnNldCkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGV4dGVuZGVkIGRhdGFzZXQgZnJvbSBzb3VyY2UgaWQuXG4gICAgcHVibGljIGV4dGVuZChpZCkge1xuICAgICAgICB0aGlzLmRhdGFzZXRTZXJ2aWNlLmdldEV4dGVuZGVkRGF0YXNldChpZCkudGhlbihkYXRhc2V0SW5zdGFuY2VTdW1tYXJ5ID0+IHtcbiAgICAgICAgICAgIHRoaXMudmlld0RhdGFzZXQoZGF0YXNldEluc3RhbmNlU3VtbWFyeSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFZpZXcgZGF0YXNldFxuICAgIHByaXZhdGUgdmlld0RhdGFzZXQoZGF0YXNldEluc3RhbmNlU3VtbWFyeSkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmwgfHwgJy9kYXRhc2V0J10sIHtmcmFnbWVudDogXy5rZWJhYkNhc2UoZGF0YXNldEluc3RhbmNlU3VtbWFyeS50aXRsZSl9KTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEYXRhRXhwbG9yZXJDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwdncnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwdmgnLFxuICAgICAgICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDB2aCcsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBkYXRhc2V0SW5zdGFuY2VTdW1tYXJ5LFxuICAgICAgICAgICAgICAgIGJhY2tlbmRVcmw6IHRoaXMuYmFja2VuZFVybCxcbiAgICAgICAgICAgICAgICBzaG93Q2hhcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFkbWluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBicmVhZGNydW1iOiB0aGlzLmhlYWRpbmdMYWJlbCB8fCAnRGF0YXNldHMnLFxuICAgICAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgZGF0YXNldEVkaXRvclJlYWRvbmx5OiB0aGlzLmRhdGFzZXRFZGl0b3JSZWFkb25seVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5icmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVzLmJyZWFkY3J1bWJdLCB7ZnJhZ21lbnQ6IG51bGx9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMudXJsIHx8ICcvZGF0YXNldCddLCB7ZnJhZ21lbnQ6IG51bGx9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZC5uZXh0KERhdGUubm93KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cblxufVxuIiwiPGRpdiAqbmdJZj1cIiFoaWRlSGVhZGluZ1wiIGNsYXNzPVwicC02IGJnLXdoaXRlIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtZDpmbGV4IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW4gbWQ6c3BhY2UteC01XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0IGZsZXgtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTEuNVwiPlxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+U2hhcmVkIFdpdGggTWU8L2gxPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGwgdGhlIGRhdGFzZXRzIHRoYXQgYXJlIGN1cnJlbnRseSBzaGFyZWQgd2l0aCB5b3VyIGFjY291bnQuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC00IHNtOnB4LTYgbGc6cHgtOCBtdC0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiLW15LTIgLW14LTQgc206LW14LTYgbGc6LW14LThcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbWluLXctZnVsbCBweS0yIGFsaWduLW1pZGRsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHNtOm10LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtb2JpbGUtc2VhcmNoLWNhbmRpZGF0ZVwiIGNsYXNzPVwic3Itb25seVwiPlNlYXJjaDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleC1ncm93IGZvY3VzLXdpdGhpbjp6LTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgcGwtMyBmbGV4IGl0ZW1zLWNlbnRlciBwb2ludGVyLWV2ZW50cy1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01IHRleHQtZ3JheS00MDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTggNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpNMiA4YTYgNiAwIDExMTAuODkgMy40NzZsNC44MTcgNC44MTdhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQuODE2LTQuODE2QTYgNiAwIDAxMiA4elwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwibW9iaWxlLXNlYXJjaC1jYW5kaWRhdGVcIiBpZD1cIm1vYmlsZS1zZWFyY2gtY2FuZGlkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGJsb2NrIHctZnVsbCByb3VuZGVkLW5vbmUgcGwtMTAgYm9yZGVyLXQtMCBib3JkZXItbC0wIGJvcmRlci1yLTAgYm9yZGVyLWdyYXktMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZGF0YSBmZWVkcyBzaGFyZWQgd2l0aCBtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2hUZXh0Lm5leHQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJtaW4tdy1mdWxsIGJvcmRlci1zZXBhcmF0ZSBiZy13aGl0ZVwiIHN0eWxlPVwiYm9yZGVyLXNwYWNpbmc6IDBcIj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImJnLWdyYXktMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHN0aWNreSB0b3AtMCB6LTEwIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIGJnLW9wYWNpdHktNzUgcHktMy41IHB4LTQgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGJhY2tkcm9wLWJsdXIgYmFja2Ryb3AtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSBGZWVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVwcGVyY2FzZSB0cmFja2luZy13aWRlc3Qgc3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgYmFja2Ryb3AtYmx1ciBiYWNrZHJvcC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgYnlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCBiYWNrZHJvcC1ibHVyIGJhY2tkcm9wLWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkVkaXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCIhZGF0YXNldHMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIiBjbGFzcz1cInB4LTQgcHktMlwiPk5vIGRhdGFzZXRzIGZvdW5kPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImRhdGFzZXRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFzZXRzXCIgY2xhc3M9XCJob3ZlcjpiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJob3ZlcjpiZy1ncmF5LTUwIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJleHRlbmQoaXRlbS5pZClcIiBjbGFzcz1cImJvcmRlci1iIHdoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChpdGVtLnRpdGxlIHx8ICcnKS5yZXBsYWNlKChuYW1lUmVwbGFjZVN0cmluZyB8fCAnJyksICcnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJleHRlbmQoaXRlbS5pZClcIiBjbGFzcz1cImJvcmRlci1iIHdoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ub3duaW5nQWNjb3VudE5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1iIHdoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCB0ZXh0LXJpZ2h0IHB4LTQgcHktMiB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImFwaUFjY2VzcyhpdGVtKVwiIFtkaXNhYmxlZF09XCJpdGVtLl9sb2FkaW5nQVBJXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5fbG9hZGluZ0FQSVwiPkFQSTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uX2xvYWRpbmdBUElcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJhbmltYXRlLXNwaW4gLW1sLTEgbXItMiBoLTQgdy00IHRleHQtZ3JheS00MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cIm9wYWNpdHktMjVcIiBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNFwiPjwvY2lyY2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cIm9wYWNpdHktNzVcIiBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDEyYTggOCAwIDAxOC04VjBDNS4zNzMgMCAwIDUuMzczIDAgMTJoNHptMiA1LjI5MUE3Ljk2MiA3Ljk2MiAwIDAxNCAxMkgwYzAgMy4wNDIgMS4xMzUgNS44MjQgMyA3LjkzOGwzLTIuNjQ3elwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZGluZyBBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZXh0ZW5kKGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCB3aGl0ZXNwYWNlLW5vd3JhcCBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgcHktMSBweC00IHRleHQtc20gdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmctdG9vbGJhciBmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgdGV4dC1ncmF5LTQwMCBtci0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3dpbmcge3sgb2Zmc2V0ICsgMSB9fSAtIHt7IChwYWdlICogbGltaXQpIC0gKGxpbWl0IC0gZGF0YXNldHMubGVuZ3RoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFt2YWx1ZV09XCJsaW1pdFwiIChjaGFuZ2UpPVwicGFnZVNpemVDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTggcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCIxXCI+MTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjVcIj41PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMTBcIj4xMDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjI1XCI+MjU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCI1MFwiPjUwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMTAwXCI+MTAwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMjUwXCI+MjUwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMTAwMFwiPjEwMDA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJtci00XCIgKGNsaWNrKT1cImRlY3JlYXNlT2Zmc2V0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA8PSAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJpbmNyZWFzZU9mZnNldCgpXCIgW2Rpc2FibGVkXT1cImVuZE9mUmVzdWx0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|