@idea-ionic/uncommon 8.2.7 → 8.2.9

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 (67) hide show
  1. package/esm2022/public-api.mjs +3 -12
  2. package/esm2022/src/AWSAPI.service.mjs +4 -3
  3. package/esm2022/src/AWSAPISocket.service.mjs +4 -3
  4. package/esm2022/src/address/address.component.mjs +320 -5
  5. package/esm2022/src/announcement/announcement.component.mjs +37 -6
  6. package/esm2022/src/colors/colorPicker.component.mjs +64 -8
  7. package/esm2022/src/contacts/contacts.component.mjs +131 -7
  8. package/esm2022/src/dateTime/calendarPicker.component.mjs +25 -8
  9. package/esm2022/src/dateTime/dateTime.component.mjs +90 -6
  10. package/esm2022/src/duration/duration.component.mjs +123 -5
  11. package/esm2022/src/echo/echo.page.mjs +74 -6
  12. package/esm2022/src/echo/echo.routes.mjs +6 -0
  13. package/esm2022/src/errorReporting.service.mjs +4 -3
  14. package/esm2022/src/mde/mde.component.mjs +106 -7
  15. package/esm2022/src/mde/mdeToolbar.component.mjs +17 -4
  16. package/esm2022/src/offline/cacheableResource.component.mjs +42 -4
  17. package/esm2022/src/offline/offline.service.mjs +4 -3
  18. package/esm2022/src/offline/offlineData.service.mjs +4 -3
  19. package/esm2022/src/offline/offlineIndicator.component.mjs +52 -5
  20. package/esm2022/src/offline/offlineManager.component.mjs +25 -8
  21. package/esm2022/src/pushNotifications.service.mjs +4 -3
  22. package/esm2022/src/sentiment/sentiment.component.mjs +47 -6
  23. package/esm2022/src/timeInterval/fromTimeToTime.component.mjs +23 -7
  24. package/esm2022/src/timeInterval/timeInterval.component.mjs +89 -5
  25. package/fesm2022/idea-ionic-uncommon.mjs +1225 -212
  26. package/fesm2022/idea-ionic-uncommon.mjs.map +1 -1
  27. package/package.json +1 -1
  28. package/public-api.d.ts +2 -11
  29. package/src/address/address.component.d.ts +1 -1
  30. package/src/announcement/announcement.component.d.ts +1 -1
  31. package/src/colors/colorPicker.component.d.ts +2 -2
  32. package/src/contacts/contacts.component.d.ts +1 -1
  33. package/src/dateTime/calendarPicker.component.d.ts +1 -1
  34. package/src/dateTime/dateTime.component.d.ts +1 -1
  35. package/src/duration/duration.component.d.ts +1 -1
  36. package/src/echo/echo.page.d.ts +1 -1
  37. package/src/echo/echo.routes.d.ts +2 -0
  38. package/src/mde/mde.component.d.ts +1 -1
  39. package/src/mde/mdeToolbar.component.d.ts +1 -1
  40. package/src/offline/cacheableResource.component.d.ts +1 -1
  41. package/src/offline/offlineIndicator.component.d.ts +1 -1
  42. package/src/offline/offlineManager.component.d.ts +1 -1
  43. package/src/sentiment/sentiment.component.d.ts +1 -1
  44. package/src/timeInterval/fromTimeToTime.component.d.ts +1 -1
  45. package/src/timeInterval/timeInterval.component.d.ts +1 -1
  46. package/esm2022/src/address/address.module.mjs +0 -21
  47. package/esm2022/src/announcement/announcement.module.mjs +0 -21
  48. package/esm2022/src/colors/colorPicker.module.mjs +0 -20
  49. package/esm2022/src/contacts/contacts.module.mjs +0 -21
  50. package/esm2022/src/dateTime/dateTime.module.mjs +0 -22
  51. package/esm2022/src/duration/duration.module.mjs +0 -21
  52. package/esm2022/src/echo/echo.module.mjs +0 -26
  53. package/esm2022/src/mde/mde.module.mjs +0 -22
  54. package/esm2022/src/offline/offline.module.mjs +0 -22
  55. package/esm2022/src/sentiment/sentiment.module.mjs +0 -21
  56. package/esm2022/src/timeInterval/timeInterval.module.mjs +0 -22
  57. package/src/address/address.module.d.ts +0 -11
  58. package/src/announcement/announcement.module.d.ts +0 -11
  59. package/src/colors/colorPicker.module.d.ts +0 -10
  60. package/src/contacts/contacts.module.d.ts +0 -11
  61. package/src/dateTime/dateTime.module.d.ts +0 -12
  62. package/src/duration/duration.module.d.ts +0 -11
  63. package/src/echo/echo.module.d.ts +0 -12
  64. package/src/mde/mde.module.d.ts +0 -12
  65. package/src/offline/offline.module.d.ts +0 -12
  66. package/src/sentiment/sentiment.module.d.ts +0 -11
  67. package/src/timeInterval/timeInterval.module.d.ts +0 -12
@@ -1,10 +1,11 @@
1
+ import { CommonModule } from '@angular/common';
1
2
  import { Component, Input, inject } from '@angular/core';
2
- import { ModalController } from '@ionic/angular/standalone';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ModalController, IonHeader, IonToolbar, IonButtons, IonButton, IonIcon, IonTitle, IonContent, IonText, IonTextarea } from '@ionic/angular/standalone';
5
+ import { IDEATranslatePipe } from '@idea-ionic/common';
6
+ import { IDEAMDEToolbarComponent } from './mdeToolbar.component';
3
7
  import * as i0 from "@angular/core";
4
8
  import * as i1 from "@angular/forms";
5
- import * as i2 from "@ionic/angular";
6
- import * as i3 from "./mdeToolbar.component";
7
- import * as i4 from "@idea-ionic/common";
8
9
  export class IDEAMDEComponent {
9
10
  constructor() {
10
11
  this._modal = inject(ModalController);
@@ -21,11 +22,109 @@ export class IDEAMDEComponent {
21
22
  this._modal.dismiss(this.value);
22
23
  }
23
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAMDEComponent, selector: "idea-mde", inputs: { id: "id", title: "title", header: "header", description: "description", variables: "variables", initialValue: "initialValue", placeholder: "placeholder" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'IDEA_UNCOMMON.MDE.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate\" (click)=\"confirm()\">\n <ion-icon name=\"checkmark\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content class=\"ion-padding\">\n @if (header) {\n <h2 class=\"header\">\n {{ header }}\n </h2>\n }\n @if (description) {\n <p class=\"description\">\n {{ description }}\n </p>\n }\n @if (variables?.length) {\n <p class=\"variables\">\n <b> {{ 'IDEA_UNCOMMON.MDE.VARIABLES' | translate }}: </b>\n @for (v of variables; track v) {\n <ion-text>\n {{ v.concat(' ') }}\n </ion-text>\n }\n </p>\n }\n <ion-textarea rows=\"12\" [id]=\"id\" [placeholder]=\"placeholder\" [(ngModel)]=\"value\" />\n <idea-mde-toolbar />\n</ion-content>\n", styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "component", type: i3.IDEAMDEToolbarComponent, selector: "idea-mde-toolbar" }, { kind: "pipe", type: i4.IDEATranslatePipe, name: "translate" }] }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAMDEComponent, isStandalone: true, selector: "idea-mde", inputs: { id: "id", title: "title", header: "header", description: "description", variables: "variables", initialValue: "initialValue", placeholder: "placeholder" }, ngImport: i0, template: `
26
+ <ion-header>
27
+ <ion-toolbar color="ideaToolbar">
28
+ <ion-buttons slot="start">
29
+ <ion-button [title]="'IDEA_UNCOMMON.MDE.CLOSE_WITHOUT_SAVING' | translate" (click)="close()">
30
+ <ion-icon name="close" slot="icon-only" />
31
+ </ion-button>
32
+ </ion-buttons>
33
+ <ion-title>
34
+ {{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
35
+ </ion-title>
36
+ <ion-buttons slot="end">
37
+ <ion-button [title]="'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate" (click)="confirm()">
38
+ <ion-icon name="checkmark" slot="icon-only" />
39
+ </ion-button>
40
+ </ion-buttons>
41
+ </ion-toolbar>
42
+ </ion-header>
43
+ <ion-content class="ion-padding">
44
+ @if (header) {
45
+ <h2 class="header">
46
+ {{ header }}
47
+ </h2>
48
+ }
49
+ @if (description) {
50
+ <p class="description">
51
+ {{ description }}
52
+ </p>
53
+ }
54
+ @if (variables?.length) {
55
+ <p class="variables">
56
+ <b> {{ 'IDEA_UNCOMMON.MDE.VARIABLES' | translate }}: </b>
57
+ @for (v of variables; track v) {
58
+ <ion-text>
59
+ {{ v.concat(' ') }}
60
+ </ion-text>
61
+ }
62
+ </p>
63
+ }
64
+ <ion-textarea rows="12" [id]="id" [placeholder]="placeholder" [(ngModel)]="value" />
65
+ <idea-mde-toolbar />
66
+ </ion-content>
67
+ `, isInline: true, styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IDEAMDEToolbarComponent, selector: "idea-mde-toolbar" }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }] }); }
25
68
  }
26
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEComponent, decorators: [{
27
70
  type: Component,
28
- args: [{ selector: 'idea-mde', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'IDEA_UNCOMMON.MDE.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate\" (click)=\"confirm()\">\n <ion-icon name=\"checkmark\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content class=\"ion-padding\">\n @if (header) {\n <h2 class=\"header\">\n {{ header }}\n </h2>\n }\n @if (description) {\n <p class=\"description\">\n {{ description }}\n </p>\n }\n @if (variables?.length) {\n <p class=\"variables\">\n <b> {{ 'IDEA_UNCOMMON.MDE.VARIABLES' | translate }}: </b>\n @for (v of variables; track v) {\n <ion-text>\n {{ v.concat(' ') }}\n </ion-text>\n }\n </p>\n }\n <ion-textarea rows=\"12\" [id]=\"id\" [placeholder]=\"placeholder\" [(ngModel)]=\"value\" />\n <idea-mde-toolbar />\n</ion-content>\n", styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"] }]
71
+ args: [{ selector: 'idea-mde', standalone: true, imports: [
72
+ CommonModule,
73
+ FormsModule,
74
+ IDEATranslatePipe,
75
+ IDEAMDEToolbarComponent,
76
+ IonTextarea,
77
+ IonText,
78
+ IonContent,
79
+ IonTitle,
80
+ IonIcon,
81
+ IonButton,
82
+ IonButtons,
83
+ IonToolbar,
84
+ IonHeader
85
+ ], template: `
86
+ <ion-header>
87
+ <ion-toolbar color="ideaToolbar">
88
+ <ion-buttons slot="start">
89
+ <ion-button [title]="'IDEA_UNCOMMON.MDE.CLOSE_WITHOUT_SAVING' | translate" (click)="close()">
90
+ <ion-icon name="close" slot="icon-only" />
91
+ </ion-button>
92
+ </ion-buttons>
93
+ <ion-title>
94
+ {{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
95
+ </ion-title>
96
+ <ion-buttons slot="end">
97
+ <ion-button [title]="'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate" (click)="confirm()">
98
+ <ion-icon name="checkmark" slot="icon-only" />
99
+ </ion-button>
100
+ </ion-buttons>
101
+ </ion-toolbar>
102
+ </ion-header>
103
+ <ion-content class="ion-padding">
104
+ @if (header) {
105
+ <h2 class="header">
106
+ {{ header }}
107
+ </h2>
108
+ }
109
+ @if (description) {
110
+ <p class="description">
111
+ {{ description }}
112
+ </p>
113
+ }
114
+ @if (variables?.length) {
115
+ <p class="variables">
116
+ <b> {{ 'IDEA_UNCOMMON.MDE.VARIABLES' | translate }}: </b>
117
+ @for (v of variables; track v) {
118
+ <ion-text>
119
+ {{ v.concat(' ') }}
120
+ </ion-text>
121
+ }
122
+ </p>
123
+ }
124
+ <ion-textarea rows="12" [id]="id" [placeholder]="placeholder" [(ngModel)]="value" />
125
+ <idea-mde-toolbar />
126
+ </ion-content>
127
+ `, styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"] }]
29
128
  }], propDecorators: { id: [{
30
129
  type: Input
31
130
  }], title: [{
@@ -41,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
41
140
  }], placeholder: [{
42
141
  type: Input
43
142
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL21kZS9tZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvbWRlL21kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFPNUQsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU1VLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7S0E2QzFDO0lBWkMsUUFBUTtRQUNOLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksS0FBSyxFQUFVLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQTdDVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixzTkNSN0IsOHVDQXlDQTs7MkZEakNhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxVQUFVOzhCQVVYLEVBQUU7c0JBQVYsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtbWRlJyxcbiAgdGVtcGxhdGVVcmw6ICdtZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbWRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQU1ERUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX21vZGFsID0gaW5qZWN0KE1vZGFsQ29udHJvbGxlcik7XG5cbiAgLyoqXG4gICAqIElkIHRvIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgTWFya2Rvd24gRWRpdG9yIChkZWZhdWx0OiAnbWRlJykuXG4gICAqL1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBtb2RhbC5cbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaGVhZGVyIHRleHQgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN1Yi1oZWFkZXIgZGVzY3JpcHRpb24uXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogQSBzZXJpZXMgb2YgdGV4dCB2YXJpYWJsZXMgdG8gc3Vic3RpdHV0ZSB3aXRoIHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHZhcmlhYmxlczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBJZiBzZXQsIHdpbGwgY3VzdG9taXplIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBlZGl0b3IuXG4gICAqL1xuICBASW5wdXQoKSBpbml0aWFsVmFsdWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBwbGFjZWhvbGRlciB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIHZhbHVlOiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgJ21kZSc7XG4gICAgdGhpcy52YXJpYWJsZXMgPSB0aGlzLnZhcmlhYmxlcyB8fCBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoKTtcbiAgfVxuICBjb25maXJtKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3ModGhpcy52YWx1ZSk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCInSURFQV9VTkNPTU1PTi5NREUuQ0xPU0VfV0lUSE9VVF9TQVZJTkcnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZT5cbiAgICAgIHt7IHRpdGxlIHx8ICgnSURFQV9VTkNPTU1PTi5NREUuVElUTEUnIHwgdHJhbnNsYXRlKSB9fVxuICAgIDwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0lERUFfVU5DT01NT04uTURFLlNBVkVfQU5EX0NMT1NFJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJjb25maXJtKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmtcIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgQGlmIChoZWFkZXIpIHtcbiAgICA8aDIgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgIHt7IGhlYWRlciB9fVxuICAgIDwvaDI+XG4gIH1cbiAgQGlmIChkZXNjcmlwdGlvbikge1xuICAgIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgPC9wPlxuICB9XG4gIEBpZiAodmFyaWFibGVzPy5sZW5ndGgpIHtcbiAgICA8cCBjbGFzcz1cInZhcmlhYmxlc1wiPlxuICAgICAgPGI+IHt7ICdJREVBX1VOQ09NTU9OLk1ERS5WQVJJQUJMRVMnIHwgdHJhbnNsYXRlIH19OiA8L2I+XG4gICAgICBAZm9yICh2IG9mIHZhcmlhYmxlczsgdHJhY2sgdikge1xuICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAge3sgdi5jb25jYXQoJyAnKSB9fVxuICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgfVxuICAgIDwvcD5cbiAgfVxuICA8aW9uLXRleHRhcmVhIHJvd3M9XCIxMlwiIFtpZF09XCJpZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAvPlxuICA8aWRlYS1tZGUtdG9vbGJhciAvPlxuPC9pb24tY29udGVudD5cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL21kZS9tZGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE9BQU8sRUFDUCxXQUFXLEVBQ1osTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBMEZqRSxNQUFNLE9BQU8sZ0JBQWdCO0lBeEY3QjtRQXlGVSxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBNkMxQztJQVpDLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs4R0E3Q1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsME9BdEVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENULHlXQXhEQyxZQUFZLDhCQUNaLFdBQVcsMFZBQ1gsaUJBQWlCLGtEQUNqQix1QkFBdUIsNkRBQ3ZCLFdBQVcsaWFBQ1gsT0FBTyxnRkFDUCxVQUFVLHdLQUNWLFFBQVEsaUZBQ1IsT0FBTywySkFDUCxTQUFTLG9QQUNULFVBQVUsOEVBQ1YsVUFBVSxtRkFDVixTQUFTOzsyRkF3RUEsZ0JBQWdCO2tCQXhGNUIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsUUFBUTt3QkFDUixPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7cUJBQ1YsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQWtDUSxFQUFFO3NCQUFWLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1vZGFsQ29udHJvbGxlcixcbiAgSW9uSGVhZGVyLFxuICBJb25Ub29sYmFyLFxuICBJb25CdXR0b25zLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvblRpdGxlLFxuICBJb25Db250ZW50LFxuICBJb25UZXh0LFxuICBJb25UZXh0YXJlYVxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IElERUFUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQU1ERVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL21kZVRvb2xiYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1tZGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIElERUFUcmFuc2xhdGVQaXBlLFxuICAgIElERUFNREVUb29sYmFyQ29tcG9uZW50LFxuICAgIElvblRleHRhcmVhLFxuICAgIElvblRleHQsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25UaXRsZSxcbiAgICBJb25JY29uLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25CdXR0b25zLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uSGVhZGVyXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLk1ERS5DTE9TRV9XSVRIT1VUX1NBVklORycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgPGlvbi10aXRsZT5cbiAgICAgICAgICB7eyB0aXRsZSB8fCAoJ0lERUFfVU5DT01NT04uTURFLlRJVExFJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgICAgPC9pb24tdGl0bGU+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLk1ERS5TQVZFX0FORF9DTE9TRScgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY29uZmlybSgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFya1wiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICBAaWYgKGhlYWRlcikge1xuICAgICAgICA8aDIgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgIH1cbiAgICAgIEBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICAgIDwvcD5cbiAgICAgIH1cbiAgICAgIEBpZiAodmFyaWFibGVzPy5sZW5ndGgpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJ2YXJpYWJsZXNcIj5cbiAgICAgICAgICA8Yj4ge3sgJ0lERUFfVU5DT01NT04uTURFLlZBUklBQkxFUycgfCB0cmFuc2xhdGUgfX06IDwvYj5cbiAgICAgICAgICBAZm9yICh2IG9mIHZhcmlhYmxlczsgdHJhY2sgdikge1xuICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICB7eyB2LmNvbmNhdCgnICcpIH19XG4gICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9wPlxuICAgICAgfVxuICAgICAgPGlvbi10ZXh0YXJlYSByb3dzPVwiMTJcIiBbaWRdPVwiaWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgLz5cbiAgICAgIDxpZGVhLW1kZS10b29sYmFyIC8+XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgaW9uLWNvbnRlbnQge1xuICAgICAgICAtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O1xuICAgICAgfVxuICAgICAgaDIuaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuN2VtO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cbiAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIH1cbiAgICAgIC52YXJpYWJsZXMge1xuICAgICAgICBtYXJnaW46IDEwcHggNXB4O1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgfVxuICAgICAgaW9uLXRleHRhcmVhIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBTURFQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcblxuICAvKipcbiAgICogSWQgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBNYXJrZG93biBFZGl0b3IgKGRlZmF1bHQ6ICdtZGUnKS5cbiAgICovXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBoZWFkZXIgdGV4dCBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3ViLWhlYWRlciBkZXNjcmlwdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHNlcmllcyBvZiB0ZXh0IHZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIHdpdGggdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KCkgdmFyaWFibGVzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIElmIHNldCwgd2lsbCBjdXN0b21pemUgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGVkaXRvci5cbiAgICovXG4gIEBJbnB1dCgpIGluaXRpYWxWYWx1ZTogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIHBsYWNlaG9sZGVyIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgdmFsdWU6IHN0cmluZztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlkID0gdGhpcy5pZCB8fCAnbWRlJztcbiAgICB0aGlzLnZhcmlhYmxlcyA9IHRoaXMudmFyaWFibGVzIHx8IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdGlhbFZhbHVlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcygpO1xuICB9XG4gIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcyh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIl19
@@ -1,12 +1,25 @@
1
+ import { CommonModule } from '@angular/common';
1
2
  import { Component } from '@angular/core';
3
+ import { IDEATranslatePipe } from '@idea-ionic/common';
2
4
  import * as i0 from "@angular/core";
3
- import * as i1 from "@idea-ionic/common";
4
5
  export class IDEAMDEToolbarComponent {
5
6
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: IDEAMDEToolbarComponent, selector: "idea-mde-toolbar", ngImport: i0, template: "<div class=\"mdeToolbar\">\n <b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>\n <i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>\n ~{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.STRIKE' | translate }}~\n</div>\n", styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar b,.mdeToolbar i{padding-right:5px}\n"], dependencies: [{ kind: "pipe", type: i1.IDEATranslatePipe, name: "translate" }] }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: IDEAMDEToolbarComponent, isStandalone: true, selector: "idea-mde-toolbar", ngImport: i0, template: `
8
+ <div class="mdeToolbar">
9
+ <b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>
10
+ <i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>
11
+ ~{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.STRIKE' | translate }}~
12
+ </div>
13
+ `, isInline: true, styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar :is(b,i){padding-right:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }] }); }
7
14
  }
8
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEToolbarComponent, decorators: [{
9
16
  type: Component,
10
- args: [{ selector: 'idea-mde-toolbar', template: "<div class=\"mdeToolbar\">\n <b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>\n <i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>\n ~{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.STRIKE' | translate }}~\n</div>\n", styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar b,.mdeToolbar i{padding-right:5px}\n"] }]
17
+ args: [{ selector: 'idea-mde-toolbar', standalone: true, imports: [CommonModule, IDEATranslatePipe], template: `
18
+ <div class="mdeToolbar">
19
+ <b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>
20
+ <i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>
21
+ ~{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.STRIKE' | translate }}~
22
+ </div>
23
+ `, styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar :is(b,i){padding-right:5px}\n"] }]
11
24
  }] });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRlVG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9tZGUvbWRlVG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9tZGUvbWRlVG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPMUMsTUFBTSxPQUFPLHVCQUF1Qjs4R0FBdkIsdUJBQXVCO2tHQUF2Qix1QkFBdUIsd0RDUHBDLGtPQUtBOzsyRkRFYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtbWRlLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJ21kZVRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbWRlVG9vbGJhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFNREVUb29sYmFyQ29tcG9uZW50IHt9XG4iLCI8ZGl2IGNsYXNzPVwibWRlVG9vbGJhclwiPlxuICA8Yj4qKnt7ICdJREVBX1VOQ09NTU9OLk1ERS5UT09MQkFSLkJPTEQnIHwgdHJhbnNsYXRlIH19Kio8L2I+XG4gIDxpPip7eyAnSURFQV9VTkNPTU1PTi5NREUuVE9PTEJBUi5JVEFMSUMnIHwgdHJhbnNsYXRlIH19KjwvaT5cbiAgfnt7ICdJREVBX1VOQ09NTU9OLk1ERS5UT09MQkFSLlNUUklLRScgfCB0cmFuc2xhdGUgfX1+XG48L2Rpdj5cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRlVG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9tZGUvbWRlVG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBNEJ2RCxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7a0dBQXZCLHVCQUF1Qiw0RUF0QnhCOzs7Ozs7R0FNVCx1TEFQUyxZQUFZLDBCQUFFLGlCQUFpQjs7MkZBdUI5Qix1QkFBdUI7a0JBMUJuQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFDaEM7Ozs7OztHQU1UIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLW1kZS10b29sYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSURFQVRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJtZGVUb29sYmFyXCI+XG4gICAgICA8Yj4qKnt7ICdJREVBX1VOQ09NTU9OLk1ERS5UT09MQkFSLkJPTEQnIHwgdHJhbnNsYXRlIH19Kio8L2I+XG4gICAgICA8aT4qe3sgJ0lERUFfVU5DT01NT04uTURFLlRPT0xCQVIuSVRBTElDJyB8IHRyYW5zbGF0ZSB9fSo8L2k+XG4gICAgICB+e3sgJ0lERUFfVU5DT01NT04uTURFLlRPT0xCQVIuU1RSSUtFJyB8IHRyYW5zbGF0ZSB9fX5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLm1kZVRvb2xiYXIge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgY29sb3I6ICNhYWE7XG4gICAgICAgIHBhZGRpbmc6IDVweCAwO1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICBiLFxuICAgICAgICBpIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSURFQU1ERVRvb2xiYXJDb21wb25lbnQge31cbiJdfQ==
@@ -1,18 +1,56 @@
1
+ import { CommonModule } from '@angular/common';
1
2
  import { Component, Input, inject } from '@angular/core';
3
+ import { IonItem, IonLabel, IonIcon, IonSpinner } from '@ionic/angular/standalone';
2
4
  import { IDEAOfflineDataService } from './offlineData.service';
3
5
  import * as i0 from "@angular/core";
4
- import * as i1 from "@ionic/angular";
5
6
  export class IDEACacheableResourceComponent {
6
7
  constructor() {
7
8
  this._offline = inject(IDEAOfflineDataService);
8
9
  }
9
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEACacheableResourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEACacheableResourceComponent, selector: "idea-cacheable-resource", inputs: { resource: "resource" }, ngImport: i0, template: "<ion-item class=\"cacheableResourceItem\">\n <ion-label>{{ resource.description }}</ion-label>\n @if (resource.error) {\n <ion-icon slot=\"end\" name=\"alert-circle\" color=\"danger\" />\n }\n @if (!resource.error && _offline.synchronizing && resource.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n @if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {\n <ion-icon slot=\"end\" name=\"checkmark\" color=\"success\" />\n }\n @if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {\n <ion-icon slot=\"end\" name=\"pause\" color=\"dark\" />\n }\n</ion-item>\n", styles: [""], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }] }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEACacheableResourceComponent, isStandalone: true, selector: "idea-cacheable-resource", inputs: { resource: "resource" }, ngImport: i0, template: `
12
+ <ion-item class="cacheableResourceItem">
13
+ <ion-label>{{ resource.description }}</ion-label>
14
+ @if (resource.error) {
15
+ <ion-icon slot="end" name="alert-circle" color="danger" />
16
+ }
17
+ @if (!resource.error && _offline.synchronizing && resource.synchronizing) {
18
+ <ion-spinner slot="end" name="dots" />
19
+ }
20
+ @if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {
21
+ <ion-icon slot="end" name="checkmark" color="success" />
22
+ }
23
+ @if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {
24
+ <ion-icon slot="end" name="pause" color="dark" />
25
+ }
26
+ </ion-item>
27
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }] }); }
11
28
  }
12
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEACacheableResourceComponent, decorators: [{
13
30
  type: Component,
14
- args: [{ selector: 'idea-cacheable-resource', template: "<ion-item class=\"cacheableResourceItem\">\n <ion-label>{{ resource.description }}</ion-label>\n @if (resource.error) {\n <ion-icon slot=\"end\" name=\"alert-circle\" color=\"danger\" />\n }\n @if (!resource.error && _offline.synchronizing && resource.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n @if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {\n <ion-icon slot=\"end\" name=\"checkmark\" color=\"success\" />\n }\n @if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {\n <ion-icon slot=\"end\" name=\"pause\" color=\"dark\" />\n }\n</ion-item>\n" }]
31
+ args: [{
32
+ selector: 'idea-cacheable-resource',
33
+ standalone: true,
34
+ imports: [CommonModule, IonSpinner, IonIcon, IonLabel, IonItem],
35
+ template: `
36
+ <ion-item class="cacheableResourceItem">
37
+ <ion-label>{{ resource.description }}</ion-label>
38
+ @if (resource.error) {
39
+ <ion-icon slot="end" name="alert-circle" color="danger" />
40
+ }
41
+ @if (!resource.error && _offline.synchronizing && resource.synchronizing) {
42
+ <ion-spinner slot="end" name="dots" />
43
+ }
44
+ @if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {
45
+ <ion-icon slot="end" name="checkmark" color="success" />
46
+ }
47
+ @if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {
48
+ <ion-icon slot="end" name="pause" color="dark" />
49
+ }
50
+ </ion-item>
51
+ `
52
+ }]
15
53
  }], propDecorators: { resource: [{
16
54
  type: Input
17
55
  }] } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVhYmxlUmVzb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9jYWNoZWFibGVSZXNvdXJjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9vZmZsaW5lL2NhY2hlYWJsZVJlc291cmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQXFCLE1BQU0sdUJBQXVCLENBQUM7OztBQU9sRixNQUFNLE9BQU8sOEJBQThCO0lBTDNDO1FBTUUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBTTNDOzhHQVBZLDhCQUE4QjtrR0FBOUIsOEJBQThCLGlHQ1QzQywrcEJBZUE7OzJGRE5hLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSx5QkFBeUI7OEJBVTFCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSURFQU9mZmxpbmVEYXRhU2VydmljZSwgQ2FjaGVhYmxlUmVzb3VyY2UgfSBmcm9tICcuL29mZmxpbmVEYXRhLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLWNhY2hlYWJsZS1yZXNvdXJjZScsXG4gIHRlbXBsYXRlVXJsOiAnY2FjaGVhYmxlUmVzb3VyY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FjaGVhYmxlUmVzb3VyY2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ2FjaGVhYmxlUmVzb3VyY2VDb21wb25lbnQge1xuICBfb2ZmbGluZSA9IGluamVjdChJREVBT2ZmbGluZURhdGFTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIHJlc291ZWNlIHRvIG1hbmFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHJlc291cmNlOiBDYWNoZWFibGVSZXNvdXJjZTtcbn1cbiIsIjxpb24taXRlbSBjbGFzcz1cImNhY2hlYWJsZVJlc291cmNlSXRlbVwiPlxuICA8aW9uLWxhYmVsPnt7IHJlc291cmNlLmRlc2NyaXB0aW9uIH19PC9pb24tbGFiZWw+XG4gIEBpZiAocmVzb3VyY2UuZXJyb3IpIHtcbiAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBjb2xvcj1cImRhbmdlclwiIC8+XG4gIH1cbiAgQGlmICghcmVzb3VyY2UuZXJyb3IgJiYgX29mZmxpbmUuc3luY2hyb25pemluZyAmJiByZXNvdXJjZS5zeW5jaHJvbml6aW5nKSB7XG4gICAgPGlvbi1zcGlubmVyIHNsb3Q9XCJlbmRcIiBuYW1lPVwiZG90c1wiIC8+XG4gIH1cbiAgQGlmICghcmVzb3VyY2UuZXJyb3IgJiYgIXJlc291cmNlLnN5bmNocm9uaXppbmcgJiYgIV9vZmZsaW5lLnJlcXVpcmVzTWFudWFsQ29uZmlybWF0aW9uKSB7XG4gICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiY2hlY2ttYXJrXCIgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgfVxuICBAaWYgKCFyZXNvdXJjZS5lcnJvciAmJiAhcmVzb3VyY2Uuc3luY2hyb25pemluZyAmJiBfb2ZmbGluZS5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbikge1xuICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cInBhdXNlXCIgY29sb3I9XCJkYXJrXCIgLz5cbiAgfVxuPC9pb24taXRlbT5cbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVhYmxlUmVzb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9jYWNoZWFibGVSZXNvdXJjZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQixNQUFNLHVCQUF1QixDQUFDOztBQXdCbEYsTUFBTSxPQUFPLDhCQUE4QjtJQXRCM0M7UUF1QkUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBTTNDOzhHQVBZLDhCQUE4QjtrR0FBOUIsOEJBQThCLHFIQWxCL0I7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQsMkRBakJTLFlBQVksK0JBQUUsVUFBVSx5R0FBRSxPQUFPLDJKQUFFLFFBQVEsNkZBQUUsT0FBTzs7MkZBbUJuRCw4QkFBOEI7a0JBdEIxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO29CQUMvRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQ7aUJBQ0Y7OEJBT1UsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkl0ZW0sIElvbkxhYmVsLCBJb25JY29uLCBJb25TcGlubmVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IElERUFPZmZsaW5lRGF0YVNlcnZpY2UsIENhY2hlYWJsZVJlc291cmNlIH0gZnJvbSAnLi9vZmZsaW5lRGF0YS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWNoZWFibGUtcmVzb3VyY2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25TcGlubmVyLCBJb25JY29uLCBJb25MYWJlbCwgSW9uSXRlbV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1pdGVtIGNsYXNzPVwiY2FjaGVhYmxlUmVzb3VyY2VJdGVtXCI+XG4gICAgICA8aW9uLWxhYmVsPnt7IHJlc291cmNlLmRlc2NyaXB0aW9uIH19PC9pb24tbGFiZWw+XG4gICAgICBAaWYgKHJlc291cmNlLmVycm9yKSB7XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiIGNvbG9yPVwiZGFuZ2VyXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoIXJlc291cmNlLmVycm9yICYmIF9vZmZsaW5lLnN5bmNocm9uaXppbmcgJiYgcmVzb3VyY2Uuc3luY2hyb25pemluZykge1xuICAgICAgICA8aW9uLXNwaW5uZXIgc2xvdD1cImVuZFwiIG5hbWU9XCJkb3RzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoIXJlc291cmNlLmVycm9yICYmICFyZXNvdXJjZS5zeW5jaHJvbml6aW5nICYmICFfb2ZmbGluZS5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbikge1xuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjaGVja21hcmtcIiBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgfVxuICAgICAgQGlmICghcmVzb3VyY2UuZXJyb3IgJiYgIXJlc291cmNlLnN5bmNocm9uaXppbmcgJiYgX29mZmxpbmUucmVxdWlyZXNNYW51YWxDb25maXJtYXRpb24pIHtcbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwicGF1c2VcIiBjb2xvcj1cImRhcmtcIiAvPlxuICAgICAgfVxuICAgIDwvaW9uLWl0ZW0+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgSURFQUNhY2hlYWJsZVJlc291cmNlQ29tcG9uZW50IHtcbiAgX29mZmxpbmUgPSBpbmplY3QoSURFQU9mZmxpbmVEYXRhU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdWVjZSB0byBtYW5hZ2UuXG4gICAqL1xuICBASW5wdXQoKSByZXNvdXJjZTogQ2FjaGVhYmxlUmVzb3VyY2U7XG59XG4iXX0=
@@ -54,9 +54,10 @@ export class IDEAOfflineService {
54
54
  return status.connected;
55
55
  }
56
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
57
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService }); }
57
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService, providedIn: 'root' }); }
58
58
  }
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService, decorators: [{
60
- type: Injectable
60
+ type: Injectable,
61
+ args: [{ providedIn: 'root' }]
61
62
  }], ctorParameters: () => [] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9vZmZsaW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTdDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFjN0I7UUFDRSx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3hDLHFCQUFxQixFQUNyQixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FDaEQsQ0FBQztZQUNGLGlHQUFpRztZQUNqRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMxQyxxRUFBcUU7Z0JBQ3JFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO29CQUNwQyxJQUFJLFFBQVE7d0JBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2hELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFFBQXFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFDRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDOzhHQS9EVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJ0BjYXBhY2l0b3IvbmV0d29yayc7XG5cbi8qKlxuICogVXRpbGl0eSB0byBtb25pdG9yIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24uXG4gKiBOb3RlOiBkb24ndCB1c2UgaXQgZGlyZWN0bHksIGlmIHlvdSdyZSBhbHNvIHVzaW5nIElERUFPZmZsaW5lRGF0YVNlcnZpY2UuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJREVBT2ZmbGluZVNlcnZpY2Uge1xuICAvKipcbiAgICogVHJ1ZS9mYWxzZSBpZiB0aGUgcGxhdGZvcm0gaXMgb2ZmbGluZS9vbmxpbmUuXG4gICAqL1xuICBwcm90ZWN0ZWQgX2lzT2ZmbGluZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBvYnNlcnZhYmxlIGZvciBzdWJzY3JpYmluZyB0byBvbmxpbmUvb2ZmbGluZSBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHByb3RlY3RlZCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogVGhlIGhhbmRsZXIgZm9yIGxpc3RlbmlnIHRvIG5ldHdvcmsgY2hhbmdlcy5cbiAgICovXG4gIHByb3RlY3RlZCBsaXN0ZW5lckhhbmRsZXI6IGFueTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBnZXQgYW4gaW5zdGFudCBzdGF0dXNcbiAgICB0aGlzLl9pc09mZmxpbmUgPSAhbmF2aWdhdG9yLm9uTGluZTtcbiAgICBpZiAoTmV0d29yaykge1xuICAgICAgLy8gc2V0IHRoZSBiYXNpYyBsaXN0ZW5lciBmb3IgY2hhbmdlc1xuICAgICAgdGhpcy5saXN0ZW5lckhhbmRsZXIgPSBOZXR3b3JrLmFkZExpc3RlbmVyKFxuICAgICAgICAnbmV0d29ya1N0YXR1c0NoYW5nZScsXG4gICAgICAgIHN0YXR1cyA9PiAodGhpcy5faXNPZmZsaW5lID0gIXN0YXR1cy5jb25uZWN0ZWQpXG4gICAgICApO1xuICAgICAgLy8gY3JlYXRlIHRoZSBvYnNlcnZhYmxlIHRvIHN1YnNjcmliZSB0byB0aGUgbmV0d29yayBjaGFuZ2VzOyBub3RlOiBpdCB3b24ndCBydW4gdW50aWwgc3Vic2NyaWJlZFxuICAgICAgdGhpcy5vYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAvLyByZW1vdmUgdGhlIGJhc2ljIGxpc3RlbmVyIGFkZCBhZGQgb25lIHRoYXQgc3VwcG9ydHMgYSBzdWJzY3JpcHRpb25cbiAgICAgICAgTmV0d29yay5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5saXN0ZW5lckhhbmRsZXIgPSBOZXR3b3JrLmFkZExpc3RlbmVyKCduZXR3b3JrU3RhdHVzQ2hhbmdlJywgc3RhdHVzID0+IHtcbiAgICAgICAgICB0aGlzLl9pc09mZmxpbmUgPSAhc3RhdHVzLmNvbm5lY3RlZDtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIpIG9ic2VydmVyLm5leHQoc3RhdHVzLmNvbm5lY3RlZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHN1YnNjcmliZShjYWxsYmFjazogKGlzT25saW5lOiBib29sZWFuKSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09ubGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2lzT2ZmbGluZTtcbiAgfVxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09mZmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT2ZmbGluZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWlja2x5IGNoZWNrIGZvciBvbmxpbmUgY29ubmVjdGlvbi5cbiAgICovXG4gIGFzeW5jIGNoZWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghTmV0d29yaykgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgTmV0d29yay5nZXRTdGF0dXMoKTtcbiAgICB0aGlzLl9pc09mZmxpbmUgPSAhc3RhdHVzLmNvbm5lY3RlZDtcbiAgICByZXR1cm4gc3RhdHVzLmNvbm5lY3RlZDtcbiAgfVxufVxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9vZmZsaW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTdDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFjN0I7UUFDRSx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3hDLHFCQUFxQixFQUNyQixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FDaEQsQ0FBQztZQUNGLGlHQUFpRztZQUNqRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMxQyxxRUFBcUU7Z0JBQ3JFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO29CQUNwQyxJQUFJLFFBQVE7d0JBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2hELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFFBQXFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFDRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDOzhHQS9EVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQURMLE1BQU07OzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnQGNhcGFjaXRvci9uZXR3b3JrJztcblxuLyoqXG4gKiBVdGlsaXR5IHRvIG1vbml0b3IgdGhlIG5ldHdvcmsgY29ubmVjdGlvbi5cbiAqIE5vdGU6IGRvbid0IHVzZSBpdCBkaXJlY3RseSwgaWYgeW91J3JlIGFsc28gdXNpbmcgSURFQU9mZmxpbmVEYXRhU2VydmljZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJREVBT2ZmbGluZVNlcnZpY2Uge1xuICAvKipcbiAgICogVHJ1ZS9mYWxzZSBpZiB0aGUgcGxhdGZvcm0gaXMgb2ZmbGluZS9vbmxpbmUuXG4gICAqL1xuICBwcm90ZWN0ZWQgX2lzT2ZmbGluZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBvYnNlcnZhYmxlIGZvciBzdWJzY3JpYmluZyB0byBvbmxpbmUvb2ZmbGluZSBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHByb3RlY3RlZCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogVGhlIGhhbmRsZXIgZm9yIGxpc3RlbmlnIHRvIG5ldHdvcmsgY2hhbmdlcy5cbiAgICovXG4gIHByb3RlY3RlZCBsaXN0ZW5lckhhbmRsZXI6IGFueTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBnZXQgYW4gaW5zdGFudCBzdGF0dXNcbiAgICB0aGlzLl9pc09mZmxpbmUgPSAhbmF2aWdhdG9yLm9uTGluZTtcbiAgICBpZiAoTmV0d29yaykge1xuICAgICAgLy8gc2V0IHRoZSBiYXNpYyBsaXN0ZW5lciBmb3IgY2hhbmdlc1xuICAgICAgdGhpcy5saXN0ZW5lckhhbmRsZXIgPSBOZXR3b3JrLmFkZExpc3RlbmVyKFxuICAgICAgICAnbmV0d29ya1N0YXR1c0NoYW5nZScsXG4gICAgICAgIHN0YXR1cyA9PiAodGhpcy5faXNPZmZsaW5lID0gIXN0YXR1cy5jb25uZWN0ZWQpXG4gICAgICApO1xuICAgICAgLy8gY3JlYXRlIHRoZSBvYnNlcnZhYmxlIHRvIHN1YnNjcmliZSB0byB0aGUgbmV0d29yayBjaGFuZ2VzOyBub3RlOiBpdCB3b24ndCBydW4gdW50aWwgc3Vic2NyaWJlZFxuICAgICAgdGhpcy5vYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAvLyByZW1vdmUgdGhlIGJhc2ljIGxpc3RlbmVyIGFkZCBhZGQgb25lIHRoYXQgc3VwcG9ydHMgYSBzdWJzY3JpcHRpb25cbiAgICAgICAgTmV0d29yay5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5saXN0ZW5lckhhbmRsZXIgPSBOZXR3b3JrLmFkZExpc3RlbmVyKCduZXR3b3JrU3RhdHVzQ2hhbmdlJywgc3RhdHVzID0+IHtcbiAgICAgICAgICB0aGlzLl9pc09mZmxpbmUgPSAhc3RhdHVzLmNvbm5lY3RlZDtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIpIG9ic2VydmVyLm5leHQoc3RhdHVzLmNvbm5lY3RlZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHN1YnNjcmliZShjYWxsYmFjazogKGlzT25saW5lOiBib29sZWFuKSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09ubGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2lzT2ZmbGluZTtcbiAgfVxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09mZmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT2ZmbGluZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWlja2x5IGNoZWNrIGZvciBvbmxpbmUgY29ubmVjdGlvbi5cbiAgICovXG4gIGFzeW5jIGNoZWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghTmV0d29yaykgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgTmV0d29yay5nZXRTdGF0dXMoKTtcbiAgICB0aGlzLl9pc09mZmxpbmUgPSAhc3RhdHVzLmNvbm5lY3RlZDtcbiAgICByZXR1cm4gc3RhdHVzLmNvbm5lY3RlZDtcbiAgfVxufVxuIl19
@@ -458,10 +458,11 @@ export class IDEAOfflineDataService {
458
458
  this._storage.clear().then(() => this.synchronize(true));
459
459
  }
460
460
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
461
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService }); }
461
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService, providedIn: 'root' }); }
462
462
  }
463
463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService, decorators: [{
464
- type: Injectable
464
+ type: Injectable,
465
+ args: [{ providedIn: 'root' }]
465
466
  }], ctorParameters: () => [] });
466
467
  /**
467
468
  * The abstract class to implement for each resource to cache offline from the back-end (DOWNLOAD).
@@ -476,4 +477,4 @@ export class CacheableResource {
476
477
  this.teamId = null;
477
478
  }
478
479
  }
479
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZURhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL29mZmxpbmUvb2ZmbGluZURhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUTtBQUNyRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHFDQUFxQyxDQUFDO0FBQzVFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLCtCQUErQixDQUFDO0FBQzdEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsQ0FBQztBQUNwRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLEdBQUcsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBcURqQztRQXBEVSxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFrRHpDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLCtCQUErQjtRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNqQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLDREQUE0RDtnQkFDNUQsSUFBSSxJQUFJLENBQUMsZUFBZTtvQkFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7O29CQUN4QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsRUFBRTtJQUNGLHlDQUF5QztJQUN6QyxFQUFFO0lBRUY7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFFBQXFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNEOztPQUVHO0lBQ0ksS0FBSztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsRUFBRTtJQUNGLGdCQUFnQjtJQUNoQixFQUFFO0lBRUY7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsTUFBYyxFQUFFLG1CQUE0QixFQUFFLGtCQUF1QztRQUNwRyxlQUFlO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztRQUM1RyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQiwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNuRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQTJCLENBQUM7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0Q7O09BRUc7SUFDTyxjQUFjO1FBQ3RCLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQWtCLEVBQVEsRUFBRTtnQkFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDTyxjQUFjLENBQUMsVUFBa0I7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRDs7T0FFRztJQUNPLG9CQUFvQixDQUFDLGlCQUFvQztRQUNqRSxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsaUJBQWlCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRDs7T0FFRztJQUNPLHVCQUF1QixDQUFDLFFBQWlDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRDs7T0FFRztJQUNILFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsUUFBaUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEVBQUU7SUFDRixTQUFTO0lBQ1QsRUFBRTtJQUVGOztPQUVHO0lBQ08sbUJBQW1CO1FBQzNCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTTtnQkFBRSxPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQ3JHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFFO2dCQUM1QyxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVO29CQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFDaEUsSUFBSSxPQUFPLENBQUMsSUFBSTtvQkFBRSxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLElBQUksT0FBcUIsQ0FBQztnQkFDMUIsSUFBSSxDQUFDO29CQUNILFFBQVEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO3dCQUNyQyxLQUFLLE1BQU07NEJBQ1QsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFDbEUsTUFBTTt3QkFDUixLQUFLLEtBQUs7NEJBQ1IsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFDakUsTUFBTTt3QkFDUixLQUFLLE9BQU87NEJBQ1YsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFDbkUsTUFBTTtvQkFDVixDQUFDO29CQUNELElBQUksQ0FBQyxPQUFPO3dCQUFFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7O3dCQUMxQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLE9BQU8sQ0FBQyxLQUFLLEdBQUksR0FBYSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7Z0JBQzVELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILDhDQUE4QztZQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFTLEVBQUU7Z0JBQ25GLDZEQUE2RDtnQkFDN0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTTtvQkFBRSxNQUFNLEVBQUUsQ0FBQzs7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDTyxtQkFBbUI7UUFDM0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtnQkFBRSxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFtQixFQUFRLEVBQUU7Z0JBQzVFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNILG1CQUFtQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLE9BQW1CO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELEVBQUU7SUFDRixXQUFXO0lBQ1gsRUFBRTtJQUVGOztPQUVHO0lBQ08sS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQVksRUFBRSxJQUFVO1FBQ3ZELGdIQUFnSDtRQUNoSCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQztZQUNILDRGQUE0RjtZQUM1RixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLFFBQVEsRUFBQyxFQUFFO2dCQUNuQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdDLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ1AsMEZBQTBGO29CQUMxRixFQUFFLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDeEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDdkYsSUFBSSxDQUFDLE9BQU87d0JBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzVDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBQ0YsdUVBQXVFO1lBQ3ZFLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDdkQsK0VBQStFO1lBQy9FLE1BQU0sTUFBTSxHQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLDZCQUE2QixFQUFFLENBQUM7WUFDL0UsSUFBSSxJQUFJLENBQUMsVUFBVTtnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDcEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IseUdBQXlHO1lBQ3pHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFDRDs7T0FFRztJQUNPLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxRQUFnQixFQUFFLE9BQXNCO1FBQy9FLDJDQUEyQztRQUMzQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsbUVBQW1FO1lBQ25FLElBQUksSUFBSSxHQUFVLElBQUksRUFDcEIsVUFBVSxHQUFXLElBQUksQ0FBQztZQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixtRUFBbUU7Z0JBQ25FLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1Qyx3RkFBd0Y7Z0JBQ3hGLElBQUksQ0FBQyxDQUFDLE9BQU87b0JBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0QsdUJBQXVCOztvQkFDbEIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN2RCwyRUFBMkU7Z0JBQzNFLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0QywyR0FBMkc7Z0JBQzNHLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUMzQix5Q0FBeUM7b0JBQ3pDLElBQUksVUFBVSxFQUFFLENBQUM7d0JBQ2Ysb0dBQW9HO3dCQUNwRyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQy9DLENBQUM7b0JBQ0Qsd0VBQXdFO29CQUN4RSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDN0Msb0RBQW9EO29CQUNwRCxVQUFVLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixDQUFDO2dCQUNELGlEQUFpRDtnQkFDakQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRCxtQ0FBbUM7Z0JBQ25DLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztvQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEMsaUdBQWlHO2dCQUNqRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87b0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELDREQUE0RDtZQUM1RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLG9HQUFvRztnQkFDcEcsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQix3QkFBd0I7Z0JBQ3hCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYix5R0FBeUc7WUFDekcsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDaEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsRUFBRTtJQUNGLG9DQUFvQztJQUNwQyxFQUFFO0lBRUY7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFBRSxPQUFPO1lBQzlCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQ3hCLEdBQWtCLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFO2lCQUN2QixJQUFJLENBQUMsR0FBUyxFQUFFO2dCQUNmLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyx3QkFBd0I7b0JBQ3pGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQy9CLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsa0JBQTRCO1FBQ3RDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYTtnQkFBRSxPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUM7WUFDeEMsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQ3hCLEdBQWtCLEVBQUU7WUFDbEIscUdBQXFHO1lBQ3JHLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtpQkFDdkIsSUFBSSxDQUFDLEdBQVMsRUFBRTtnQkFDZixxR0FBcUc7Z0JBQ3JHLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDdkIscUZBQXFGO2dCQUNyRixNQUFNLE1BQU0sR0FBUSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDO2dCQUNoRSxJQUFJLElBQUksQ0FBQyxVQUFVO29CQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLElBQUk7cUJBQ04sV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztxQkFDN0UsSUFBSSxDQUFDLENBQUMsS0FBWSxFQUFRLEVBQUU7b0JBQzNCLHVHQUF1RztvQkFDdkcsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt3QkFDdEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQzt3QkFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7d0JBQzNCLE9BQU8sT0FBTyxFQUFFLENBQUM7b0JBQ25CLENBQUM7b0JBQ0QsK0RBQStEO29CQUMvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQVMsRUFBRTt3QkFDdEMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7NEJBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDOzRCQUMzQixPQUFPLEVBQUUsQ0FBQzt3QkFDWixDQUFDOzZCQUFNLENBQUM7NEJBQ04sNENBQTRDOzRCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDOzRCQUM5RixvQ0FBb0M7NEJBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO2lDQUNyQixJQUFJLENBQUMsR0FBUyxFQUFFO2dDQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dDQUMzQixPQUFPLEVBQUUsQ0FBQzs0QkFDWixDQUFDLENBQUM7aUNBQ0QsS0FBSyxDQUFDLEdBQVMsRUFBRTtnQ0FDaEIsc0NBQXNDO2dDQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQ0FDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0NBQzNCLE1BQU0sRUFBRSxDQUFDOzRCQUNYLENBQUMsQ0FBQyxDQUFDO3dCQUNQLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxHQUFTLEVBQUU7b0JBQ2hCLDhDQUE4QztvQkFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUMzQixNQUFNLEVBQUUsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsR0FBUyxFQUFFO2dCQUNoQixvRkFBb0Y7Z0JBQ3BGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDM0IsTUFBTSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FDUCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQWxiVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7QUFxZFg7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFpQjtJQXVCckMsWUFBWSxRQUFnQixFQUFFLFdBQW1CO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0NBc0JGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlbHRhLCBEZWx0YVJlY29yZCwgRGVsdGFSZXNvdXJjZXMsIGVwb2NoRGF0ZVRpbWUgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQVN0b3JhZ2VTZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBV1NBUElTZXJ2aWNlLCBBUElSZXF1ZXN0T3B0aW9uIH0gZnJvbSAnLi4vQVdTQVBJLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURFQU9mZmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9vZmZsaW5lLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFmdGVyIGhvdyBtdWNoIHRpbWUgd2UgbmVlZCB0byByZXF1ZXN0IGEgc3luY2hyb25pc2F0aW9uIHRvIGtlZXAgdGhlIGNvbnRlbnRzIHVwLXRvLWRhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBTWU5DX0VYUElSQVRJT05fSU5URVJWQUwgPSAxMDAwICogNjAgKiA2MCAqIDI0OyAvLyBhIGRheVxuLyoqXG4gKiBQcmVmaXggZm9yIHRoZSBrZXkgb2YgdGhlIEFQSSByZXF1ZXN0cyBxdWV1ZSBpbmZvIGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICovXG5leHBvcnQgY29uc3QgUVVFVUVfQVBJX1JFUVVFU1RTX0tFWSA9ICdJREVBT2ZmbGluZVNlcnZpY2UucXVldWVBUElyZXF1ZXN0cyc7XG4vKipcbiAqIFByZWZpeCBmb3IgdGhlIGtleSBvZiB0aGUgbGFzdCBzeW5jIHRpbWUgaW5mbyBpbiB0aGUgbG9jYWwgc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IExBU1RfU1lOQ19LRVkgPSAnSURFQU9mZmxpbmVTZXJ2aWNlLmxhc3RTeW5jQXQnO1xuLyoqXG4gKiBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBwZXIgcmVzb3VyY2UgdG8gc3luY2hyb25pemUgZHVyaW5nIHRoZSBmaXJzdCBhbmFseXNpcyBvZiBhIHN5bmNocm9uaXNhdGlvbi5cbiAqIElmIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXhjZWVkcyAodGhlcmUgaXMgbW9yZSBkYXRhIGFmdGVyIHRoZSAxc3QgcGFnZSksIHRoZSBvcGVyYXRpb24gcmVxdWlyZSBtYW51YWwgY29uZmlybWF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTlVNX0VMRU1FTlRTX1dJVEhPVVRfTUFOVUFMX1NZTkMgPSAxMDA7XG4vKipcbiAqIFRoZSBtYXggbnVtYmVyIG9mIGVsZW1lbnRzIHBlciByZXNvdXJjZSB0byByZXF1ZXN0IGF0IHRoZSBzYW1lIHRpbWUgZHVyaW5nIGEgbm9ybWFsIHN5bmNocm9uaXNhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE5VTV9FTEVNRU5UU19XSVRIX01BTlVBTF9TWU5DID0gMzAwO1xuXG4vKipcbiAqIE1hbmFnZSB0aGUgb2ZmbGluZSBmdW5jdGlvbmluZyBvZiB0aGUgYXBwJ3MgZGF0YSAodXBsb2FkL2Rvd25sb2FkL3N5bmNocm9uaXphdGlvbikuXG4gKiBOb3RlOiBpdCBpbmNsdWRlcyBhbGwgdGhlIG1ldGhvZHMgb2YgSURFQU9mZmxpbmVTZXJ2aWNlLlxuICpcbiAqIERvd25sb2FkOiBpdCB3b3JrcyB0aHJvdWdoIHRoZSAqKkRlbHRhKiogbWVjaGFuaXNtIG9uIGJhY2stZW5kIHJlc291cmNlcy5cbiAqIFByYWN0aWNhbGx5LCB0aGUgc2VydmljZSBwcmVwYXJlcyBlYWNoIHBvc3NpYmxlIEFQSSBHRVQgcmVxdWVzdHMgZm9yIGVhY2ggb2YgdGhlIGludm9sdmVkIHJlc291cmNlcy5cbiAqIEluIHRoaXMgd2F5LCBpZiBvZmZsaW5lLCB0aGUgQVBJIHNlcnZpY2UgY2FuIGhpdCBhbiBlbGVtZW50IGJ5IFVSTCBpbiB0aGUgY2FjaGUgKHN0b3JhZ2Ugb2ZmbGluZSkuXG4gKlxuICogKipIb3cgdG8gdXNlIGl0KiouIENvbmZpZ3VyZSB0aGUgc3luYyBtZWNoYW5pc20gaW4gdGhlIG1haW4gYXBwLmNvbXBvbmVudCBhcyBpdCBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEltcGxlbWVudCBhIENhY2hlYWJsZVJlc291cmNlIGNsYXNzIGZvciBlYWNoIERlbHRhUmVzb3VyY2UgeW91IHdhbnQgdG8gY2FjaGUgb2ZmbGluZS5cbiAqICAgIDIuIFNldCB1cCB0aGUgc2VydmljZSAoYHNldFVwT2ZmbGluZURhdGFgKS5cbiAqICAgIDMuIFJ1biBhIHN5bmNocm9uaXphdGlvbi5cbiAqICAgIDQuIEFkZCB0aGUgbmF2aWdhdGlvbiB0byB0aGUgT2ZmbGluZSBNYW5hZ2VyIChVSSkuXG4gKiAgICA1LiBPcHRpb25hbGx5LCBwdXNoIG9mZmxpbmUgQVBJIHJlcXVlc3RzIHRvIHRoZSBxdWV1ZSB3aGVuIG9mZmxpbmUuXG4gKlxuICogZS5nLiBvZiBDYWNoZWFibGVSZXNvdXJjZSBjbGFzc2VzOlxuICogYGBgXG4gKiBjbGFzcyBDdXN0b21lckNSIGV4dGVuZHMgQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICogICBjb25zdHJ1Y3RvcihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoRGVsdGFSZXNvdXJjZXMuQ1VTVE9NRVJTLCBkZXNjcmlwdGlvbik7XG4gKiAgIH1cbiAqICAgcHVibGljIGxpc3RVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVyc2A7XG4gKiAgIH1cbiAqICAgcHVibGljIGVsZW1lbnRVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gO1xuICogICB9XG4gKiAgIHB1YmxpYyBmaW5kSW5kZXhJbkxpc3QobGlzdDogQXJyYXk8YW55PiwgZWxlbWVudDogYW55KTogbnVtYmVyIHtcbiAqICAgICByZXR1cm4gbGlzdC5maW5kSW5kZXgoeCA9PiB4LmN1c3RvbWVySWQgPT09IGVsZW1lbnQuY3VzdG9tZXJJZCk7XG4gKiAgIH1cbiAqICAgcHVibGljIHNvcnQoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICogICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICogICB9XG4gKiB9XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJREVBT2ZmbGluZURhdGFTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIF9zdG9yYWdlID0gaW5qZWN0KElERUFTdG9yYWdlU2VydmljZSk7XG4gIHByb3RlY3RlZCBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIF9vZmZsaW5lID0gaW5qZWN0KElERUFPZmZsaW5lU2VydmljZSk7XG4gIHByb3RlY3RlZCBfQVBJID0gaW5qZWN0KElERUFBV1NBUElTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVHJ1ZSB3aGVuIHJ1bm5pbmcgYSBzeW5jaHJvbml6YXRpb24uXG4gICAqL1xuICBzeW5jaHJvbml6aW5nOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHRpbWVzdGFtcCBvZiB0aGUgbGFzdCBzeW5jaHJvbml6YXRpb24uXG4gICAqL1xuICBsYXN0U3luY0F0OiBlcG9jaERhdGVUaW1lO1xuICAvKipcbiAgICogVHJ1ZSBpZiBhbiBlcnJvciBoYXBwZW5lZCBpbiB0aGUgbGFzdCBzeW5jaHJvbml6YXRpb24uXG4gICAqL1xuICBlcnJvckluTGFzdFN5bmM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcnVlIGlmIHRoZSBzeW5jaHJvbmlzYXRpb24gaXMgdG9vIHZhc3QgYW5kIHNvIHJlcXVpcmUgYSBtYW51YWwgYWN0aW9uIG9mIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVxdWlyZXNNYW51YWxDb25maXJtYXRpb246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiBmYWxzZSwgaWdub3JlIHRoZSBlbnRpcmUgdXBsb2FkIHNjZW5hcmlvLlxuICAgKi9cbiAgdXNlUXVldWVBUElSZXF1ZXN0czogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhcnJheSBvZiB0aGUgcmVxdWVzdHMgbm90IGV4ZWN1dGVkIGJlY2F1c2Ugd2UgYXJlL3dlcmUgb2ZmbGluZTsgdGhleSBuZWVkIHRvIHJ1biBvbmNlIG9ubGluZS5cbiAgICovXG4gIHF1ZXVlQVBJUmVxdWVzdHM6IEFQSVJlcXVlc3RbXTtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSB0ZWFtIG9mIHdoaWNoIHRvIG1hbmFnZSBkYXRhIG9mZmxpbmUuXG4gICAqIElmIG51bGwsIHRoZSBwcm9qZWN0IGlzbid0IHRlYW1zLWJhc2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRlYW1JZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFycmF5IG9mIERlbHRhUmVzb3VyY2VzIHRvIGNhY2hlIG9mZmxpbmUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VzOiAoRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpW107XG4gIC8qKlxuICAgKiBIZWxwZXIgc3RydWN0dXJlIHRvIG1hbmFnZSB0aGUgQ2FjaGVhYmxlUmVzb3VyY2UgZm9yIGVhY2ggRGVsdGFSZXNvdXJjZS5cbiAgICovXG4gIHByb3RlY3RlZCBjYWNoZWFibGVSZXNvdXJjZXM6IHsgW3Jlc291cmNlOiBzdHJpbmddOiBDYWNoZWFibGVSZXNvdXJjZSB9O1xuICAvKipcbiAgICogS2V5IHRvIGFjcXVpcmUgZnJvbSB0aGUgc3RvcmFnZSB0aGUgbGFzdFN5bmNBdCBpbmZvcm1hdGlvbiBvZiB0aGUgdGVhbS5cbiAgICovXG4gIHByb3RlY3RlZCBsYXN0U3luY0tleTogc3RyaW5nO1xuICAvKipcbiAgICogS2V5IHRvIGFjcXVpcmUgZnJvbSB0aGUgc3RvcmFnZSB0aGUgbGFzdFN5bmNBdCBpbmZvcm1hdGlvbiBvZiB0aGUgdGVhbS5cbiAgICovXG4gIHByb3RlY3RlZCBxdWV1ZUFQSVJlcXVlc3RLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdHMgPSBuZXcgQXJyYXk8QVBJUmVxdWVzdD4oKTtcbiAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXMgPSB7fTtcbiAgICAvLyBzdWJzY3JpYmUgdG8gbmV0d29yayBjaGFuZ2VzXG4gICAgdGhpcy5fb2ZmbGluZS5zdWJzY3JpYmUoaXNPbmxpbmUgPT4ge1xuICAgICAgaWYgKGlzT25saW5lKSB7XG4gICAgICAgIC8vIHRyeSBhIHN5bmNocm9uaXphdGlvbiBpZiBuZWVkZWQgb3IgaWYgdGhlIGxhc3Qgb25lIGZhaWxlZFxuICAgICAgICBpZiAodGhpcy5lcnJvckluTGFzdFN5bmMpIHRoaXMuc3luY2hyb25pemUoKTtcbiAgICAgICAgZWxzZSB0aGlzLnN5bmNocm9uaXplSWZOZWVkZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vXG4gIC8vIE5FVFdPUksgU1RBVFVTIGZyb20gSURFQU9mZmxpbmVTZXJ2aWNlXG4gIC8vXG5cbiAgLyoqXG4gICAqIFF1aWNrbHkgY2hlY2sgdGhlIGNvbm5lY3Rpb24gc3RhdHVzLlxuICAgKi9cbiAgaXNPbmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29mZmxpbmUuaXNPbmxpbmUoKTtcbiAgfVxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09mZmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29mZmxpbmUuaXNPZmZsaW5lKCk7XG4gIH1cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc2VydmljZSB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBjb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2VzLlxuICAgKi9cbiAgc3Vic2NyaWJlKGNhbGxiYWNrOiAoaXNPbmxpbmU6IGJvb2xlYW4pID0+IHZvaWQpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cbiAgLyoqXG4gICAqIFF1aWNrbHkgY2hlY2sgZm9yIG9ubGluZSBjb25uZWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGNoZWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLmNoZWNrKCk7XG4gIH1cblxuICAvL1xuICAvLyBDT05GSUdVUkFUSU9OXG4gIC8vXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG9mZmxpbmUgbW9kZSBpcyBhbGxvd2VkLiBZb3UgY2FuIGN1c3RvbWl6ZSB0aGlzIGZ1bmN0aW9uLCBpZiBuZWVkZWQuXG4gICAqL1xuICBpc0FsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvdXJjZXMubGVuZ3RoO1xuICB9XG4gIC8qKlxuICAgKiBTZXQgdXAgdGhlIHNlcnZpY2UgdG8gdXNlIGFuZCBzeW5jIG9mZmxpbmUgZGF0YS5cbiAgICovXG4gIHNldFVwT2ZmbGluZURhdGEodGVhbUlkOiBzdHJpbmcsIHVzZVF1ZXVlQVBJUmVxdWVzdHM6IGJvb2xlYW4sIGNhY2hlYWJsZVJlc291cmNlczogQ2FjaGVhYmxlUmVzb3VyY2VbXSk6IHZvaWQge1xuICAgIC8vIHNldCB0aGUgdGVhbVxuICAgIHRoaXMudGVhbUlkID0gdGVhbUlkO1xuICAgIC8vIGRlY2lkZSBpZiB0byBhbGxvdyBjZXJ0YWluIEFQSSByZXF1ZXN0IHdoaWxlIG9mZmxpbmVcbiAgICB0aGlzLnVzZVF1ZXVlQVBJUmVxdWVzdHMgPSB1c2VRdWV1ZUFQSVJlcXVlc3RzO1xuICAgIC8vIGxvYWQgdGhlIEFQSSByZXF1ZXN0IHBlbmRpbmcgcXVldWUsIGlmIGFueVxuICAgIHRoaXMucXVldWVBUElSZXF1ZXN0S2V5ID0gdGhpcy50ZWFtSWQgPyBgJHtRVUVVRV9BUElfUkVRVUVTVFNfS0VZfV8ke3RoaXMudGVhbUlkfWAgOiBRVUVVRV9BUElfUkVRVUVTVFNfS0VZO1xuICAgIHRoaXMubG9hZFF1ZXVlQVBJUmVxdWVzdCgpO1xuICAgIC8vIGxvYWQgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb24gZm9yIHRoZSB0ZWFtXG4gICAgdGhpcy5sYXN0U3luY0tleSA9IHRoaXMudGVhbUlkID8gYCR7TEFTVF9TWU5DX0tFWX1fJHt0aGlzLnRlYW1JZH1gIDogTEFTVF9TWU5DX0tFWTtcbiAgICB0aGlzLmxvYWRMYXN0U3luY0F0KCk7XG4gICAgLy8gbG9hZCB0aGUgY2FjaGVhYmxlIHJlc291cmNlc1xuICAgIHRoaXMucmVzb3VyY2VzID0gbmV3IEFycmF5PERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nPigpO1xuICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzID0ge307XG4gICAgY2FjaGVhYmxlUmVzb3VyY2VzLmZvckVhY2gociA9PiB0aGlzLmFkZENhY2hlYWJsZVJlc291cmNlKHIpKTtcbiAgfVxuICAvKipcbiAgICogTG9hZCBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlIHRoZSBsYXN0IHN5bmMgYXQgaW5mb3JtYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgbG9hZExhc3RTeW5jQXQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLl9zdG9yYWdlLmdldCh0aGlzLmxhc3RTeW5jS2V5KS50aGVuKChsYXN0U3luY0F0OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5sYXN0U3luY0F0ID0gbGFzdFN5bmNBdCA/IE51bWJlcihsYXN0U3luY0F0KSA6IG51bGw7XG4gICAgICAgIHJlc29sdmUodGhpcy5sYXN0U3luY0F0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgbGFzdCBzeW5jIGF0IGluZm8gaW4gdGhlIGxvY2FsIHN0b3JhZ2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2F2ZUxhc3RTeW5jQXQobGFzdFN5bmNBdDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sYXN0U3luY0F0ID0gbGFzdFN5bmNBdDtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5zZXQodGhpcy5sYXN0U3luY0tleSwgbGFzdFN5bmNBdCk7XG4gIH1cbiAgLyoqXG4gICAqIEFkZCBhIENhY2hlYWJsZVJlc291cmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZENhY2hlYWJsZVJlc291cmNlKGNhY2hlYWJsZVJlc291cmNlOiBDYWNoZWFibGVSZXNvdXJjZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRlYW1JZCkgY2FjaGVhYmxlUmVzb3VyY2UudGVhbUlkID0gdGhpcy50ZWFtSWQ7XG4gICAgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbY2FjaGVhYmxlUmVzb3VyY2UucmVzb3VyY2VdID0gY2FjaGVhYmxlUmVzb3VyY2U7XG4gICAgdGhpcy5yZXNvdXJjZXMucHVzaChjYWNoZWFibGVSZXNvdXJjZS5yZXNvdXJjZSk7XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZSBhIENhY2hlYWJsZVJlc291cmNlIGJ5IGl0cyBEZWx0YVJlc291cmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlbW92ZUNhY2hlYWJsZVJlc291cmNlKHJlc291cmNlOiBEZWx0YVJlc291cmNlcyB8IHN0cmluZyk6IHZvaWQge1xuICAgIGRlbGV0ZSB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gICAgdGhpcy5yZXNvdXJjZXMuc3BsaWNlKHRoaXMucmVzb3VyY2VzLmluZGV4T2YocmVzb3VyY2UpLCAxKTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSB0aGUgRGVsdGFSZXNvdXJjZWQgY29uZmlndXJlZC5cbiAgICovXG4gIGdldFJlc291cmNlcygpOiAoRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpW10ge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcztcbiAgfVxuICAvKipcbiAgICogR2V0IGEgQ2FjaGVhYmxlUmVzb3VyY2UgYnkgaXRzIERlbHRhUmVzb3VyY2UuXG4gICAqL1xuICBnZXRDYWNoZWFibGVSZXNvdXJjZShyZXNvdXJjZTogRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpOiBDYWNoZWFibGVSZXNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXTtcbiAgfVxuXG4gIC8vXG4gIC8vIFVQTE9BRFxuICAvL1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGFsbCB0aGUgQVBJIHJlcXVlc3RzIGluIHRoZSBxdWV1ZTsgdGhlIHJlcXVlc3RzIHRlcm1pbmF0ZWQgd2l0aCBhbiBlcnJvciB3aWxsIHJlbWFpbiBpbiB0aGUgcXVldWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcnVuUXVldWVBUElSZXF1ZXN0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVzZVF1ZXVlQVBJUmVxdWVzdHMgfHwgdGhpcy5pc09mZmxpbmUoKSB8fCAhdGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmxlbmd0aCkgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cy5mb3JFYWNoKGFzeW5jIHJlcXVlc3QgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBBUElSZXF1ZXN0T3B0aW9uID0ge307XG4gICAgICAgIGlmIChyZXF1ZXN0LnJlc291cmNlSWQpIG9wdGlvbnMucmVzb3VyY2VJZCA9IHJlcXVlc3QucmVzb3VyY2VJZDtcbiAgICAgICAgaWYgKHJlcXVlc3QuYm9keSkgb3B0aW9ucy5ib2R5ID0gcmVxdWVzdC5ib2R5O1xuICAgICAgICBsZXQgcHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHN3aXRjaCAocmVxdWVzdC5tZXRob2QudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgICAgY2FzZSAnUE9TVCc6XG4gICAgICAgICAgICAgIHByb21pc2UgPSBhd2FpdCB0aGlzLl9BUEkucG9zdFJlc291cmNlKHJlcXVlc3QucmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BVVCc6XG4gICAgICAgICAgICAgIHByb21pc2UgPSBhd2FpdCB0aGlzLl9BUEkucHV0UmVzb3VyY2UocmVxdWVzdC5yZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFUQ0gnOlxuICAgICAgICAgICAgICBwcm9taXNlID0gYXdhaXQgdGhpcy5fQVBJLnBhdGNoUmVzb3VyY2UocmVxdWVzdC5yZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXByb21pc2UpIHJlcXVlc3QuZXJyb3IgPSAnSU5WQUxJRF9NRVRIT0QnO1xuICAgICAgICAgIGVsc2UgcmVxdWVzdC5lcnJvciA9IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlcXVlc3QuZXJyb3IgPSAoZXJyIGFzIEVycm9yKS5tZXNzYWdlIHx8ICdVTktOT1dOX0VSUk9SJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBrZWVwIHRoZSByZXF1ZXN0cyBOT1Qgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkXG4gICAgICB0aGlzLnNhdmVRdWV1ZUFQSVJlcXVlc3QodGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmZpbHRlcih4ID0+IHguZXJyb3IpKS50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgLy8gaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCB0aGUgZW50aXJlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuICAgICAgICBpZiAodGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmxlbmd0aCkgcmVqZWN0KCk7XG4gICAgICAgIGVsc2UgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIExvYWQgZnJvbSB0aGUgbG9jYWwgc3RvcmFnZSB0aGUgQVBJIHJlcXVlc3RzIHF1ZXVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGxvYWRRdWV1ZUFQSVJlcXVlc3QoKTogUHJvbWlzZTxBUElSZXF1ZXN0W10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMudXNlUXVldWVBUElSZXF1ZXN0cykgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgdGhpcy5fc3RvcmFnZS5nZXQodGhpcy5xdWV1ZUFQSVJlcXVlc3RLZXkpLnRoZW4oKHF1ZXVlOiBBUElSZXF1ZXN0W10pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzID0gcXVldWUgfHwgW107XG4gICAgICAgIHJlc29sdmUodGhpcy5xdWV1ZUFQSVJlcXVlc3RzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHF1ZXVlIGluIG1lbW9yeSBhbmQgYWxzbyBzYXZlIHRoZSBjb3B5IGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICAgKi9cbiAgc2F2ZVF1ZXVlQVBJUmVxdWVzdChxdWV1ZT86IEFQSVJlcXVlc3RbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzID0gcXVldWUgfHwgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzO1xuICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnNldCh0aGlzLnF1ZXVlQVBJUmVxdWVzdEtleSwgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzKTtcbiAgfVxuICAvKipcbiAgICogRGVsZXRlIGEgcmVxdWVzdCBzdHVjayBpbiBhbiBlcnJvci5cbiAgICovXG4gIGRlbGV0ZVJlcXVlc3QocmVxdWVzdDogQVBJUmVxdWVzdCkge1xuICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cy5zcGxpY2UodGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmluZGV4T2YocmVxdWVzdCksIDEpO1xuICAgICAgdGhpcy5zYXZlUXVldWVBUElSZXF1ZXN0KCk7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gRE9XTkxPQURcbiAgLy9cblxuICAvKipcbiAgICogU2F2ZSB0aGUgcmVjb3JkcyBvZiBhIGRlbHRhIGFuZCwgaWYgdGhlIGxhdHRlciBoYXMgbW9yZSBwYWdlcywgZ28gcmVjdXJzaXZlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHN5bmNEZWx0YVJlY29yZHMoZGVsdGE6IERlbHRhLCBkb25lPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBmb3IgZWFjaCByZXNvdXJjZSwgd2UgcmVzZXQgdGhlIHN0YXR1czsgaWYgYSByZXNvdXJjZSBzdGlsbCBuZWVkIHRvIGJlIHN5bmNocm9uaXplZCwgaXQgd2lsbCBiZSBmbGFnZ2VkIGJlbG93XG4gICAgdGhpcy5yZXNvdXJjZXMuZm9yRWFjaChyZXNvdXJjZSA9PiB7XG4gICAgICB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV0uZXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXS5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHN5bmNocm9uemUgZWFjaCBvZiB0aGUgcmVzb3VyY2VzIGluY2x1ZGVkIGluIHRoZSBkZWx0YTsgdGhpcyBleGVjdXRpb24gY2FuIGdvIGluIHBhcmFsbGVsXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgZGVsdGEucmVzb3VyY2VzLm1hcChhc3luYyByZXNvdXJjZSA9PiB7XG4gICAgICAgICAgY29uc3QgY3IgPSB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gICAgICAgICAgaWYgKGNyKSB7XG4gICAgICAgICAgICAvLyBzeW5jaHJvbml6ZSB0aGUgZGVsdGEgcmVjb3Jkczsgbm90ZTogdGhlIGV4ZWN1dHVpb24gaW5zaWRlIGEgcmVzb3VyY2UgbXVzdCBnbyBpbiBzZXJpZXNcbiAgICAgICAgICAgIGNyLnN5bmNocm9uaXppbmcgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHRoaXMuc3luY1Jlc291cmNlRGVsdGFSZWNvcmRzKHJlc291cmNlLCBkZWx0YS5yZWNvcmRzW3Jlc291cmNlXSk7XG4gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgLy8gaWYgdGhlcmUgd2VyZSBlcnJvciBvZiBpZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gc3luYywgd2UgYXJlIGRvbmVcbiAgICAgIGlmICh0aGlzLmVycm9ySW5MYXN0U3luYyB8fCAhZGVsdGEubmV4dCkgcmV0dXJuIGRvbmUoKTtcbiAgICAgIC8vIG90aGVyd2lzZSwgZ2V0IHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIGRlbHRhIGFuZCBnbyByZWN1cnNpdmUgdW50aWwgd2UgYXJlIGRvbmVcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0geyBuZXh0OiBkZWx0YS5uZXh0LCBsaW1pdDogTlVNX0VMRU1FTlRTX1dJVEhfTUFOVUFMX1NZTkMgfTtcbiAgICAgIGlmICh0aGlzLmxhc3RTeW5jQXQpIHBhcmFtcy5zaW5jZSA9IHRoaXMubGFzdFN5bmNBdDtcbiAgICAgIGNvbnN0IG5ld0RlbHRhID0gYXdhaXQgdGhpcy5fQVBJLmdldFJlc291cmNlKHRoaXMudGVhbUlkID8gYHRlYW1zLyR7dGhpcy50ZWFtSWR9L2RlbHRhYCA6ICdkZWx0YScsIHsgcGFyYW1zIH0pO1xuICAgICAgdGhpcy5zeW5jRGVsdGFSZWNvcmRzKG5ld0RlbHRhLCBkb25lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLCBzdG9wcyB0aGUgb3BlcmF0aW9uLCBzaW5jZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZW50aXJlIGZsb3cgaXMgY29uc2lzdGVudFxuICAgICAgdGhpcy5lcnJvckluTGFzdFN5bmMgPSB0cnVlO1xuICAgICAgcmV0dXJuIGRvbmUoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNhdmUgb2ZmbGluZSBhIGxpc3Qgb2YgRGVsdGFSZWNvcmRzIGZvciB0aGlzIHJlc291cmNlLCBjcmVhdGluZyBhIG1hcCBvZiBhbGwgdGhlIGNvcnJlc3BvbmRpbmcgQVBJIEdFVCByZXF1ZXN0cy5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzeW5jUmVzb3VyY2VEZWx0YVJlY29yZHMocmVzb3VyY2U6IHN0cmluZywgcmVjb3JkczogRGVsdGFSZWNvcmRbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIGFjcXVpcmUgdGhlIGluZm8gYW4gYSBjYWNoZWFibGUgcmVzb3VyY2VcbiAgICBjb25zdCBjciA9IHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXTtcbiAgICBpZiAoIWNyKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICAvLyBwcmVwYXJlIGhlbHBlcnMgdG8gZ3JvdXAgZXhlY3V0aW9ucyBvZiBlbGVtZW50cyBvZiB0aGUgc2FtZSBsaXN0XG4gICAgICBsZXQgbGlzdDogYW55W10gPSBudWxsLFxuICAgICAgICBvbGRMaXN0VVJMOiBzdHJpbmcgPSBudWxsO1xuICAgICAgZm9yIChjb25zdCByIG9mIHJlY29yZHMpIHtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBVUkwgdG8gYWNjZXNzIHRoZSBBUEkgcmVxdWVzdCBrZXkgZm9yIHRoaXMgZWxlbWVudFxuICAgICAgICBjb25zdCBlbGVtZW50VVJMID0gY3IuZWxlbWVudFVSTChyLmVsZW1lbnQpO1xuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCB3YXMgZGVsZXRlZCAoYmFzZWQgb24gZGVsdGEpLCBkZWxldGUgaXRzIGNvcnJlc3BvbmRpbmcgQVBJIEdFVCByZXF1ZXN0XG4gICAgICAgIGlmIChyLmRlbGV0ZWQpIGF3YWl0IHRoaXMuX0FQSS5kZWxldGVGcm9tQ2FjaGUoZWxlbWVudFVSTCk7XG4gICAgICAgIC8vIG90aGVyd2lzZSwgdXBkYXRlIGl0XG4gICAgICAgIGVsc2UgYXdhaXQgdGhpcy5fQVBJLnB1dEluQ2FjaGUoZWxlbWVudFVSTCwgci5lbGVtZW50KTtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBVUkxzIHRvIGFjY2VzcyB0aGUgQVBJIHJlcXVlc3Qga2V5IGZvciB0aGlzIGVsZW1lbnQncyBsaXN0XG4gICAgICAgIGNvbnN0IGxpc3RVUkwgPSBjci5saXN0VVJMKHIuZWxlbWVudCk7XG4gICAgICAgIC8vIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlLCBnZXQvc29ydC9zYXZlIHRoZSBsaXN0IG9ubHkgd2hlbiBpdCBjaGFuZ2VzIGZyb20gdGhlIHByZXZpb3VzIGVsZW1lbnQncyBvbmUuXG4gICAgICAgIGlmIChsaXN0VVJMICE9PSBvbGRMaXN0VVJMKSB7XG4gICAgICAgICAgLy8gc2tpcCBmaXJzdCBjeWNsZSAob2xkTGlzdFVSTCA9PT0gbnVsbClcbiAgICAgICAgICBpZiAob2xkTGlzdFVSTCkge1xuICAgICAgICAgICAgLy8gcmUtc29ydCB0aGUgbGlzdDsgbm90ZTogaXQgc2hvdWxkIGJlIHNvcnRlZCBmcm9tIHRoZSBsYXN0IHRpbWUsIHNvIHdlIG9ubHkgbWFuYWdlIHRoZSBuZXcgZWxlbWVudFxuICAgICAgICAgICAgbGlzdCA9IGxpc3Quc29ydChjci5zb3J0KTtcbiAgICAgICAgICAgIC8vIHNhdmUgdGhlIHVwZGF0ZWQgbGlzdFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fQVBJLnB1dEluQ2FjaGUob2xkTGlzdFVSTCwgbGlzdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGdldCB0aGUgbGlzdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlIGJ5IHRoZSBjYWxjdWxhdGVkIFVSTFxuICAgICAgICAgIGxpc3QgPSBhd2FpdCB0aGlzLl9BUEkuZ2V0RnJvbUNhY2hlKGxpc3RVUkwpO1xuICAgICAgICAgIC8vIHNhdmUgdGhlIHJlZmVyZW5jZSB0byB0aGUgbGlzdCBmb3IgdGhlIG5leHQgY3ljbGVcbiAgICAgICAgICBvbGRMaXN0VVJMID0gbGlzdFVSTDtcbiAgICAgICAgfVxuICAgICAgICAvLyBmaW5kIGluIHRoZSBsaXN0IHRoZSBlbGVtZW50IHdlIHdhbnQgdG8gbWFuYWdlXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY3IuZmluZEluZGV4SW5MaXN0KGxpc3QsIHIuZWxlbWVudCk7XG4gICAgICAgIC8vIGRlbGV0ZSB0aGUgZWxlbWVudCBmcm9tIHRoZSBsaXN0XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIGxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgd2Fzbid0IGRlbGV0ZWQgKGZvbGxvd2luZyB0aGUgZGVsdGEgcmVjb3JkIGluZm9ybWF0aW9uKSwgaW5zZXJ0IHRoZSBuZXcgdmVyc2lvblxuICAgICAgICBpZiAoIXIuZGVsZXRlZCkgbGlzdC5wdXNoKHIuZWxlbWVudCk7XG4gICAgICB9XG4gICAgICAvLyBpbiBjYXNlIHRoZXJlIHdlcmUgZWxlbWVudHMsIHNhdmUgdGhlIGxhc3QgZWxlbWVudCdzIGxpc3RcbiAgICAgIGlmIChvbGRMaXN0VVJMKSB7XG4gICAgICAgIC8vIHJlLXNvcnQgdGhlIGxpc3Q7IG5vdGU6IGl0IHNob3VsZCBiZSBzb3J0ZWQgZnJvbSB0aGUgbGFzdCB0aW1lLCBzbyB3ZSBvbmx5IG1hbmFnZSB0aGUgbmV3IGVsZW1lbnRcbiAgICAgICAgbGlzdCA9IGxpc3Quc29ydChjci5zb3J0KTtcbiAgICAgICAgLy8gc2F2ZSB0aGUgdXBkYXRlZCBsaXN0XG4gICAgICAgIGF3YWl0IHRoaXMuX0FQSS5wdXRJbkNhY2hlKG9sZExpc3RVUkwsIGxpc3QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLCBzdG9wcyB0aGUgb3BlcmF0aW9uLCBzaW5jZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZW50aXJlIGZsb3cgaXMgY29uc2lzdGVudFxuICAgICAgY3IuZXJyb3IgPSB0cnVlO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gU1lOQ0hST05JU0FUSU9OIChVUExPQUQrRE9XTkxPQUQpXG4gIC8vXG5cbiAgLyoqXG4gICAqIFJ1biBhIHN5bmMsIGJ1dCBvbmx5IGlmIG5lZWRlZCwgaS5lLiB0aGUgY2FjaGVkIGNvbnRlbnQgZXhwaXJlZCBvciB3ZSBoYXZlIHBlbmRpbmcgQVBJIHJlcXVlc3RzIGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIHN5bmNocm9uaXplSWZOZWVkZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSkgcmV0dXJuO1xuICAgICAgdGhpcy5sb2FkTGFzdFN5bmNBdCgpLnRoZW4oXG4gICAgICAgICgpOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgdGhpcy5sb2FkUXVldWVBUElSZXF1ZXN0KClcbiAgICAgICAgICAgIC50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucXVldWVBUElSZXF1ZXN0cy5sZW5ndGggfHwgRGF0ZS5ub3coKSA+IHRoaXMubGFzdFN5bmNBdCArIFNZTkNfRVhQSVJBVElPTl9JTlRFUlZBTClcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplKCk7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU3luY2hyb25pemF0aW9uIG9mIHRoZSB3aG9sZSBzZXQgb2YgcmVzb3VyY2VzICh1cGxvYWQrZG93bmxvYWQpLlxuICAgKiBAcGFyYW0gbWFudWFsQ29uZmlybWF0aW9uIGlmIHRydWUsIHRoZSByZXF1ZXN0IGNvbWVzIGRpcmVjdGx5IGZyb20gYSB1c2VyIGFjdGlvbiAobm90IGF1dG9tYXRpYyBwcm9jZWR1cmVzKS5cbiAgICovXG4gIHN5bmNocm9uaXplKG1hbnVhbENvbmZpcm1hdGlvbj86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzQWxsb3dlZCgpIHx8IHRoaXMuc3luY2hyb25pemluZykgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IHRydWU7XG4gICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgICAgLy8gbG9hZCB0aGUgbGFzdFN5bmNBdCBpbmZvcm1hdGlvblxuICAgICAgdGhpcy5sb2FkTGFzdFN5bmNBdCgpLnRoZW4oXG4gICAgICAgICgpOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgLy8gdHJ5IHRvIHJ1biBhbGwgdGhlIHBlbmRpbmcgQVBJIHJlcXVlc3RzIGluIHRoZSBxdWV1ZSwgaS5lLiB1cGxvYWRpbmcgdGhlIG9mZmxpbmUgcmVzb3VyY2VzIGNoYW5nZWRcbiAgICAgICAgICB0aGlzLnJ1blF1ZXVlQVBJUmVxdWVzdHMoKVxuICAgICAgICAgICAgLnRoZW4oKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAvLyBzZXQgdGhpcyBtb21lbnQgaW4gdGltZTogaWYgYW55dGhpbmcgaGFwcGVuZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN5bmMsIHdlIGRvbid0IGxvc2UgZnJlc2ggZGF0YVxuICAgICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAvLyBwcmVwYXJlIGEgZmlyc3QgXCJzaG9ydFwiIERlbHRhIHJlcXVlc3QsIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGxvdCBvZiBkYXRhIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7IGxpbWl0OiBOVU1fRUxFTUVOVFNfV0lUSE9VVF9NQU5VQUxfU1lOQyB9O1xuICAgICAgICAgICAgICBpZiAodGhpcy5sYXN0U3luY0F0KSBwYXJhbXMuc2luY2UgPSB0aGlzLmxhc3RTeW5jQXQ7XG4gICAgICAgICAgICAgIHRoaXMuX0FQSVxuICAgICAgICAgICAgICAgIC5nZXRSZXNvdXJjZSh0aGlzLnRlYW1JZCA/IGB0ZWFtcy8ke3RoaXMudGVhbUlkfS9kZWx0YWAgOiAnZGVsdGEnLCB7IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChkZWx0YTogRGVsdGEpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIGRlY2lkZSBpZiB0byBwcm9jZWVkIHdpdGggdGhlIHN5bmM6IGluIGNhc2UgdGhlcmUgaXMgYW5vdGhlciBwYWdlLCBpdCByZXF1aXJlcyBhIG1hbnVhbCBjb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgIGlmIChkZWx0YS5uZXh0ICYmICFtYW51YWxDb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgcmVjb3JkcyBpbiB0aGUgZGVsdGEgYW5kIHJlcXVlc3QgcG9zc2libGUgbmV3IHBhZ2VzXG4gICAgICAgICAgICAgICAgICB0aGlzLnN5bmNEZWx0YVJlY29yZHMoZGVsdGEsICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXJyb3JJbkxhc3RTeW5jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCB0aGUgcmVzb3VyY2VzIGFyZSBzdWNjZXNmdWxseSBpbiBzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMuZm9yRWFjaChyZXNvdXJjZSA9PiAodGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdLnN5bmNocm9uaXppbmcgPSBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgdGltZXN0YW1wIG9mIGxhc3Qgc3luY1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUxhc3RTeW5jQXQobm93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkbid0IHNhdmUgdGhlIGxhc3Qgc3luYyBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkbid0IGFjcXVpcmUgbmV3IGluZm9ybWF0aW9uIChEZWx0YSlcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgLy8gd2Ugc3RvcCwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBiYWNrZW5kIGRhdGEgdG8gb3ZlcnJpZGUgbG9jYWwgaW5mbyBub3QgeWV0IHVwbG9hZGVkXG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEZvcmNlIGEgZnVsbCBzeW5jaHJvbmlzYXRpb24uXG4gICAqL1xuICBmb3JjZUZ1bGxTeW5jKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0b3JhZ2UuY2xlYXIoKS50aGVuKCgpOiBQcm9taXNlPHZvaWQ+ID0+IHRoaXMuc3luY2hyb25pemUodHJ1ZSkpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGRlc2NyaXB0aW9uIG9mIGFuIEFQSSByZXF1ZXN0IHRvIGEgcmVzb3VyY2UsIHRvIHVzZSB3aXRoIGBJREVBQVdTQVBJYC5cbiAqIFVzZWQgZm9yIHF1ZXVlcyBvZiByZXF1ZXN0cyAoVVBMT0FEKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBUElSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFJlc291cmNlIHBhdGggKGUuZy4gYHVzZXJzYCBvciBgdGVhbXMvJHt0ZWFtSWR9L3VzZXJzYCkuXG4gICAqL1xuICByZXNvdXJjZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGlkIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgZWxlbWVudCBvZiB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICByZXNvdXJjZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVBJIHJlcXVlc3QgbWV0aG9kIChlLmcuIFBPU1QsIFBVVCwgUEFUQ0gpLlxuICAgKi9cbiAgbWV0aG9kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdC5cbiAgICovXG4gIGJvZHk6IGFueTtcbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gdG8gc2hvdyBmb3IgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIElmIG5vdCBudWxsLCB0aGUgcmVxdWVzdCB0cmllZCB0byBydW4gYnV0IGl0IGVuY291bnRlcmVkIHRoZSBlcnJvci5cbiAgICovXG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhYnN0cmFjdCBjbGFzcyB0byBpbXBsZW1lbnQgZm9yIGVhY2ggcmVzb3VyY2UgdG8gY2FjaGUgb2ZmbGluZSBmcm9tIHRoZSBiYWNrLWVuZCAoRE9XTkxPQUQpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIHRlYW0gb3duaW5nIHRoZSByZXNvdXJjZS5cbiAgICogSWYgbnVsbCwgdGhlIHByb2plY3QgaXNuJ3QgdGVhbXMtYmFzZWQuXG4gICAqL1xuICB0ZWFtSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSByZXNvdXJjZS5cbiAgICovXG4gIHJlc291cmNlOiBEZWx0YVJlc291cmNlcyB8IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBkZXNjcmlwdGlvbiAodHJhbnNsYXRlZCkgZm9yIHRoZSBVSS5cbiAgICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSdW50aW1lIGF0dHJpYnV0ZSB0byBrbm93IGlmIHRoZSByZXNvdXJjZSBpcyBzeW5jaHJvbml6aW5nLlxuICAgKi9cbiAgc3luY2hyb25pemluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRydWUgaWYgb25lIG9mIHRoZSBlbGVtZW50cyBmYWlsZWQgdGhlIGV4ZWN1dGlvbi5cbiAgICovXG4gIGVycm9yOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHJlc291cmNlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc291cmNlID0gcmVzb3VyY2U7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAvLyBsb2FkZWQgYXQgcnVudGltZVxuICAgIHRoaXMudGVhbUlkID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgdG8gYnVpbGQgdGhlIHJlbGF0aXZlIFVSTCB0byB0aGUgcmVzb3VyY2UgKGxpc3QpLlxuICAgKiBFLmcuIGB0ZWFtcy8ke2VsZW1lbnQudGVhbUlkfS9jdXN0b21lcnNgIG9yIGBjdXN0b21lcnNgLlxuICAgKi9cbiAgYWJzdHJhY3QgbGlzdFVSTChlbGVtZW50OiBhbnkpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3cgdG8gYnVpbGQgdGhlIHJlbGF0aXZlIFVSTCB0byB0aGUgcmVzb3VyY2UgZWxlbWVudCAoZGV0YWlsKS5cbiAgICogRS5nLiBgdGVhbXMvJHtlbGVtZW50LnRlYW1JZH0vY3VzdG9tZXJzLyR7ZWxlbWVudC5jdXN0b21lcklkfWAgb3IgYGN1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gLlxuICAgKi9cbiAgYWJzdHJhY3QgZWxlbWVudFVSTChlbGVtZW50OiBhbnkpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3cgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWxlbWVudCBpbiB0aGUgbGlzdCAoYnkgaXRzIGlkcykuXG4gICAqIEUuZy4gYHJldHVybiBsaXN0LmZpbmRJbmRleCh4ID0+IHguY3VzdG9tZXJJZCA9PT0gZWxlbWVudC5jdXN0b21lcklkKTtgXG4gICAqL1xuICBhYnN0cmFjdCBmaW5kSW5kZXhJbkxpc3QobGlzdDogYW55W10sIGVsZW1lbnQ6IGFueSk6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyB0byBrZWVwIHRoZSBsaXN0IHNvcnRlZC5cbiAgICogRS5nLiBgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7YFxuICAgKi9cbiAgYWJzdHJhY3Qgc29ydChhOiBhbnksIGI6IGFueSk6IG51bWJlcjtcbn1cbiJdfQ==
480
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZURhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL29mZmxpbmUvb2ZmbGluZURhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUTtBQUNyRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHFDQUFxQyxDQUFDO0FBQzVFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLCtCQUErQixDQUFDO0FBQzdEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsQ0FBQztBQUNwRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLEdBQUcsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBcURqQztRQXBEVSxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxTQUFJLEdBQUcsTUFB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QURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXFkbEM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFpQjtJQXVCckMsWUFBWSxRQUFnQixFQUFFLFdBQW1CO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0NBc0JGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlbHRhLCBEZWx0YVJlY29yZCwgRGVsdGFSZXNvdXJjZXMsIGVwb2NoRGF0ZVRpbWUgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQVN0b3JhZ2VTZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBV1NBUElTZXJ2aWNlLCBBUElSZXF1ZXN0T3B0aW9uIH0gZnJvbSAnLi4vQVdTQVBJLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURFQU9mZmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9vZmZsaW5lLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFmdGVyIGhvdyBtdWNoIHRpbWUgd2UgbmVlZCB0byByZXF1ZXN0IGEgc3luY2hyb25pc2F0aW9uIHRvIGtlZXAgdGhlIGNvbnRlbnRzIHVwLXRvLWRhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBTWU5DX0VYUElSQVRJT05fSU5URVJWQUwgPSAxMDAwICogNjAgKiA2MCAqIDI0OyAvLyBhIGRheVxuLyoqXG4gKiBQcmVmaXggZm9yIHRoZSBrZXkgb2YgdGhlIEFQSSByZXF1ZXN0cyBxdWV1ZSBpbmZvIGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICovXG5leHBvcnQgY29uc3QgUVVFVUVfQVBJX1JFUVVFU1RTX0tFWSA9ICdJREVBT2ZmbGluZVNlcnZpY2UucXVldWVBUElyZXF1ZXN0cyc7XG4vKipcbiAqIFByZWZpeCBmb3IgdGhlIGtleSBvZiB0aGUgbGFzdCBzeW5jIHRpbWUgaW5mbyBpbiB0aGUgbG9jYWwgc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IExBU1RfU1lOQ19LRVkgPSAnSURFQU9mZmxpbmVTZXJ2aWNlLmxhc3RTeW5jQXQnO1xuLyoqXG4gKiBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBwZXIgcmVzb3VyY2UgdG8gc3luY2hyb25pemUgZHVyaW5nIHRoZSBmaXJzdCBhbmFseXNpcyBvZiBhIHN5bmNocm9uaXNhdGlvbi5cbiAqIElmIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXhjZWVkcyAodGhlcmUgaXMgbW9yZSBkYXRhIGFmdGVyIHRoZSAxc3QgcGFnZSksIHRoZSBvcGVyYXRpb24gcmVxdWlyZSBtYW51YWwgY29uZmlybWF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTlVNX0VMRU1FTlRTX1dJVEhPVVRfTUFOVUFMX1NZTkMgPSAxMDA7XG4vKipcbiAqIFRoZSBtYXggbnVtYmVyIG9mIGVsZW1lbnRzIHBlciByZXNvdXJjZSB0byByZXF1ZXN0IGF0IHRoZSBzYW1lIHRpbWUgZHVyaW5nIGEgbm9ybWFsIHN5bmNocm9uaXNhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE5VTV9FTEVNRU5UU19XSVRIX01BTlVBTF9TWU5DID0gMzAwO1xuXG4vKipcbiAqIE1hbmFnZSB0aGUgb2ZmbGluZSBmdW5jdGlvbmluZyBvZiB0aGUgYXBwJ3MgZGF0YSAodXBsb2FkL2Rvd25sb2FkL3N5bmNocm9uaXphdGlvbikuXG4gKiBOb3RlOiBpdCBpbmNsdWRlcyBhbGwgdGhlIG1ldGhvZHMgb2YgSURFQU9mZmxpbmVTZXJ2aWNlLlxuICpcbiAqIERvd25sb2FkOiBpdCB3b3JrcyB0aHJvdWdoIHRoZSAqKkRlbHRhKiogbWVjaGFuaXNtIG9uIGJhY2stZW5kIHJlc291cmNlcy5cbiAqIFByYWN0aWNhbGx5LCB0aGUgc2VydmljZSBwcmVwYXJlcyBlYWNoIHBvc3NpYmxlIEFQSSBHRVQgcmVxdWVzdHMgZm9yIGVhY2ggb2YgdGhlIGludm9sdmVkIHJlc291cmNlcy5cbiAqIEluIHRoaXMgd2F5LCBpZiBvZmZsaW5lLCB0aGUgQVBJIHNlcnZpY2UgY2FuIGhpdCBhbiBlbGVtZW50IGJ5IFVSTCBpbiB0aGUgY2FjaGUgKHN0b3JhZ2Ugb2ZmbGluZSkuXG4gKlxuICogKipIb3cgdG8gdXNlIGl0KiouIENvbmZpZ3VyZSB0aGUgc3luYyBtZWNoYW5pc20gaW4gdGhlIG1haW4gYXBwLmNvbXBvbmVudCBhcyBpdCBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEltcGxlbWVudCBhIENhY2hlYWJsZVJlc291cmNlIGNsYXNzIGZvciBlYWNoIERlbHRhUmVzb3VyY2UgeW91IHdhbnQgdG8gY2FjaGUgb2ZmbGluZS5cbiAqICAgIDIuIFNldCB1cCB0aGUgc2VydmljZSAoYHNldFVwT2ZmbGluZURhdGFgKS5cbiAqICAgIDMuIFJ1biBhIHN5bmNocm9uaXphdGlvbi5cbiAqICAgIDQuIEFkZCB0aGUgbmF2aWdhdGlvbiB0byB0aGUgT2ZmbGluZSBNYW5hZ2VyIChVSSkuXG4gKiAgICA1LiBPcHRpb25hbGx5LCBwdXNoIG9mZmxpbmUgQVBJIHJlcXVlc3RzIHRvIHRoZSBxdWV1ZSB3aGVuIG9mZmxpbmUuXG4gKlxuICogZS5nLiBvZiBDYWNoZWFibGVSZXNvdXJjZSBjbGFzc2VzOlxuICogYGBgXG4gKiBjbGFzcyBDdXN0b21lckNSIGV4dGVuZHMgQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICogICBjb25zdHJ1Y3RvcihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoRGVsdGFSZXNvdXJjZXMuQ1VTVE9NRVJTLCBkZXNjcmlwdGlvbik7XG4gKiAgIH1cbiAqICAgcHVibGljIGxpc3RVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVyc2A7XG4gKiAgIH1cbiAqICAgcHVibGljIGVsZW1lbnRVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gO1xuICogICB9XG4gKiAgIHB1YmxpYyBmaW5kSW5kZXhJbkxpc3QobGlzdDogQXJyYXk8YW55PiwgZWxlbWVudDogYW55KTogbnVtYmVyIHtcbiAqICAgICByZXR1cm4gbGlzdC5maW5kSW5kZXgoeCA9PiB4LmN1c3RvbWVySWQgPT09IGVsZW1lbnQuY3VzdG9tZXJJZCk7XG4gKiAgIH1cbiAqICAgcHVibGljIHNvcnQoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICogICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICogICB9XG4gKiB9XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSURFQU9mZmxpbmVEYXRhU2VydmljZSB7XG4gIHByb3RlY3RlZCBfc3RvcmFnZSA9IGluamVjdChJREVBU3RvcmFnZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZSA9IGluamVjdChJREVBVHJhbnNsYXRpb25zU2VydmljZSk7XG4gIHByb3RlY3RlZCBfb2ZmbGluZSA9IGluamVjdChJREVBT2ZmbGluZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgX0FQSSA9IGluamVjdChJREVBQVdTQVBJU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiBydW5uaW5nIGEgc3luY2hyb25pemF0aW9uLlxuICAgKi9cbiAgc3luY2hyb25pemluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3luY2hyb25pemF0aW9uLlxuICAgKi9cbiAgbGFzdFN5bmNBdDogZXBvY2hEYXRlVGltZTtcbiAgLyoqXG4gICAqIFRydWUgaWYgYW4gZXJyb3IgaGFwcGVuZWQgaW4gdGhlIGxhc3Qgc3luY2hyb25pemF0aW9uLlxuICAgKi9cbiAgZXJyb3JJbkxhc3RTeW5jOiBib29sZWFuO1xuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgc3luY2hyb25pc2F0aW9uIGlzIHRvbyB2YXN0IGFuZCBzbyByZXF1aXJlIGEgbWFudWFsIGFjdGlvbiBvZiB0aGUgdXNlci5cbiAgICovXG4gIHJlcXVpcmVzTWFudWFsQ29uZmlybWF0aW9uOiBib29sZWFuO1xuICAvKipcbiAgICogSWYgZmFsc2UsIGlnbm9yZSB0aGUgZW50aXJlIHVwbG9hZCBzY2VuYXJpby5cbiAgICovXG4gIHVzZVF1ZXVlQVBJUmVxdWVzdHM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYXJyYXkgb2YgdGhlIHJlcXVlc3RzIG5vdCBleGVjdXRlZCBiZWNhdXNlIHdlIGFyZS93ZXJlIG9mZmxpbmU7IHRoZXkgbmVlZCB0byBydW4gb25jZSBvbmxpbmUuXG4gICAqL1xuICBxdWV1ZUFQSVJlcXVlc3RzOiBBUElSZXF1ZXN0W107XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgdGVhbSBvZiB3aGljaCB0byBtYW5hZ2UgZGF0YSBvZmZsaW5lLlxuICAgKiBJZiBudWxsLCB0aGUgcHJvamVjdCBpc24ndCB0ZWFtcy1iYXNlZC5cbiAgICovXG4gIHByb3RlY3RlZCB0ZWFtSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBhcnJheSBvZiBEZWx0YVJlc291cmNlcyB0byBjYWNoZSBvZmZsaW5lLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc291cmNlczogKERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nKVtdO1xuICAvKipcbiAgICogSGVscGVyIHN0cnVjdHVyZSB0byBtYW5hZ2UgdGhlIENhY2hlYWJsZVJlc291cmNlIGZvciBlYWNoIERlbHRhUmVzb3VyY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FjaGVhYmxlUmVzb3VyY2VzOiB7IFtyZXNvdXJjZTogc3RyaW5nXTogQ2FjaGVhYmxlUmVzb3VyY2UgfTtcbiAgLyoqXG4gICAqIEtleSB0byBhY3F1aXJlIGZyb20gdGhlIHN0b3JhZ2UgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb24gb2YgdGhlIHRlYW0uXG4gICAqL1xuICBwcm90ZWN0ZWQgbGFzdFN5bmNLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIEtleSB0byBhY3F1aXJlIGZyb20gdGhlIHN0b3JhZ2UgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb24gb2YgdGhlIHRlYW0uXG4gICAqL1xuICBwcm90ZWN0ZWQgcXVldWVBUElSZXF1ZXN0S2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzID0gbmV3IEFycmF5PEFQSVJlcXVlc3Q+KCk7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzID0ge307XG4gICAgLy8gc3Vic2NyaWJlIHRvIG5ldHdvcmsgY2hhbmdlc1xuICAgIHRoaXMuX29mZmxpbmUuc3Vic2NyaWJlKGlzT25saW5lID0+IHtcbiAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAvLyB0cnkgYSBzeW5jaHJvbml6YXRpb24gaWYgbmVlZGVkIG9yIGlmIHRoZSBsYXN0IG9uZSBmYWlsZWRcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JJbkxhc3RTeW5jKSB0aGlzLnN5bmNocm9uaXplKCk7XG4gICAgICAgIGVsc2UgdGhpcy5zeW5jaHJvbml6ZUlmTmVlZGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvL1xuICAvLyBORVRXT1JLIFNUQVRVUyBmcm9tIElERUFPZmZsaW5lU2VydmljZVxuICAvL1xuXG4gIC8qKlxuICAgKiBRdWlja2x5IGNoZWNrIHRoZSBjb25uZWN0aW9uIHN0YXR1cy5cbiAgICovXG4gIGlzT25saW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLmlzT25saW5lKCk7XG4gIH1cbiAgLyoqXG4gICAqIFF1aWNrbHkgY2hlY2sgdGhlIGNvbm5lY3Rpb24gc3RhdHVzLlxuICAgKi9cbiAgaXNPZmZsaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLmlzT2ZmbGluZSgpO1xuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIHNlcnZpY2UgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHN1YnNjcmliZShjYWxsYmFjazogKGlzT25saW5lOiBib29sZWFuKSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fb2ZmbGluZS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9XG4gIC8qKlxuICAgKiBRdWlja2x5IGNoZWNrIGZvciBvbmxpbmUgY29ubmVjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBjaGVjaygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fb2ZmbGluZS5jaGVjaygpO1xuICB9XG5cbiAgLy9cbiAgLy8gQ09ORklHVVJBVElPTlxuICAvL1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvZmZsaW5lIG1vZGUgaXMgYWxsb3dlZC4gWW91IGNhbiBjdXN0b21pemUgdGhpcyBmdW5jdGlvbiwgaWYgbmVlZGVkLlxuICAgKi9cbiAgaXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb3VyY2VzLmxlbmd0aDtcbiAgfVxuICAvKipcbiAgICogU2V0IHVwIHRoZSBzZXJ2aWNlIHRvIHVzZSBhbmQgc3luYyBvZmZsaW5lIGRhdGEuXG4gICAqL1xuICBzZXRVcE9mZmxpbmVEYXRhKHRlYW1JZDogc3RyaW5nLCB1c2VRdWV1ZUFQSVJlcXVlc3RzOiBib29sZWFuLCBjYWNoZWFibGVSZXNvdXJjZXM6IENhY2hlYWJsZVJlc291cmNlW10pOiB2b2lkIHtcbiAgICAvLyBzZXQgdGhlIHRlYW1cbiAgICB0aGlzLnRlYW1JZCA9IHRlYW1JZDtcbiAgICAvLyBkZWNpZGUgaWYgdG8gYWxsb3cgY2VydGFpbiBBUEkgcmVxdWVzdCB3aGlsZSBvZmZsaW5lXG4gICAgdGhpcy51c2VRdWV1ZUFQSVJlcXVlc3RzID0gdXNlUXVldWVBUElSZXF1ZXN0cztcbiAgICAvLyBsb2FkIHRoZSBBUEkgcmVxdWVzdCBwZW5kaW5nIHF1ZXVlLCBpZiBhbnlcbiAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdEtleSA9IHRoaXMudGVhbUlkID8gYCR7UVVFVUVfQVBJX1JFUVVFU1RTX0tFWX1fJHt0aGlzLnRlYW1JZH1gIDogUVVFVUVfQVBJX1JFUVVFU1RTX0tFWTtcbiAgICB0aGlzLmxvYWRRdWV1ZUFQSVJlcXVlc3QoKTtcbiAgICAvLyBsb2FkIHRoZSBsYXN0U3luY0F0IGluZm9ybWF0aW9uIGZvciB0aGUgdGVhbVxuICAgIHRoaXMubGFzdFN5bmNLZXkgPSB0aGlzLnRlYW1JZCA/IGAke0xBU1RfU1lOQ19LRVl9XyR7dGhpcy50ZWFtSWR9YCA6IExBU1RfU1lOQ19LRVk7XG4gICAgdGhpcy5sb2FkTGFzdFN5bmNBdCgpO1xuICAgIC8vIGxvYWQgdGhlIGNhY2hlYWJsZSByZXNvdXJjZXNcbiAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBBcnJheTxEZWx0YVJlc291cmNlcyB8IHN0cmluZz4oKTtcbiAgICB0aGlzLmNhY2hlYWJsZVJlc291cmNlcyA9IHt9O1xuICAgIGNhY2hlYWJsZVJlc291cmNlcy5mb3JFYWNoKHIgPT4gdGhpcy5hZGRDYWNoZWFibGVSZXNvdXJjZShyKSk7XG4gIH1cbiAgLyoqXG4gICAqIExvYWQgZnJvbSB0aGUgbG9jYWwgc3RvcmFnZSB0aGUgbGFzdCBzeW5jIGF0IGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGxvYWRMYXN0U3luY0F0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5fc3RvcmFnZS5nZXQodGhpcy5sYXN0U3luY0tleSkudGhlbigobGFzdFN5bmNBdDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMubGFzdFN5bmNBdCA9IGxhc3RTeW5jQXQgPyBOdW1iZXIobGFzdFN5bmNBdCkgOiBudWxsO1xuICAgICAgICByZXNvbHZlKHRoaXMubGFzdFN5bmNBdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIGxhc3Qgc3luYyBhdCBpbmZvIGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNhdmVMYXN0U3luY0F0KGxhc3RTeW5jQXQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGFzdFN5bmNBdCA9IGxhc3RTeW5jQXQ7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2V0KHRoaXMubGFzdFN5bmNLZXksIGxhc3RTeW5jQXQpO1xuICB9XG4gIC8qKlxuICAgKiBBZGQgYSBDYWNoZWFibGVSZXNvdXJjZS5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRDYWNoZWFibGVSZXNvdXJjZShjYWNoZWFibGVSZXNvdXJjZTogQ2FjaGVhYmxlUmVzb3VyY2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZWFtSWQpIGNhY2hlYWJsZVJlc291cmNlLnRlYW1JZCA9IHRoaXMudGVhbUlkO1xuICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW2NhY2hlYWJsZVJlc291cmNlLnJlc291cmNlXSA9IGNhY2hlYWJsZVJlc291cmNlO1xuICAgIHRoaXMucmVzb3VyY2VzLnB1c2goY2FjaGVhYmxlUmVzb3VyY2UucmVzb3VyY2UpO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgYSBDYWNoZWFibGVSZXNvdXJjZSBieSBpdHMgRGVsdGFSZXNvdXJjZS5cbiAgICovXG4gIHByb3RlY3RlZCByZW1vdmVDYWNoZWFibGVSZXNvdXJjZShyZXNvdXJjZTogRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdO1xuICAgIHRoaXMucmVzb3VyY2VzLnNwbGljZSh0aGlzLnJlc291cmNlcy5pbmRleE9mKHJlc291cmNlKSwgMSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgdGhlIERlbHRhUmVzb3VyY2VkIGNvbmZpZ3VyZWQuXG4gICAqL1xuICBnZXRSZXNvdXJjZXMoKTogKERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nKVtdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXM7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIENhY2hlYWJsZVJlc291cmNlIGJ5IGl0cyBEZWx0YVJlc291cmNlLlxuICAgKi9cbiAgZ2V0Q2FjaGVhYmxlUmVzb3VyY2UocmVzb3VyY2U6IERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nKTogQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gIH1cblxuICAvL1xuICAvLyBVUExPQURcbiAgLy9cblxuICAvKipcbiAgICogRXhlY3V0ZSBhbGwgdGhlIEFQSSByZXF1ZXN0cyBpbiB0aGUgcXVldWU7IHRoZSByZXF1ZXN0cyB0ZXJtaW5hdGVkIHdpdGggYW4gZXJyb3Igd2lsbCByZW1haW4gaW4gdGhlIHF1ZXVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJ1blF1ZXVlQVBJUmVxdWVzdHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy51c2VRdWV1ZUFQSVJlcXVlc3RzIHx8IHRoaXMuaXNPZmZsaW5lKCkgfHwgIXRoaXMucXVldWVBUElSZXF1ZXN0cy5sZW5ndGgpIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdHMuZm9yRWFjaChhc3luYyByZXF1ZXN0ID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogQVBJUmVxdWVzdE9wdGlvbiA9IHt9O1xuICAgICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZUlkKSBvcHRpb25zLnJlc291cmNlSWQgPSByZXF1ZXN0LnJlc291cmNlSWQ7XG4gICAgICAgIGlmIChyZXF1ZXN0LmJvZHkpIG9wdGlvbnMuYm9keSA9IHJlcXVlc3QuYm9keTtcbiAgICAgICAgbGV0IHByb21pc2U6IFByb21pc2U8YW55PjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzd2l0Y2ggKHJlcXVlc3QubWV0aG9kLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ1BPU1QnOlxuICAgICAgICAgICAgICBwcm9taXNlID0gYXdhaXQgdGhpcy5fQVBJLnBvc3RSZXNvdXJjZShyZXF1ZXN0LnJlc291cmNlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQVVQnOlxuICAgICAgICAgICAgICBwcm9taXNlID0gYXdhaXQgdGhpcy5fQVBJLnB1dFJlc291cmNlKHJlcXVlc3QucmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBVENIJzpcbiAgICAgICAgICAgICAgcHJvbWlzZSA9IGF3YWl0IHRoaXMuX0FQSS5wYXRjaFJlc291cmNlKHJlcXVlc3QucmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFwcm9taXNlKSByZXF1ZXN0LmVycm9yID0gJ0lOVkFMSURfTUVUSE9EJztcbiAgICAgICAgICBlbHNlIHJlcXVlc3QuZXJyb3IgPSBudWxsO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICByZXF1ZXN0LmVycm9yID0gKGVyciBhcyBFcnJvcikubWVzc2FnZSB8fCAnVU5LTk9XTl9FUlJPUic7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8ga2VlcCB0aGUgcmVxdWVzdHMgTk9UIHN1Y2Nlc3NmdWxseSBleGVjdXRlZFxuICAgICAgdGhpcy5zYXZlUXVldWVBUElSZXF1ZXN0KHRoaXMucXVldWVBUElSZXF1ZXN0cy5maWx0ZXIoeCA9PiB4LmVycm9yKSkudGhlbigoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgdGhlIGVudGlyZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWxcbiAgICAgICAgaWYgKHRoaXMucXVldWVBUElSZXF1ZXN0cy5sZW5ndGgpIHJlamVjdCgpO1xuICAgICAgICBlbHNlIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBMb2FkIGZyb20gdGhlIGxvY2FsIHN0b3JhZ2UgdGhlIEFQSSByZXF1ZXN0cyBxdWV1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBsb2FkUXVldWVBUElSZXF1ZXN0KCk6IFByb21pc2U8QVBJUmVxdWVzdFtdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVzZVF1ZXVlQVBJUmVxdWVzdHMpIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgIHRoaXMuX3N0b3JhZ2UuZ2V0KHRoaXMucXVldWVBUElSZXF1ZXN0S2V5KS50aGVuKChxdWV1ZTogQVBJUmVxdWVzdFtdKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cyA9IHF1ZXVlIHx8IFtdO1xuICAgICAgICByZXNvbHZlKHRoaXMucXVldWVBUElSZXF1ZXN0cyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIHRoZSBxdWV1ZSBpbiBtZW1vcnkgYW5kIGFsc28gc2F2ZSB0aGUgY29weSBpbiB0aGUgbG9jYWwgc3RvcmFnZS5cbiAgICovXG4gIHNhdmVRdWV1ZUFQSVJlcXVlc3QocXVldWU/OiBBUElSZXF1ZXN0W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaXNBbGxvd2VkKCkpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cyA9IHF1ZXVlIHx8IHRoaXMucXVldWVBUElSZXF1ZXN0cztcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5zZXQodGhpcy5xdWV1ZUFQSVJlcXVlc3RLZXksIHRoaXMucXVldWVBUElSZXF1ZXN0cyk7XG4gIH1cbiAgLyoqXG4gICAqIERlbGV0ZSBhIHJlcXVlc3Qgc3R1Y2sgaW4gYW4gZXJyb3IuXG4gICAqL1xuICBkZWxldGVSZXF1ZXN0KHJlcXVlc3Q6IEFQSVJlcXVlc3QpIHtcbiAgICBpZiAoIXRoaXMuaXNBbGxvd2VkKCkpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdHMuc3BsaWNlKHRoaXMucXVldWVBUElSZXF1ZXN0cy5pbmRleE9mKHJlcXVlc3QpLCAxKTtcbiAgICAgIHRoaXMuc2F2ZVF1ZXVlQVBJUmVxdWVzdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIERPV05MT0FEXG4gIC8vXG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIHJlY29yZHMgb2YgYSBkZWx0YSBhbmQsIGlmIHRoZSBsYXR0ZXIgaGFzIG1vcmUgcGFnZXMsIGdvIHJlY3Vyc2l2ZS5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzeW5jRGVsdGFSZWNvcmRzKGRlbHRhOiBEZWx0YSwgZG9uZT86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gZm9yIGVhY2ggcmVzb3VyY2UsIHdlIHJlc2V0IHRoZSBzdGF0dXM7IGlmIGEgcmVzb3VyY2Ugc3RpbGwgbmVlZCB0byBiZSBzeW5jaHJvbml6ZWQsIGl0IHdpbGwgYmUgZmxhZ2dlZCBiZWxvd1xuICAgIHRoaXMucmVzb3VyY2VzLmZvckVhY2gocmVzb3VyY2UgPT4ge1xuICAgICAgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdLmVycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV0uc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICAvLyBzeW5jaHJvbnplIGVhY2ggb2YgdGhlIHJlc291cmNlcyBpbmNsdWRlZCBpbiB0aGUgZGVsdGE7IHRoaXMgZXhlY3V0aW9uIGNhbiBnbyBpbiBwYXJhbGxlbFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGRlbHRhLnJlc291cmNlcy5tYXAoYXN5bmMgcmVzb3VyY2UgPT4ge1xuICAgICAgICAgIGNvbnN0IGNyID0gdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdO1xuICAgICAgICAgIGlmIChjcikge1xuICAgICAgICAgICAgLy8gc3luY2hyb25pemUgdGhlIGRlbHRhIHJlY29yZHM7IG5vdGU6IHRoZSBleGVjdXR1aW9uIGluc2lkZSBhIHJlc291cmNlIG11c3QgZ28gaW4gc2VyaWVzXG4gICAgICAgICAgICBjci5zeW5jaHJvbml6aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnN5bmNSZXNvdXJjZURlbHRhUmVjb3JkcyhyZXNvdXJjZSwgZGVsdGEucmVjb3Jkc1tyZXNvdXJjZV0pO1xuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIC8vIGlmIHRoZXJlIHdlcmUgZXJyb3Igb2YgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHN5bmMsIHdlIGFyZSBkb25lXG4gICAgICBpZiAodGhpcy5lcnJvckluTGFzdFN5bmMgfHwgIWRlbHRhLm5leHQpIHJldHVybiBkb25lKCk7XG4gICAgICAvLyBvdGhlcndpc2UsIGdldCB0aGUgbmV4dCBwYWdlIG9mIHRoZSBkZWx0YSBhbmQgZ28gcmVjdXJzaXZlIHVudGlsIHdlIGFyZSBkb25lXG4gICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgbmV4dDogZGVsdGEubmV4dCwgbGltaXQ6IE5VTV9FTEVNRU5UU19XSVRIX01BTlVBTF9TWU5DIH07XG4gICAgICBpZiAodGhpcy5sYXN0U3luY0F0KSBwYXJhbXMuc2luY2UgPSB0aGlzLmxhc3RTeW5jQXQ7XG4gICAgICBjb25zdCBuZXdEZWx0YSA9IGF3YWl0IHRoaXMuX0FQSS5nZXRSZXNvdXJjZSh0aGlzLnRlYW1JZCA/IGB0ZWFtcy8ke3RoaXMudGVhbUlkfS9kZWx0YWAgOiAnZGVsdGEnLCB7IHBhcmFtcyB9KTtcbiAgICAgIHRoaXMuc3luY0RlbHRhUmVjb3JkcyhuZXdEZWx0YSwgZG9uZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywgc3RvcHMgdGhlIG9wZXJhdGlvbiwgc2luY2Ugd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGVudGlyZSBmbG93IGlzIGNvbnNpc3RlbnRcbiAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgIHJldHVybiBkb25lKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTYXZlIG9mZmxpbmUgYSBsaXN0IG9mIERlbHRhUmVjb3JkcyBmb3IgdGhpcyByZXNvdXJjZSwgY3JlYXRpbmcgYSBtYXAgb2YgYWxsIHRoZSBjb3JyZXNwb25kaW5nIEFQSSBHRVQgcmVxdWVzdHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgc3luY1Jlc291cmNlRGVsdGFSZWNvcmRzKHJlc291cmNlOiBzdHJpbmcsIHJlY29yZHM6IERlbHRhUmVjb3JkW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBhY3F1aXJlIHRoZSBpbmZvIGFuIGEgY2FjaGVhYmxlIHJlc291cmNlXG4gICAgY29uc3QgY3IgPSB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gICAgaWYgKCFjcikgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgLy8gcHJlcGFyZSBoZWxwZXJzIHRvIGdyb3VwIGV4ZWN1dGlvbnMgb2YgZWxlbWVudHMgb2YgdGhlIHNhbWUgbGlzdFxuICAgICAgbGV0IGxpc3Q6IGFueVtdID0gbnVsbCxcbiAgICAgICAgb2xkTGlzdFVSTDogc3RyaW5nID0gbnVsbDtcbiAgICAgIGZvciAoY29uc3QgciBvZiByZWNvcmRzKSB7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgVVJMIHRvIGFjY2VzcyB0aGUgQVBJIHJlcXVlc3Qga2V5IGZvciB0aGlzIGVsZW1lbnRcbiAgICAgICAgY29uc3QgZWxlbWVudFVSTCA9IGNyLmVsZW1lbnRVUkwoci5lbGVtZW50KTtcbiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgd2FzIGRlbGV0ZWQgKGJhc2VkIG9uIGRlbHRhKSwgZGVsZXRlIGl0cyBjb3JyZXNwb25kaW5nIEFQSSBHRVQgcmVxdWVzdFxuICAgICAgICBpZiAoci5kZWxldGVkKSBhd2FpdCB0aGlzLl9BUEkuZGVsZXRlRnJvbUNhY2hlKGVsZW1lbnRVUkwpO1xuICAgICAgICAvLyBvdGhlcndpc2UsIHVwZGF0ZSBpdFxuICAgICAgICBlbHNlIGF3YWl0IHRoaXMuX0FQSS5wdXRJbkNhY2hlKGVsZW1lbnRVUkwsIHIuZWxlbWVudCk7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgVVJMcyB0byBhY2Nlc3MgdGhlIEFQSSByZXF1ZXN0IGtleSBmb3IgdGhpcyBlbGVtZW50J3MgbGlzdFxuICAgICAgICBjb25zdCBsaXN0VVJMID0gY3IubGlzdFVSTChyLmVsZW1lbnQpO1xuICAgICAgICAvLyB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSwgZ2V0L3NvcnQvc2F2ZSB0aGUgbGlzdCBvbmx5IHdoZW4gaXQgY2hhbmdlcyBmcm9tIHRoZSBwcmV2aW91cyBlbGVtZW50J3Mgb25lLlxuICAgICAgICBpZiAobGlzdFVSTCAhPT0gb2xkTGlzdFVSTCkge1xuICAgICAgICAgIC8vIHNraXAgZmlyc3QgY3ljbGUgKG9sZExpc3RVUkwgPT09IG51bGwpXG4gICAgICAgICAgaWYgKG9sZExpc3RVUkwpIHtcbiAgICAgICAgICAgIC8vIHJlLXNvcnQgdGhlIGxpc3Q7IG5vdGU6IGl0IHNob3VsZCBiZSBzb3J0ZWQgZnJvbSB0aGUgbGFzdCB0aW1lLCBzbyB3ZSBvbmx5IG1hbmFnZSB0aGUgbmV3IGVsZW1lbnRcbiAgICAgICAgICAgIGxpc3QgPSBsaXN0LnNvcnQoY3Iuc29ydCk7XG4gICAgICAgICAgICAvLyBzYXZlIHRoZSB1cGRhdGVkIGxpc3RcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX0FQSS5wdXRJbkNhY2hlKG9sZExpc3RVUkwsIGxpc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBnZXQgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZnJvbSB0aGUgbG9jYWwgc3RvcmFnZSBieSB0aGUgY2FsY3VsYXRlZCBVUkxcbiAgICAgICAgICBsaXN0ID0gYXdhaXQgdGhpcy5fQVBJLmdldEZyb21DYWNoZShsaXN0VVJMKTtcbiAgICAgICAgICAvLyBzYXZlIHRoZSByZWZlcmVuY2UgdG8gdGhlIGxpc3QgZm9yIHRoZSBuZXh0IGN5Y2xlXG4gICAgICAgICAgb2xkTGlzdFVSTCA9IGxpc3RVUkw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmluZCBpbiB0aGUgbGlzdCB0aGUgZWxlbWVudCB3ZSB3YW50IHRvIG1hbmFnZVxuICAgICAgICBjb25zdCBpbmRleCA9IGNyLmZpbmRJbmRleEluTGlzdChsaXN0LCByLmVsZW1lbnQpO1xuICAgICAgICAvLyBkZWxldGUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgbGlzdFxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIC8vIGlmIHRoZSBlbGVtZW50IHdhc24ndCBkZWxldGVkIChmb2xsb3dpbmcgdGhlIGRlbHRhIHJlY29yZCBpbmZvcm1hdGlvbiksIGluc2VydCB0aGUgbmV3IHZlcnNpb25cbiAgICAgICAgaWYgKCFyLmRlbGV0ZWQpIGxpc3QucHVzaChyLmVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgLy8gaW4gY2FzZSB0aGVyZSB3ZXJlIGVsZW1lbnRzLCBzYXZlIHRoZSBsYXN0IGVsZW1lbnQncyBsaXN0XG4gICAgICBpZiAob2xkTGlzdFVSTCkge1xuICAgICAgICAvLyByZS1zb3J0IHRoZSBsaXN0OyBub3RlOiBpdCBzaG91bGQgYmUgc29ydGVkIGZyb20gdGhlIGxhc3QgdGltZSwgc28gd2Ugb25seSBtYW5hZ2UgdGhlIG5ldyBlbGVtZW50XG4gICAgICAgIGxpc3QgPSBsaXN0LnNvcnQoY3Iuc29ydCk7XG4gICAgICAgIC8vIHNhdmUgdGhlIHVwZGF0ZWQgbGlzdFxuICAgICAgICBhd2FpdCB0aGlzLl9BUEkucHV0SW5DYWNoZShvbGRMaXN0VVJMLCBsaXN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywgc3RvcHMgdGhlIG9wZXJhdGlvbiwgc2luY2Ugd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGVudGlyZSBmbG93IGlzIGNvbnNpc3RlbnRcbiAgICAgIGNyLmVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIFNZTkNIUk9OSVNBVElPTiAoVVBMT0FEK0RPV05MT0FEKVxuICAvL1xuXG4gIC8qKlxuICAgKiBSdW4gYSBzeW5jLCBidXQgb25seSBpZiBuZWVkZWQsIGkuZS4gdGhlIGNhY2hlZCBjb250ZW50IGV4cGlyZWQgb3Igd2UgaGF2ZSBwZW5kaW5nIEFQSSByZXF1ZXN0cyBpbiB0aGUgcXVldWUuXG4gICAqL1xuICBzeW5jaHJvbml6ZUlmTmVlZGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNBbGxvd2VkKCkpIHJldHVybjtcbiAgICAgIHRoaXMubG9hZExhc3RTeW5jQXQoKS50aGVuKFxuICAgICAgICAoKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgICAgICAgIHRoaXMubG9hZFF1ZXVlQVBJUmVxdWVzdCgpXG4gICAgICAgICAgICAudGhlbigoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnF1ZXVlQVBJUmVxdWVzdHMubGVuZ3RoIHx8IERhdGUubm93KCkgPiB0aGlzLmxhc3RTeW5jQXQgKyBTWU5DX0VYUElSQVRJT05fSU5URVJWQUwpXG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZSgpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFN5bmNocm9uaXphdGlvbiBvZiB0aGUgd2hvbGUgc2V0IG9mIHJlc291cmNlcyAodXBsb2FkK2Rvd25sb2FkKS5cbiAgICogQHBhcmFtIG1hbnVhbENvbmZpcm1hdGlvbiBpZiB0cnVlLCB0aGUgcmVxdWVzdCBjb21lcyBkaXJlY3RseSBmcm9tIGEgdXNlciBhY3Rpb24gKG5vdCBhdXRvbWF0aWMgcHJvY2VkdXJlcykuXG4gICAqL1xuICBzeW5jaHJvbml6ZShtYW51YWxDb25maXJtYXRpb24/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSB8fCB0aGlzLnN5bmNocm9uaXppbmcpIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSB0cnVlO1xuICAgICAgdGhpcy5lcnJvckluTGFzdFN5bmMgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVxdWlyZXNNYW51YWxDb25maXJtYXRpb24gPSBmYWxzZTtcbiAgICAgIC8vIGxvYWQgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb25cbiAgICAgIHRoaXMubG9hZExhc3RTeW5jQXQoKS50aGVuKFxuICAgICAgICAoKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgICAgICAgIC8vIHRyeSB0byBydW4gYWxsIHRoZSBwZW5kaW5nIEFQSSByZXF1ZXN0cyBpbiB0aGUgcXVldWUsIGkuZS4gdXBsb2FkaW5nIHRoZSBvZmZsaW5lIHJlc291cmNlcyBjaGFuZ2VkXG4gICAgICAgICAgdGhpcy5ydW5RdWV1ZUFQSVJlcXVlc3RzKClcbiAgICAgICAgICAgIC50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgLy8gc2V0IHRoaXMgbW9tZW50IGluIHRpbWU6IGlmIGFueXRoaW5nIGhhcHBlbmVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzeW5jLCB3ZSBkb24ndCBsb3NlIGZyZXNoIGRhdGFcbiAgICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgLy8gcHJlcGFyZSBhIGZpcnN0IFwic2hvcnRcIiBEZWx0YSByZXF1ZXN0LCB0byBzZWUgaWYgdGhlcmUgaXMgYSBsb3Qgb2YgZGF0YSB0byBwcm9jZXNzXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0geyBsaW1pdDogTlVNX0VMRU1FTlRTX1dJVEhPVVRfTUFOVUFMX1NZTkMgfTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMubGFzdFN5bmNBdCkgcGFyYW1zLnNpbmNlID0gdGhpcy5sYXN0U3luY0F0O1xuICAgICAgICAgICAgICB0aGlzLl9BUElcbiAgICAgICAgICAgICAgICAuZ2V0UmVzb3VyY2UodGhpcy50ZWFtSWQgPyBgdGVhbXMvJHt0aGlzLnRlYW1JZH0vZGVsdGFgIDogJ2RlbHRhJywgeyBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoZGVsdGE6IERlbHRhKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBkZWNpZGUgaWYgdG8gcHJvY2VlZCB3aXRoIHRoZSBzeW5jOiBpbiBjYXNlIHRoZXJlIGlzIGFub3RoZXIgcGFnZSwgaXQgcmVxdWlyZXMgYSBtYW51YWwgY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICBpZiAoZGVsdGEubmV4dCAmJiAhbWFudWFsQ29uZmlybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZXNNYW51YWxDb25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8vIHNhdmUgdGhlIHJlY29yZHMgaW4gdGhlIGRlbHRhIGFuZCByZXF1ZXN0IHBvc3NpYmxlIG5ldyBwYWdlc1xuICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jRGVsdGFSZWNvcmRzKGRlbHRhLCAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVycm9ySW5MYXN0U3luYykge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBhbGwgdGhlIHJlc291cmNlcyBhcmUgc3VjY2VzZnVsbHkgaW4gc3luY1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb3VyY2VzLmZvckVhY2gocmVzb3VyY2UgPT4gKHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXS5zeW5jaHJvbml6aW5nID0gZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHRpbWVzdGFtcCBvZiBsYXN0IHN5bmNcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVMYXN0U3luY0F0KG5vdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBzYXZlIHRoZSBsYXN0IHN5bmMgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBhY3F1aXJlIG5ldyBpbmZvcm1hdGlvbiAoRGVsdGEpXG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIC8vIHdlIHN0b3AsIHNpbmNlIHdlIGRvbid0IHdhbnQgYmFja2VuZCBkYXRhIHRvIG92ZXJyaWRlIGxvY2FsIGluZm8gbm90IHlldCB1cGxvYWRlZFxuICAgICAgICAgICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBGb3JjZSBhIGZ1bGwgc3luY2hyb25pc2F0aW9uLlxuICAgKi9cbiAgZm9yY2VGdWxsU3luYygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdG9yYWdlLmNsZWFyKCkudGhlbigoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLnN5bmNocm9uaXplKHRydWUpKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiBvZiBhbiBBUEkgcmVxdWVzdCB0byBhIHJlc291cmNlLCB0byB1c2Ugd2l0aCBgSURFQUFXU0FQSWAuXG4gKiBVc2VkIGZvciBxdWV1ZXMgb2YgcmVxdWVzdHMgKFVQTE9BRCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVBJUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBSZXNvdXJjZSBwYXRoIChlLmcuIGB1c2Vyc2Agb3IgYHRlYW1zLyR7dGVhbUlkfS91c2Vyc2ApLlxuICAgKi9cbiAgcmVzb3VyY2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpZCB0byBpZGVudGlmeSBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIHJlc291cmNlLlxuICAgKi9cbiAgcmVzb3VyY2VJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFQSSByZXF1ZXN0IG1ldGhvZCAoZS5nLiBQT1NULCBQVVQsIFBBVENIKS5cbiAgICovXG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBib2R5OiBhbnk7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIHRvIHNob3cgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBub3QgbnVsbCwgdGhlIHJlcXVlc3QgdHJpZWQgdG8gcnVuIGJ1dCBpdCBlbmNvdW50ZXJlZCB0aGUgZXJyb3IuXG4gICAqL1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYWJzdHJhY3QgY2xhc3MgdG8gaW1wbGVtZW50IGZvciBlYWNoIHJlc291cmNlIHRvIGNhY2hlIG9mZmxpbmUgZnJvbSB0aGUgYmFjay1lbmQgKERPV05MT0FEKS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhY2hlYWJsZVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSB0ZWFtIG93bmluZyB0aGUgcmVzb3VyY2UuXG4gICAqIElmIG51bGwsIHRoZSBwcm9qZWN0IGlzbid0IHRlYW1zLWJhc2VkLlxuICAgKi9cbiAgdGVhbUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICByZXNvdXJjZTogRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgZGVzY3JpcHRpb24gKHRyYW5zbGF0ZWQpIGZvciB0aGUgVUkuXG4gICAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogUnVudGltZSBhdHRyaWJ1dGUgdG8ga25vdyBpZiB0aGUgcmVzb3VyY2UgaXMgc3luY2hyb25pemluZy5cbiAgICovXG4gIHN5bmNocm9uaXppbmc6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcnVlIGlmIG9uZSBvZiB0aGUgZWxlbWVudHMgZmFpbGVkIHRoZSBleGVjdXRpb24uXG4gICAqL1xuICBlcnJvcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihyZXNvdXJjZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNvdXJjZSA9IHJlc291cmNlO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgLy8gbG9hZGVkIGF0IHJ1bnRpbWVcbiAgICB0aGlzLnRlYW1JZCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSG93IHRvIGJ1aWxkIHRoZSByZWxhdGl2ZSBVUkwgdG8gdGhlIHJlc291cmNlIChsaXN0KS5cbiAgICogRS5nLiBgdGVhbXMvJHtlbGVtZW50LnRlYW1JZH0vY3VzdG9tZXJzYCBvciBgY3VzdG9tZXJzYC5cbiAgICovXG4gIGFic3RyYWN0IGxpc3RVUkwoZWxlbWVudDogYW55KTogc3RyaW5nO1xuICAvKipcbiAgICogSG93IHRvIGJ1aWxkIHRoZSByZWxhdGl2ZSBVUkwgdG8gdGhlIHJlc291cmNlIGVsZW1lbnQgKGRldGFpbCkuXG4gICAqIEUuZy4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gIG9yIGBjdXN0b21lcnMvJHtlbGVtZW50LmN1c3RvbWVySWR9YC5cbiAgICovXG4gIGFic3RyYWN0IGVsZW1lbnRVUkwoZWxlbWVudDogYW55KTogc3RyaW5nO1xuICAvKipcbiAgICogSG93IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGFuIGVsZW1lbnQgaW4gdGhlIGxpc3QgKGJ5IGl0cyBpZHMpLlxuICAgKiBFLmcuIGByZXR1cm4gbGlzdC5maW5kSW5kZXgoeCA9PiB4LmN1c3RvbWVySWQgPT09IGVsZW1lbnQuY3VzdG9tZXJJZCk7YFxuICAgKi9cbiAgYWJzdHJhY3QgZmluZEluZGV4SW5MaXN0KGxpc3Q6IGFueVtdLCBlbGVtZW50OiBhbnkpOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3cgdG8ga2VlcCB0aGUgbGlzdCBzb3J0ZWQuXG4gICAqIEUuZy4gYHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO2BcbiAgICovXG4gIGFic3RyYWN0IHNvcnQoYTogYW55LCBiOiBhbnkpOiBudW1iZXI7XG59XG4iXX0=