@entake/particle 17.0.0 → 17.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/modules/profile-pic/profile-pic.component.d.ts +9 -8
- package/app/modules/rich-text/rich-text-capabilities.model.d.ts +1 -0
- package/app/modules/rich-text/rich-text.component.d.ts +2 -0
- package/app/shared/models/particle-component-text.model.d.ts +2 -0
- package/esm2022/app/modules/dropdown/dropdown.component.mjs +2 -2
- package/esm2022/app/modules/multi-select/multi-select.component.mjs +2 -2
- package/esm2022/app/modules/profile-pic/profile-pic.component.mjs +25 -24
- package/esm2022/app/modules/rich-text/rich-text-capabilities.model.mjs +1 -1
- package/esm2022/app/modules/rich-text/rich-text.component.mjs +26 -7
- package/esm2022/app/modules/theming/services/theming.service.mjs +4 -1
- package/esm2022/app/shared/models/particle-component-text.model.mjs +1 -1
- package/fesm2022/entake-particle.mjs +56 -33
- package/fesm2022/entake-particle.mjs.map +1 -1
- package/package.json +2 -1
- package/particle.css +1 -1
|
@@ -4,6 +4,7 @@ import StarterKit from '@tiptap/starter-kit';
|
|
|
4
4
|
import Link from '@tiptap/extension-link';
|
|
5
5
|
import Placeholder from '@tiptap/extension-placeholder';
|
|
6
6
|
import TextAlign from '@tiptap/extension-text-align';
|
|
7
|
+
import Image from '@tiptap/extension-image';
|
|
7
8
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@angular/common";
|
|
@@ -45,19 +46,23 @@ export class RichTextComponent {
|
|
|
45
46
|
modifyLink: 'Modify Link',
|
|
46
47
|
cancel: 'Cancel',
|
|
47
48
|
update: 'Update',
|
|
48
|
-
url: 'URL'
|
|
49
|
+
url: 'URL',
|
|
50
|
+
addImage: 'Add Image',
|
|
51
|
+
modifyImage: 'Modify Image'
|
|
49
52
|
};
|
|
50
53
|
capabilities = {
|
|
51
54
|
heading: true,
|
|
52
55
|
textDecoration: true,
|
|
53
56
|
list: true,
|
|
54
57
|
alignment: true,
|
|
55
|
-
link: true
|
|
58
|
+
link: true,
|
|
59
|
+
images: false
|
|
56
60
|
};
|
|
57
61
|
borderRadius = '0px';
|
|
58
62
|
textChanged = new EventEmitter();
|
|
59
63
|
showDialog = null;
|
|
60
64
|
dialogLink = null;
|
|
65
|
+
dialogType = null;
|
|
61
66
|
/**
|
|
62
67
|
* Function called on change
|
|
63
68
|
*/
|
|
@@ -84,7 +89,8 @@ export class RichTextComponent {
|
|
|
84
89
|
}),
|
|
85
90
|
Placeholder.configure({
|
|
86
91
|
placeholder: () => this.placeholder
|
|
87
|
-
})
|
|
92
|
+
}),
|
|
93
|
+
Image
|
|
88
94
|
],
|
|
89
95
|
editorProps: {
|
|
90
96
|
attributes: {
|
|
@@ -140,6 +146,13 @@ export class RichTextComponent {
|
|
|
140
146
|
const previousUrl = this.editor.getAttributes('link').href;
|
|
141
147
|
this.showDialog = {};
|
|
142
148
|
this.dialogLink = previousUrl;
|
|
149
|
+
this.dialogType = 'link';
|
|
150
|
+
}
|
|
151
|
+
openImageDialog() {
|
|
152
|
+
const previousUrl = this.editor.getAttributes('image').src;
|
|
153
|
+
this.showDialog = {};
|
|
154
|
+
this.dialogLink = previousUrl;
|
|
155
|
+
this.dialogType = 'image';
|
|
143
156
|
}
|
|
144
157
|
changeEditorLink(action) {
|
|
145
158
|
switch (action) {
|
|
@@ -147,12 +160,18 @@ export class RichTextComponent {
|
|
|
147
160
|
this.editor.chain().focus().extendMarkRange('link').unsetLink().run();
|
|
148
161
|
break;
|
|
149
162
|
case 'save':
|
|
150
|
-
|
|
163
|
+
if (this.dialogType === 'link') {
|
|
164
|
+
this.editor.chain().focus().extendMarkRange('link').setLink({ href: this.dialogLink, target: '_blank' }).run();
|
|
165
|
+
}
|
|
166
|
+
else if (this.dialogType === 'image') {
|
|
167
|
+
this.editor.chain().focus().setImage({ src: this.dialogLink }).run();
|
|
168
|
+
}
|
|
151
169
|
break;
|
|
152
170
|
default:
|
|
153
171
|
console.log(action);
|
|
154
172
|
}
|
|
155
173
|
this.dialogLink = null;
|
|
174
|
+
this.dialogType = null;
|
|
156
175
|
this.showDialog = null;
|
|
157
176
|
}
|
|
158
177
|
focus(position) {
|
|
@@ -162,11 +181,11 @@ export class RichTextComponent {
|
|
|
162
181
|
this.editor.commands.focus(position);
|
|
163
182
|
}
|
|
164
183
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: RichTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
165
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: RichTextComponent, selector: "particle-rich-text", inputs: { placeholder: "placeholder", hideControls: "hideControls", height: "height", readonly: "readonly", text: "text", capabilities: "capabilities", borderRadius: "borderRadius" }, outputs: { textChanged: "textChanged" }, providers: [RICH_TEXT_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\" *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.heading\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.textDecoration\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.list\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.alignment\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center pad_5\" *ngIf=\"capabilities.link\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"text.modifyLink\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".ProseMirror:focus{outline:none}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;pointer-events:none}.chip_size{display:flex;align-items:center;justify-content:center;width:22px;height:22px;max-width:22px;max-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[particleTooltip]", inputs: ["particleTooltip", "tooltipPosition", "tooltipDisabled"] }, { kind: "directive", type: i3.EditorDirective, selector: "tiptap[editor], [tiptap][editor], tiptap-editor[editor], [tiptapEditor][editor]", inputs: ["editor", "outputFormat"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.DialogComponent, selector: "particle-dialog", inputs: ["object", "title", "titleClass", "showTitle", "allowClose", "bodyClass", "height", "width", "borderRadius", "text"], outputs: ["closed", "opened"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
184
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: RichTextComponent, selector: "particle-rich-text", inputs: { placeholder: "placeholder", hideControls: "hideControls", height: "height", readonly: "readonly", text: "text", capabilities: "capabilities", borderRadius: "borderRadius" }, outputs: { textChanged: "textChanged" }, providers: [RICH_TEXT_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <ng-container *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\">\r\n <ng-container *ngIf=\"capabilities.heading\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.textDecoration\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.list\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.alignment\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.link\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.images\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"image\"\r\n [attr.aria-label]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n (click)=\"openImageDialog()\"\r\n [particleTooltip]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n tooltipPosition=\"top\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('image') }\"\r\n >\r\n <i class=\"far fa-image fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <div class=\"col v_center pad_5\">\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"dialogType === 'link' ? text.modifyLink : text.modifyImage\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".ProseMirror:focus{outline:none}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;pointer-events:none}.chip_size{display:flex;align-items:center;justify-content:center;width:22px;height:22px;max-width:22px;max-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[particleTooltip]", inputs: ["particleTooltip", "tooltipPosition", "tooltipDisabled"] }, { kind: "directive", type: i3.EditorDirective, selector: "tiptap[editor], [tiptap][editor], tiptap-editor[editor], [tiptapEditor][editor]", inputs: ["editor", "outputFormat"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.DialogComponent, selector: "particle-dialog", inputs: ["object", "title", "titleClass", "showTitle", "allowClose", "bodyClass", "height", "width", "borderRadius", "text"], outputs: ["closed", "opened"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
166
185
|
}
|
|
167
186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: RichTextComponent, decorators: [{
|
|
168
187
|
type: Component,
|
|
169
|
-
args: [{ selector: 'particle-rich-text', providers: [RICH_TEXT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\" *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.heading\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.textDecoration\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.list\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.alignment\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center pad_5\" *ngIf=\"capabilities.link\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"text.modifyLink\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".ProseMirror:focus{outline:none}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;pointer-events:none}.chip_size{display:flex;align-items:center;justify-content:center;width:22px;height:22px;max-width:22px;max-height:22px}\n"] }]
|
|
188
|
+
args: [{ selector: 'particle-rich-text', providers: [RICH_TEXT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <ng-container *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\">\r\n <ng-container *ngIf=\"capabilities.heading\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.textDecoration\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.list\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.alignment\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.link\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.images\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"image\"\r\n [attr.aria-label]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n (click)=\"openImageDialog()\"\r\n [particleTooltip]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n tooltipPosition=\"top\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('image') }\"\r\n >\r\n <i class=\"far fa-image fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <div class=\"col v_center pad_5\">\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"dialogType === 'link' ? text.modifyLink : text.modifyImage\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".ProseMirror:focus{outline:none}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;pointer-events:none}.chip_size{display:flex;align-items:center;justify-content:center;width:22px;height:22px;max-width:22px;max-height:22px}\n"] }]
|
|
170
189
|
}], propDecorators: { placeholder: [{
|
|
171
190
|
type: Input
|
|
172
191
|
}], hideControls: [{
|
|
@@ -184,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
|
|
|
184
203
|
}], textChanged: [{
|
|
185
204
|
type: Output
|
|
186
205
|
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9yaWNoLXRleHQvcmljaC10ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9yaWNoLXRleHQvcmljaC10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sSUFBSSxNQUFNLHdCQUF3QixDQUFDO0FBQzFDLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sU0FBUyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUt2RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBUTtJQUMzQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBVUYsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBR2pCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFHckIsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUVqQixJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQWlCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FB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QkFEVixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0VkaXRvcn0gZnJvbSAnQHRpcHRhcC9jb3JlJztcclxuaW1wb3J0IFN0YXJ0ZXJLaXQgZnJvbSAnQHRpcHRhcC9zdGFydGVyLWtpdCc7XHJcbmltcG9ydCBMaW5rIGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLWxpbmsnO1xyXG5pbXBvcnQgUGxhY2Vob2xkZXIgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tcGxhY2Vob2xkZXInO1xyXG5pbXBvcnQgVGV4dEFsaWduIGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtYWxpZ24nO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1JpY2hUZXh0RWRpdG9yVGV4dH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9wYXJ0aWNsZS1jb21wb25lbnQtdGV4dC5tb2RlbCc7XHJcbmltcG9ydCB7UmljaFRleHRDYXBhYmlsaXRpZXN9IGZyb20gJy4vcmljaC10ZXh0LWNhcGFiaWxpdGllcy5tb2RlbCc7XHJcbmltcG9ydCB7VGhlbWluZ1NlcnZpY2V9IGZyb20gJy4uL3RoZW1pbmcvc2VydmljZXMvdGhlbWluZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSSUNIX1RFWFRfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSaWNoVGV4dENvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGFydGljbGUtcmljaC10ZXh0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmljaC10ZXh0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yaWNoLXRleHQuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW1JJQ0hfVEVYVF9WQUxVRV9BQ0NFU1NPUl0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFJpY2hUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZUNvbnRyb2xzID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0ID0gJzEwMHB4JztcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWRpdGFibGU7XHJcbiAgfVxyXG5cclxuICBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2VkaXRhYmxlID0gIXJlYWRvbmx5O1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0RWRpdGFibGUodGhpcy5fZWRpdGFibGUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICB0ZXh0OiBSaWNoVGV4dEVkaXRvclRleHQgPSB7XHJcbiAgICBoZWFkaW5nMTogJ0hlYWRpbmcgMScsXHJcbiAgICBoZWFkaW5nMjogJ0hlYWRpbmcgMicsXHJcbiAgICBib2xkOiAnQm9sZCcsXHJcbiAgICBpdGFsaWM6ICdJdGFsaWMnLFxyXG4gICAgc3RyaWtlOiAnU3RyaWtlJyxcclxuICAgIGJ1bGxldGVkTGlzdDogJ0J1bGxldGVkIExpc3QnLFxyXG4gICAgb3JkZXJlZExpc3Q6ICdPcmRlcmVkIExpc3QnLFxyXG4gICAgbGVmdEFsaWduOiAnTGVmdCBBbGlnbicsXHJcbiAgICBjZW50ZXJBbGlnbjogJ0NlbnRlciBBbGlnbicsXHJcbiAgICByaWdodEFsaWduOiAnUmlnaHQgQWxpZ24nLFxyXG4gICAganVzdGlmeUFsaWduOiAnSnVzdGlmeSBBbGlnbicsXHJcbiAgICBzZXRMaW5rOiAnU2V0IExpbmsnLFxyXG4gICAgcmVtb3ZlTGluazogJ1JlbW92ZSBMaW5rJyxcclxuICAgIGNsZWFyRm9ybWF0OiAnQ2xlYXIgRm9ybWF0JyxcclxuICAgIG1vZGlmeUxpbms6ICdNb2RpZnkgTGluaycsXHJcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxyXG4gICAgdXBkYXRlOiAnVXBkYXRlJyxcclxuICAgIHVybDogJ1VSTCdcclxuICB9IGFzIFJpY2hUZXh0RWRpdG9yVGV4dDtcclxuXHJcbiAgQElucHV0KClcclxuICBjYXBhYmlsaXRpZXMgPSB7XHJcbiAgICBoZWFkaW5nOiB0cnVlLFxyXG4gICAgdGV4dERlY29yYXRpb246IHRydWUsXHJcbiAgICBsaXN0OiB0cnVlLFxyXG4gICAgYWxpZ25tZW50OiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZVxyXG4gIH0gYXMgUmljaFRleHRDYXBhYmlsaXRpZXM7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9yZGVyUmFkaXVzID0gJzBweCc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHRleHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBodG1sVmFsdWU6IHN0cmluZyxcclxuICAgIHRleHRWYWx1ZTogc3RyaW5nXHJcbiAgfT4oKTtcclxuXHJcbiAgc2hvd0RpYWxvZzogYW55ID0gbnVsbDtcclxuICBkaWFsb2dMaW5rOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIG9uIGNoYW5nZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlOiAoKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgb24gdG91Y2hcclxuICAgKi9cclxuICBvblRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG4gIHByaXZhdGUgX2VkaXRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvdyA9IHdpbmRvdztcclxuXHJcbiAgZWRpdG9yID0gbmV3IEVkaXRvcih7XHJcbiAgICBleHRlbnNpb25zOiBbXHJcbiAgICAgIFN0YXJ0ZXJLaXQsXHJcbiAgICAgIExpbmsuY29uZmlndXJlKHtcclxuICAgICAgICBvcGVuT25DbGljazogZmFsc2UsXHJcbiAgICAgICAgSFRNTEF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGNsYXNzOiAncmljaC10ZXh0LWxpbmsnLFxyXG4gICAgICAgICAgdGFyZ2V0OiAnX2JsYW5rJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pLFxyXG4gICAgICBUZXh0QWxpZ24uY29uZmlndXJlKHtcclxuICAgICAgICB0eXBlczogWydoZWFkaW5nJywgJ3BhcmFncmFwaCddLFxyXG5cclxuICAgICAgfSksXHJcbiAgICAgIFBsYWNlaG9sZGVyLmNvbmZpZ3VyZSh7XHJcbiAgICAgICAgcGxhY2Vob2xkZXI6ICgpID0+IHRoaXMucGxhY2Vob2xkZXJcclxuICAgICAgfSlcclxuICAgIF0sXHJcbiAgICBlZGl0b3JQcm9wczoge1xyXG4gICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgY2xhc3M6ICcnLFxyXG4gICAgICAgIHNwZWxsY2hlY2s6ICd0cnVlJyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBlbmFibGVQYXN0ZVJ1bGVzOiBbTGluaywgU3RhcnRlcktpdCwgVGV4dEFsaWduXVxyXG4gIH0pO1xyXG5cclxuICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgPT09ICc8cD48L3A+Jykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRFZGl0YWJsZSh0aGlzLl9lZGl0YWJsZSk7XHJcblxyXG4gICAgdGhpcy5lZGl0b3Iub24oJ3VwZGF0ZScsICh7ZWRpdG9yfSkgPT4ge1xyXG4gICAgICB0aGlzLnRleHRDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgIHRleHRWYWx1ZTogZWRpdG9yLmdldFRleHQoKSxcclxuICAgICAgICBodG1sVmFsdWU6IHRoaXMuX3ZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRFZGl0YWJsZShpc0Rpc2FibGVkKTtcclxuICB9XHJcblxyXG4gIG9wZW5MaW5rRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcHJldmlvdXNVcmwgPSB0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKCdsaW5rJykuaHJlZjtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHt9O1xyXG4gICAgdGhpcy5kaWFsb2dMaW5rID0gcHJldmlvdXNVcmw7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VFZGl0b3JMaW5rKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlICdyZW1vdmUnOlxyXG4gICAgICAgIHRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5leHRlbmRNYXJrUmFuZ2UoJ2xpbmsnKS51bnNldExpbmsoKS5ydW4oKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc2F2ZSc6XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLmV4dGVuZE1hcmtSYW5nZSgnbGluaycpLnNldExpbmsoeyBocmVmOiB0aGlzLmRpYWxvZ0xpbmssIHRhcmdldDogJ19ibGFuaycgfSkucnVuKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5sb2coYWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0xpbmsgPSBudWxsIGFzIGFueTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyA9IG51bGwgYXMgYW55O1xyXG4gIH1cclxuXHJcbiAgZm9jdXMocG9zaXRpb24/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghcG9zaXRpb24pIHtcclxuICAgICAgcG9zaXRpb24gPSAnc3RhcnQnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yLmNvbW1hbmRzLmZvY3VzKHBvc2l0aW9uKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dfYmxvY2sgd2lkdGgxMDAgY29udGVudF9jb2xvciBwdGxfYnJkcl9yYWRpdXMgcHRsX2JyZHJfY29sb3IgcHRsX2JyZHJfc2l6ZVwiIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgcHRsX2lucHV0X2JnX2NvbG9yIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX2JvdHRvbSB3cmFwIGhpZGVfZWxlbWVudFwiICAqbmdJZj1cIiF0aGlzLmhpZGVDb250cm9scyAmJiB0aGlzLmVkaXRvci5pc0VkaXRhYmxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX3JpZ2h0IHBhZF81XCIgKm5nSWY9XCJjYXBhYmlsaXRpZXMuaGVhZGluZ1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgaWQ9XCJoZWFkaW5nMVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmhlYWRpbmcxXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDUgbWFyX2xlZnQ1IHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuaGVhZGluZzFcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgIChjbGljayk9XCJlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbDogMSB9KS5ydW4oKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAxIH0pIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaGVhZGVyIGZhLWZ3XCI+PC9pPjFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cImhlYWRpbmcyXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuaGVhZGluZzJcIlxyXG4gICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0NSBtYXJfbGVmdDUgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5oZWFkaW5nMlwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSGVhZGluZyh7IGxldmVsOiAyIH0pLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDIgfSkgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1oZWFkZXIgZmEtZndcIj48L2k+MlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIGJvcmRlcl9yaWdodCBwYWRfNVwiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLnRleHREZWNvcmF0aW9uXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cImJvbGRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5ib2xkXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuYm9sZFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQm9sZCgpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnYm9sZCcpIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYm9sZCBmYS1md1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cIml0YWxpY1wiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0Lml0YWxpY1wiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lml0YWxpY1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSXRhbGljKCkucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdpdGFsaWMnKSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWl0YWxpYyBmYS1md1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cInN0cmlrZVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnN0cmlrZVwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LnN0cmlrZVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3RyaWtlKCkucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdzdHJpa2UnKSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXN0cmlrZXRocm91Z2ggZmEtZndcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX3JpZ2h0IHBhZF81XCIgKm5nSWY9XCJjYXBhYmlsaXRpZXMubGlzdFwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgaWQ9XCJidWxsZXQtbGlzdFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmJ1bGxldGVkTGlzdFwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LmJ1bGxldGVkTGlzdFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQnVsbGV0TGlzdCgpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnYnVsbGV0LWxpc3QnKSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWxpc3QgZmEtZndcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgaWQ9XCJvcmRlcmVkLWxpc3RcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5vcmRlcmVkTGlzdFwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lm9yZGVyZWRMaXN0XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAoY2xpY2spPVwiZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVPcmRlcmVkTGlzdCgpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnb3JkZXJlZC1saXN0JykgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1saXN0LW9sIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIGJvcmRlcl9yaWdodCBwYWRfNVwiICAqbmdJZj1cImNhcGFiaWxpdGllcy5hbGlnbm1lbnRcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwibGVmdC1hbGlnblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmxlZnRBbGlnblwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LmxlZnRBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdsZWZ0JykucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKHsgdGV4dEFsaWduOiAnbGVmdCcgfSkgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbGlnbi1sZWZ0IGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwiY2VudGVyLWFsaWduXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuY2VudGVyQWxpZ25cIlxyXG4gICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0MyBtYXJfbGVmdDMgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5jZW50ZXJBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdjZW50ZXInKS5ydW4oKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoeyB0ZXh0QWxpZ246ICdjZW50ZXInIH0pIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYWxpZ24tY2VudGVyIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwicmlnaHQtYWxpZ25cIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5yaWdodEFsaWduXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQucmlnaHRBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdyaWdodCcpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSh7IHRleHRBbGlnbjogJ3JpZ2h0JyB9KSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFsaWduLXJpZ2h0IGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwianVzdGlmeS1hbGlnblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0Lmp1c3RpZnlBbGlnblwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lmp1c3RpZnlBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdqdXN0aWZ5JykucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKHsgdGV4dEFsaWduOiAnanVzdGlmeScgfSkgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbGlnbi1qdXN0aWZ5IGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwYWRfNVwiICAqbmdJZj1cImNhcGFiaWxpdGllcy5saW5rXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cImxpbmtcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zZXRMaW5rXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuc2V0TGlua1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5MaW5rRGlhbG9nKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdsaW5rJykgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1saW5rIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwidW5saW5rXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQucmVtb3ZlTGlua1wiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LnJlbW92ZUxpbmtcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgIChjbGljayk9XCJ0aGlzLmVkaXRvci5pc0FjdGl2ZSgnbGluaycpID8gY2hhbmdlRWRpdG9yTGluaygncmVtb3ZlJykgOiBudWxsXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRoaXMuZWRpdG9yLmlzQWN0aXZlKCdsaW5rJylcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdW5saW5rIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwiY2xlYXItZm9ybWF0XCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuY2xlYXJGb3JtYXRcIlxyXG4gICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0MyBtYXJfbGVmdDMgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5jbGVhckZvcm1hdFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKS5ydW4oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10ZXh0LXNsYXNoIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJwYWRfMTAgcHRsX2lucHV0X3RleHRfc2l6ZSBzY3JvbGxfeWF1dG9cIiBbc3R5bGUuaGVpZ2h0XT1cInRoaXMuaGVpZ2h0XCI+XHJcbiAgICA8dGlwdGFwLWVkaXRvciBbZWRpdG9yXT1cImVkaXRvclwiIFsobmdNb2RlbCldPVwidmFsdWVcIj48L3RpcHRhcC1lZGl0b3I+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHBhcnRpY2xlLWRpYWxvZ1xyXG4gIFt0aXRsZV09XCJ0ZXh0Lm1vZGlmeUxpbmtcIlxyXG4gIHRpdGxlQ2xhc3M9XCJoZWFkZXJfY29sb3IgbWluX2g0MFwiXHJcbiAgW29iamVjdF09XCJzaG93RGlhbG9nXCJcclxuICBbYWxsb3dDbG9zZV09XCJmYWxzZVwiXHJcbiAgW2JvcmRlclJhZGl1c109XCJib3JkZXJSYWRpdXNcIlxyXG4gIHdpZHRoPVwiNDAwcHhcIlxyXG4gIGhlaWdodD1cIjE1MHB4XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJwYWRfMTUgcHRsX2lucHV0X3RleHRfc2l6ZVwiIFtzdHlsZS5oZWlnaHRdPVwid2luZG93LmlubmVyV2lkdGggPiA3NjggPyAnNzBweCcgOiAnY2FsYygxMDAlIC0gNDBweCknXCI+XHJcbiAgICA8aW5wdXQgY2xhc3M9XCJhY2Nlc3MgaW5wdXQgbWRcIlxyXG4gICAgICAgICAgIFsobmdNb2RlbCldPVwiZGlhbG9nTGlua1wiXHJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnVybFwiXHJcbiAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlZy4gaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbVwiXHJcbiAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNoYW5nZUVkaXRvckxpbmsoJ3NhdmUnKVwiXHJcbiAgICAvPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wgbWluX2g0MCBmb290ZXJfY29sb3JcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2VudGVyX3JpZ2h0IHBhZF9yaWdodDE1IHBhZF9sZWZ0MTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNsZWFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmNhbmNlbFwiIChjbGljayk9XCJjaGFuZ2VFZGl0b3JMaW5rKCdjYW5jZWwnKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIiBwYWRfNVwiPnt7dGV4dC5jYW5jZWx9fTwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfbHI1IHB0bF9icmRyX3NpemUgcHRsX2JyZHJfY29sb3IgYm9yZGVyX2xlZnRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBzcGFjZWQgbWQgaG92X2dsb3cgb2tfYnV0dG9uX2NvbG9yIHB0bF9icmRyX3JhZGl1c1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQudXBkYXRlXCJcclxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VFZGl0b3JMaW5rKCdzYXZlJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmRyIGJvcmRlcl9yaWdodCBtYXJfcmlnaHQ1IHBhZF9yaWdodDVcIj48aSBjbGFzcz1cImZhcyBmYS1jaGVja1wiPjwvaT48L2Rpdj5cclxuICAgICAgICAgIDxkaXY+e3t0ZXh0LnVwZGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvcGFydGljbGUtZGlhbG9nPlxyXG4iXX0=
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9yaWNoLXRleHQvcmljaC10ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9yaWNoLXRleHQvcmljaC10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sSUFBSSxNQUFNLHdCQUF3QixDQUFDO0FBQzFDLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sU0FBUyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLHlCQUF5QixDQUFDO0FBQzVDLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUl2RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBUTtJQUMzQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBVUYsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBR2pCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFHckIsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUVqQixJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFB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QUNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBVyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBVyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBVyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBYztRQUNsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQzt1R0E1TVUsaUJBQWlCOzJGQUFqQixpQkFBaUIsOFFBSmpCLENBQUMsd0JBQXdCLENBQUMsMEJDckJ2QyxrMVdBZ09BOzsyRkR2TWEsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLG9CQUFvQixhQUduQixDQUFDLHdCQUF3QixDQUFDLGlCQUN0QixpQkFBaUIsQ0FBQyxJQUFJOzhCQU1yQyxXQUFXO3NCQURWLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBV04sSUFBSTtzQkFESCxLQUFLO2dCQXlCTixZQUFZO3NCQURYLEtBQUs7Z0JBV04sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtFZGl0b3J9IGZyb20gJ0B0aXB0YXAvY29yZSc7XHJcbmltcG9ydCBTdGFydGVyS2l0IGZyb20gJ0B0aXB0YXAvc3RhcnRlci1raXQnO1xyXG5pbXBvcnQgTGluayBmcm9tICdAdGlwdGFwL2V4dGVuc2lvbi1saW5rJztcclxuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXBsYWNlaG9sZGVyJztcclxuaW1wb3J0IFRleHRBbGlnbiBmcm9tICdAdGlwdGFwL2V4dGVuc2lvbi10ZXh0LWFsaWduJztcclxuaW1wb3J0IEltYWdlIGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLWltYWdlJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtSaWNoVGV4dEVkaXRvclRleHR9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvcGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwnO1xyXG5pbXBvcnQge1JpY2hUZXh0Q2FwYWJpbGl0aWVzfSBmcm9tICcuL3JpY2gtdGV4dC1jYXBhYmlsaXRpZXMubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJJQ0hfVEVYVF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJpY2hUZXh0Q29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYXJ0aWNsZS1yaWNoLXRleHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yaWNoLXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JpY2gtdGV4dC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbUklDSF9URVhUX1ZBTFVFX0FDQ0VTU09SXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmljaFRleHRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGxhY2Vob2xkZXIgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlQ29udHJvbHMgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBoZWlnaHQgPSAnMTAwcHgnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9lZGl0YWJsZTtcclxuICB9XHJcblxyXG4gIHNldCByZWFkb25seShyZWFkb25seTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZWRpdGFibGUgPSAhcmVhZG9ubHk7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRFZGl0YWJsZSh0aGlzLl9lZGl0YWJsZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHQ6IFJpY2hUZXh0RWRpdG9yVGV4dCA9IHtcclxuICAgIGhlYWRpbmcxOiAnSGVhZGluZyAxJyxcclxuICAgIGhlYWRpbmcyOiAnSGVhZGluZyAyJyxcclxuICAgIGJvbGQ6ICdCb2xkJyxcclxuICAgIGl0YWxpYzogJ0l0YWxpYycsXHJcbiAgICBzdHJpa2U6ICdTdHJpa2UnLFxyXG4gICAgYnVsbGV0ZWRMaXN0OiAnQnVsbGV0ZWQgTGlzdCcsXHJcbiAgICBvcmRlcmVkTGlzdDogJ09yZGVyZWQgTGlzdCcsXHJcbiAgICBsZWZ0QWxpZ246ICdMZWZ0IEFsaWduJyxcclxuICAgIGNlbnRlckFsaWduOiAnQ2VudGVyIEFsaWduJyxcclxuICAgIHJpZ2h0QWxpZ246ICdSaWdodCBBbGlnbicsXHJcbiAgICBqdXN0aWZ5QWxpZ246ICdKdXN0aWZ5IEFsaWduJyxcclxuICAgIHNldExpbms6ICdTZXQgTGluaycsXHJcbiAgICByZW1vdmVMaW5rOiAnUmVtb3ZlIExpbmsnLFxyXG4gICAgY2xlYXJGb3JtYXQ6ICdDbGVhciBGb3JtYXQnLFxyXG4gICAgbW9kaWZ5TGluazogJ01vZGlmeSBMaW5rJyxcclxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXHJcbiAgICB1cGRhdGU6ICdVcGRhdGUnLFxyXG4gICAgdXJsOiAnVVJMJyxcclxuICAgIGFkZEltYWdlOiAnQWRkIEltYWdlJyxcclxuICAgIG1vZGlmeUltYWdlOiAnTW9kaWZ5IEltYWdlJ1xyXG4gIH0gYXMgUmljaFRleHRFZGl0b3JUZXh0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNhcGFiaWxpdGllcyA9IHtcclxuICAgIGhlYWRpbmc6IHRydWUsXHJcbiAgICB0ZXh0RGVjb3JhdGlvbjogdHJ1ZSxcclxuICAgIGxpc3Q6IHRydWUsXHJcbiAgICBhbGlnbm1lbnQ6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgaW1hZ2VzOiBmYWxzZVxyXG4gIH0gYXMgUmljaFRleHRDYXBhYmlsaXRpZXM7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9yZGVyUmFkaXVzID0gJzBweCc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHRleHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBodG1sVmFsdWU6IHN0cmluZyxcclxuICAgIHRleHRWYWx1ZTogc3RyaW5nXHJcbiAgfT4oKTtcclxuXHJcbiAgc2hvd0RpYWxvZzogYW55ID0gbnVsbDtcclxuICBkaWFsb2dMaW5rOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuICBkaWFsb2dUeXBlOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIG9uIGNoYW5nZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlOiAoKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgb24gdG91Y2hcclxuICAgKi9cclxuICBvblRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG4gIHByaXZhdGUgX2VkaXRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvdyA9IHdpbmRvdztcclxuXHJcbiAgZWRpdG9yID0gbmV3IEVkaXRvcih7XHJcbiAgICBleHRlbnNpb25zOiBbXHJcbiAgICAgIFN0YXJ0ZXJLaXQsXHJcbiAgICAgIExpbmsuY29uZmlndXJlKHtcclxuICAgICAgICBvcGVuT25DbGljazogZmFsc2UsXHJcbiAgICAgICAgSFRNTEF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGNsYXNzOiAncmljaC10ZXh0LWxpbmsnLFxyXG4gICAgICAgICAgdGFyZ2V0OiAnX2JsYW5rJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pLFxyXG4gICAgICBUZXh0QWxpZ24uY29uZmlndXJlKHtcclxuICAgICAgICB0eXBlczogWydoZWFkaW5nJywgJ3BhcmFncmFwaCddLFxyXG5cclxuICAgICAgfSksXHJcbiAgICAgIFBsYWNlaG9sZGVyLmNvbmZpZ3VyZSh7XHJcbiAgICAgICAgcGxhY2Vob2xkZXI6ICgpID0+IHRoaXMucGxhY2Vob2xkZXJcclxuICAgICAgfSksXHJcbiAgICAgIEltYWdlXHJcbiAgICBdLFxyXG4gICAgZWRpdG9yUHJvcHM6IHtcclxuICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgIGNsYXNzOiAnJyxcclxuICAgICAgICBzcGVsbGNoZWNrOiAndHJ1ZScsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgZW5hYmxlUGFzdGVSdWxlczogW0xpbmssIFN0YXJ0ZXJLaXQsIFRleHRBbGlnbl1cclxuICB9KTtcclxuXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlID09PSAnPHA+PC9wPicpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0RWRpdGFibGUodGhpcy5fZWRpdGFibGUpO1xyXG5cclxuICAgIHRoaXMuZWRpdG9yLm9uKCd1cGRhdGUnLCAoe2VkaXRvcn0pID0+IHtcclxuICAgICAgdGhpcy50ZXh0Q2hhbmdlZC5lbWl0KHtcclxuICAgICAgICB0ZXh0VmFsdWU6IGVkaXRvci5nZXRUZXh0KCksXHJcbiAgICAgICAgaHRtbFZhbHVlOiB0aGlzLl92YWx1ZVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0RWRpdGFibGUoaXNEaXNhYmxlZCk7XHJcbiAgfVxyXG5cclxuICBvcGVuTGlua0RpYWxvZygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHByZXZpb3VzVXJsID0gdGhpcy5lZGl0b3IuZ2V0QXR0cmlidXRlcygnbGluaycpLmhyZWY7XHJcbiAgICB0aGlzLnNob3dEaWFsb2cgPSB7fTtcclxuICAgIHRoaXMuZGlhbG9nTGluayA9IHByZXZpb3VzVXJsO1xyXG4gICAgdGhpcy5kaWFsb2dUeXBlID0gJ2xpbmsnO1xyXG4gIH1cclxuXHJcbiAgb3BlbkltYWdlRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcHJldmlvdXNVcmwgPSB0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKCdpbWFnZScpLnNyYztcclxuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHt9O1xyXG4gICAgdGhpcy5kaWFsb2dMaW5rID0gcHJldmlvdXNVcmw7XHJcbiAgICB0aGlzLmRpYWxvZ1R5cGUgPSAnaW1hZ2UnO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRWRpdG9yTGluayhhY3Rpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSAncmVtb3ZlJzpcclxuICAgICAgICB0aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkuZXh0ZW5kTWFya1JhbmdlKCdsaW5rJykudW5zZXRMaW5rKCkucnVuKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NhdmUnOlxyXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1R5cGUgPT09ICdsaW5rJykge1xyXG4gICAgICAgICAgdGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLmV4dGVuZE1hcmtSYW5nZSgnbGluaycpLnNldExpbmsoeyBocmVmOiB0aGlzLmRpYWxvZ0xpbmssIHRhcmdldDogJ19ibGFuaycgfSkucnVuKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRpYWxvZ1R5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICAgIHRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRJbWFnZSh7IHNyYzogdGhpcy5kaWFsb2dMaW5rIH0pLnJ1bigpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUubG9nKGFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dMaW5rID0gbnVsbCBhcyBhbnk7XHJcbiAgICB0aGlzLmRpYWxvZ1R5cGUgPSBudWxsIGFzIGFueTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyA9IG51bGwgYXMgYW55O1xyXG4gIH1cclxuXHJcbiAgZm9jdXMocG9zaXRpb24/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghcG9zaXRpb24pIHtcclxuICAgICAgcG9zaXRpb24gPSAnc3RhcnQnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yLmNvbW1hbmRzLmZvY3VzKHBvc2l0aW9uKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dfYmxvY2sgd2lkdGgxMDAgY29udGVudF9jb2xvciBwdGxfYnJkcl9yYWRpdXMgcHRsX2JyZHJfY29sb3IgcHRsX2JyZHJfc2l6ZVwiIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlblwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGhpcy5oaWRlQ29udHJvbHMgJiYgdGhpcy5lZGl0b3IuaXNFZGl0YWJsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBwdGxfaW5wdXRfYmdfY29sb3IgcHRsX2JyZHJfY29sb3IgcHRsX2JyZHJfc2l6ZSBib3JkZXJfYm90dG9tIHdyYXAgaGlkZV9lbGVtZW50XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXBhYmlsaXRpZXMuaGVhZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdl9jZW50ZXIgcHRsX2JyZHJfY29sb3IgcHRsX2JyZHJfc2l6ZSBib3JkZXJfcmlnaHQgcGFkXzVcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJoZWFkaW5nMVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5oZWFkaW5nMVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0NSBtYXJfbGVmdDUgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuaGVhZGluZzFcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHsgbGV2ZWw6IDEgfSkucnVuKClcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDEgfSkgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWhlYWRlciBmYS1md1wiPjwvaT4xXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJoZWFkaW5nMlwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5oZWFkaW5nMlwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0NSBtYXJfbGVmdDUgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuaGVhZGluZzJcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHsgbGV2ZWw6IDIgfSkucnVuKClcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDIgfSkgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWhlYWRlciBmYS1md1wiPjwvaT4yXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXBhYmlsaXRpZXMudGV4dERlY29yYXRpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX3JpZ2h0IHBhZF81XCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGlkPVwiYm9sZFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5ib2xkXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5ib2xkXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQm9sZCgpLnJ1bigpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoJ2JvbGQnKSB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYm9sZCBmYS1md1wiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBpZD1cIml0YWxpY1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5pdGFsaWNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lml0YWxpY1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUl0YWxpYygpLnJ1bigpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoJ2l0YWxpYycpIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pdGFsaWMgZmEtZndcIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJzdHJpa2VcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuc3RyaWtlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5zdHJpa2VcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVTdHJpa2UoKS5ydW4oKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdzdHJpa2UnKSB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3RyaWtldGhyb3VnaCBmYS1md1wiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcGFiaWxpdGllcy5saXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIGJvcmRlcl9yaWdodCBwYWRfNVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBpZD1cImJ1bGxldC1saXN0XCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmJ1bGxldGVkTGlzdFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0MyBtYXJfbGVmdDMgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuYnVsbGV0ZWRMaXN0XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQnVsbGV0TGlzdCgpLnJ1bigpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoJ2J1bGxldC1saXN0JykgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWxpc3QgZmEtZndcIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJvcmRlcmVkLWxpc3RcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQub3JkZXJlZExpc3RcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lm9yZGVyZWRMaXN0XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlT3JkZXJlZExpc3QoKS5ydW4oKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdvcmRlcmVkLWxpc3QnKSB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbGlzdC1vbCBmYS1md1wiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcGFiaWxpdGllcy5hbGlnbm1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX3JpZ2h0IHBhZF81XCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGlkPVwibGVmdC1hbGlnblwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5sZWZ0QWxpZ25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LmxlZnRBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbignbGVmdCcpLnJ1bigpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoeyB0ZXh0QWxpZ246ICdsZWZ0JyB9KSB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYWxpZ24tbGVmdCBmYS1md1wiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBpZD1cImNlbnRlci1hbGlnblwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5jZW50ZXJBbGlnblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0MyBtYXJfbGVmdDMgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuY2VudGVyQWxpZ25cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpLnJ1bigpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoeyB0ZXh0QWxpZ246ICdjZW50ZXInIH0pIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbGlnbi1jZW50ZXIgZmEtZndcIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJyaWdodC1hbGlnblwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5yaWdodEFsaWduXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5yaWdodEFsaWduXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdyaWdodCcpLnJ1bigpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoeyB0ZXh0QWxpZ246ICdyaWdodCcgfSkgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFsaWduLXJpZ2h0IGZhLWZ3XCI+PC9pPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGlkPVwianVzdGlmeS1hbGlnblwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5qdXN0aWZ5QWxpZ25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lmp1c3RpZnlBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbignanVzdGlmeScpLnJ1bigpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoeyB0ZXh0QWxpZ246ICdqdXN0aWZ5JyB9KSB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYWxpZ24tanVzdGlmeSBmYS1md1wiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcGFiaWxpdGllcy5saW5rXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIGJvcmRlcl9yaWdodCBwYWRfNVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBpZD1cImxpbmtcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuc2V0TGlua1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0MyBtYXJfbGVmdDMgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuc2V0TGlua1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTGlua0RpYWxvZygpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoJ2xpbmsnKSB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbGluayBmYS1md1wiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBpZD1cInVubGlua1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5yZW1vdmVMaW5rXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5yZW1vdmVMaW5rXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMuZWRpdG9yLmlzQWN0aXZlKCdsaW5rJykgPyBjaGFuZ2VFZGl0b3JMaW5rKCdyZW1vdmUnKSA6IG51bGxcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXRoaXMuZWRpdG9yLmlzQWN0aXZlKCdsaW5rJylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS11bmxpbmsgZmEtZndcIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXBhYmlsaXRpZXMuaW1hZ2VzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIGJvcmRlcl9yaWdodCBwYWRfNVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBpZD1cImltYWdlXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0aGlzLmVkaXRvci5pc0FjdGl2ZSgnaW1hZ2UnKSA/IHRleHQubW9kaWZ5SW1hZ2UgOiB0ZXh0LmFkZEltYWdlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuSW1hZ2VEaWFsb2coKVwiXHJcbiAgICAgICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGhpcy5lZGl0b3IuaXNBY3RpdmUoJ2ltYWdlJykgPyB0ZXh0Lm1vZGlmeUltYWdlIDogdGV4dC5hZGRJbWFnZVwiXHJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdpbWFnZScpIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1pbWFnZSBmYS1md1wiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwYWRfNVwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGlkPVwiY2xlYXItZm9ybWF0XCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5jbGVhckZvcm1hdFwiXHJcbiAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5jbGVhckZvcm1hdFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5jbGVhck5vZGVzKCkudW5zZXRBbGxNYXJrcygpLnJ1bigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10ZXh0LXNsYXNoIGZhLWZ3XCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXYgY2xhc3M9XCJwYWRfMTAgcHRsX2lucHV0X3RleHRfc2l6ZSBzY3JvbGxfeWF1dG9cIiBbc3R5bGUuaGVpZ2h0XT1cInRoaXMuaGVpZ2h0XCI+XHJcbiAgICA8dGlwdGFwLWVkaXRvciBbZWRpdG9yXT1cImVkaXRvclwiIFsobmdNb2RlbCldPVwidmFsdWVcIj48L3RpcHRhcC1lZGl0b3I+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHBhcnRpY2xlLWRpYWxvZ1xyXG4gIFt0aXRsZV09XCJkaWFsb2dUeXBlID09PSAnbGluaycgPyB0ZXh0Lm1vZGlmeUxpbmsgOiB0ZXh0Lm1vZGlmeUltYWdlXCJcclxuICB0aXRsZUNsYXNzPVwiaGVhZGVyX2NvbG9yIG1pbl9oNDBcIlxyXG4gIFtvYmplY3RdPVwic2hvd0RpYWxvZ1wiXHJcbiAgW2FsbG93Q2xvc2VdPVwiZmFsc2VcIlxyXG4gIFtib3JkZXJSYWRpdXNdPVwiYm9yZGVyUmFkaXVzXCJcclxuICB3aWR0aD1cIjQwMHB4XCJcclxuICBoZWlnaHQ9XCIxNTBweFwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwicGFkXzE1IHB0bF9pbnB1dF90ZXh0X3NpemVcIiBbc3R5bGUuaGVpZ2h0XT1cIndpbmRvdy5pbm5lcldpZHRoID4gNzY4ID8gJzcwcHgnIDogJ2NhbGMoMTAwJSAtIDQwcHgpJ1wiPlxyXG4gICAgPGlucHV0IGNsYXNzPVwiYWNjZXNzIGlucHV0IG1kXCJcclxuICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRpYWxvZ0xpbmtcIlxyXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC51cmxcIlxyXG4gICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZWcuIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb21cIlxyXG4gICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjaGFuZ2VFZGl0b3JMaW5rKCdzYXZlJylcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sIG1pbl9oNDAgZm9vdGVyX2NvbG9yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGNlbnRlcl9yaWdodCBwYWRfcmlnaHQxNSBwYWRfbGVmdDE1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjbGVhclwiIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5jYW5jZWxcIiAoY2xpY2spPVwiY2hhbmdlRWRpdG9yTGluaygnY2FuY2VsJylcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCIgcGFkXzVcIj57e3RleHQuY2FuY2VsfX08L2Rpdj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFyX2xyNSBwdGxfYnJkcl9zaXplIHB0bF9icmRyX2NvbG9yIGJvcmRlcl9sZWZ0XCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgc3BhY2VkIG1kIGhvdl9nbG93IG9rX2J1dHRvbl9jb2xvciBwdGxfYnJkcl9yYWRpdXNcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnVwZGF0ZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlRWRpdG9yTGluaygnc2F2ZScpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJkciBib3JkZXJfcmlnaHQgbWFyX3JpZ2h0NSBwYWRfcmlnaHQ1XCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hlY2tcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2Pnt7dGV4dC51cGRhdGV9fTwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3BhcnRpY2xlLWRpYWxvZz5cclxuIl19
|