@firestitch/app-message 13.1.2 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/app/modules/app-message/types/types.type.d.ts +26 -26
  2. package/app/modules/message-preview/components/preview/preview.component.d.ts +1 -1
  3. package/app/modules/message-queues/components/queue/queue.component.d.ts +1 -1
  4. package/app/modules/message-queues/components/queues/queues.component.d.ts +1 -1
  5. package/app/modules/message-queues/components/recipient/recipient.component.d.ts +1 -1
  6. package/app/modules/message-queues/pipes/linkify.pipe.d.ts +1 -1
  7. package/app/modules/message-queues/pipes/truncate.pipe.d.ts +1 -1
  8. package/app/modules/message-templates/components/template/template.component.d.ts +1 -1
  9. package/app/modules/message-templates/components/templates/templates.component.d.ts +1 -1
  10. package/app/modules/messages/components/attachments/attachments.component.d.ts +1 -1
  11. package/app/modules/messages/components/message/message.component.d.ts +1 -1
  12. package/app/modules/messages/components/messages/messages.component.d.ts +1 -1
  13. package/app/modules/webhooks/components/webhooks/webhooks.component.d.ts +1 -1
  14. package/esm2020/app/modules/app-message/app-message.module.mjs +5 -5
  15. package/esm2020/app/modules/message-preview/components/preview/preview.component.mjs +9 -9
  16. package/esm2020/app/modules/message-preview/message-preview.module.mjs +8 -10
  17. package/esm2020/app/modules/message-queues/components/queue/queue.component.mjs +14 -14
  18. package/esm2020/app/modules/message-queues/components/queues/queues.component.mjs +13 -13
  19. package/esm2020/app/modules/message-queues/components/recipient/recipient.component.mjs +7 -7
  20. package/esm2020/app/modules/message-queues/message-queues.module.mjs +23 -25
  21. package/esm2020/app/modules/message-queues/pipes/linkify.pipe.mjs +4 -4
  22. package/esm2020/app/modules/message-queues/pipes/truncate.pipe.mjs +4 -4
  23. package/esm2020/app/modules/message-queues/services/message-queue.service.mjs +4 -4
  24. package/esm2020/app/modules/message-templates/components/template/template.component.mjs +15 -15
  25. package/esm2020/app/modules/message-templates/components/templates/templates.component.mjs +4 -4
  26. package/esm2020/app/modules/message-templates/message-templates.module.mjs +21 -23
  27. package/esm2020/app/modules/messages/components/attachments/attachments.component.mjs +4 -4
  28. package/esm2020/app/modules/messages/components/message/message.component.mjs +18 -18
  29. package/esm2020/app/modules/messages/components/messages/messages.component.mjs +6 -6
  30. package/esm2020/app/modules/messages/messages.module.mjs +27 -29
  31. package/esm2020/app/modules/webhooks/components/webhooks/webhooks.component.mjs +4 -4
  32. package/esm2020/app/modules/webhooks/webhooks.module.mjs +6 -8
  33. package/fesm2015/firestitch-app-message.mjs +142 -152
  34. package/fesm2015/firestitch-app-message.mjs.map +1 -1
  35. package/fesm2020/firestitch-app-message.mjs +142 -152
  36. package/fesm2020/firestitch-app-message.mjs.map +1 -1
  37. package/package.json +3 -3
  38. /package/{firestitch-app-message.d.ts → index.d.ts} +0 -0
@@ -1,49 +1,49 @@
1
1
  import { FsFile } from '@firestitch/file';
2
2
  import { Observable } from 'rxjs';
3
- export declare type TestMessage = (message: any, recipient: string, type: 'sms' | 'email') => Observable<any>;
4
- export declare type LoadMessage = (message: any) => Observable<any>;
5
- export declare type LoadMessages = (query: any) => Observable<{
3
+ export type TestMessage = (message: any, recipient: string, type: 'sms' | 'email') => Observable<any>;
4
+ export type LoadMessage = (message: any) => Observable<any>;
5
+ export type LoadMessages = (query: any) => Observable<{
6
6
  data: any[];
7
7
  paging: any;
8
8
  }>;
9
- export declare type SaveMessage = (message: any) => Observable<any>;
10
- export declare type LoadTemplates = () => Observable<any[]>;
11
- export declare type TestEmail = () => string;
12
- export declare type LoadMessageQueues = (query: any) => Observable<{
9
+ export type SaveMessage = (message: any) => Observable<any>;
10
+ export type LoadTemplates = () => Observable<any[]>;
11
+ export type TestEmail = () => string;
12
+ export type LoadMessageQueues = (query: any) => Observable<{
13
13
  data: any[];
14
14
  paging: any;
15
15
  }>;
16
- export declare type LoadMessageQueueEvents = (messageQueue: any, query: any) => Observable<{
16
+ export type LoadMessageQueueEvents = (messageQueue: any, query: any) => Observable<{
17
17
  data: any[];
18
18
  paging: any;
19
19
  }>;
20
- export declare type LoadMessageQueue = (messageQueue: any) => Observable<any>;
21
- export declare type LoadLogs = (messageQueue: any, query: any) => Observable<{
20
+ export type LoadMessageQueue = (messageQueue: any) => Observable<any>;
21
+ export type LoadLogs = (messageQueue: any, query: any) => Observable<{
22
22
  data: any[];
23
23
  paging: any;
24
24
  }>;
25
- export declare type LoadMessageQueueAttachments = (messageQueue: any, query: any) => Observable<{
25
+ export type LoadMessageQueueAttachments = (messageQueue: any, query: any) => Observable<{
26
26
  data: any[];
27
27
  paging: any;
28
28
  }>;
29
- export declare type DownloadMessageQueueAttachment = (messageQueueAttachment: any, messageQueue: any) => Observable<any>;
30
- export declare type ResendMessageQueue = (messageQueue: any) => Observable<any>;
31
- export declare type ForwardMessageQueue = (messageQueue: number, email: string) => Observable<any>;
32
- export declare type LoadMessageTemplates = (query?: any) => Observable<{
29
+ export type DownloadMessageQueueAttachment = (messageQueueAttachment: any, messageQueue: any) => Observable<any>;
30
+ export type ResendMessageQueue = (messageQueue: any) => Observable<any>;
31
+ export type ForwardMessageQueue = (messageQueue: number, email: string) => Observable<any>;
32
+ export type LoadMessageTemplates = (query?: any) => Observable<{
33
33
  data: any[];
34
34
  paging: any;
35
35
  }>;
36
- export declare type LoadMessageTemplate = (messageTemplate: any) => Observable<any[]>;
37
- export declare type DeleteMessageTemplate = (messageTemplate: any) => Observable<any>;
38
- export declare type SaveMessageTemplate = (messageTemplate: any) => Observable<any>;
39
- export declare type SaveMessageAttachment = (messageAttachment: any) => Observable<any>;
40
- export declare type DeleteMessageAttachment = (messageAttachment: any) => Observable<any>;
41
- export declare type UploadMessageAttachment = (message: any, fsFile: FsFile) => Observable<any>;
42
- export declare type DownloadMessageAttachment = (messageAttachment: any) => void;
43
- export declare type LoadMessageAttachments = (message: any, query?: any) => Observable<{
36
+ export type LoadMessageTemplate = (messageTemplate: any) => Observable<any[]>;
37
+ export type DeleteMessageTemplate = (messageTemplate: any) => Observable<any>;
38
+ export type SaveMessageTemplate = (messageTemplate: any) => Observable<any>;
39
+ export type SaveMessageAttachment = (messageAttachment: any) => Observable<any>;
40
+ export type DeleteMessageAttachment = (messageAttachment: any) => Observable<any>;
41
+ export type UploadMessageAttachment = (message: any, fsFile: FsFile) => Observable<any>;
42
+ export type DownloadMessageAttachment = (messageAttachment: any) => void;
43
+ export type LoadMessageAttachments = (message: any, query?: any) => Observable<{
44
44
  data: any[];
45
45
  paging: any;
46
46
  }>;
47
- export declare type DeleteWebhook = (webhook: any) => Observable<any>;
48
- export declare type CreateWebhook = () => Observable<any>;
49
- export declare type LoadWebhooks = (query?: any) => Observable<any>;
47
+ export type DeleteWebhook = (webhook: any) => Observable<any>;
48
+ export type CreateWebhook = () => Observable<any>;
49
+ export type LoadWebhooks = (query?: any) => Observable<any>;
@@ -7,5 +7,5 @@ export declare class PreviewComponent implements OnInit {
7
7
  constructor(_data: any);
8
8
  ngOnInit(): void;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<PreviewComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<PreviewComponent, "ng-component", never, {}, {}, never, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<PreviewComponent, "ng-component", never, {}, {}, never, never, false, never>;
11
11
  }
@@ -40,5 +40,5 @@ export declare class QueueComponent implements OnInit, OnDestroy {
40
40
  private _setAttachmentsConfig;
41
41
  private _prettyFilesize;
42
42
  static ɵfac: i0.ɵɵFactoryDeclaration<QueueComponent, never>;
43
- static ɵcmp: i0.ɵɵComponentDeclaration<QueueComponent, "ng-component", never, {}, {}, never, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<QueueComponent, "ng-component", never, {}, {}, never, never, false, never>;
44
44
  }
@@ -27,5 +27,5 @@ export declare class QueuesComponent implements OnInit, OnDestroy {
27
27
  open(messageQueue: any): void;
28
28
  ngOnDestroy(): void;
29
29
  static ɵfac: i0.ɵɵFactoryDeclaration<QueuesComponent, never>;
30
- static ɵcmp: i0.ɵɵComponentDeclaration<QueuesComponent, "fs-app-message-queues", never, { "query": "query"; "type": "type"; }, {}, never, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<QueuesComponent, "fs-app-message-queues", never, { "query": "query"; "type": "type"; }, {}, never, never, false, never>;
31
31
  }
@@ -6,5 +6,5 @@ export declare class RecipientComponent implements OnInit {
6
6
  icon: any;
7
7
  ngOnInit(): void;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<RecipientComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<RecipientComponent, "app-recipient", never, { "name": "name"; "state": "state"; }, {}, never, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<RecipientComponent, "app-recipient", never, { "name": "name"; "state": "state"; }, {}, never, never, false, never>;
10
10
  }
@@ -3,5 +3,5 @@ import * as i0 from "@angular/core";
3
3
  export declare class LinkifyPipe implements PipeTransform {
4
4
  transform(input: string): string;
5
5
  static ɵfac: i0.ɵɵFactoryDeclaration<LinkifyPipe, never>;
6
- static ɵpipe: i0.ɵɵPipeDeclaration<LinkifyPipe, "linkify">;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<LinkifyPipe, "linkify", false>;
7
7
  }
@@ -3,5 +3,5 @@ import * as i0 from "@angular/core";
3
3
  export declare class TruncatePipe implements PipeTransform {
4
4
  transform(value: string, limit?: number, completeWords?: boolean, ellipsis?: string): string;
5
5
  static ɵfac: i0.ɵɵFactoryDeclaration<TruncatePipe, never>;
6
- static ɵpipe: i0.ɵɵPipeDeclaration<TruncatePipe, "truncate">;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TruncatePipe, "truncate", false>;
7
7
  }
@@ -19,5 +19,5 @@ export declare class TemplateComponent implements OnInit {
19
19
  openPreview(): void;
20
20
  save: (event: SubmitEvent) => import("rxjs").Observable<any>;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<TemplateComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<TemplateComponent, "ng-component", never, {}, {}, never, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<TemplateComponent, "ng-component", never, {}, {}, never, never, false, never>;
23
23
  }
@@ -15,5 +15,5 @@ export declare class TemplatesComponent implements OnInit, OnDestroy {
15
15
  open(messageTemplate: any): void;
16
16
  ngOnDestroy(): void;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<TemplatesComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<TemplatesComponent, "fs-app-message-templates", never, {}, {}, never, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<TemplatesComponent, "fs-app-message-templates", never, {}, {}, never, never, false, never>;
19
19
  }
@@ -14,5 +14,5 @@ export declare class AttachmentsComponent implements OnInit, OnDestroy {
14
14
  ngOnInit(): void;
15
15
  ngOnDestroy(): void;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<AttachmentsComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<AttachmentsComponent, "fs-app-message-attachments", never, { "message": "message"; }, {}, never, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<AttachmentsComponent, "fs-app-message-attachments", never, { "message": "message"; }, {}, never, never, false, never>;
18
18
  }
@@ -26,5 +26,5 @@ export declare class MessageComponent implements OnInit {
26
26
  openPreview(): void;
27
27
  sendTest(type: any): void;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<MessageComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<MessageComponent, "ng-component", never, {}, {}, never, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<MessageComponent, "ng-component", never, {}, {}, never, never, false, never>;
30
30
  }
@@ -15,5 +15,5 @@ export declare class MessagesComponent implements OnInit, OnDestroy {
15
15
  open(message: any): void;
16
16
  ngOnDestroy(): void;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<MessagesComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<MessagesComponent, "fs-app-messages", never, {}, {}, never, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<MessagesComponent, "fs-app-messages", never, {}, {}, never, never, false, never>;
19
19
  }
@@ -11,5 +11,5 @@ export declare class WebhooksComponent implements OnInit {
11
11
  constructor(_config: FsAppMessageConfig, _message: FsMessage);
12
12
  ngOnInit(): void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<WebhooksComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<WebhooksComponent, "fs-app-message-webhooks", never, {}, {}, never, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<WebhooksComponent, "fs-app-message-webhooks", never, {}, {}, never, never, false, never>;
15
15
  }
@@ -7,11 +7,11 @@ export class FsAppMessageModule {
7
7
  };
8
8
  }
9
9
  }
10
- FsAppMessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- FsAppMessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessageModule });
12
- FsAppMessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessageModule });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessageModule, decorators: [{
10
+ FsAppMessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ FsAppMessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessageModule });
12
+ FsAppMessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessageModule });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessageModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{}]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW1lc3NhZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FwcC1tZXNzYWdlL2FwcC1tZXNzYWdlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1NBQzdCLENBQUM7SUFDSixDQUFDOzsrR0FMVSxrQkFBa0I7Z0hBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRjlCLFFBQVE7bUJBQUMsRUFDVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuQE5nTW9kdWxlKHtcbn0pXG5leHBvcnQgY2xhc3MgRnNBcHBNZXNzYWdlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0FwcE1lc3NhZ2VNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZzQXBwTWVzc2FnZU1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW1lc3NhZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FwcC1tZXNzYWdlL2FwcC1tZXNzYWdlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1NBQzdCLENBQUM7SUFDSixDQUFDOztnSEFMVSxrQkFBa0I7aUhBQWxCLGtCQUFrQjtpSEFBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRjlCLFFBQVE7bUJBQUMsRUFDVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuQE5nTW9kdWxlKHtcbn0pXG5leHBvcnQgY2xhc3MgRnNBcHBNZXNzYWdlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0FwcE1lc3NhZ2VNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZzQXBwTWVzc2FnZU1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
1
  import { Component, Inject } from '@angular/core';
2
2
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@firestitch/dialog";
5
- import * as i2 from "@firestitch/iframe";
6
- import * as i3 from "@angular/material/button";
7
- import * as i4 from "@angular/material/dialog";
4
+ import * as i1 from "@angular/material/dialog";
5
+ import * as i2 from "@angular/material/button";
6
+ import * as i3 from "@firestitch/dialog";
7
+ import * as i4 from "@firestitch/iframe";
8
8
  export class PreviewComponent {
9
9
  constructor(_data) {
10
10
  this._data = _data;
@@ -14,13 +14,13 @@ export class PreviewComponent {
14
14
  ngOnInit() {
15
15
  }
16
16
  }
17
- PreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PreviewComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
18
- PreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: PreviewComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <div mat-dialog-title>Preview</div>\n <mat-dialog-content>\n <fs-iframe\n [html]=\"html\"\n [width]=\"'100%'\"\n [styles]=\"styles\">\n </fs-iframe>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"null\" color=\"primary\" type=\"button\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], components: [{ type: i1.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { type: i2.FsIFrameComponent, selector: "fs-iframe", inputs: ["html", "src", "styles", "width", "height"] }, { type: i3.MatButton, 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"] }], directives: [{ type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PreviewComponent, decorators: [{
17
+ PreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PreviewComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
18
+ PreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PreviewComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <div mat-dialog-title>Preview</div>\n <mat-dialog-content>\n <fs-iframe\n [html]=\"html\"\n [width]=\"'100%'\"\n [styles]=\"styles\">\n </fs-iframe>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"null\" color=\"primary\" type=\"button\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: i4.FsIFrameComponent, selector: "fs-iframe", inputs: ["html", "src", "styles", "width", "height"], outputs: ["loaded"] }] });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PreviewComponent, decorators: [{
20
20
  type: Component,
21
- args: [{ template: "<fs-dialog>\n <div mat-dialog-title>Preview</div>\n <mat-dialog-content>\n <fs-iframe\n [html]=\"html\"\n [width]=\"'100%'\"\n [styles]=\"styles\">\n </fs-iframe>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"null\" color=\"primary\" type=\"button\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""] }]
21
+ args: [{ template: "<fs-dialog>\n <div mat-dialog-title>Preview</div>\n <mat-dialog-content>\n <fs-iframe\n [html]=\"html\"\n [width]=\"'100%'\"\n [styles]=\"styles\">\n </fs-iframe>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"null\" color=\"primary\" type=\"button\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n" }]
22
22
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
23
23
  type: Inject,
24
24
  args: [MAT_DIALOG_DATA]
25
25
  }] }]; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvbWVzc2FnZS1wcmV2aWV3L2NvbXBvbmVudHMvcHJldmlldy9wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tZXNzYWdlLXByZXZpZXcvY29tcG9uZW50cy9wcmV2aWV3L3ByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFPM0QsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUNtQyxLQUFLO1FBQUwsVUFBSyxHQUFMLEtBQUssQ0FBQTtRQUV0QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRO0lBRWYsQ0FBQzs7NkdBZFUsZ0JBQWdCLGtCQU1qQixlQUFlO2lHQU5kLGdCQUFnQixvRENUN0IseVhBYUE7MkZESmEsZ0JBQWdCO2tCQUo1QixTQUFTOzs7MEJBVUwsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgaHRtbDtcbiAgcHVibGljIHN0eWxlcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YSxcbiAgKSB7XG4gICAgdGhpcy5odG1sID0gX2RhdGEuaHRtbDtcbiAgICB0aGlzLnN0eWxlcyA9IF9kYXRhLnN0eWxlcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcblxuICB9XG59XG4iLCI8ZnMtZGlhbG9nPlxuICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGU+UHJldmlldzwvZGl2PlxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxmcy1pZnJhbWVcbiAgICAgIFtodG1sXT1cImh0bWxcIlxuICAgICAgW3dpZHRoXT1cIicxMDAlJ1wiXG4gICAgICBbc3R5bGVzXT1cInN0eWxlc1wiPlxuICAgIDwvZnMtaWZyYW1lPlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIj5Eb25lPC9idXR0b24+XG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvbWVzc2FnZS1wcmV2aWV3L2NvbXBvbmVudHMvcHJldmlldy9wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tZXNzYWdlLXByZXZpZXcvY29tcG9uZW50cy9wcmV2aWV3L3ByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFPM0QsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUNtQyxLQUFLO1FBQUwsVUFBSyxHQUFMLEtBQUssQ0FBQTtRQUV0QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRO0lBRWYsQ0FBQzs7OEdBZFUsZ0JBQWdCLGtCQU1qQixlQUFlO2tHQU5kLGdCQUFnQixvRENUN0IseVhBYUE7NEZESmEsZ0JBQWdCO2tCQUo1QixTQUFTOzs7MEJBVUwsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgaHRtbDtcbiAgcHVibGljIHN0eWxlcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YSxcbiAgKSB7XG4gICAgdGhpcy5odG1sID0gX2RhdGEuaHRtbDtcbiAgICB0aGlzLnN0eWxlcyA9IF9kYXRhLnN0eWxlcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcblxuICB9XG59XG4iLCI8ZnMtZGlhbG9nPlxuICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGU+UHJldmlldzwvZGl2PlxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxmcy1pZnJhbWVcbiAgICAgIFtodG1sXT1cImh0bWxcIlxuICAgICAgW3dpZHRoXT1cIicxMDAlJ1wiXG4gICAgICBbc3R5bGVzXT1cInN0eWxlc1wiPlxuICAgIDwvZnMtaWZyYW1lPlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIj5Eb25lPC9idXR0b24+XG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
@@ -7,18 +7,16 @@ import { PreviewComponent } from './components/preview';
7
7
  import * as i0 from "@angular/core";
8
8
  export class FsAppMessagePreviewModule {
9
9
  }
10
- FsAppMessagePreviewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessagePreviewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- FsAppMessagePreviewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessagePreviewModule, declarations: [PreviewComponent], imports: [MatDialogModule,
10
+ FsAppMessagePreviewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessagePreviewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ FsAppMessagePreviewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessagePreviewModule, declarations: [PreviewComponent], imports: [MatDialogModule,
12
12
  MatButtonModule,
13
13
  FsDialogModule,
14
14
  FsIFrameModule], exports: [PreviewComponent] });
15
- FsAppMessagePreviewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessagePreviewModule, imports: [[
16
- MatDialogModule,
17
- MatButtonModule,
18
- FsDialogModule,
19
- FsIFrameModule,
20
- ]] });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsAppMessagePreviewModule, decorators: [{
15
+ FsAppMessagePreviewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessagePreviewModule, imports: [MatDialogModule,
16
+ MatButtonModule,
17
+ FsDialogModule,
18
+ FsIFrameModule] });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsAppMessagePreviewModule, decorators: [{
22
20
  type: NgModule,
23
21
  args: [{
24
22
  imports: [
@@ -35,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
35
33
  ]
36
34
  }]
37
35
  }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wcmV2aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tZXNzYWdlLXByZXZpZXcvbWVzc2FnZS1wcmV2aWV3Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFrQnhELE1BQU0sT0FBTyx5QkFBeUI7O3NIQUF6Qix5QkFBeUI7dUhBQXpCLHlCQUF5QixpQkFObEMsZ0JBQWdCLGFBUGhCLGVBQWU7UUFDZixlQUFlO1FBRWYsY0FBYztRQUNkLGNBQWMsYUFNZCxnQkFBZ0I7dUhBR1AseUJBQXlCLFlBZDNCO1lBQ1AsZUFBZTtZQUNmLGVBQWU7WUFFZixjQUFjO1lBQ2QsY0FBYztTQUNmOzJGQVFVLHlCQUF5QjtrQkFmckMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZixlQUFlO3dCQUVmLGNBQWM7d0JBQ2QsY0FBYztxQkFDZjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZ0JBQWdCO3FCQUNqQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc0lGcmFtZU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2lmcmFtZSc7XG5pbXBvcnQgeyBGc0RpYWxvZ01vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RpYWxvZyc7XG5cbmltcG9ydCB7IFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJldmlldyc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG5cbiAgICBGc0RpYWxvZ01vZHVsZSxcbiAgICBGc0lGcmFtZU1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUHJldmlld0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFByZXZpZXdDb21wb25lbnQsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRnNBcHBNZXNzYWdlUHJldmlld01vZHVsZSB7XG59XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wcmV2aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tZXNzYWdlLXByZXZpZXcvbWVzc2FnZS1wcmV2aWV3Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFrQnhELE1BQU0sT0FBTyx5QkFBeUI7O3VIQUF6Qix5QkFBeUI7d0hBQXpCLHlCQUF5QixpQkFObEMsZ0JBQWdCLGFBUGhCLGVBQWU7UUFDZixlQUFlO1FBRWYsY0FBYztRQUNkLGNBQWMsYUFNZCxnQkFBZ0I7d0hBR1AseUJBQXlCLFlBYmxDLGVBQWU7UUFDZixlQUFlO1FBRWYsY0FBYztRQUNkLGNBQWM7NEZBU0wseUJBQXlCO2tCQWZyQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxlQUFlO3dCQUNmLGVBQWU7d0JBRWYsY0FBYzt3QkFDZCxjQUFjO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDWixnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7cUJBQ2pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzSUZyYW1lTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvaWZyYW1lJztcbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcblxuaW1wb3J0IHsgUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wcmV2aWV3JztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcblxuICAgIEZzRGlhbG9nTW9kdWxlLFxuICAgIEZzSUZyYW1lTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBQcmV2aWV3Q29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUHJldmlld0NvbXBvbmVudCxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGc0FwcE1lc3NhZ2VQcmV2aWV3TW9kdWxlIHtcbn1cbiJdfQ==
@@ -16,17 +16,17 @@ import * as i0 from "@angular/core";
16
16
  import * as i1 from "@firestitch/message";
17
17
  import * as i2 from "@firestitch/prompt";
18
18
  import * as i3 from "@angular/material/dialog";
19
- import * as i4 from "@firestitch/dialog";
20
- import * as i5 from "@angular/material/tabs";
21
- import * as i6 from "@firestitch/label";
22
- import * as i7 from "../recipient/recipient.component";
23
- import * as i8 from "@firestitch/iframe";
24
- import * as i9 from "@firestitch/list";
19
+ import * as i4 from "@angular/common";
20
+ import * as i5 from "@angular/material/button";
21
+ import * as i6 from "@angular/material/tabs";
22
+ import * as i7 from "@firestitch/list";
23
+ import * as i8 from "@firestitch/dialog";
24
+ import * as i9 from "@firestitch/label";
25
25
  import * as i10 from "@firestitch/date";
26
- import * as i11 from "@angular/material/button";
27
- import * as i12 from "@firestitch/skeleton";
28
- import * as i13 from "@angular/common";
29
- import * as i14 from "@firestitch/form";
26
+ import * as i11 from "@firestitch/skeleton";
27
+ import * as i12 from "@firestitch/form";
28
+ import * as i13 from "@firestitch/iframe";
29
+ import * as i14 from "../recipient/recipient.component";
30
30
  export class QueueComponent {
31
31
  constructor(_config, _data, _message, _prompt, _dialog, _cdRef) {
32
32
  this._config = _config;
@@ -192,9 +192,9 @@ export class QueueComponent {
192
192
  return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';
193
193
  }
194
194
  }
195
- QueueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueueComponent, deps: [{ token: FS_APP_MESSAGE_CONFIG }, { token: MAT_DIALOG_DATA }, { token: i1.FsMessage }, { token: i2.FsPrompt }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
196
- QueueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: QueueComponent, selector: "ng-component", viewQueries: [{ propertyName: "logList", first: true, predicate: ["logList"], descendants: true }], ngImport: i0, template: "<fs-dialog *fsSkeleton=\"messageQueue\">\n <div mat-dialog-title>Message Queue</div>\n <mat-dialog-content>\n <mat-tab-group>\n <mat-tab label=\"Overview\">\n <ng-template matTabContent>\n <div class=\"fs-row.gap-large.wrap\">\n <ng-container *ngIf=\"messageQueue.emailMessageQueue\">\n <fs-label-field>\n <fs-label>\n To Recipients\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.toRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.ccRecipients.length\">\n <fs-label>\n CC\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.ccRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.bccRecipients.length\">\n <fs-label>\n BCC\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.bccRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.fromName || messageQueue.emailMessageQueue.fromEmail\">\n <fs-label>\n From\n </fs-label>\n <ng-container *ngIf=\"messageQueue.emailMessageQueue.fromName === messageQueue.emailMessageQueue.fromEmail; else fromEmailName\">\n {{messageQueue.emailMessageQueue.fromName}}\n </ng-container>\n\n <ng-template #fromEmailName>\n {{messageQueue.emailMessageQueue.fromName}}\n <ng-container *ngIf=\"messageQueue.emailMessageQueue.fromEmail\">\n ({{messageQueue.emailMessageQueue.fromEmail}})\n </ng-container>\n </ng-template>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.replyEmail && messageQueue.emailMessageQueue.replyEmail.length\">\n <fs-label>\n Reply To\n </fs-label>\n {{messageQueue.emailMessageQueue.replyEmail.join(', ')}}\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf=\"messageQueue.smsMessageQueue\">\n <fs-label-field>\n <fs-label>\n To Number\n </fs-label>\n <app-recipient \n [state]=\"messageQueue.state\"\n [name]=\"messageQueue.smsMessageQueue.toNumber\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.smsMessageQueue.fromNumber\">\n <fs-label>\n From Number\n </fs-label>\n {{messageQueue.smsMessageQueue.fromNumber}}\n </fs-label-field>\n </ng-container>\n \n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{messageQueue.scheduledDate | fsDateFormat: 'full-date-time'}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n {{messageQueueStates[messageQueue.state]}}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.message\">\n <fs-label>\n Message Type\n </fs-label>\n <a\n (click)=\"openMessage(messageQueue.message)\"\n *ngIf=\"loadMessage; else elseMessage\">\n {{messageQueue.message.name}}\n </a>\n <ng-template #elseMessage>\n {{messageQueue.message.name}}\n </ng-template>\n </fs-label-field>\n </div>\n\n <ng-container *ngIf=\"messageQueue.emailMessageQueue\">\n <fs-label-field class=\"subject\">\n <fs-label>\n Subject\n </fs-label>\n {{messageQueue.emailMessageQueue.subject}}\n </fs-label-field>\n\n <fs-label-field class=\"body\">\n <fs-label>\n Body\n </fs-label>\n <div\n *ngIf=\"messageQueue.emailMessageQueue.format===emailMessageQueueFormat.Text\"\n class=\"format-text\"\n [innerHTML]=\"messageQueue.emailMessageQueue.body\">\n </div>\n <fs-iframe\n *ngIf=\"messageQueue.emailMessageQueue.format===emailMessageQueueFormat.HTML || messageQueue.emailMessageQueue.format===emailMessageQueueFormat.RichText\"\n [html]=\"messageQueue.emailMessageQueue.body\"\n [width]=\"'100%'\">\n </fs-iframe>\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf=\"messageQueue.smsMessageQueue\">\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n <div\n class=\"format-text\"\n [innerHTML]=\"messageQueue.smsMessageQueue.body\">\n </div>\n </fs-label-field>\n </ng-container>\n\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Logs\">\n <ng-template matTabContent>\n <fs-list [config]=\"logConfig\" #logList>\n <fs-list-column title=\"Message\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Date\">\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createdDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Attachments\">\n <ng-template matTabContent>\n <fs-list [config]=\"attachmentConfig\">\n <fs-list-column title=\"File Name\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.filename}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"File Size\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.prettyFilesize}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Events\">\n <ng-template matTabContent>\n <fs-list [config]=\"eventConfig\">\n <fs-list-column title=\"Recipient\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.messageQueueRecipient.recipient}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Event\">\n <ng-template fs-list-cell let-row=\"row\">\n {{MessageQueueEventTypes[row.type]}}\n <div class=\"small\" *ngIf=\"row.type === MessageQueueEventType.Click\">\n <a [href]=\"row.meta?.url\" target=\"_blank\">{{row.meta?.url}}</a>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Date\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.createDate | fsDateFormat: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"null\"\n color=\"primary\">\n Done\n </button>\n <button\n mat-button\n *ngIf=\"resendMessageQueue\"\n type=\"button\"\n (click)=\"resend()\"\n type=\"button\">\n Resend\n </button>\n <button\n mat-button\n *ngIf=\"forwardMessageQueue\"\n type=\"button\"\n (click)=\"forward()\"\n type=\"button\">\n Forward\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [".subject,.body{display:block;margin-top:15px}.format-text{white-space:pre-wrap}app-recipient{display:block}\n"], components: [{ type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i6.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i6.FsLabelComponent, selector: "fs-label" }, { type: i7.RecipientComponent, selector: "app-recipient", inputs: ["name", "state"] }, { type: i8.FsIFrameComponent, selector: "fs-iframe", inputs: ["html", "src", "styles", "width", "height"] }, { type: i9.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i10.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i11.MatButton, 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"] }], directives: [{ type: i12.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.MatTabContent, selector: "[matTabContent]" }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i9.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i14.FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "form"] }, { type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i10.FsDateFormatPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueueComponent, decorators: [{
195
+ QueueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: QueueComponent, deps: [{ token: FS_APP_MESSAGE_CONFIG }, { token: MAT_DIALOG_DATA }, { token: i1.FsMessage }, { token: i2.FsPrompt }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
196
+ QueueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: QueueComponent, selector: "ng-component", viewQueries: [{ propertyName: "logList", first: true, predicate: ["logList"], descendants: true }], ngImport: i0, template: "<fs-dialog *fsSkeleton=\"messageQueue\">\n <div mat-dialog-title>Message Queue</div>\n <mat-dialog-content>\n <mat-tab-group>\n <mat-tab label=\"Overview\">\n <ng-template matTabContent>\n <div class=\"fs-row.gap-large.wrap\">\n <ng-container *ngIf=\"messageQueue.emailMessageQueue\">\n <fs-label-field>\n <fs-label>\n To Recipients\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.toRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.ccRecipients.length\">\n <fs-label>\n CC\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.ccRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.bccRecipients.length\">\n <fs-label>\n BCC\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.bccRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.fromName || messageQueue.emailMessageQueue.fromEmail\">\n <fs-label>\n From\n </fs-label>\n <ng-container *ngIf=\"messageQueue.emailMessageQueue.fromName === messageQueue.emailMessageQueue.fromEmail; else fromEmailName\">\n {{messageQueue.emailMessageQueue.fromName}}\n </ng-container>\n\n <ng-template #fromEmailName>\n {{messageQueue.emailMessageQueue.fromName}}\n <ng-container *ngIf=\"messageQueue.emailMessageQueue.fromEmail\">\n ({{messageQueue.emailMessageQueue.fromEmail}})\n </ng-container>\n </ng-template>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.replyEmail && messageQueue.emailMessageQueue.replyEmail.length\">\n <fs-label>\n Reply To\n </fs-label>\n {{messageQueue.emailMessageQueue.replyEmail.join(', ')}}\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf=\"messageQueue.smsMessageQueue\">\n <fs-label-field>\n <fs-label>\n To Number\n </fs-label>\n <app-recipient \n [state]=\"messageQueue.state\"\n [name]=\"messageQueue.smsMessageQueue.toNumber\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.smsMessageQueue.fromNumber\">\n <fs-label>\n From Number\n </fs-label>\n {{messageQueue.smsMessageQueue.fromNumber}}\n </fs-label-field>\n </ng-container>\n \n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{messageQueue.scheduledDate | fsDateFormat: 'full-date-time'}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n {{messageQueueStates[messageQueue.state]}}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.message\">\n <fs-label>\n Message Type\n </fs-label>\n <a\n (click)=\"openMessage(messageQueue.message)\"\n *ngIf=\"loadMessage; else elseMessage\">\n {{messageQueue.message.name}}\n </a>\n <ng-template #elseMessage>\n {{messageQueue.message.name}}\n </ng-template>\n </fs-label-field>\n </div>\n\n <ng-container *ngIf=\"messageQueue.emailMessageQueue\">\n <fs-label-field class=\"subject\">\n <fs-label>\n Subject\n </fs-label>\n {{messageQueue.emailMessageQueue.subject}}\n </fs-label-field>\n\n <fs-label-field class=\"body\">\n <fs-label>\n Body\n </fs-label>\n <div\n *ngIf=\"messageQueue.emailMessageQueue.format===emailMessageQueueFormat.Text\"\n class=\"format-text\"\n [innerHTML]=\"messageQueue.emailMessageQueue.body\">\n </div>\n <fs-iframe\n *ngIf=\"messageQueue.emailMessageQueue.format===emailMessageQueueFormat.HTML || messageQueue.emailMessageQueue.format===emailMessageQueueFormat.RichText\"\n [html]=\"messageQueue.emailMessageQueue.body\"\n [width]=\"'100%'\">\n </fs-iframe>\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf=\"messageQueue.smsMessageQueue\">\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n <div\n class=\"format-text\"\n [innerHTML]=\"messageQueue.smsMessageQueue.body\">\n </div>\n </fs-label-field>\n </ng-container>\n\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Logs\">\n <ng-template matTabContent>\n <fs-list [config]=\"logConfig\" #logList>\n <fs-list-column title=\"Message\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Date\">\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createdDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Attachments\">\n <ng-template matTabContent>\n <fs-list [config]=\"attachmentConfig\">\n <fs-list-column title=\"File Name\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.filename}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"File Size\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.prettyFilesize}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Events\">\n <ng-template matTabContent>\n <fs-list [config]=\"eventConfig\">\n <fs-list-column title=\"Recipient\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.messageQueueRecipient.recipient}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Event\">\n <ng-template fs-list-cell let-row=\"row\">\n {{MessageQueueEventTypes[row.type]}}\n <div class=\"small\" *ngIf=\"row.type === MessageQueueEventType.Click\">\n <a [href]=\"row.meta?.url\" target=\"_blank\">{{row.meta?.url}}</a>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Date\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.createDate | fsDateFormat: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"null\"\n color=\"primary\">\n Done\n </button>\n <button\n mat-button\n *ngIf=\"resendMessageQueue\"\n type=\"button\"\n (click)=\"resend()\"\n type=\"button\">\n Resend\n </button>\n <button\n mat-button\n *ngIf=\"forwardMessageQueue\"\n type=\"button\"\n (click)=\"forward()\"\n type=\"button\">\n Forward\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [".subject,.body{display:block;margin-top:15px}.format-text{white-space:pre-wrap}app-recipient{display:block}\n"], 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: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatTabContent, selector: "[matTabContent]" }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i6.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: i7.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i7.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: i7.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "component", type: i8.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: i9.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i9.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { kind: "component", type: i10.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { kind: "directive", type: i11.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "directive", type: i12.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "component", type: i13.FsIFrameComponent, selector: "fs-iframe", inputs: ["html", "src", "styles", "width", "height"], outputs: ["loaded"] }, { kind: "component", type: i14.RecipientComponent, selector: "app-recipient", inputs: ["name", "state"] }, { kind: "pipe", type: i10.FsDateFormatPipe, name: "fsDateFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: QueueComponent, decorators: [{
198
198
  type: Component,
199
199
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog *fsSkeleton=\"messageQueue\">\n <div mat-dialog-title>Message Queue</div>\n <mat-dialog-content>\n <mat-tab-group>\n <mat-tab label=\"Overview\">\n <ng-template matTabContent>\n <div class=\"fs-row.gap-large.wrap\">\n <ng-container *ngIf=\"messageQueue.emailMessageQueue\">\n <fs-label-field>\n <fs-label>\n To Recipients\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.toRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.ccRecipients.length\">\n <fs-label>\n CC\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.ccRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.bccRecipients.length\">\n <fs-label>\n BCC\n </fs-label>\n <app-recipient \n *ngFor=\"let recipient of messageQueue.emailMessageQueue.bccRecipients\"\n [state]=\"messageQueueRecipients[recipient]\"\n [name]=\"recipient\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.fromName || messageQueue.emailMessageQueue.fromEmail\">\n <fs-label>\n From\n </fs-label>\n <ng-container *ngIf=\"messageQueue.emailMessageQueue.fromName === messageQueue.emailMessageQueue.fromEmail; else fromEmailName\">\n {{messageQueue.emailMessageQueue.fromName}}\n </ng-container>\n\n <ng-template #fromEmailName>\n {{messageQueue.emailMessageQueue.fromName}}\n <ng-container *ngIf=\"messageQueue.emailMessageQueue.fromEmail\">\n ({{messageQueue.emailMessageQueue.fromEmail}})\n </ng-container>\n </ng-template>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.emailMessageQueue.replyEmail && messageQueue.emailMessageQueue.replyEmail.length\">\n <fs-label>\n Reply To\n </fs-label>\n {{messageQueue.emailMessageQueue.replyEmail.join(', ')}}\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf=\"messageQueue.smsMessageQueue\">\n <fs-label-field>\n <fs-label>\n To Number\n </fs-label>\n <app-recipient \n [state]=\"messageQueue.state\"\n [name]=\"messageQueue.smsMessageQueue.toNumber\">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.smsMessageQueue.fromNumber\">\n <fs-label>\n From Number\n </fs-label>\n {{messageQueue.smsMessageQueue.fromNumber}}\n </fs-label-field>\n </ng-container>\n \n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{messageQueue.scheduledDate | fsDateFormat: 'full-date-time'}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n {{messageQueueStates[messageQueue.state]}}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"messageQueue.message\">\n <fs-label>\n Message Type\n </fs-label>\n <a\n (click)=\"openMessage(messageQueue.message)\"\n *ngIf=\"loadMessage; else elseMessage\">\n {{messageQueue.message.name}}\n </a>\n <ng-template #elseMessage>\n {{messageQueue.message.name}}\n </ng-template>\n </fs-label-field>\n </div>\n\n <ng-container *ngIf=\"messageQueue.emailMessageQueue\">\n <fs-label-field class=\"subject\">\n <fs-label>\n Subject\n </fs-label>\n {{messageQueue.emailMessageQueue.subject}}\n </fs-label-field>\n\n <fs-label-field class=\"body\">\n <fs-label>\n Body\n </fs-label>\n <div\n *ngIf=\"messageQueue.emailMessageQueue.format===emailMessageQueueFormat.Text\"\n class=\"format-text\"\n [innerHTML]=\"messageQueue.emailMessageQueue.body\">\n </div>\n <fs-iframe\n *ngIf=\"messageQueue.emailMessageQueue.format===emailMessageQueueFormat.HTML || messageQueue.emailMessageQueue.format===emailMessageQueueFormat.RichText\"\n [html]=\"messageQueue.emailMessageQueue.body\"\n [width]=\"'100%'\">\n </fs-iframe>\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf=\"messageQueue.smsMessageQueue\">\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n <div\n class=\"format-text\"\n [innerHTML]=\"messageQueue.smsMessageQueue.body\">\n </div>\n </fs-label-field>\n </ng-container>\n\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Logs\">\n <ng-template matTabContent>\n <fs-list [config]=\"logConfig\" #logList>\n <fs-list-column title=\"Message\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Date\">\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createdDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Attachments\">\n <ng-template matTabContent>\n <fs-list [config]=\"attachmentConfig\">\n <fs-list-column title=\"File Name\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.filename}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"File Size\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.prettyFilesize}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Events\">\n <ng-template matTabContent>\n <fs-list [config]=\"eventConfig\">\n <fs-list-column title=\"Recipient\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.messageQueueRecipient.recipient}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Event\">\n <ng-template fs-list-cell let-row=\"row\">\n {{MessageQueueEventTypes[row.type]}}\n <div class=\"small\" *ngIf=\"row.type === MessageQueueEventType.Click\">\n <a [href]=\"row.meta?.url\" target=\"_blank\">{{row.meta?.url}}</a>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Date\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.createDate | fsDateFormat: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"null\"\n color=\"primary\">\n Done\n </button>\n <button\n mat-button\n *ngIf=\"resendMessageQueue\"\n type=\"button\"\n (click)=\"resend()\"\n type=\"button\">\n Resend\n </button>\n <button\n mat-button\n *ngIf=\"forwardMessageQueue\"\n type=\"button\"\n (click)=\"forward()\"\n type=\"button\">\n Forward\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [".subject,.body{display:block;margin-top:15px}.format-text{white-space:pre-wrap}app-recipient{display:block}\n"] }]
200
200
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -207,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
207
207
  type: ViewChild,
208
208
  args: ['logList']
209
209
  }] } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21lc3NhZ2UtcXVldWVzL2NvbXBvbmVudHMvcXVldWUvcXVldWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21lc3NhZ2UtcXVldWVzL2NvbXBvbmVudHMvcXVldWUvcXVldWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVC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cnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IGFuY2hvcm1lIGZyb20gJ2FuY2hvcm1lJztcblxuaW1wb3J0IHsgaW5kZXhOYW1lVmFsdWUgfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2R1bGVzL21lc3NhZ2VzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRlNfQVBQX01FU1NBR0VfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQXBwTWVzc2FnZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2FwcC1tZXNzYWdlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRm9yd2FyZE1lc3NhZ2VRdWV1ZSwgTG9hZE1lc3NhZ2UsIFJlc2VuZE1lc3NhZ2VRdWV1ZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1tZXNzYWdlL3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VRdWV1ZVN0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBNZXNzYWdlUXVldWVFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzL21lc3NhZ2UtcXVldWUtZXZlbnQtdHlwZS5jb25zdCc7XG5pbXBvcnQgeyBFbWFpbE1lc3NhZ2VRdWV1ZUZvcm1hdCwgTWVzc2FnZVF1ZXVlRXZlbnRUeXBlLCBNZXNzYWdlUXVldWVUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vcXVldWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWV1ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUXVldWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgnbG9nTGlzdCcpXG4gIHB1YmxpYyBsb2dMaXN0OiBGc0xpc3RDb21wb25lbnQ7XG5cbiAgcHVibGljIG1lc3NhZ2VRdWV1ZTtcbiAgcHVibGljIGxvYWRNZXNzYWdlOiBMb2FkTWVzc2FnZTtcbiAgcHVibGljIHJlc2VuZE1lc3NhZ2VRdWV1ZTogUmVzZW5kTWVzc2FnZVF1ZXVlO1xuICBwdWJsaWMgZm9yd2FyZE1lc3NhZ2VRdWV1ZTogRm9yd2FyZE1lc3NhZ2VRdWV1ZTtcbiAgcHVibGljIG1lc3NhZ2VRdWV1ZVJlY2lwaWVudHMgPSB7fTtcbiAgcHVibGljIGVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0ID0gRW1haWxNZXNzYWdlUXVldWVGb3JtYXQ7XG4gIHB1YmxpYyBtZXNzYWdlUXVldWVTdGF0ZXM7XG4gIHB1YmxpYyBsb2dDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIGF0dGFjaG1lbnRDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIGV2ZW50Q29uZmlnOiBGc0xpc3RDb25maWc7XG4gIHB1YmxpYyBNZXNzYWdlUXVldWVFdmVudFR5cGVzID0gaW5kZXhOYW1lVmFsdWUoTWVzc2FnZVF1ZXVlRXZlbnRUeXBlcyk7XG4gIHB1YmxpYyBNZXNzYWdlUXVldWVFdmVudFR5cGUgPSBNZXNzYWdlUXVldWVFdmVudFR5cGU7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRlNfQVBQX01FU1NBR0VfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEZzQXBwTWVzc2FnZUNvbmZpZyxcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YSxcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgcHJpdmF0ZSBfcHJvbXB0OiBGc1Byb21wdCxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWVzc2FnZVF1ZXVlU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoTWVzc2FnZVF1ZXVlU3RhdGVzKTtcbiAgICB0aGlzLnJlc2VuZE1lc3NhZ2VRdWV1ZSA9IHRoaXMuX2NvbmZpZy5yZXNlbmRNZXNzYWdlUXVldWU7XG4gICAgdGhpcy5mb3J3YXJkTWVzc2FnZVF1ZXVlID0gdGhpcy5fY29uZmlnLmZvcndhcmRNZXNzYWdlUXVldWU7XG5cbiAgICB0aGlzLl9jb25maWcubG9hZE1lc3NhZ2VRdWV1ZSh0aGlzLl9kYXRhLm1lc3NhZ2VRdWV1ZUlkKVxuICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2VRdWV1ZSkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlUXVldWUgPSBtZXNzYWdlUXVldWU7XG5cbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZSkge1xuICAgICAgICBsZXQgYm9keSA9IHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmJvZHk7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mb3JtYXQgPT09IEVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0LkhUTUwpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhib2R5LCAndGV4dC9odG1sJyk7XG5cbiAgICAgICAgICAgIGRvYy5xdWVyeVNlbGVjdG9yQWxsKCdhJykuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgYm9keSA9IGRvYy5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MO1xuXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBib2R5ID0gdGhpcy5hbmNob3JNZShib2R5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmJvZHkgPSBib2R5O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tZXNzYWdlUXVldWUuc21zTWVzc2FnZVF1ZXVlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZS5ib2R5ID0gdGhpcy5hbmNob3JNZSh0aGlzLm1lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUuYm9keSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWVzc2FnZVF1ZXVlUmVjaXBpZW50cyA9IHRoaXMubWVzc2FnZVF1ZXVlLm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIG1lc3NhZ2VRdWV1ZVJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgIGFjY3VtW21lc3NhZ2VRdWV1ZVJlY2lwaWVudC5yZWNpcGllbnRdID0gbWVzc2FnZVF1ZXVlUmVjaXBpZW50LnN0YXRlO1xuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgIHRoaXMuX3NldExvZ3NDb25maWcobWVzc2FnZVF1ZXVlKTtcbiAgICAgIHRoaXMuX3NldEF0dGFjaG1lbnRzQ29uZmlnKG1lc3NhZ2VRdWV1ZSk7XG4gICAgICB0aGlzLl9zZXRFdmVudHNDb25maWcobWVzc2FnZVF1ZXVlKTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFuY2hvck1lKGlucHV0KSB7XG4gICAgcmV0dXJuIGFuY2hvcm1lKHtcbiAgICAgIGlucHV0LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgdGFyZ2V0OiBcIl9ibGFua1wiLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk1lc3NhZ2UobWVzc2FnZSkge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKE1lc3NhZ2VDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogJzg1JSdcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNlbmQoKSB7XG4gICAgdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgdGl0bGU6ICdDb25maXJtJyxcbiAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHJlc2VuZCB0aGlzIG1lc3NhZ2U/J1xuICAgIH0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2VuZE1lc3NhZ2VRdWV1ZSh0aGlzLm1lc3NhZ2VRdWV1ZSlcbiAgICAgIC5zdWJzY3JpYmUobWVzc2FnZVF1ZXVlID0+IHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1lc3NhZ2VRdWV1ZSwgbWVzc2FnZVF1ZXVlKTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IHJlc2VudCcpO1xuXG4gICAgICAgIGlmICh0aGlzLmxvZ0xpc3QpIHtcbiAgICAgICAgICB0aGlzLmxvZ0xpc3QucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZvcndhcmQoKSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLm1lc3NhZ2VRdWV1ZS50eXBlID09PSBNZXNzYWdlUXVldWVUeXBlLkVtYWlsID8gJ2FuIGVtYWlsJyA6ICdhIHBob25lIG51bWJlcic7XG5cbiAgICB0aGlzLl9wcm9tcHQuaW5wdXQoe1xuICAgICAgbGFiZWw6IGBQbGVhc2UgZW50ZXIgJHt0eXBlTmFtZX0gdG8gZm9yd2FyZCB0b2AsXG4gICAgICB0aXRsZTogJ0ZvcndhcmQgTWVzc2FnZScsXG4gICAgICBjb21taXRMYWJlbDogJ0ZvcndhcmQnLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9KS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmZvcndhcmRNZXNzYWdlUXVldWUodGhpcy5tZXNzYWdlUXVldWUsIHZhbHVlKVxuICAgICAgICAuc3Vic2NyaWJlKG1lc3NhZ2VRdWV1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlUXVldWUgPSB7XG4gICAgICAgICAgICAuLi50aGlzLm1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGZvcndhcmRlZCcpO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLmxvZ0xpc3QpIHtcbiAgICAgICAgICAgIHRoaXMubG9nTGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TG9nc0NvbmZpZyhtZXNzYWdlUXVldWUpIHtcbiAgICB0aGlzLmxvZ0NvbmZpZyA9IHtcbiAgICAgIGxvYWRNb3JlOiB0cnVlLFxuICAgICAgcXVlcnlQYXJhbTogZmFsc2UsXG4gICAgICBmZXRjaDogcXVlcnkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWRMb2dzKG1lc3NhZ2VRdWV1ZSwgcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEV2ZW50c0NvbmZpZyhtZXNzYWdlUXVldWUpIHtcbiAgICB0aGlzLmV2ZW50Q29uZmlnID0ge1xuICAgICAgbG9hZE1vcmU6IHRydWUsXG4gICAgICBxdWVyeVBhcmFtOiBmYWxzZSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZVF1ZXVlRXZlbnRzKG1lc3NhZ2VRdWV1ZSwgcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEF0dGFjaG1lbnRzQ29uZmlnKG1lc3NhZ2VRdWV1ZSkge1xuICAgIHRoaXMuYXR0YWNobWVudENvbmZpZyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW06IGZhbHNlLFxuICAgICAgZmV0Y2g6IHF1ZXJ5ID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZVF1ZXVlQXR0YWNobWVudHMobWVzc2FnZVF1ZXVlLCBxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiAoe1xuICAgICAgICAgICAgICBkYXRhOiByZXNwb25zZS5kYXRhLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdmFsdWUucHJldHR5RmlsZXNpemUgPSB0aGlzLl9wcmV0dHlGaWxlc2l6ZSh2YWx1ZS5maWxlc2l6ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICB9KSwgcGFnaW5nOiByZXNwb25zZS5wYWdpbmdcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICh0aGlzLl9jb25maWcuZG93bmxvYWRNZXNzYWdlUXVldWVBdHRhY2htZW50KSB7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRDb25maWcucm93QWN0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsaWNrOiAobWVzc2FnZUF0dGFjaG1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5kb3dubG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnQobWVzc2FnZUF0dGFjaG1lbnQsIHRoaXMubWVzc2FnZVF1ZXVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxhYmVsOiAnRG93bmxvYWQnLFxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ByZXR0eUZpbGVzaXplKGJ5dGVzKSB7XG4gICAgaWYgKGJ5dGVzID09PSAwKSB7IHJldHVybiAnMC4wMCBCJzsgfVxuICAgIGNvbnN0IGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgICByZXR1cm4gKGJ5dGVzIC8gTWF0aC5wb3coMTAyNCwgZSkpLnRvRml4ZWQoMikgKyAnICcgKyAnIEtNR1RQJy5jaGFyQXQoZSkgKyAnQic7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2cgKmZzU2tlbGV0b249XCJtZXNzYWdlUXVldWVcIj5cbiAgPGRpdiBtYXQtZGlhbG9nLXRpdGxlPk1lc3NhZ2UgUXVldWU8L2Rpdj5cbiAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LXRhYi1ncm91cD5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwiT3ZlcnZpZXdcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLXJvdy5nYXAtbGFyZ2Uud3JhcFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZVwiPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgVG8gUmVjaXBpZW50c1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVjaXBpZW50IG9mIG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS50b1JlY2lwaWVudHNcIlxuICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNbcmVjaXBpZW50XVwiXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCJyZWNpcGllbnRcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1yZWNpcGllbnQ+XG4gICAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwibWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmNjUmVjaXBpZW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgICBDQ1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVjaXBpZW50IG9mIG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5jY1JlY2lwaWVudHNcIlxuICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNbcmVjaXBpZW50XVwiXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCJyZWNpcGllbnRcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1yZWNpcGllbnQ+ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5iY2NSZWNpcGllbnRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIEJDQ1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVjaXBpZW50IG9mIG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5iY2NSZWNpcGllbnRzXCJcbiAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJtZXNzYWdlUXVldWVSZWNpcGllbnRzW3JlY2lwaWVudF1cIlxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwicmVjaXBpZW50XCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtcmVjaXBpZW50PiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWUgfHwgbWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZyb21FbWFpbFwiPlxuICAgICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIEZyb21cbiAgICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWUgPT09IG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mcm9tRW1haWw7IGVsc2UgZnJvbUVtYWlsTmFtZVwiPlxuICAgICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWV9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmcm9tRW1haWxOYW1lPlxuICAgICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWV9fVxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mcm9tRW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgKHt7bWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZyb21FbWFpbH19KVxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUucmVwbHlFbWFpbCAmJiBtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUucmVwbHlFbWFpbC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgICBSZXBseSBUb1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUucmVwbHlFbWFpbC5qb2luKCcsICcpfX1cbiAgICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZVwiPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgVG8gTnVtYmVyXG4gICAgICAgICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXBwLXJlY2lwaWVudCBcbiAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJtZXNzYWdlUXVldWUuc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwibWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZS50b051bWJlclwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXJlY2lwaWVudD4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUuZnJvbU51bWJlclwiPlxuICAgICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIEZyb20gTnVtYmVyXG4gICAgICAgICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICAgICAgICB7e21lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUuZnJvbU51bWJlcn19XG4gICAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICBEYXRlXG4gICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgIHt7bWVzc2FnZVF1ZXVlLnNjaGVkdWxlZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdmdWxsLWRhdGUtdGltZSd9fVxuICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgU3RhdHVzXG4gICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgIHt7bWVzc2FnZVF1ZXVlU3RhdGVzW21lc3NhZ2VRdWV1ZS5zdGF0ZV19fVxuICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwibWVzc2FnZVF1ZXVlLm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgICAgIE1lc3NhZ2UgVHlwZVxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTWVzc2FnZShtZXNzYWdlUXVldWUubWVzc2FnZSlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZE1lc3NhZ2U7IGVsc2UgZWxzZU1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICB7e21lc3NhZ2VRdWV1ZS5tZXNzYWdlLm5hbWV9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZU1lc3NhZ2U+XG4gICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUubWVzc2FnZS5uYW1lfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlXCI+XG4gICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQgY2xhc3M9XCJzdWJqZWN0XCI+XG4gICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICBTdWJqZWN0XG4gICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgIHt7bWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLnN1YmplY3R9fVxuICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkIGNsYXNzPVwiYm9keVwiPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgQm9keVxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mb3JtYXQ9PT1lbWFpbE1lc3NhZ2VRdWV1ZUZvcm1hdC5UZXh0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybWF0LXRleHRcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuYm9keVwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGZzLWlmcmFtZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZvcm1hdD09PWVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0LkhUTUwgfHwgbWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZvcm1hdD09PWVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0LlJpY2hUZXh0XCJcbiAgICAgICAgICAgICAgICBbaHRtbF09XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuYm9keVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIicxMDAlJ1wiPlxuICAgICAgICAgICAgICA8L2ZzLWlmcmFtZT5cbiAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZVwiPlxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgTWVzc2FnZVxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtYXQtdGV4dFwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlUXVldWUuc21zTWVzc2FnZVF1ZXVlLmJvZHlcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIkxvZ3NcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgPGZzLWxpc3QgW2NvbmZpZ109XCJsb2dDb25maWdcIiAjbG9nTGlzdD5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIk1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICAgICAgICAgICAge3tyb3cubWVzc2FnZX19XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2ZzLWxpc3QtY29sdW1uPlxuICAgICAgICAgICAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiRGF0ZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZnMtZGF0ZS1hZ28gW2RhdGVdPVwicm93LmNyZWF0ZWREYXRlXCI+PC9mcy1kYXRlLWFnbz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZnMtbGlzdC1jb2x1bW4+XG4gICAgICAgICAgPC9mcy1saXN0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJBdHRhY2htZW50c1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICA8ZnMtbGlzdCBbY29uZmlnXT1cImF0dGFjaG1lbnRDb25maWdcIj5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIkZpbGUgTmFtZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICB7e3Jvdy5maWxlbmFtZX19XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2ZzLWxpc3QtY29sdW1uPlxuICAgICAgICAgICAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiRmlsZSBTaXplXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIHt7cm93LnByZXR0eUZpbGVzaXplfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZnMtbGlzdC1jb2x1bW4+XG4gICAgICAgICAgPC9mcy1saXN0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJFdmVudHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgPGZzLWxpc3QgW2NvbmZpZ109XCJldmVudENvbmZpZ1wiPlxuICAgICAgICAgICAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiUmVjaXBpZW50XCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIHt7cm93Lm1lc3NhZ2VRdWV1ZVJlY2lwaWVudC5yZWNpcGllbnR9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9mcy1saXN0LWNvbHVtbj5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIkV2ZW50XCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIHt7TWVzc2FnZVF1ZXVlRXZlbnRUeXBlc1tyb3cudHlwZV19fVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiICpuZ0lmPVwicm93LnR5cGUgPT09IE1lc3NhZ2VRdWV1ZUV2ZW50VHlwZS5DbGlja1wiPlxuICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwicm93Lm1ldGE/LnVybFwiIHRhcmdldD1cIl9ibGFua1wiPnt7cm93Lm1ldGE/LnVybH19PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9mcy1saXN0LWNvbHVtbj5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIkRhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICAgICAgICAgICAge3tyb3cuY3JlYXRlRGF0ZSB8IGZzRGF0ZUZvcm1hdDogJ2RhdGUtdGltZS15ZWFybGVzcyd9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9mcy1saXN0LWNvbHVtbj5cbiAgICAgICAgICA8L2ZzLWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgRG9uZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAqbmdJZj1cInJlc2VuZE1lc3NhZ2VRdWV1ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwicmVzZW5kKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBSZXNlbmRcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgKm5nSWY9XCJmb3J3YXJkTWVzc2FnZVF1ZXVlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJmb3J3YXJkKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBGb3J3YXJkXG4gICAgPC9idXR0b24+XG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21lc3NhZ2UtcXVldWVzL2NvbXBvbmVudHMvcXVldWUvcXVldWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21lc3NhZ2UtcXVldWVzL2NvbXBvbmVudHMvcXVldWUvcXVldWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVC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cnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IGFuY2hvcm1lIGZyb20gJ2FuY2hvcm1lJztcblxuaW1wb3J0IHsgaW5kZXhOYW1lVmFsdWUgfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2R1bGVzL21lc3NhZ2VzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRlNfQVBQX01FU1NBR0VfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQXBwTWVzc2FnZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2FwcC1tZXNzYWdlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRm9yd2FyZE1lc3NhZ2VRdWV1ZSwgTG9hZE1lc3NhZ2UsIFJlc2VuZE1lc3NhZ2VRdWV1ZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1tZXNzYWdlL3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VRdWV1ZVN0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBNZXNzYWdlUXVldWVFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzL21lc3NhZ2UtcXVldWUtZXZlbnQtdHlwZS5jb25zdCc7XG5pbXBvcnQgeyBFbWFpbE1lc3NhZ2VRdWV1ZUZvcm1hdCwgTWVzc2FnZVF1ZXVlRXZlbnRUeXBlLCBNZXNzYWdlUXVldWVUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vcXVldWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWV1ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUXVldWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgnbG9nTGlzdCcpXG4gIHB1YmxpYyBsb2dMaXN0OiBGc0xpc3RDb21wb25lbnQ7XG5cbiAgcHVibGljIG1lc3NhZ2VRdWV1ZTtcbiAgcHVibGljIGxvYWRNZXNzYWdlOiBMb2FkTWVzc2FnZTtcbiAgcHVibGljIHJlc2VuZE1lc3NhZ2VRdWV1ZTogUmVzZW5kTWVzc2FnZVF1ZXVlO1xuICBwdWJsaWMgZm9yd2FyZE1lc3NhZ2VRdWV1ZTogRm9yd2FyZE1lc3NhZ2VRdWV1ZTtcbiAgcHVibGljIG1lc3NhZ2VRdWV1ZVJlY2lwaWVudHMgPSB7fTtcbiAgcHVibGljIGVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0ID0gRW1haWxNZXNzYWdlUXVldWVGb3JtYXQ7XG4gIHB1YmxpYyBtZXNzYWdlUXVldWVTdGF0ZXM7XG4gIHB1YmxpYyBsb2dDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIGF0dGFjaG1lbnRDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIGV2ZW50Q29uZmlnOiBGc0xpc3RDb25maWc7XG4gIHB1YmxpYyBNZXNzYWdlUXVldWVFdmVudFR5cGVzID0gaW5kZXhOYW1lVmFsdWUoTWVzc2FnZVF1ZXVlRXZlbnRUeXBlcyk7XG4gIHB1YmxpYyBNZXNzYWdlUXVldWVFdmVudFR5cGUgPSBNZXNzYWdlUXVldWVFdmVudFR5cGU7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRlNfQVBQX01FU1NBR0VfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEZzQXBwTWVzc2FnZUNvbmZpZyxcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YSxcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgcHJpdmF0ZSBfcHJvbXB0OiBGc1Byb21wdCxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWVzc2FnZVF1ZXVlU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoTWVzc2FnZVF1ZXVlU3RhdGVzKTtcbiAgICB0aGlzLnJlc2VuZE1lc3NhZ2VRdWV1ZSA9IHRoaXMuX2NvbmZpZy5yZXNlbmRNZXNzYWdlUXVldWU7XG4gICAgdGhpcy5mb3J3YXJkTWVzc2FnZVF1ZXVlID0gdGhpcy5fY29uZmlnLmZvcndhcmRNZXNzYWdlUXVldWU7XG5cbiAgICB0aGlzLl9jb25maWcubG9hZE1lc3NhZ2VRdWV1ZSh0aGlzLl9kYXRhLm1lc3NhZ2VRdWV1ZUlkKVxuICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2VRdWV1ZSkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlUXVldWUgPSBtZXNzYWdlUXVldWU7XG5cbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZSkge1xuICAgICAgICBsZXQgYm9keSA9IHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmJvZHk7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mb3JtYXQgPT09IEVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0LkhUTUwpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhib2R5LCAndGV4dC9odG1sJyk7XG5cbiAgICAgICAgICAgIGRvYy5xdWVyeVNlbGVjdG9yQWxsKCdhJykuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgYm9keSA9IGRvYy5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MO1xuXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBib2R5ID0gdGhpcy5hbmNob3JNZShib2R5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmJvZHkgPSBib2R5O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tZXNzYWdlUXVldWUuc21zTWVzc2FnZVF1ZXVlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZS5ib2R5ID0gdGhpcy5hbmNob3JNZSh0aGlzLm1lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUuYm9keSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWVzc2FnZVF1ZXVlUmVjaXBpZW50cyA9IHRoaXMubWVzc2FnZVF1ZXVlLm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIG1lc3NhZ2VRdWV1ZVJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgIGFjY3VtW21lc3NhZ2VRdWV1ZVJlY2lwaWVudC5yZWNpcGllbnRdID0gbWVzc2FnZVF1ZXVlUmVjaXBpZW50LnN0YXRlO1xuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgIHRoaXMuX3NldExvZ3NDb25maWcobWVzc2FnZVF1ZXVlKTtcbiAgICAgIHRoaXMuX3NldEF0dGFjaG1lbnRzQ29uZmlnKG1lc3NhZ2VRdWV1ZSk7XG4gICAgICB0aGlzLl9zZXRFdmVudHNDb25maWcobWVzc2FnZVF1ZXVlKTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFuY2hvck1lKGlucHV0KSB7XG4gICAgcmV0dXJuIGFuY2hvcm1lKHtcbiAgICAgIGlucHV0LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgdGFyZ2V0OiBcIl9ibGFua1wiLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk1lc3NhZ2UobWVzc2FnZSkge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKE1lc3NhZ2VDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogJzg1JSdcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNlbmQoKSB7XG4gICAgdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgdGl0bGU6ICdDb25maXJtJyxcbiAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHJlc2VuZCB0aGlzIG1lc3NhZ2U/J1xuICAgIH0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2VuZE1lc3NhZ2VRdWV1ZSh0aGlzLm1lc3NhZ2VRdWV1ZSlcbiAgICAgIC5zdWJzY3JpYmUobWVzc2FnZVF1ZXVlID0+IHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1lc3NhZ2VRdWV1ZSwgbWVzc2FnZVF1ZXVlKTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IHJlc2VudCcpO1xuXG4gICAgICAgIGlmICh0aGlzLmxvZ0xpc3QpIHtcbiAgICAgICAgICB0aGlzLmxvZ0xpc3QucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZvcndhcmQoKSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLm1lc3NhZ2VRdWV1ZS50eXBlID09PSBNZXNzYWdlUXVldWVUeXBlLkVtYWlsID8gJ2FuIGVtYWlsJyA6ICdhIHBob25lIG51bWJlcic7XG5cbiAgICB0aGlzLl9wcm9tcHQuaW5wdXQoe1xuICAgICAgbGFiZWw6IGBQbGVhc2UgZW50ZXIgJHt0eXBlTmFtZX0gdG8gZm9yd2FyZCB0b2AsXG4gICAgICB0aXRsZTogJ0ZvcndhcmQgTWVzc2FnZScsXG4gICAgICBjb21taXRMYWJlbDogJ0ZvcndhcmQnLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9KS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmZvcndhcmRNZXNzYWdlUXVldWUodGhpcy5tZXNzYWdlUXVldWUsIHZhbHVlKVxuICAgICAgICAuc3Vic2NyaWJlKG1lc3NhZ2VRdWV1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlUXVldWUgPSB7XG4gICAgICAgICAgICAuLi50aGlzLm1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGZvcndhcmRlZCcpO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLmxvZ0xpc3QpIHtcbiAgICAgICAgICAgIHRoaXMubG9nTGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TG9nc0NvbmZpZyhtZXNzYWdlUXVldWUpIHtcbiAgICB0aGlzLmxvZ0NvbmZpZyA9IHtcbiAgICAgIGxvYWRNb3JlOiB0cnVlLFxuICAgICAgcXVlcnlQYXJhbTogZmFsc2UsXG4gICAgICBmZXRjaDogcXVlcnkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWRMb2dzKG1lc3NhZ2VRdWV1ZSwgcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEV2ZW50c0NvbmZpZyhtZXNzYWdlUXVldWUpIHtcbiAgICB0aGlzLmV2ZW50Q29uZmlnID0ge1xuICAgICAgbG9hZE1vcmU6IHRydWUsXG4gICAgICBxdWVyeVBhcmFtOiBmYWxzZSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZVF1ZXVlRXZlbnRzKG1lc3NhZ2VRdWV1ZSwgcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEF0dGFjaG1lbnRzQ29uZmlnKG1lc3NhZ2VRdWV1ZSkge1xuICAgIHRoaXMuYXR0YWNobWVudENvbmZpZyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW06IGZhbHNlLFxuICAgICAgZmV0Y2g6IHF1ZXJ5ID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZVF1ZXVlQXR0YWNobWVudHMobWVzc2FnZVF1ZXVlLCBxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiAoe1xuICAgICAgICAgICAgICBkYXRhOiByZXNwb25zZS5kYXRhLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdmFsdWUucHJldHR5RmlsZXNpemUgPSB0aGlzLl9wcmV0dHlGaWxlc2l6ZSh2YWx1ZS5maWxlc2l6ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICB9KSwgcGFnaW5nOiByZXNwb25zZS5wYWdpbmdcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICh0aGlzLl9jb25maWcuZG93bmxvYWRNZXNzYWdlUXVldWVBdHRhY2htZW50KSB7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRDb25maWcucm93QWN0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsaWNrOiAobWVzc2FnZUF0dGFjaG1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5kb3dubG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnQobWVzc2FnZUF0dGFjaG1lbnQsIHRoaXMubWVzc2FnZVF1ZXVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxhYmVsOiAnRG93bmxvYWQnLFxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ByZXR0eUZpbGVzaXplKGJ5dGVzKSB7XG4gICAgaWYgKGJ5dGVzID09PSAwKSB7IHJldHVybiAnMC4wMCBCJzsgfVxuICAgIGNvbnN0IGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgICByZXR1cm4gKGJ5dGVzIC8gTWF0aC5wb3coMTAyNCwgZSkpLnRvRml4ZWQoMikgKyAnICcgKyAnIEtNR1RQJy5jaGFyQXQoZSkgKyAnQic7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2cgKmZzU2tlbGV0b249XCJtZXNzYWdlUXVldWVcIj5cbiAgPGRpdiBtYXQtZGlhbG9nLXRpdGxlPk1lc3NhZ2UgUXVldWU8L2Rpdj5cbiAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LXRhYi1ncm91cD5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwiT3ZlcnZpZXdcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLXJvdy5nYXAtbGFyZ2Uud3JhcFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZVwiPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgVG8gUmVjaXBpZW50c1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVjaXBpZW50IG9mIG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS50b1JlY2lwaWVudHNcIlxuICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNbcmVjaXBpZW50XVwiXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCJyZWNpcGllbnRcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1yZWNpcGllbnQ+XG4gICAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwibWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmNjUmVjaXBpZW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgICBDQ1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVjaXBpZW50IG9mIG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5jY1JlY2lwaWVudHNcIlxuICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNbcmVjaXBpZW50XVwiXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCJyZWNpcGllbnRcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1yZWNpcGllbnQ+ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5iY2NSZWNpcGllbnRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIEJDQ1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVjaXBpZW50IG9mIG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5iY2NSZWNpcGllbnRzXCJcbiAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJtZXNzYWdlUXVldWVSZWNpcGllbnRzW3JlY2lwaWVudF1cIlxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwicmVjaXBpZW50XCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtcmVjaXBpZW50PiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWUgfHwgbWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZyb21FbWFpbFwiPlxuICAgICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIEZyb21cbiAgICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWUgPT09IG1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mcm9tRW1haWw7IGVsc2UgZnJvbUVtYWlsTmFtZVwiPlxuICAgICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWV9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmcm9tRW1haWxOYW1lPlxuICAgICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuZnJvbU5hbWV9fVxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mcm9tRW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgKHt7bWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZyb21FbWFpbH19KVxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUucmVwbHlFbWFpbCAmJiBtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUucmVwbHlFbWFpbC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgICBSZXBseSBUb1xuICAgICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUucmVwbHlFbWFpbC5qb2luKCcsICcpfX1cbiAgICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZVwiPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgVG8gTnVtYmVyXG4gICAgICAgICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXBwLXJlY2lwaWVudCBcbiAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJtZXNzYWdlUXVldWUuc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwibWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZS50b051bWJlclwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXJlY2lwaWVudD4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUuZnJvbU51bWJlclwiPlxuICAgICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIEZyb20gTnVtYmVyXG4gICAgICAgICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICAgICAgICB7e21lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUuZnJvbU51bWJlcn19XG4gICAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICBEYXRlXG4gICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgIHt7bWVzc2FnZVF1ZXVlLnNjaGVkdWxlZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdmdWxsLWRhdGUtdGltZSd9fVxuICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgU3RhdHVzXG4gICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgIHt7bWVzc2FnZVF1ZXVlU3RhdGVzW21lc3NhZ2VRdWV1ZS5zdGF0ZV19fVxuICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwibWVzc2FnZVF1ZXVlLm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgICAgIE1lc3NhZ2UgVHlwZVxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTWVzc2FnZShtZXNzYWdlUXVldWUubWVzc2FnZSlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZE1lc3NhZ2U7IGVsc2UgZWxzZU1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICB7e21lc3NhZ2VRdWV1ZS5tZXNzYWdlLm5hbWV9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZU1lc3NhZ2U+XG4gICAgICAgICAgICAgICAge3ttZXNzYWdlUXVldWUubWVzc2FnZS5uYW1lfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlXCI+XG4gICAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQgY2xhc3M9XCJzdWJqZWN0XCI+XG4gICAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgICBTdWJqZWN0XG4gICAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICAgIHt7bWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLnN1YmplY3R9fVxuICAgICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkIGNsYXNzPVwiYm9keVwiPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgQm9keVxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mb3JtYXQ9PT1lbWFpbE1lc3NhZ2VRdWV1ZUZvcm1hdC5UZXh0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybWF0LXRleHRcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuYm9keVwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGZzLWlmcmFtZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZvcm1hdD09PWVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0LkhUTUwgfHwgbWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZvcm1hdD09PWVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0LlJpY2hUZXh0XCJcbiAgICAgICAgICAgICAgICBbaHRtbF09XCJtZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuYm9keVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIicxMDAlJ1wiPlxuICAgICAgICAgICAgICA8L2ZzLWlmcmFtZT5cbiAgICAgICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZVwiPlxuICAgICAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgICAgTWVzc2FnZVxuICAgICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtYXQtdGV4dFwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlUXVldWUuc21zTWVzc2FnZVF1ZXVlLmJvZHlcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIkxvZ3NcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgPGZzLWxpc3QgW2NvbmZpZ109XCJsb2dDb25maWdcIiAjbG9nTGlzdD5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIk1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICAgICAgICAgICAge3tyb3cubWVzc2FnZX19XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2ZzLWxpc3QtY29sdW1uPlxuICAgICAgICAgICAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiRGF0ZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZnMtZGF0ZS1hZ28gW2RhdGVdPVwicm93LmNyZWF0ZWREYXRlXCI+PC9mcy1kYXRlLWFnbz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZnMtbGlzdC1jb2x1bW4+XG4gICAgICAgICAgPC9mcy1saXN0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJBdHRhY2htZW50c1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICA8ZnMtbGlzdCBbY29uZmlnXT1cImF0dGFjaG1lbnRDb25maWdcIj5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIkZpbGUgTmFtZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICB7e3Jvdy5maWxlbmFtZX19XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2ZzLWxpc3QtY29sdW1uPlxuICAgICAgICAgICAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiRmlsZSBTaXplXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIHt7cm93LnByZXR0eUZpbGVzaXplfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZnMtbGlzdC1jb2x1bW4+XG4gICAgICAgICAgPC9mcy1saXN0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJFdmVudHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgPGZzLWxpc3QgW2NvbmZpZ109XCJldmVudENvbmZpZ1wiPlxuICAgICAgICAgICAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiUmVjaXBpZW50XCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIHt7cm93Lm1lc3NhZ2VRdWV1ZVJlY2lwaWVudC5yZWNpcGllbnR9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9mcy1saXN0LWNvbHVtbj5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIkV2ZW50XCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIHt7TWVzc2FnZVF1ZXVlRXZlbnRUeXBlc1tyb3cudHlwZV19fVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiICpuZ0lmPVwicm93LnR5cGUgPT09IE1lc3NhZ2VRdWV1ZUV2ZW50VHlwZS5DbGlja1wiPlxuICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwicm93Lm1ldGE/LnVybFwiIHRhcmdldD1cIl9ibGFua1wiPnt7cm93Lm1ldGE/LnVybH19PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9mcy1saXN0LWNvbHVtbj5cbiAgICAgICAgICAgIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIkRhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICAgICAgICAgICAge3tyb3cuY3JlYXRlRGF0ZSB8IGZzRGF0ZUZvcm1hdDogJ2RhdGUtdGltZS15ZWFybGVzcyd9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9mcy1saXN0LWNvbHVtbj5cbiAgICAgICAgICA8L2ZzLWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgRG9uZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAqbmdJZj1cInJlc2VuZE1lc3NhZ2VRdWV1ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwicmVzZW5kKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBSZXNlbmRcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgKm5nSWY9XCJmb3J3YXJkTWVzc2FnZVF1ZXVlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJmb3J3YXJkKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBGb3J3YXJkXG4gICAgPC9idXR0b24+XG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=