@ecodev/natural-editor 47.3.2 → 48.0.1
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/esm2020/lib/class-dialog/class-dialog.component.mjs +10 -10
- package/esm2020/lib/color-dialog/color-dialog.component.mjs +13 -12
- package/esm2020/lib/editor/editor.component.mjs +9 -9
- package/esm2020/lib/editor.module.mjs +7 -7
- package/esm2020/lib/id-dialog/id-dialog.component.mjs +10 -10
- package/esm2020/lib/link-dialog/link-dialog.component.mjs +10 -10
- package/esm2020/lib/utils/items/cell-background-color-item.mjs +1 -1
- package/esm2020/lib/utils/items/class-item.mjs +1 -1
- package/esm2020/lib/utils/items/id-item.mjs +1 -1
- package/esm2020/lib/utils/items/link-item.mjs +1 -1
- package/esm2020/lib/utils/menu.mjs +1 -1
- package/fesm2015/ecodev-natural-editor.mjs +67 -67
- package/fesm2015/ecodev-natural-editor.mjs.map +1 -1
- package/fesm2020/ecodev-natural-editor.mjs +67 -67
- package/fesm2020/ecodev-natural-editor.mjs.map +1 -1
- package/lib/class-dialog/class-dialog.component.d.ts +1 -1
- package/lib/color-dialog/color-dialog.component.d.ts +1 -1
- package/lib/editor/editor.component.d.ts +1 -1
- package/lib/editor.module.d.ts +7 -7
- package/lib/id-dialog/id-dialog.component.d.ts +1 -1
- package/lib/link-dialog/link-dialog.component.d.ts +1 -1
- package/lib/utils/items/cell-background-color-item.d.ts +1 -1
- package/lib/utils/items/class-item.d.ts +1 -1
- package/lib/utils/items/id-item.d.ts +1 -1
- package/lib/utils/items/link-item.d.ts +1 -1
- package/lib/utils/menu.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/editor/_editor.theme.scss +11 -0
|
@@ -16,15 +16,15 @@ import { buildInputRules } from '../utils/inputrules';
|
|
|
16
16
|
import { buildKeymap } from '../utils/keymap';
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
18
18
|
import * as i1 from "@angular/forms";
|
|
19
|
-
import * as i2 from "@angular/material/
|
|
19
|
+
import * as i2 from "@angular/material/dialog";
|
|
20
20
|
import * as i3 from "../utils/image";
|
|
21
21
|
import * as i4 from "@angular/common";
|
|
22
|
-
import * as i5 from "@angular/material/
|
|
22
|
+
import * as i5 from "@angular/material/button";
|
|
23
23
|
import * as i6 from "@angular/material/button-toggle";
|
|
24
24
|
import * as i7 from "@angular/material/divider";
|
|
25
25
|
import * as i8 from "@angular/material/icon";
|
|
26
|
-
import * as i9 from "@angular/material/
|
|
27
|
-
import * as i10 from "@angular/material/
|
|
26
|
+
import * as i9 from "@angular/material/menu";
|
|
27
|
+
import * as i10 from "@angular/material/tooltip";
|
|
28
28
|
import * as i11 from "@ecodev/natural";
|
|
29
29
|
/**
|
|
30
30
|
* Prosemirror component
|
|
@@ -190,11 +190,11 @@ export class NaturalEditorComponent {
|
|
|
190
190
|
this.view.focus();
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
-
NaturalEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalEditorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: DOCUMENT }, { token: i2.
|
|
194
|
-
NaturalEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NaturalEditorComponent, selector: "natural-editor", inputs: { imageUploader: "imageUploader" }, outputs: { contentChange: "contentChange", save: "save" }, providers: [ImagePlugin], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"menu-container\" *ngIf=\"menu\">\n <div class=\"menu\">\n <button mat-button *ngIf=\"save.observed\" (click)=\"save.emit()\" i18n-matTooltip matTooltip=\"Enregistrer\">\n <mat-icon>save</mat-icon>\n </button>\n\n <mat-button-toggle-group multiple>\n <mat-button-toggle\n *ngIf=\"menu.toggleStrong\"\n [disabled]=\"menu.toggleStrong.disabled\"\n [checked]=\"menu.toggleStrong.active\"\n (click)=\"run($event, 'toggleStrong')\"\n i18n-matTooltip\n matTooltip=\"Gras\"\n >\n <mat-icon>format_bold</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleEm\"\n [disabled]=\"menu.toggleEm.disabled\"\n [checked]=\"menu.toggleEm.active\"\n (click)=\"run($event, 'toggleEm')\"\n i18n-matTooltip\n matTooltip=\"Italique\"\n >\n <mat-icon>format_italic</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleCode\"\n [disabled]=\"menu.toggleCode.disabled\"\n [checked]=\"menu.toggleCode.active\"\n (click)=\"run($event, 'toggleCode')\"\n i18n-matTooltip\n matTooltip=\"Code\"\n >\n <mat-icon>code</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleLink\"\n [disabled]=\"menu.toggleLink.disabled\"\n [checked]=\"menu.toggleLink.active\"\n (click)=\"run($event, 'toggleLink')\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer un lien...\"\n >\n <mat-icon>insert_link</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button mat-button [matMenuTriggerFor]=\"blockMenu\">\n <span i18n>Type</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-menu #blockMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.makeParagraph\"\n [disabled]=\"menu.makeParagraph.disabled\"\n (click)=\"run($event, 'makeParagraph')\"\n i18n\n >Paragraphe\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeCodeBlock\"\n [disabled]=\"menu.makeCodeBlock.disabled\"\n (click)=\"run($event, 'makeCodeBlock')\"\n i18n\n >Code\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead1\"\n [disabled]=\"menu.makeHead1.disabled\"\n (click)=\"run($event, 'makeHead1')\"\n i18n\n >Titre 1\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead2\"\n [disabled]=\"menu.makeHead2.disabled\"\n (click)=\"run($event, 'makeHead2')\"\n i18n\n >Titre 2\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead3\"\n [disabled]=\"menu.makeHead3.disabled\"\n (click)=\"run($event, 'makeHead3')\"\n i18n\n >Titre 3\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead4\"\n [disabled]=\"menu.makeHead4.disabled\"\n (click)=\"run($event, 'makeHead4')\"\n i18n\n >Titre 4\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead5\"\n [disabled]=\"menu.makeHead5.disabled\"\n (click)=\"run($event, 'makeHead5')\"\n i18n\n >Titre 5\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead6\"\n [disabled]=\"menu.makeHead6.disabled\"\n (click)=\"run($event, 'makeHead6')\"\n i18n\n >Titre 6\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.blockClass\"\n [disabled]=\"menu.blockClass.disabled\"\n (click)=\"run($event, 'blockClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.blockId\"\n [disabled]=\"menu.blockId.disabled\"\n (click)=\"run($event, 'blockId')\"\n >ID...\n </button>\n </mat-menu>\n\n <button mat-button [matMenuTriggerFor]=\"tableMenu\" *ngIf=\"menu.addColumnBefore\">\n <span i18n>Tableau</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-menu #tableMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.insertTable\"\n [disabled]=\"menu.insertTable.disabled\"\n (click)=\"run($event, 'insertTable')\"\n i18n\n >Ins\u00E9rer un tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteTable\"\n [disabled]=\"menu.deleteTable.disabled\"\n (click)=\"run($event, 'deleteTable')\"\n i18n\n >Supprimer le tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.mergeCells\"\n [disabled]=\"menu.mergeCells.disabled\"\n (click)=\"run($event, 'mergeCells')\"\n i18n\n >Fusionner les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.splitCell\"\n [disabled]=\"menu.splitCell.disabled\"\n (click)=\"run($event, 'splitCell')\"\n i18n\n >Scinder les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.cellBackgroundColor\"\n [disabled]=\"menu.cellBackgroundColor.disabled\"\n (click)=\"run($event, 'cellBackgroundColor')\"\n i18n\n >Couleur de fond...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableClass\"\n [disabled]=\"menu.tableClass.disabled\"\n (click)=\"run($event, 'tableClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableId\"\n [disabled]=\"menu.tableId.disabled\"\n (click)=\"run($event, 'tableId')\"\n >ID...\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnBefore\"\n [disabled]=\"menu.addColumnBefore.disabled\"\n (click)=\"run($event, 'addColumnBefore')\"\n i18n\n >Ins\u00E9rer une colonne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnAfter\"\n [disabled]=\"menu.addColumnAfter.disabled\"\n (click)=\"run($event, 'addColumnAfter')\"\n i18n\n >Ins\u00E9rer une colonne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteColumn\"\n [disabled]=\"menu.deleteColumn.disabled\"\n (click)=\"run($event, 'deleteColumn')\"\n i18n\n >Supprimer la colonne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addRowBefore\"\n [disabled]=\"menu.addRowBefore.disabled\"\n (click)=\"run($event, 'addRowBefore')\"\n i18n\n >Ins\u00E9rer une ligne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addRowAfter\"\n [disabled]=\"menu.addRowAfter.disabled\"\n (click)=\"run($event, 'addRowAfter')\"\n i18n\n >Ins\u00E9rer une ligne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteRow\"\n [disabled]=\"menu.deleteRow.disabled\"\n (click)=\"run($event, 'deleteRow')\"\n i18n\n >Supprimer la ligne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderColumn\"\n [disabled]=\"menu.toggleHeaderColumn.disabled\"\n (click)=\"run($event, 'toggleHeaderColumn')\"\n i18n\n >Ent\u00EAte de colonne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderRow\"\n [disabled]=\"menu.toggleHeaderRow.disabled\"\n (click)=\"run($event, 'toggleHeaderRow')\"\n i18n\n >Ent\u00EAte de ligne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderCell\"\n [disabled]=\"menu.toggleHeaderCell.disabled\"\n (click)=\"run($event, 'toggleHeaderCell')\"\n i18n\n >Ent\u00EAte de cellule\n </button>\n </mat-menu>\n\n <button\n mat-button\n *ngIf=\"imageUploader\"\n naturalFileDrop\n [selectable]=\"true\"\n [broadcast]=\"false\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer une image\"\n (fileChange)=\"upload($event)\"\n >\n <mat-icon>insert_photo</mat-icon>\n </button>\n\n <mat-button-toggle-group *ngIf=\"menu.alignLeft\">\n <mat-button-toggle\n *ngIf=\"menu.alignLeft\"\n [disabled]=\"menu.alignLeft.disabled\"\n [checked]=\"menu.alignLeft.active\"\n (click)=\"run($event, 'alignLeft')\"\n i18n-matTooltip\n matTooltip=\"Aligner gauche\"\n >\n <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignCenter\"\n [disabled]=\"menu.alignCenter.disabled\"\n [checked]=\"menu.alignCenter.active\"\n (click)=\"run($event, 'alignCenter')\"\n i18n-matTooltip\n matTooltip=\"Centrer\"\n >\n <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignRight\"\n [disabled]=\"menu.alignRight.disabled\"\n [checked]=\"menu.alignRight.active\"\n (click)=\"run($event, 'alignRight')\"\n i18n-matTooltip\n matTooltip=\"Aligner droite\"\n >\n <mat-icon>format_align_right</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignJustify\"\n [disabled]=\"menu.alignJustify.disabled\"\n [checked]=\"menu.alignJustify.active\"\n (click)=\"run($event, 'alignJustify')\"\n i18n-matTooltip\n matTooltip=\"Justifier\"\n >\n <mat-icon>format_align_justify</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button\n mat-button\n *ngIf=\"menu.undo\"\n [disabled]=\"menu.undo.disabled\"\n (click)=\"run($event, 'undo')\"\n i18n-matTooltip\n matTooltip=\"Annuler\"\n >\n <mat-icon>undo</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.redo\"\n [disabled]=\"menu.redo.disabled\"\n (click)=\"run($event, 'redo')\"\n i18n-matTooltip\n matTooltip=\"Refaire\"\n >\n <mat-icon>redo</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapBulletList && menu.wrapBulletList.show\"\n [disabled]=\"menu.wrapBulletList.disabled\"\n (click)=\"run($event, 'wrapBulletList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 puce\"\n >\n <mat-icon>format_list_bulleted</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapOrderedList && menu.wrapOrderedList.show\"\n [disabled]=\"menu.wrapOrderedList.disabled\"\n (click)=\"run($event, 'wrapOrderedList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 num\u00E9ro\"\n >\n <mat-icon>format_list_numbered</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapBlockQuote && menu.wrapBlockQuote.show\"\n [disabled]=\"menu.wrapBlockQuote.disabled\"\n (click)=\"run($event, 'wrapBlockQuote')\"\n i18n-matTooltip\n matTooltip=\"Citation\"\n >\n <mat-icon>format_quote</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.joinUp && menu.joinUp.show\"\n [disabled]=\"menu.joinUp.disabled\"\n (click)=\"run($event, 'joinUp')\"\n i18n-matTooltip\n matTooltip=\"Fusionner avec l'\u00E9l\u00E9ment du haut\"\n >\n <mat-icon>move_up</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.lift && menu.lift.show\"\n [disabled]=\"menu.lift.disabled\"\n (click)=\"run($event, 'lift')\"\n i18n-matTooltip\n matTooltip=\"D\u00E9sindenter\"\n >\n <mat-icon>format_indent_decrease</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.selectParentNode && menu.selectParentNode.show\"\n [disabled]=\"menu.selectParentNode.disabled\"\n (click)=\"run($event, 'selectParentNode')\"\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner l'\u00E9l\u00E9ment parent\"\n >\n <mat-icon>select_all</mat-icon>\n </button>\n </div>\n</div>\n<div class=\"editor-container\" #editor></div>\n", styles: [".menu{border-bottom:1px solid;display:flex;flex-wrap:wrap;padding:10px 18px}.menu-container{position:sticky;top:-20px;z-index:999}::ng-deep .ProseMirror{position:relative}::ng-deep .ProseMirror{word-wrap:break-word;white-space:pre-wrap;font-variant-ligatures:none}::ng-deep .ProseMirror pre{white-space:pre-wrap}::ng-deep .ProseMirror li{position:relative}::ng-deep .ProseMirror-hideselection *::selection{background:transparent}::ng-deep .ProseMirror-hideselection *::-moz-selection{background:transparent}::ng-deep .ProseMirror-hideselection{caret-color:transparent}::ng-deep .ProseMirror-selectednode{outline:2px solid #8cf}::ng-deep li.ProseMirror-selectednode{outline:none}::ng-deep li.ProseMirror-selectednode:after{content:\"\";position:absolute;inset:-2px -2px -2px -32px;border:2px solid #8cf;pointer-events:none}::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid black;animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}::ng-deep .ProseMirror-example-setup-style hr{padding:2px 10px;border:none;margin:1em 0}::ng-deep .ProseMirror-example-setup-style hr:after{content:\"\";display:block;height:1px;background-color:silver;line-height:2px}::ng-deep .ProseMirror ul,::ng-deep .ProseMirror ol{padding-left:30px}::ng-deep .ProseMirror blockquote{padding-left:1em;border-left:3px solid #eee;margin-left:0;margin-right:0}::ng-deep .ProseMirror-example-setup-style img{cursor:default}::ng-deep .ProseMirror p:first-child,::ng-deep .ProseMirror h1:first-child,::ng-deep .ProseMirror h2:first-child,::ng-deep .ProseMirror h3:first-child,::ng-deep .ProseMirror h4:first-child,::ng-deep .ProseMirror h5:first-child,::ng-deep .ProseMirror h6:first-child{margin-top:10px}::ng-deep .ProseMirror{padding:4px 8px 4px 14px;line-height:1.2;outline:none}::ng-deep .ProseMirror p{margin-bottom:1em}::ng-deep .ProseMirror .tableWrapper{overflow-x:auto}::ng-deep .ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}::ng-deep .ProseMirror td,::ng-deep .ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}::ng-deep .ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}::ng-deep .ProseMirror.resize-cursor{cursor:col-resize}::ng-deep .ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";inset:0;background:rgba(200,200,255,.4);pointer-events:none}::ng-deep .ProseMirror table{margin:0}::ng-deep .ProseMirror th,::ng-deep .ProseMirror td{min-width:1em;border:1px solid #ddd;padding:3px 5px}::ng-deep .ProseMirror .tableWrapper{margin:1em 0}::ng-deep .ProseMirror th{font-weight:700;text-align:left}::ng-deep placeholder{display:block;width:50px;height:50px;background-size:500% 100%!important;animation:gradient 3s none infinite}@keyframes gradient{0%{background-position:100% 100%}to{background-position:0 0}}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i10.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i11.NaturalFileDropDirective, selector: ":not([naturalFileSelect])[naturalFileDrop]", outputs: ["fileOver"] }] });
|
|
193
|
+
NaturalEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalEditorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: DOCUMENT }, { token: i2.MatDialog }, { token: i3.ImagePlugin }], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
+
NaturalEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NaturalEditorComponent, selector: "natural-editor", inputs: { imageUploader: "imageUploader" }, outputs: { contentChange: "contentChange", save: "save" }, providers: [ImagePlugin], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"menu-container\" *ngIf=\"menu\">\n <div class=\"menu\">\n <button mat-icon-button *ngIf=\"save.observed\" (click)=\"save.emit()\" i18n-matTooltip matTooltip=\"Enregistrer\">\n <mat-icon fontIcon=\"save\"></mat-icon>\n </button>\n\n <mat-button-toggle-group multiple>\n <mat-button-toggle\n *ngIf=\"menu.toggleStrong\"\n [disabled]=\"menu.toggleStrong.disabled\"\n [checked]=\"menu.toggleStrong.active\"\n (click)=\"run($event, 'toggleStrong')\"\n i18n-matTooltip\n matTooltip=\"Gras\"\n >\n <mat-icon fontIcon=\"format_bold\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleEm\"\n [disabled]=\"menu.toggleEm.disabled\"\n [checked]=\"menu.toggleEm.active\"\n (click)=\"run($event, 'toggleEm')\"\n i18n-matTooltip\n matTooltip=\"Italique\"\n >\n <mat-icon fontIcon=\"format_italic\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleCode\"\n [disabled]=\"menu.toggleCode.disabled\"\n [checked]=\"menu.toggleCode.active\"\n (click)=\"run($event, 'toggleCode')\"\n i18n-matTooltip\n matTooltip=\"Code\"\n >\n <mat-icon fontIcon=\"code\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleLink\"\n [disabled]=\"menu.toggleLink.disabled\"\n [checked]=\"menu.toggleLink.active\"\n (click)=\"run($event, 'toggleLink')\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer un lien...\"\n >\n <mat-icon fontIcon=\"insert_link\"></mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button mat-button [matMenuTriggerFor]=\"blockMenu\">\n <span i18n>Type</span>\n <mat-icon fontIcon=\"arrow_drop_down\"></mat-icon>\n </button>\n\n <mat-menu #blockMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.makeParagraph\"\n [disabled]=\"menu.makeParagraph.disabled\"\n (click)=\"run($event, 'makeParagraph')\"\n i18n\n >Paragraphe\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeCodeBlock\"\n [disabled]=\"menu.makeCodeBlock.disabled\"\n (click)=\"run($event, 'makeCodeBlock')\"\n i18n\n >Code\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead1\"\n [disabled]=\"menu.makeHead1.disabled\"\n (click)=\"run($event, 'makeHead1')\"\n i18n\n >Titre 1\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead2\"\n [disabled]=\"menu.makeHead2.disabled\"\n (click)=\"run($event, 'makeHead2')\"\n i18n\n >Titre 2\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead3\"\n [disabled]=\"menu.makeHead3.disabled\"\n (click)=\"run($event, 'makeHead3')\"\n i18n\n >Titre 3\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead4\"\n [disabled]=\"menu.makeHead4.disabled\"\n (click)=\"run($event, 'makeHead4')\"\n i18n\n >Titre 4\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead5\"\n [disabled]=\"menu.makeHead5.disabled\"\n (click)=\"run($event, 'makeHead5')\"\n i18n\n >Titre 5\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead6\"\n [disabled]=\"menu.makeHead6.disabled\"\n (click)=\"run($event, 'makeHead6')\"\n i18n\n >Titre 6\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.blockClass\"\n [disabled]=\"menu.blockClass.disabled\"\n (click)=\"run($event, 'blockClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.blockId\"\n [disabled]=\"menu.blockId.disabled\"\n (click)=\"run($event, 'blockId')\"\n >ID...\n </button>\n </mat-menu>\n\n <button mat-button [matMenuTriggerFor]=\"tableMenu\" *ngIf=\"menu.addColumnBefore\">\n <span i18n>Tableau</span>\n <mat-icon fontIcon=\"arrow_drop_down\"></mat-icon>\n </button>\n\n <mat-menu #tableMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.insertTable\"\n [disabled]=\"menu.insertTable.disabled\"\n (click)=\"run($event, 'insertTable')\"\n i18n\n >Ins\u00E9rer un tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteTable\"\n [disabled]=\"menu.deleteTable.disabled\"\n (click)=\"run($event, 'deleteTable')\"\n i18n\n >Supprimer le tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.mergeCells\"\n [disabled]=\"menu.mergeCells.disabled\"\n (click)=\"run($event, 'mergeCells')\"\n i18n\n >Fusionner les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.splitCell\"\n [disabled]=\"menu.splitCell.disabled\"\n (click)=\"run($event, 'splitCell')\"\n i18n\n >Scinder les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.cellBackgroundColor\"\n [disabled]=\"menu.cellBackgroundColor.disabled\"\n (click)=\"run($event, 'cellBackgroundColor')\"\n i18n\n >Couleur de fond...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableClass\"\n [disabled]=\"menu.tableClass.disabled\"\n (click)=\"run($event, 'tableClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableId\"\n [disabled]=\"menu.tableId.disabled\"\n (click)=\"run($event, 'tableId')\"\n >ID...\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnBefore\"\n [disabled]=\"menu.addColumnBefore.disabled\"\n (click)=\"run($event, 'addColumnBefore')\"\n i18n\n >Ins\u00E9rer une colonne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnAfter\"\n [disabled]=\"menu.addColumnAfter.disabled\"\n (click)=\"run($event, 'addColumnAfter')\"\n i18n\n >Ins\u00E9rer une colonne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteColumn\"\n [disabled]=\"menu.deleteColumn.disabled\"\n (click)=\"run($event, 'deleteColumn')\"\n i18n\n >Supprimer la colonne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addRowBefore\"\n [disabled]=\"menu.addRowBefore.disabled\"\n (click)=\"run($event, 'addRowBefore')\"\n i18n\n >Ins\u00E9rer une ligne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addRowAfter\"\n [disabled]=\"menu.addRowAfter.disabled\"\n (click)=\"run($event, 'addRowAfter')\"\n i18n\n >Ins\u00E9rer une ligne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteRow\"\n [disabled]=\"menu.deleteRow.disabled\"\n (click)=\"run($event, 'deleteRow')\"\n i18n\n >Supprimer la ligne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderColumn\"\n [disabled]=\"menu.toggleHeaderColumn.disabled\"\n (click)=\"run($event, 'toggleHeaderColumn')\"\n i18n\n >Ent\u00EAte de colonne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderRow\"\n [disabled]=\"menu.toggleHeaderRow.disabled\"\n (click)=\"run($event, 'toggleHeaderRow')\"\n i18n\n >Ent\u00EAte de ligne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderCell\"\n [disabled]=\"menu.toggleHeaderCell.disabled\"\n (click)=\"run($event, 'toggleHeaderCell')\"\n i18n\n >Ent\u00EAte de cellule\n </button>\n </mat-menu>\n\n <button\n mat-icon-button\n *ngIf=\"imageUploader\"\n naturalFileDrop\n [selectable]=\"true\"\n [broadcast]=\"false\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer une image\"\n (fileChange)=\"upload($event)\"\n >\n <mat-icon fontIcon=\"insert_photo\"></mat-icon>\n </button>\n\n <mat-button-toggle-group *ngIf=\"menu.alignLeft\">\n <mat-button-toggle\n *ngIf=\"menu.alignLeft\"\n [disabled]=\"menu.alignLeft.disabled\"\n [checked]=\"menu.alignLeft.active\"\n (click)=\"run($event, 'alignLeft')\"\n i18n-matTooltip\n matTooltip=\"Aligner gauche\"\n >\n <mat-icon fontIcon=\"format_align_left\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignCenter\"\n [disabled]=\"menu.alignCenter.disabled\"\n [checked]=\"menu.alignCenter.active\"\n (click)=\"run($event, 'alignCenter')\"\n i18n-matTooltip\n matTooltip=\"Centrer\"\n >\n <mat-icon fontIcon=\"format_align_center\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignRight\"\n [disabled]=\"menu.alignRight.disabled\"\n [checked]=\"menu.alignRight.active\"\n (click)=\"run($event, 'alignRight')\"\n i18n-matTooltip\n matTooltip=\"Aligner droite\"\n >\n <mat-icon fontIcon=\"format_align_right\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignJustify\"\n [disabled]=\"menu.alignJustify.disabled\"\n [checked]=\"menu.alignJustify.active\"\n (click)=\"run($event, 'alignJustify')\"\n i18n-matTooltip\n matTooltip=\"Justifier\"\n >\n <mat-icon fontIcon=\"format_align_justify\"></mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button\n mat-icon-button\n *ngIf=\"menu.undo\"\n [disabled]=\"menu.undo.disabled\"\n (click)=\"run($event, 'undo')\"\n i18n-matTooltip\n matTooltip=\"Annuler\"\n >\n <mat-icon fontIcon=\"undo\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.redo\"\n [disabled]=\"menu.redo.disabled\"\n (click)=\"run($event, 'redo')\"\n i18n-matTooltip\n matTooltip=\"Refaire\"\n >\n <mat-icon fontIcon=\"redo\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.wrapBulletList && menu.wrapBulletList.show\"\n [disabled]=\"menu.wrapBulletList.disabled\"\n (click)=\"run($event, 'wrapBulletList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 puce\"\n >\n <mat-icon fontIcon=\"format_list_bulleted\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.wrapOrderedList && menu.wrapOrderedList.show\"\n [disabled]=\"menu.wrapOrderedList.disabled\"\n (click)=\"run($event, 'wrapOrderedList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 num\u00E9ro\"\n >\n <mat-icon fontIcon=\"format_list_numbered\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.wrapBlockQuote && menu.wrapBlockQuote.show\"\n [disabled]=\"menu.wrapBlockQuote.disabled\"\n (click)=\"run($event, 'wrapBlockQuote')\"\n i18n-matTooltip\n matTooltip=\"Citation\"\n >\n <mat-icon fontIcon=\"format_quote\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.joinUp && menu.joinUp.show\"\n [disabled]=\"menu.joinUp.disabled\"\n (click)=\"run($event, 'joinUp')\"\n i18n-matTooltip\n matTooltip=\"Fusionner avec l'\u00E9l\u00E9ment du haut\"\n >\n <mat-icon fontIcon=\"move_up\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.lift && menu.lift.show\"\n [disabled]=\"menu.lift.disabled\"\n (click)=\"run($event, 'lift')\"\n i18n-matTooltip\n matTooltip=\"D\u00E9sindenter\"\n >\n <mat-icon fontIcon=\"format_indent_decrease\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.selectParentNode && menu.selectParentNode.show\"\n [disabled]=\"menu.selectParentNode.disabled\"\n (click)=\"run($event, 'selectParentNode')\"\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner l'\u00E9l\u00E9ment parent\"\n >\n <mat-icon fontIcon=\"select_all\"></mat-icon>\n </button>\n </div>\n</div>\n<div class=\"editor-container\" #editor></div>\n", styles: [".menu{border-bottom:1px solid;display:flex;flex-wrap:wrap;padding:10px 18px}.menu-container{position:sticky;top:-20px;z-index:999}::ng-deep .ProseMirror{position:relative}::ng-deep .ProseMirror{word-wrap:break-word;white-space:pre-wrap;font-variant-ligatures:none}::ng-deep .ProseMirror pre{white-space:pre-wrap}::ng-deep .ProseMirror li{position:relative}::ng-deep .ProseMirror-hideselection *::selection{background:transparent}::ng-deep .ProseMirror-hideselection *::-moz-selection{background:transparent}::ng-deep .ProseMirror-hideselection{caret-color:transparent}::ng-deep .ProseMirror-selectednode{outline:2px solid #8cf}::ng-deep li.ProseMirror-selectednode{outline:none}::ng-deep li.ProseMirror-selectednode:after{content:\"\";position:absolute;inset:-2px -2px -2px -32px;border:2px solid #8cf;pointer-events:none}::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid black;animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}::ng-deep .ProseMirror-example-setup-style hr{padding:2px 10px;border:none;margin:1em 0}::ng-deep .ProseMirror-example-setup-style hr:after{content:\"\";display:block;height:1px;background-color:silver;line-height:2px}::ng-deep .ProseMirror ul,::ng-deep .ProseMirror ol{padding-left:30px}::ng-deep .ProseMirror blockquote{padding-left:1em;border-left:3px solid #eee;margin-left:0;margin-right:0}::ng-deep .ProseMirror-example-setup-style img{cursor:default}::ng-deep .ProseMirror p:first-child,::ng-deep .ProseMirror h1:first-child,::ng-deep .ProseMirror h2:first-child,::ng-deep .ProseMirror h3:first-child,::ng-deep .ProseMirror h4:first-child,::ng-deep .ProseMirror h5:first-child,::ng-deep .ProseMirror h6:first-child{margin-top:10px}::ng-deep .ProseMirror{padding:4px 8px 4px 14px;line-height:1.2;outline:none}::ng-deep .ProseMirror p{margin-bottom:1em}::ng-deep .ProseMirror .tableWrapper{overflow-x:auto}::ng-deep .ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}::ng-deep .ProseMirror td,::ng-deep .ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}::ng-deep .ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}::ng-deep .ProseMirror.resize-cursor{cursor:col-resize}::ng-deep .ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";inset:0;background:rgba(200,200,255,.4);pointer-events:none}::ng-deep .ProseMirror table{margin:0}::ng-deep .ProseMirror th,::ng-deep .ProseMirror td{min-width:1em;border:1px solid #ddd;padding:3px 5px}::ng-deep .ProseMirror .tableWrapper{margin:1em 0}::ng-deep .ProseMirror th{font-weight:700;text-align:left}::ng-deep placeholder{display:block;width:50px;height:50px;background-size:500% 100%!important;animation:gradient 3s none infinite}@keyframes gradient{0%{background-position:100% 100%}to{background-position:0 0}}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i11.NaturalFileDropDirective, selector: ":not([naturalFileSelect])[naturalFileDrop]", outputs: ["fileOver"] }] });
|
|
195
195
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalEditorComponent, decorators: [{
|
|
196
196
|
type: Component,
|
|
197
|
-
args: [{ selector: 'natural-editor', providers: [ImagePlugin], template: "<div class=\"menu-container\" *ngIf=\"menu\">\n <div class=\"menu\">\n <button mat-button *ngIf=\"save.observed\" (click)=\"save.emit()\" i18n-matTooltip matTooltip=\"Enregistrer\">\n <mat-icon>save</mat-icon>\n </button>\n\n <mat-button-toggle-group multiple>\n <mat-button-toggle\n *ngIf=\"menu.toggleStrong\"\n [disabled]=\"menu.toggleStrong.disabled\"\n [checked]=\"menu.toggleStrong.active\"\n (click)=\"run($event, 'toggleStrong')\"\n i18n-matTooltip\n matTooltip=\"Gras\"\n >\n <mat-icon>format_bold</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleEm\"\n [disabled]=\"menu.toggleEm.disabled\"\n [checked]=\"menu.toggleEm.active\"\n (click)=\"run($event, 'toggleEm')\"\n i18n-matTooltip\n matTooltip=\"Italique\"\n >\n <mat-icon>format_italic</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleCode\"\n [disabled]=\"menu.toggleCode.disabled\"\n [checked]=\"menu.toggleCode.active\"\n (click)=\"run($event, 'toggleCode')\"\n i18n-matTooltip\n matTooltip=\"Code\"\n >\n <mat-icon>code</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleLink\"\n [disabled]=\"menu.toggleLink.disabled\"\n [checked]=\"menu.toggleLink.active\"\n (click)=\"run($event, 'toggleLink')\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer un lien...\"\n >\n <mat-icon>insert_link</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button mat-button [matMenuTriggerFor]=\"blockMenu\">\n <span i18n>Type</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-menu #blockMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.makeParagraph\"\n [disabled]=\"menu.makeParagraph.disabled\"\n (click)=\"run($event, 'makeParagraph')\"\n i18n\n >Paragraphe\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeCodeBlock\"\n [disabled]=\"menu.makeCodeBlock.disabled\"\n (click)=\"run($event, 'makeCodeBlock')\"\n i18n\n >Code\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead1\"\n [disabled]=\"menu.makeHead1.disabled\"\n (click)=\"run($event, 'makeHead1')\"\n i18n\n >Titre 1\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead2\"\n [disabled]=\"menu.makeHead2.disabled\"\n (click)=\"run($event, 'makeHead2')\"\n i18n\n >Titre 2\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead3\"\n [disabled]=\"menu.makeHead3.disabled\"\n (click)=\"run($event, 'makeHead3')\"\n i18n\n >Titre 3\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead4\"\n [disabled]=\"menu.makeHead4.disabled\"\n (click)=\"run($event, 'makeHead4')\"\n i18n\n >Titre 4\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead5\"\n [disabled]=\"menu.makeHead5.disabled\"\n (click)=\"run($event, 'makeHead5')\"\n i18n\n >Titre 5\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead6\"\n [disabled]=\"menu.makeHead6.disabled\"\n (click)=\"run($event, 'makeHead6')\"\n i18n\n >Titre 6\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.blockClass\"\n [disabled]=\"menu.blockClass.disabled\"\n (click)=\"run($event, 'blockClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.blockId\"\n [disabled]=\"menu.blockId.disabled\"\n (click)=\"run($event, 'blockId')\"\n >ID...\n </button>\n </mat-menu>\n\n <button mat-button [matMenuTriggerFor]=\"tableMenu\" *ngIf=\"menu.addColumnBefore\">\n <span i18n>Tableau</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-menu #tableMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.insertTable\"\n [disabled]=\"menu.insertTable.disabled\"\n (click)=\"run($event, 'insertTable')\"\n i18n\n >Ins\u00E9rer un tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteTable\"\n [disabled]=\"menu.deleteTable.disabled\"\n (click)=\"run($event, 'deleteTable')\"\n i18n\n >Supprimer le tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.mergeCells\"\n [disabled]=\"menu.mergeCells.disabled\"\n (click)=\"run($event, 'mergeCells')\"\n i18n\n >Fusionner les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.splitCell\"\n [disabled]=\"menu.splitCell.disabled\"\n (click)=\"run($event, 'splitCell')\"\n i18n\n >Scinder les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.cellBackgroundColor\"\n [disabled]=\"menu.cellBackgroundColor.disabled\"\n (click)=\"run($event, 'cellBackgroundColor')\"\n i18n\n >Couleur de fond...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableClass\"\n [disabled]=\"menu.tableClass.disabled\"\n (click)=\"run($event, 'tableClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableId\"\n [disabled]=\"menu.tableId.disabled\"\n (click)=\"run($event, 'tableId')\"\n >ID...\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnBefore\"\n [disabled]=\"menu.addColumnBefore.disabled\"\n (click)=\"run($event, 'addColumnBefore')\"\n i18n\n >Ins\u00E9rer une colonne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnAfter\"\n [disabled]=\"menu.addColumnAfter.disabled\"\n (click)=\"run($event, 'addColumnAfter')\"\n i18n\n >Ins\u00E9rer une colonne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteColumn\"\n [disabled]=\"menu.deleteColumn.disabled\"\n (click)=\"run($event, 'deleteColumn')\"\n i18n\n >Supprimer la colonne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addRowBefore\"\n [disabled]=\"menu.addRowBefore.disabled\"\n (click)=\"run($event, 'addRowBefore')\"\n i18n\n >Ins\u00E9rer une ligne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addRowAfter\"\n [disabled]=\"menu.addRowAfter.disabled\"\n (click)=\"run($event, 'addRowAfter')\"\n i18n\n >Ins\u00E9rer une ligne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteRow\"\n [disabled]=\"menu.deleteRow.disabled\"\n (click)=\"run($event, 'deleteRow')\"\n i18n\n >Supprimer la ligne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderColumn\"\n [disabled]=\"menu.toggleHeaderColumn.disabled\"\n (click)=\"run($event, 'toggleHeaderColumn')\"\n i18n\n >Ent\u00EAte de colonne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderRow\"\n [disabled]=\"menu.toggleHeaderRow.disabled\"\n (click)=\"run($event, 'toggleHeaderRow')\"\n i18n\n >Ent\u00EAte de ligne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderCell\"\n [disabled]=\"menu.toggleHeaderCell.disabled\"\n (click)=\"run($event, 'toggleHeaderCell')\"\n i18n\n >Ent\u00EAte de cellule\n </button>\n </mat-menu>\n\n <button\n mat-button\n *ngIf=\"imageUploader\"\n naturalFileDrop\n [selectable]=\"true\"\n [broadcast]=\"false\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer une image\"\n (fileChange)=\"upload($event)\"\n >\n <mat-icon>insert_photo</mat-icon>\n </button>\n\n <mat-button-toggle-group *ngIf=\"menu.alignLeft\">\n <mat-button-toggle\n *ngIf=\"menu.alignLeft\"\n [disabled]=\"menu.alignLeft.disabled\"\n [checked]=\"menu.alignLeft.active\"\n (click)=\"run($event, 'alignLeft')\"\n i18n-matTooltip\n matTooltip=\"Aligner gauche\"\n >\n <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignCenter\"\n [disabled]=\"menu.alignCenter.disabled\"\n [checked]=\"menu.alignCenter.active\"\n (click)=\"run($event, 'alignCenter')\"\n i18n-matTooltip\n matTooltip=\"Centrer\"\n >\n <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignRight\"\n [disabled]=\"menu.alignRight.disabled\"\n [checked]=\"menu.alignRight.active\"\n (click)=\"run($event, 'alignRight')\"\n i18n-matTooltip\n matTooltip=\"Aligner droite\"\n >\n <mat-icon>format_align_right</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignJustify\"\n [disabled]=\"menu.alignJustify.disabled\"\n [checked]=\"menu.alignJustify.active\"\n (click)=\"run($event, 'alignJustify')\"\n i18n-matTooltip\n matTooltip=\"Justifier\"\n >\n <mat-icon>format_align_justify</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button\n mat-button\n *ngIf=\"menu.undo\"\n [disabled]=\"menu.undo.disabled\"\n (click)=\"run($event, 'undo')\"\n i18n-matTooltip\n matTooltip=\"Annuler\"\n >\n <mat-icon>undo</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.redo\"\n [disabled]=\"menu.redo.disabled\"\n (click)=\"run($event, 'redo')\"\n i18n-matTooltip\n matTooltip=\"Refaire\"\n >\n <mat-icon>redo</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapBulletList && menu.wrapBulletList.show\"\n [disabled]=\"menu.wrapBulletList.disabled\"\n (click)=\"run($event, 'wrapBulletList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 puce\"\n >\n <mat-icon>format_list_bulleted</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapOrderedList && menu.wrapOrderedList.show\"\n [disabled]=\"menu.wrapOrderedList.disabled\"\n (click)=\"run($event, 'wrapOrderedList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 num\u00E9ro\"\n >\n <mat-icon>format_list_numbered</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapBlockQuote && menu.wrapBlockQuote.show\"\n [disabled]=\"menu.wrapBlockQuote.disabled\"\n (click)=\"run($event, 'wrapBlockQuote')\"\n i18n-matTooltip\n matTooltip=\"Citation\"\n >\n <mat-icon>format_quote</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.joinUp && menu.joinUp.show\"\n [disabled]=\"menu.joinUp.disabled\"\n (click)=\"run($event, 'joinUp')\"\n i18n-matTooltip\n matTooltip=\"Fusionner avec l'\u00E9l\u00E9ment du haut\"\n >\n <mat-icon>move_up</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.lift && menu.lift.show\"\n [disabled]=\"menu.lift.disabled\"\n (click)=\"run($event, 'lift')\"\n i18n-matTooltip\n matTooltip=\"D\u00E9sindenter\"\n >\n <mat-icon>format_indent_decrease</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.selectParentNode && menu.selectParentNode.show\"\n [disabled]=\"menu.selectParentNode.disabled\"\n (click)=\"run($event, 'selectParentNode')\"\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner l'\u00E9l\u00E9ment parent\"\n >\n <mat-icon>select_all</mat-icon>\n </button>\n </div>\n</div>\n<div class=\"editor-container\" #editor></div>\n", styles: [".menu{border-bottom:1px solid;display:flex;flex-wrap:wrap;padding:10px 18px}.menu-container{position:sticky;top:-20px;z-index:999}::ng-deep .ProseMirror{position:relative}::ng-deep .ProseMirror{word-wrap:break-word;white-space:pre-wrap;font-variant-ligatures:none}::ng-deep .ProseMirror pre{white-space:pre-wrap}::ng-deep .ProseMirror li{position:relative}::ng-deep .ProseMirror-hideselection *::selection{background:transparent}::ng-deep .ProseMirror-hideselection *::-moz-selection{background:transparent}::ng-deep .ProseMirror-hideselection{caret-color:transparent}::ng-deep .ProseMirror-selectednode{outline:2px solid #8cf}::ng-deep li.ProseMirror-selectednode{outline:none}::ng-deep li.ProseMirror-selectednode:after{content:\"\";position:absolute;inset:-2px -2px -2px -32px;border:2px solid #8cf;pointer-events:none}::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid black;animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}::ng-deep .ProseMirror-example-setup-style hr{padding:2px 10px;border:none;margin:1em 0}::ng-deep .ProseMirror-example-setup-style hr:after{content:\"\";display:block;height:1px;background-color:silver;line-height:2px}::ng-deep .ProseMirror ul,::ng-deep .ProseMirror ol{padding-left:30px}::ng-deep .ProseMirror blockquote{padding-left:1em;border-left:3px solid #eee;margin-left:0;margin-right:0}::ng-deep .ProseMirror-example-setup-style img{cursor:default}::ng-deep .ProseMirror p:first-child,::ng-deep .ProseMirror h1:first-child,::ng-deep .ProseMirror h2:first-child,::ng-deep .ProseMirror h3:first-child,::ng-deep .ProseMirror h4:first-child,::ng-deep .ProseMirror h5:first-child,::ng-deep .ProseMirror h6:first-child{margin-top:10px}::ng-deep .ProseMirror{padding:4px 8px 4px 14px;line-height:1.2;outline:none}::ng-deep .ProseMirror p{margin-bottom:1em}::ng-deep .ProseMirror .tableWrapper{overflow-x:auto}::ng-deep .ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}::ng-deep .ProseMirror td,::ng-deep .ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}::ng-deep .ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}::ng-deep .ProseMirror.resize-cursor{cursor:col-resize}::ng-deep .ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";inset:0;background:rgba(200,200,255,.4);pointer-events:none}::ng-deep .ProseMirror table{margin:0}::ng-deep .ProseMirror th,::ng-deep .ProseMirror td{min-width:1em;border:1px solid #ddd;padding:3px 5px}::ng-deep .ProseMirror .tableWrapper{margin:1em 0}::ng-deep .ProseMirror th{font-weight:700;text-align:left}::ng-deep placeholder{display:block;width:50px;height:50px;background-size:500% 100%!important;animation:gradient 3s none infinite}@keyframes gradient{0%{background-position:100% 100%}to{background-position:0 0}}\n"] }]
|
|
197
|
+
args: [{ selector: 'natural-editor', providers: [ImagePlugin], template: "<div class=\"menu-container\" *ngIf=\"menu\">\n <div class=\"menu\">\n <button mat-icon-button *ngIf=\"save.observed\" (click)=\"save.emit()\" i18n-matTooltip matTooltip=\"Enregistrer\">\n <mat-icon fontIcon=\"save\"></mat-icon>\n </button>\n\n <mat-button-toggle-group multiple>\n <mat-button-toggle\n *ngIf=\"menu.toggleStrong\"\n [disabled]=\"menu.toggleStrong.disabled\"\n [checked]=\"menu.toggleStrong.active\"\n (click)=\"run($event, 'toggleStrong')\"\n i18n-matTooltip\n matTooltip=\"Gras\"\n >\n <mat-icon fontIcon=\"format_bold\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleEm\"\n [disabled]=\"menu.toggleEm.disabled\"\n [checked]=\"menu.toggleEm.active\"\n (click)=\"run($event, 'toggleEm')\"\n i18n-matTooltip\n matTooltip=\"Italique\"\n >\n <mat-icon fontIcon=\"format_italic\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleCode\"\n [disabled]=\"menu.toggleCode.disabled\"\n [checked]=\"menu.toggleCode.active\"\n (click)=\"run($event, 'toggleCode')\"\n i18n-matTooltip\n matTooltip=\"Code\"\n >\n <mat-icon fontIcon=\"code\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleLink\"\n [disabled]=\"menu.toggleLink.disabled\"\n [checked]=\"menu.toggleLink.active\"\n (click)=\"run($event, 'toggleLink')\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer un lien...\"\n >\n <mat-icon fontIcon=\"insert_link\"></mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button mat-button [matMenuTriggerFor]=\"blockMenu\">\n <span i18n>Type</span>\n <mat-icon fontIcon=\"arrow_drop_down\"></mat-icon>\n </button>\n\n <mat-menu #blockMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.makeParagraph\"\n [disabled]=\"menu.makeParagraph.disabled\"\n (click)=\"run($event, 'makeParagraph')\"\n i18n\n >Paragraphe\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeCodeBlock\"\n [disabled]=\"menu.makeCodeBlock.disabled\"\n (click)=\"run($event, 'makeCodeBlock')\"\n i18n\n >Code\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead1\"\n [disabled]=\"menu.makeHead1.disabled\"\n (click)=\"run($event, 'makeHead1')\"\n i18n\n >Titre 1\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead2\"\n [disabled]=\"menu.makeHead2.disabled\"\n (click)=\"run($event, 'makeHead2')\"\n i18n\n >Titre 2\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead3\"\n [disabled]=\"menu.makeHead3.disabled\"\n (click)=\"run($event, 'makeHead3')\"\n i18n\n >Titre 3\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead4\"\n [disabled]=\"menu.makeHead4.disabled\"\n (click)=\"run($event, 'makeHead4')\"\n i18n\n >Titre 4\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead5\"\n [disabled]=\"menu.makeHead5.disabled\"\n (click)=\"run($event, 'makeHead5')\"\n i18n\n >Titre 5\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead6\"\n [disabled]=\"menu.makeHead6.disabled\"\n (click)=\"run($event, 'makeHead6')\"\n i18n\n >Titre 6\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.blockClass\"\n [disabled]=\"menu.blockClass.disabled\"\n (click)=\"run($event, 'blockClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.blockId\"\n [disabled]=\"menu.blockId.disabled\"\n (click)=\"run($event, 'blockId')\"\n >ID...\n </button>\n </mat-menu>\n\n <button mat-button [matMenuTriggerFor]=\"tableMenu\" *ngIf=\"menu.addColumnBefore\">\n <span i18n>Tableau</span>\n <mat-icon fontIcon=\"arrow_drop_down\"></mat-icon>\n </button>\n\n <mat-menu #tableMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.insertTable\"\n [disabled]=\"menu.insertTable.disabled\"\n (click)=\"run($event, 'insertTable')\"\n i18n\n >Ins\u00E9rer un tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteTable\"\n [disabled]=\"menu.deleteTable.disabled\"\n (click)=\"run($event, 'deleteTable')\"\n i18n\n >Supprimer le tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.mergeCells\"\n [disabled]=\"menu.mergeCells.disabled\"\n (click)=\"run($event, 'mergeCells')\"\n i18n\n >Fusionner les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.splitCell\"\n [disabled]=\"menu.splitCell.disabled\"\n (click)=\"run($event, 'splitCell')\"\n i18n\n >Scinder les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.cellBackgroundColor\"\n [disabled]=\"menu.cellBackgroundColor.disabled\"\n (click)=\"run($event, 'cellBackgroundColor')\"\n i18n\n >Couleur de fond...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableClass\"\n [disabled]=\"menu.tableClass.disabled\"\n (click)=\"run($event, 'tableClass')\"\n i18n\n >Classe...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableId\"\n [disabled]=\"menu.tableId.disabled\"\n (click)=\"run($event, 'tableId')\"\n >ID...\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnBefore\"\n [disabled]=\"menu.addColumnBefore.disabled\"\n (click)=\"run($event, 'addColumnBefore')\"\n i18n\n >Ins\u00E9rer une colonne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnAfter\"\n [disabled]=\"menu.addColumnAfter.disabled\"\n (click)=\"run($event, 'addColumnAfter')\"\n i18n\n >Ins\u00E9rer une colonne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteColumn\"\n [disabled]=\"menu.deleteColumn.disabled\"\n (click)=\"run($event, 'deleteColumn')\"\n i18n\n >Supprimer la colonne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addRowBefore\"\n [disabled]=\"menu.addRowBefore.disabled\"\n (click)=\"run($event, 'addRowBefore')\"\n i18n\n >Ins\u00E9rer une ligne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addRowAfter\"\n [disabled]=\"menu.addRowAfter.disabled\"\n (click)=\"run($event, 'addRowAfter')\"\n i18n\n >Ins\u00E9rer une ligne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteRow\"\n [disabled]=\"menu.deleteRow.disabled\"\n (click)=\"run($event, 'deleteRow')\"\n i18n\n >Supprimer la ligne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderColumn\"\n [disabled]=\"menu.toggleHeaderColumn.disabled\"\n (click)=\"run($event, 'toggleHeaderColumn')\"\n i18n\n >Ent\u00EAte de colonne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderRow\"\n [disabled]=\"menu.toggleHeaderRow.disabled\"\n (click)=\"run($event, 'toggleHeaderRow')\"\n i18n\n >Ent\u00EAte de ligne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderCell\"\n [disabled]=\"menu.toggleHeaderCell.disabled\"\n (click)=\"run($event, 'toggleHeaderCell')\"\n i18n\n >Ent\u00EAte de cellule\n </button>\n </mat-menu>\n\n <button\n mat-icon-button\n *ngIf=\"imageUploader\"\n naturalFileDrop\n [selectable]=\"true\"\n [broadcast]=\"false\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer une image\"\n (fileChange)=\"upload($event)\"\n >\n <mat-icon fontIcon=\"insert_photo\"></mat-icon>\n </button>\n\n <mat-button-toggle-group *ngIf=\"menu.alignLeft\">\n <mat-button-toggle\n *ngIf=\"menu.alignLeft\"\n [disabled]=\"menu.alignLeft.disabled\"\n [checked]=\"menu.alignLeft.active\"\n (click)=\"run($event, 'alignLeft')\"\n i18n-matTooltip\n matTooltip=\"Aligner gauche\"\n >\n <mat-icon fontIcon=\"format_align_left\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignCenter\"\n [disabled]=\"menu.alignCenter.disabled\"\n [checked]=\"menu.alignCenter.active\"\n (click)=\"run($event, 'alignCenter')\"\n i18n-matTooltip\n matTooltip=\"Centrer\"\n >\n <mat-icon fontIcon=\"format_align_center\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignRight\"\n [disabled]=\"menu.alignRight.disabled\"\n [checked]=\"menu.alignRight.active\"\n (click)=\"run($event, 'alignRight')\"\n i18n-matTooltip\n matTooltip=\"Aligner droite\"\n >\n <mat-icon fontIcon=\"format_align_right\"></mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignJustify\"\n [disabled]=\"menu.alignJustify.disabled\"\n [checked]=\"menu.alignJustify.active\"\n (click)=\"run($event, 'alignJustify')\"\n i18n-matTooltip\n matTooltip=\"Justifier\"\n >\n <mat-icon fontIcon=\"format_align_justify\"></mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button\n mat-icon-button\n *ngIf=\"menu.undo\"\n [disabled]=\"menu.undo.disabled\"\n (click)=\"run($event, 'undo')\"\n i18n-matTooltip\n matTooltip=\"Annuler\"\n >\n <mat-icon fontIcon=\"undo\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.redo\"\n [disabled]=\"menu.redo.disabled\"\n (click)=\"run($event, 'redo')\"\n i18n-matTooltip\n matTooltip=\"Refaire\"\n >\n <mat-icon fontIcon=\"redo\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.wrapBulletList && menu.wrapBulletList.show\"\n [disabled]=\"menu.wrapBulletList.disabled\"\n (click)=\"run($event, 'wrapBulletList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 puce\"\n >\n <mat-icon fontIcon=\"format_list_bulleted\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.wrapOrderedList && menu.wrapOrderedList.show\"\n [disabled]=\"menu.wrapOrderedList.disabled\"\n (click)=\"run($event, 'wrapOrderedList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 num\u00E9ro\"\n >\n <mat-icon fontIcon=\"format_list_numbered\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.wrapBlockQuote && menu.wrapBlockQuote.show\"\n [disabled]=\"menu.wrapBlockQuote.disabled\"\n (click)=\"run($event, 'wrapBlockQuote')\"\n i18n-matTooltip\n matTooltip=\"Citation\"\n >\n <mat-icon fontIcon=\"format_quote\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.joinUp && menu.joinUp.show\"\n [disabled]=\"menu.joinUp.disabled\"\n (click)=\"run($event, 'joinUp')\"\n i18n-matTooltip\n matTooltip=\"Fusionner avec l'\u00E9l\u00E9ment du haut\"\n >\n <mat-icon fontIcon=\"move_up\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.lift && menu.lift.show\"\n [disabled]=\"menu.lift.disabled\"\n (click)=\"run($event, 'lift')\"\n i18n-matTooltip\n matTooltip=\"D\u00E9sindenter\"\n >\n <mat-icon fontIcon=\"format_indent_decrease\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"menu.selectParentNode && menu.selectParentNode.show\"\n [disabled]=\"menu.selectParentNode.disabled\"\n (click)=\"run($event, 'selectParentNode')\"\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner l'\u00E9l\u00E9ment parent\"\n >\n <mat-icon fontIcon=\"select_all\"></mat-icon>\n </button>\n </div>\n</div>\n<div class=\"editor-container\" #editor></div>\n", styles: [".menu{border-bottom:1px solid;display:flex;flex-wrap:wrap;padding:10px 18px}.menu-container{position:sticky;top:-20px;z-index:999}::ng-deep .ProseMirror{position:relative}::ng-deep .ProseMirror{word-wrap:break-word;white-space:pre-wrap;font-variant-ligatures:none}::ng-deep .ProseMirror pre{white-space:pre-wrap}::ng-deep .ProseMirror li{position:relative}::ng-deep .ProseMirror-hideselection *::selection{background:transparent}::ng-deep .ProseMirror-hideselection *::-moz-selection{background:transparent}::ng-deep .ProseMirror-hideselection{caret-color:transparent}::ng-deep .ProseMirror-selectednode{outline:2px solid #8cf}::ng-deep li.ProseMirror-selectednode{outline:none}::ng-deep li.ProseMirror-selectednode:after{content:\"\";position:absolute;inset:-2px -2px -2px -32px;border:2px solid #8cf;pointer-events:none}::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid black;animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}::ng-deep .ProseMirror-example-setup-style hr{padding:2px 10px;border:none;margin:1em 0}::ng-deep .ProseMirror-example-setup-style hr:after{content:\"\";display:block;height:1px;background-color:silver;line-height:2px}::ng-deep .ProseMirror ul,::ng-deep .ProseMirror ol{padding-left:30px}::ng-deep .ProseMirror blockquote{padding-left:1em;border-left:3px solid #eee;margin-left:0;margin-right:0}::ng-deep .ProseMirror-example-setup-style img{cursor:default}::ng-deep .ProseMirror p:first-child,::ng-deep .ProseMirror h1:first-child,::ng-deep .ProseMirror h2:first-child,::ng-deep .ProseMirror h3:first-child,::ng-deep .ProseMirror h4:first-child,::ng-deep .ProseMirror h5:first-child,::ng-deep .ProseMirror h6:first-child{margin-top:10px}::ng-deep .ProseMirror{padding:4px 8px 4px 14px;line-height:1.2;outline:none}::ng-deep .ProseMirror p{margin-bottom:1em}::ng-deep .ProseMirror .tableWrapper{overflow-x:auto}::ng-deep .ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}::ng-deep .ProseMirror td,::ng-deep .ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}::ng-deep .ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}::ng-deep .ProseMirror.resize-cursor{cursor:col-resize}::ng-deep .ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";inset:0;background:rgba(200,200,255,.4);pointer-events:none}::ng-deep .ProseMirror table{margin:0}::ng-deep .ProseMirror th,::ng-deep .ProseMirror td{min-width:1em;border:1px solid #ddd;padding:3px 5px}::ng-deep .ProseMirror .tableWrapper{margin:1em 0}::ng-deep .ProseMirror th{font-weight:700;text-align:left}::ng-deep placeholder{display:block;width:50px;height:50px;background-size:500% 100%!important;animation:gradient 3s none infinite}@keyframes gradient{0%{background-position:100% 100%}to{background-position:0 0}}\n"] }]
|
|
198
198
|
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
199
199
|
type: Optional
|
|
200
200
|
}, {
|
|
@@ -202,7 +202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
202
202
|
}] }, { type: Document, decorators: [{
|
|
203
203
|
type: Inject,
|
|
204
204
|
args: [DOCUMENT]
|
|
205
|
-
}] }, { type: i2.
|
|
205
|
+
}] }, { type: i2.MatDialog }, { type: i3.ImagePlugin }]; }, propDecorators: { editor: [{
|
|
206
206
|
type: ViewChild,
|
|
207
207
|
args: ['editor', { read: ElementRef, static: true }]
|
|
208
208
|
}], contentChange: [{
|
|
@@ -212,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
212
212
|
}], save: [{
|
|
213
213
|
type: Output
|
|
214
214
|
}] } });
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxXQUFXLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsY0FBYyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUU1Qzs7Ozs7Ozs7R0FRRztBQUNILFdBQVc7QUFPWCxNQUFNLE9BQU8sc0JBQXNCO0lBbUMvQixZQUN3QyxTQUFvQixFQUNyQixRQUFrQixFQUNwQyxNQUFpQixFQUNqQixXQUF3QjtRQUhMLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBdENyQyxTQUFJLEdBQXNCLElBQUksQ0FBQztRQUliLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRTs7Ozs7V0FLRztRQUNhLGtCQUFhLEdBQXlCLElBQUksQ0FBQztRQUVuRCxXQUFNLEdBQVcsV0FBVyxDQUFDO1FBUXJDOztXQUVHO1FBQ0ssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUVkLFNBQUksR0FBcUIsSUFBSSxDQUFDO1FBRXJDOztXQUVHO1FBQ3VCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBUXRELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ2xELEtBQUssRUFBRSxLQUFLO1lBQ1osbUJBQW1CLEVBQUUsQ0FBQyxXQUF3QixFQUFFLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNaLE9BQU87aUJBQ1Y7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFaEMsaUNBQWlDO2dCQUNqQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBVSxDQUFDLENBQUM7Z0JBQ3JFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVwQixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO29CQUM3QixPQUFPO2lCQUNWO2dCQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFFNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMvQjtnQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUMsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU0sVUFBVSxDQUFDLEdBQXVCO1FBQ3JDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1NBQ3RCO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtZQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRU8sV0FBVztRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxTQUFTLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztTQUNyRTtRQUVELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUN0QixHQUFHLEVBQUUsR0FBRztZQUNSLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1NBQ2hDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxhQUFhO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzRSxNQUFNLE9BQU8sR0FBRztZQUNaLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2QyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2xCLFVBQVUsRUFBRTtZQUNaLFNBQVMsRUFBRTtZQUNYLE9BQU8sRUFBRTtZQUNULElBQUksTUFBTSxDQUFDO2dCQUNQLEtBQUssRUFBRTtvQkFDSCxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsaUNBQWlDLEVBQUM7aUJBQ3pEO2FBQ0osQ0FBQztZQUNGLElBQUksTUFBTSxDQUFDO2dCQUNQLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO2FBQ25CLENBQUM7U0FDTCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGNBQWMsRUFBRTtZQUNoQyxPQUFPLENBQUMsSUFBSSxDQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUN2QixZQUFZLEVBQUUsRUFDZCxNQUFNLENBQUM7Z0JBQ0gsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEMsQ0FBQyxDQUNMLENBQUM7U0FDTDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU07UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDMUIsT0FBTztTQUNWO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFPO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxpQkFBaUI7UUFDcEIsT0FBTztJQUNYLENBQUM7SUFFTSxnQkFBZ0I7UUFDbkIsd0JBQXdCO0lBQzVCLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBWSxFQUFFLEdBQVE7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzFCLE9BQU87U0FDVjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN0QyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFVO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDOzttSEF4TVEsc0JBQXNCLHVFQXFDbkIsUUFBUTt1R0FyQ1gsc0JBQXNCLGdKQUZwQixDQUFDLFdBQVcsQ0FBQyx1R0FLSSxVQUFVLDJDQ2xEMUMscS9kQW1iQTsyRkRwWWEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLGdCQUFnQixhQUdmLENBQUMsV0FBVyxDQUFDOzswQkFzQ25CLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixNQUFNOzJCQUFDLFFBQVE7b0dBbEMyQyxNQUFNO3NCQUFwRSxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFM0IsYUFBYTtzQkFBdEMsTUFBTTtnQkFRUyxhQUFhO3NCQUE1QixLQUFLO2dCQW9Cb0IsSUFBSTtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge0VkaXRvclN0YXRlLCBQbHVnaW4sIFRyYW5zYWN0aW9ufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge0RPTVBhcnNlciwgRE9NU2VyaWFsaXplciwgU2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7Z29Ub05leHRDZWxsLCB0YWJsZUVkaXRpbmd9IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5pbXBvcnQge2tleW1hcH0gZnJvbSAncHJvc2VtaXJyb3Ita2V5bWFwJztcbmltcG9ydCB7SW1hZ2VQbHVnaW4sIEltYWdlVXBsb2FkZXJ9IGZyb20gJy4uL3V0aWxzL2ltYWdlJztcbmltcG9ydCB7YWR2YW5jZWRTY2hlbWEsIGJhc2ljU2NoZW1hfSBmcm9tICcuLi91dGlscy9zY2hlbWEvc2NoZW1hJztcbmltcG9ydCB7YnVpbGRNZW51SXRlbXMsIEtleSwgTWVudUl0ZW1zfSBmcm9tICcuLi91dGlscy9tZW51JztcbmltcG9ydCB7aGlzdG9yeX0gZnJvbSAncHJvc2VtaXJyb3ItaGlzdG9yeSc7XG5pbXBvcnQge2Jhc2VLZXltYXB9IGZyb20gJ3Byb3NlbWlycm9yLWNvbW1hbmRzJztcbmltcG9ydCB7ZHJvcEN1cnNvcn0gZnJvbSAncHJvc2VtaXJyb3ItZHJvcGN1cnNvcic7XG5pbXBvcnQge2dhcEN1cnNvcn0gZnJvbSAncHJvc2VtaXJyb3ItZ2FwY3Vyc29yJztcbmltcG9ydCB7YnVpbGRJbnB1dFJ1bGVzfSBmcm9tICcuLi91dGlscy9pbnB1dHJ1bGVzJztcbmltcG9ydCB7YnVpbGRLZXltYXB9IGZyb20gJy4uL3V0aWxzL2tleW1hcCc7XG5cbi8qKlxuICogUHJvc2VtaXJyb3IgY29tcG9uZW50XG4gKlxuICogVXNhZ2UgOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxuYXR1cmFsLWVkaXRvciBbKG5nTW9kZWwpXT1cImh0bWxTdHJpbmdcIj48L25hdHVyYWwtZWRpdG9yPlxuICogYGBgXG4gKi9cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtJbWFnZVBsdWdpbl0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgdmlldzogRWRpdG9yVmlldyB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZWRpdG9yJywge3JlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZX0pIHByaXZhdGUgZWRpdG9yITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNvbnRlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIHVwbG9hZCBhbiBpbWFnZS5cbiAgICAgKlxuICAgICAqIElmIGdpdmVuIGl0IHdpbGwgZW5hYmxlIGFkdmFuY2VkIHNjaGVtYSwgaW5jbHVkaW5nIGltYWdlIGFuZCB0YWJsZXMuXG4gICAgICogSXQgbXVzdCBiZSBnaXZlbiBvbiBpbml0aWFsaXphdGlvbiBhbmQgY2Fubm90IGJlIGNoYW5nZWQgbGF0ZXIgb24uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGltYWdlVXBsb2FkZXI6IEltYWdlVXBsb2FkZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgc2NoZW1hOiBTY2hlbWEgPSBiYXNpY1NjaGVtYTtcblxuICAgIC8qKlxuICAgICAqIEludGVyZmFjZSB3aXRoIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgICogTm90aWZpZXMgcGFyZW50IG1vZGVsIC8gZm9ybSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEhUTUwgc3RyaW5nXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb250ZW50ID0gJyc7XG5cbiAgICBwdWJsaWMgbWVudTogTWVudUl0ZW1zIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBJZiBzdWJzY3JpYmVkIHRvLCB0aGVuIHRoZSBzYXZlIGJ1dHRvbiB3aWxsIGJlIHNob3duIGFuZCBjbGljayBldmVudHMgZm9yd2FyZGVkXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW1hZ2VQbHVnaW46IEltYWdlUGx1Z2luLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjaGVtYSA9IHRoaXMuaW1hZ2VVcGxvYWRlciA/IGFkdmFuY2VkU2NoZW1hIDogYmFzaWNTY2hlbWE7XG4gICAgICAgIHRoaXMubWVudSA9IGJ1aWxkTWVudUl0ZW1zKHRoaXMuc2NoZW1hLCB0aGlzLmRpYWxvZyk7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBET01TZXJpYWxpemVyLmZyb21TY2hlbWEodGhpcy5zY2hlbWEpO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuY3JlYXRlU3RhdGUoKTtcblxuICAgICAgICB0aGlzLnZpZXcgPSBuZXcgRWRpdG9yVmlldyh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBkaXNwYXRjaFRyYW5zYWN0aW9uOiAodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy52aWV3LnN0YXRlLmFwcGx5KHRyYW5zYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXcudXBkYXRlU3RhdGUobmV3U3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtIGRvYyBpbnRvIEhUTUwgc3RyaW5nXG4gICAgICAgICAgICAgICAgY29uc3QgZG9tID0gc2VyaWFsaXplci5zZXJpYWxpemVGcmFnbWVudCh0aGlzLnZpZXcuc3RhdGUuZG9jIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ18nKTtcbiAgICAgICAgICAgICAgICBlbC5hcHBlbmRDaGlsZChkb20pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Q29udGVudCA9IGVsLmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50ID09PSBuZXdDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBlbC5pbm5lckhUTUw7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuY29udGVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudENoYW5nZS5lbWl0KHRoaXMuY29udGVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdmFsICE9PSB0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpZXcgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5jcmVhdGVTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy52aWV3LnVwZGF0ZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU3RhdGUoKTogRWRpdG9yU3RhdGUge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpO1xuICAgICAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSAnPGRpdj4nICsgdGhpcy5jb250ZW50ICsgJzwvZGl2Pic7XG4gICAgICAgIGlmICghdGVtcGxhdGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjaGlsZCBvZiB0ZW1wbGF0ZSBlbGVtZW50IGNvdWxkIG5vdCBiZSBjcmVhdGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJzZXIgPSBET01QYXJzZXIuZnJvbVNjaGVtYSh0aGlzLnNjaGVtYSk7XG4gICAgICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZSh0ZW1wbGF0ZS5maXJzdENoaWxkKTtcblxuICAgICAgICByZXR1cm4gRWRpdG9yU3RhdGUuY3JlYXRlKHtcbiAgICAgICAgICAgIGRvYzogZG9jLFxuICAgICAgICAgICAgcGx1Z2luczogdGhpcy5jcmVhdGVQbHVnaW5zKCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUGx1Z2lucygpOiBQbHVnaW5bXSB7XG4gICAgICAgIGNvbnN0IGlzTWFjID0gISF0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goL01hYy8pO1xuXG4gICAgICAgIGNvbnN0IHBsdWdpbnMgPSBbXG4gICAgICAgICAgICBidWlsZElucHV0UnVsZXModGhpcy5zY2hlbWEpLFxuICAgICAgICAgICAga2V5bWFwKGJ1aWxkS2V5bWFwKHRoaXMuc2NoZW1hLCBpc01hYykpLFxuICAgICAgICAgICAga2V5bWFwKGJhc2VLZXltYXApLFxuICAgICAgICAgICAgZHJvcEN1cnNvcigpLFxuICAgICAgICAgICAgZ2FwQ3Vyc29yKCksXG4gICAgICAgICAgICBoaXN0b3J5KCksXG4gICAgICAgICAgICBuZXcgUGx1Z2luKHtcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7Y2xhc3M6ICdQcm9zZU1pcnJvci1leGFtcGxlLXNldHVwLXN0eWxlJ30sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IFBsdWdpbih7XG4gICAgICAgICAgICAgICAgdmlldzogKCkgPT4gdGhpcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLnNjaGVtYSA9PT0gYWR2YW5jZWRTY2hlbWEpIHtcbiAgICAgICAgICAgIHBsdWdpbnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlUGx1Z2luLnBsdWdpbixcbiAgICAgICAgICAgICAgICB0YWJsZUVkaXRpbmcoKSxcbiAgICAgICAgICAgICAgICBrZXltYXAoe1xuICAgICAgICAgICAgICAgICAgICBUYWI6IGdvVG9OZXh0Q2VsbCgxKSxcbiAgICAgICAgICAgICAgICAgICAgJ1NoaWZ0LVRhYic6IGdvVG9OZXh0Q2VsbCgtMSksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBsdWdpbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJ5IFByb3NlbWlycm9yIHdoZW5ldmVyIHRoZSBlZGl0b3Igc3RhdGUgY2hhbmdlcy4gU28gd2UgdXBkYXRlIG91ciBtZW51IHN0YXRlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlldyB8fCAhdGhpcy5tZW51KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLm1lbnUpKSB7XG4gICAgICAgICAgICBpdGVtLnVwZGF0ZSh0aGlzLnZpZXcsIHRoaXMudmlldy5zdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETyBkaXNhYmxlIGVkaXRvciA/XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy52aWV3ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBydW4oZXZlbnQ6IEV2ZW50LCBrZXk6IEtleSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlldyB8fCAhdGhpcy5tZW51KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5tZW51W2tleV07XG4gICAgICAgIGlmICghaXRlbSB8fCBpdGVtLmRpc2FibGVkIHx8ICFpdGVtLnNob3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0uc3BlYy5ydW4odGhpcy52aWV3LnN0YXRlLCB0aGlzLnZpZXcuZGlzcGF0Y2gsIHRoaXMudmlldywgZXZlbnQpO1xuICAgICAgICB0aGlzLnZpZXcuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXcgfHwgIXRoaXMuaW1hZ2VVcGxvYWRlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlldy5zdGF0ZS5zZWxlY3Rpb24uJGZyb20ucGFyZW50LmlubGluZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VQbHVnaW4uc3RhcnRJbWFnZVVwbG9hZCh0aGlzLnZpZXcsIGZpbGUsIHRoaXMuaW1hZ2VVcGxvYWRlciwgdGhpcy5zY2hlbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52aWV3LmZvY3VzKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCIgKm5nSWY9XCJtZW51XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1lbnVcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uICpuZ0lmPVwic2F2ZS5vYnNlcnZlZFwiIChjbGljayk9XCJzYXZlLmVtaXQoKVwiIGkxOG4tbWF0VG9vbHRpcCBtYXRUb29sdGlwPVwiRW5yZWdpc3RyZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIG11bHRpcGxlPlxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRvZ2dsZVN0cm9uZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlU3Ryb25nLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LnRvZ2dsZVN0cm9uZy5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlU3Ryb25nJylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJHcmFzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2JvbGQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRvZ2dsZUVtXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVFbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS50b2dnbGVFbS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlRW0nKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkl0YWxpcXVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2l0YWxpYzwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlQ29kZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlQ29kZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS50b2dnbGVDb2RlLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVDb2RlJylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDb2RlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y29kZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlTGlua1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlTGluay5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS50b2dnbGVMaW5rLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVMaW5rJylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJJbnPDqXJlciB1biBsaWVuLi4uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5zZXJ0X2xpbms8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cblxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImJsb2NrTWVudVwiPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5UeXBlPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtbWVudSAjYmxvY2tNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZVBhcmFncmFwaFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZVBhcmFncmFwaC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlUGFyYWdyYXBoJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+UGFyYWdyYXBoZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlQ29kZUJsb2NrXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlQ29kZUJsb2NrLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VDb2RlQmxvY2snKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5Db2RlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkMVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQxLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkMScpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDFcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQyJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgMlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkMy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDMnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSAzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkNFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQ0LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkNCcpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQ1XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQ1JylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgNVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDZcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkNi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDYnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSA2XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmJsb2NrQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmJsb2NrQ2xhc3MuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYmxvY2tDbGFzcycpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkNsYXNzZS4uLlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5ibG9ja0lkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5ibG9ja0lkLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2Jsb2NrSWQnKVwiXG4gICAgICAgICAgICAgICAgPklELi4uXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT5cblxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRhYmxlTWVudVwiICpuZ0lmPVwibWVudS5hZGRDb2x1bW5CZWZvcmVcIj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+VGFibGVhdTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bWF0LW1lbnUgI3RhYmxlTWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lmluc2VydFRhYmxlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5pbnNlcnRUYWJsZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdpbnNlcnRUYWJsZScpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkluc8OpcmVyIHVuIHRhYmxlYXVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuZGVsZXRlVGFibGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmRlbGV0ZVRhYmxlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2RlbGV0ZVRhYmxlJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+U3VwcHJpbWVyIGxlIHRhYmxlYXVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWVyZ2VDZWxsc1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWVyZ2VDZWxscy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtZXJnZUNlbGxzJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+RnVzaW9ubmVyIGxlcyBjZWxsdWxlc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5zcGxpdENlbGxcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnNwbGl0Q2VsbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdzcGxpdENlbGwnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5TY2luZGVyIGxlcyBjZWxsdWxlc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5jZWxsQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5jZWxsQmFja2dyb3VuZENvbG9yLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2NlbGxCYWNrZ3JvdW5kQ29sb3InKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5Db3VsZXVyIGRlIGZvbmQuLi5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudGFibGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudGFibGVDbGFzcy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0YWJsZUNsYXNzJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+Q2xhc3NlLi4uXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRhYmxlSWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRhYmxlSWQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndGFibGVJZCcpXCJcbiAgICAgICAgICAgICAgICA+SUQuLi5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWRkQ29sdW1uQmVmb3JlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hZGRDb2x1bW5CZWZvcmUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWRkQ29sdW1uQmVmb3JlJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW5lIGNvbG9ubmUgYXZhbnRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWRkQ29sdW1uQWZ0ZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFkZENvbHVtbkFmdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FkZENvbHVtbkFmdGVyJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW5lIGNvbG9ubmUgYXByw6hzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmRlbGV0ZUNvbHVtblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuZGVsZXRlQ29sdW1uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2RlbGV0ZUNvbHVtbicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlN1cHByaW1lciBsYSBjb2xvbm5lXG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFkZFJvd0JlZm9yZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWRkUm93QmVmb3JlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FkZFJvd0JlZm9yZScpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkluc8OpcmVyIHVuZSBsaWduZSBhdmFudFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hZGRSb3dBZnRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWRkUm93QWZ0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWRkUm93QWZ0ZXInKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5JbnPDqXJlciB1bmUgbGlnbmUgYXByw6hzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmRlbGV0ZVJvd1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuZGVsZXRlUm93LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2RlbGV0ZVJvdycpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlN1cHByaW1lciBsYSBsaWduZVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVIZWFkZXJDb2x1bW5cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZUhlYWRlckNvbHVtbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVIZWFkZXJDb2x1bW4nKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5FbnTDqnRlIGRlIGNvbG9ubmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlSGVhZGVyUm93XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVIZWFkZXJSb3cuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlSGVhZGVyUm93JylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+RW50w6p0ZSBkZSBsaWduZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVIZWFkZXJDZWxsXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVIZWFkZXJDZWxsLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUhlYWRlckNlbGwnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5FbnTDqnRlIGRlIGNlbGx1bGVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaW1hZ2VVcGxvYWRlclwiXG4gICAgICAgICAgICBuYXR1cmFsRmlsZURyb3BcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2Jyb2FkY2FzdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJJbnPDqXJlciB1bmUgaW1hZ2VcIlxuICAgICAgICAgICAgKGZpbGVDaGFuZ2UpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+aW5zZXJ0X3Bob3RvPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwICpuZ0lmPVwibWVudS5hbGlnbkxlZnRcIj5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hbGlnbkxlZnRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduTGVmdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS5hbGlnbkxlZnQuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FsaWduTGVmdCcpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQWxpZ25lciBnYXVjaGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWxpZ25DZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduQ2VudGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LmFsaWduQ2VudGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdhbGlnbkNlbnRlcicpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQ2VudHJlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9hbGlnbl9jZW50ZXI8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFsaWduUmlnaHRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduUmlnaHQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUuYWxpZ25SaWdodC5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWxpZ25SaWdodCcpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQWxpZ25lciBkcm9pdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFsaWduSnVzdGlmeVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWxpZ25KdXN0aWZ5LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LmFsaWduSnVzdGlmeS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWxpZ25KdXN0aWZ5JylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJKdXN0aWZpZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fanVzdGlmeTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS51bmRvXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnVuZG8uZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd1bmRvJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiQW5udWxlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj51bmRvPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LnJlZG9cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUucmVkby5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3JlZG8nKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJSZWZhaXJlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPnJlZG88L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUud3JhcEJ1bGxldExpc3QgJiYgbWVudS53cmFwQnVsbGV0TGlzdC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LndyYXBCdWxsZXRMaXN0LmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnd3JhcEJ1bGxldExpc3QnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMaXN0ZSDDoCBwdWNlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9saXN0X2J1bGxldGVkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LndyYXBPcmRlcmVkTGlzdCAmJiBtZW51LndyYXBPcmRlcmVkTGlzdC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LndyYXBPcmRlcmVkTGlzdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3dyYXBPcmRlcmVkTGlzdCcpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkxpc3RlIMOgIG51bcOpcm9cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2xpc3RfbnVtYmVyZWQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUud3JhcEJsb2NrUXVvdGUgJiYgbWVudS53cmFwQmxvY2tRdW90ZS5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LndyYXBCbG9ja1F1b3RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnd3JhcEJsb2NrUXVvdGUnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDaXRhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfcXVvdGU8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUuam9pblVwICYmIG1lbnUuam9pblVwLnNob3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuam9pblVwLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnam9pblVwJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRnVzaW9ubmVyIGF2ZWMgbCfDqWzDqW1lbnQgZHUgaGF1dFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3ZlX3VwPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LmxpZnQgJiYgbWVudS5saWZ0LnNob3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubGlmdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2xpZnQnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEw6lzaW5kZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2luZGVudF9kZWNyZWFzZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS5zZWxlY3RQYXJlbnROb2RlICYmIG1lbnUuc2VsZWN0UGFyZW50Tm9kZS5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnNlbGVjdFBhcmVudE5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdzZWxlY3RQYXJlbnROb2RlJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiU8OpbGVjdGlvbm5lciBsJ8OpbMOpbWVudCBwYXJlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+c2VsZWN0X2FsbDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiICNlZGl0b3I+PC9kaXY+XG4iXX0=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxXQUFXLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsY0FBYyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFV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LENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDOzttSEF4TVEsc0JBQXNCLHVFQXFDbkIsUUFBUTt1R0FyQ1gsc0JBQXNCLGdKQUZwQixDQUFDLFdBQVcsQ0FBQyx1R0FLSSxVQUFVLDJDQ2xEMUMsK3plQW1iQTsyRkRwWWEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLGdCQUFnQixhQUdmLENBQUMsV0FBVyxDQUFDOzswQkFzQ25CLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixNQUFNOzJCQUFDLFFBQVE7OEZBbEMyQyxNQUFNO3NCQUFwRSxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFM0IsYUFBYTtzQkFBdEMsTUFBTTtnQkFRUyxhQUFhO3NCQUE1QixLQUFLO2dCQW9Cb0IsSUFBSTtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge0VkaXRvclN0YXRlLCBQbHVnaW4sIFRyYW5zYWN0aW9ufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge0RPTVBhcnNlciwgRE9NU2VyaWFsaXplciwgU2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge2dvVG9OZXh0Q2VsbCwgdGFibGVFZGl0aW5nfSBmcm9tICdwcm9zZW1pcnJvci10YWJsZXMnO1xuaW1wb3J0IHtrZXltYXB9IGZyb20gJ3Byb3NlbWlycm9yLWtleW1hcCc7XG5pbXBvcnQge0ltYWdlUGx1Z2luLCBJbWFnZVVwbG9hZGVyfSBmcm9tICcuLi91dGlscy9pbWFnZSc7XG5pbXBvcnQge2FkdmFuY2VkU2NoZW1hLCBiYXNpY1NjaGVtYX0gZnJvbSAnLi4vdXRpbHMvc2NoZW1hL3NjaGVtYSc7XG5pbXBvcnQge2J1aWxkTWVudUl0ZW1zLCBLZXksIE1lbnVJdGVtc30gZnJvbSAnLi4vdXRpbHMvbWVudSc7XG5pbXBvcnQge2hpc3Rvcnl9IGZyb20gJ3Byb3NlbWlycm9yLWhpc3RvcnknO1xuaW1wb3J0IHtiYXNlS2V5bWFwfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XG5pbXBvcnQge2Ryb3BDdXJzb3J9IGZyb20gJ3Byb3NlbWlycm9yLWRyb3BjdXJzb3InO1xuaW1wb3J0IHtnYXBDdXJzb3J9IGZyb20gJ3Byb3NlbWlycm9yLWdhcGN1cnNvcic7XG5pbXBvcnQge2J1aWxkSW5wdXRSdWxlc30gZnJvbSAnLi4vdXRpbHMvaW5wdXRydWxlcyc7XG5pbXBvcnQge2J1aWxkS2V5bWFwfSBmcm9tICcuLi91dGlscy9rZXltYXAnO1xuXG4vKipcbiAqIFByb3NlbWlycm9yIGNvbXBvbmVudFxuICpcbiAqIFVzYWdlIDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bmF0dXJhbC1lZGl0b3IgWyhuZ01vZGVsKV09XCJodG1sU3RyaW5nXCI+PC9uYXR1cmFsLWVkaXRvcj5cbiAqIGBgYFxuICovXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLWVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbSW1hZ2VQbHVnaW5dLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXcgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHtyZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWV9KSBwcml2YXRlIGVkaXRvciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjb250ZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byB1cGxvYWQgYW4gaW1hZ2UuXG4gICAgICpcbiAgICAgKiBJZiBnaXZlbiBpdCB3aWxsIGVuYWJsZSBhZHZhbmNlZCBzY2hlbWEsIGluY2x1ZGluZyBpbWFnZSBhbmQgdGFibGVzLlxuICAgICAqIEl0IG11c3QgYmUgZ2l2ZW4gb24gaW5pdGlhbGl6YXRpb24gYW5kIGNhbm5vdCBiZSBjaGFuZ2VkIGxhdGVyIG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVVwbG9hZGVyOiBJbWFnZVVwbG9hZGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIHNjaGVtYTogU2NoZW1hID0gYmFzaWNTY2hlbWE7XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcmZhY2Ugd2l0aCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgICAqIE5vdGlmaWVzIHBhcmVudCBtb2RlbCAvIGZvcm0gY29udHJvbGxlclxuICAgICAqL1xuICAgIHByaXZhdGUgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBIVE1MIHN0cmluZ1xuICAgICAqL1xuICAgIHByaXZhdGUgY29udGVudCA9ICcnO1xuXG4gICAgcHVibGljIG1lbnU6IE1lbnVJdGVtcyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogSWYgc3Vic2NyaWJlZCB0bywgdGhlbiB0aGUgc2F2ZSBidXR0b24gd2lsbCBiZSBzaG93biBhbmQgY2xpY2sgZXZlbnRzIGZvcndhcmRlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGltYWdlUGx1Z2luOiBJbWFnZVBsdWdpbixcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY2hlbWEgPSB0aGlzLmltYWdlVXBsb2FkZXIgPyBhZHZhbmNlZFNjaGVtYSA6IGJhc2ljU2NoZW1hO1xuICAgICAgICB0aGlzLm1lbnUgPSBidWlsZE1lbnVJdGVtcyh0aGlzLnNjaGVtYSwgdGhpcy5kaWFsb2cpO1xuICAgICAgICBjb25zdCBzZXJpYWxpemVyID0gRE9NU2VyaWFsaXplci5mcm9tU2NoZW1hKHRoaXMuc2NoZW1hKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmNyZWF0ZVN0YXRlKCk7XG5cbiAgICAgICAgdGhpcy52aWV3ID0gbmV3IEVkaXRvclZpZXcodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgZGlzcGF0Y2hUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHRoaXMudmlldy5zdGF0ZS5hcHBseSh0cmFuc2FjdGlvbik7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LnVwZGF0ZVN0YXRlKG5ld1N0YXRlKTtcblxuICAgICAgICAgICAgICAgIC8vIFRyYW5zZm9ybSBkb2MgaW50byBIVE1MIHN0cmluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvbSA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplRnJhZ21lbnQodGhpcy52aWV3LnN0YXRlLmRvYyBhcyBhbnkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJyk7XG4gICAgICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoZG9tKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBlbC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudCA9PT0gbmV3Q29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gZWwuaW5uZXJIVE1MO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRDaGFuZ2UuZW1pdCh0aGlzLmNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnICYmIHZhbCAhPT0gdGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSB2YWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aWV3ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuY3JlYXRlU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMudmlldy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVN0YXRlKCk6IEVkaXRvclN0YXRlIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ18nKTtcbiAgICAgICAgdGVtcGxhdGUuaW5uZXJIVE1MID0gJzxkaXY+JyArIHRoaXMuY29udGVudCArICc8L2Rpdj4nO1xuICAgICAgICBpZiAoIXRlbXBsYXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2hpbGQgb2YgdGVtcGxhdGUgZWxlbWVudCBjb3VsZCBub3QgYmUgY3JlYXRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VyID0gRE9NUGFyc2VyLmZyb21TY2hlbWEodGhpcy5zY2hlbWEpO1xuICAgICAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2UodGVtcGxhdGUuZmlyc3RDaGlsZCk7XG5cbiAgICAgICAgcmV0dXJuIEVkaXRvclN0YXRlLmNyZWF0ZSh7XG4gICAgICAgICAgICBkb2M6IGRvYyxcbiAgICAgICAgICAgIHBsdWdpbnM6IHRoaXMuY3JlYXRlUGx1Z2lucygpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVBsdWdpbnMoKTogUGx1Z2luW10ge1xuICAgICAgICBjb25zdCBpc01hYyA9ICEhdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8ubmF2aWdhdG9yLnBsYXRmb3JtLm1hdGNoKC9NYWMvKTtcblxuICAgICAgICBjb25zdCBwbHVnaW5zID0gW1xuICAgICAgICAgICAgYnVpbGRJbnB1dFJ1bGVzKHRoaXMuc2NoZW1hKSxcbiAgICAgICAgICAgIGtleW1hcChidWlsZEtleW1hcCh0aGlzLnNjaGVtYSwgaXNNYWMpKSxcbiAgICAgICAgICAgIGtleW1hcChiYXNlS2V5bWFwKSxcbiAgICAgICAgICAgIGRyb3BDdXJzb3IoKSxcbiAgICAgICAgICAgIGdhcEN1cnNvcigpLFxuICAgICAgICAgICAgaGlzdG9yeSgpLFxuICAgICAgICAgICAgbmV3IFBsdWdpbih7XG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge2NsYXNzOiAnUHJvc2VNaXJyb3ItZXhhbXBsZS1zZXR1cC1zdHlsZSd9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBQbHVnaW4oe1xuICAgICAgICAgICAgICAgIHZpZXc6ICgpID0+IHRoaXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5zY2hlbWEgPT09IGFkdmFuY2VkU2NoZW1hKSB7XG4gICAgICAgICAgICBwbHVnaW5zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZVBsdWdpbi5wbHVnaW4sXG4gICAgICAgICAgICAgICAgdGFibGVFZGl0aW5nKCksXG4gICAgICAgICAgICAgICAga2V5bWFwKHtcbiAgICAgICAgICAgICAgICAgICAgVGFiOiBnb1RvTmV4dENlbGwoMSksXG4gICAgICAgICAgICAgICAgICAgICdTaGlmdC1UYWInOiBnb1RvTmV4dENlbGwoLTEpLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwbHVnaW5zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBQcm9zZW1pcnJvciB3aGVuZXZlciB0aGUgZWRpdG9yIHN0YXRlIGNoYW5nZXMuIFNvIHdlIHVwZGF0ZSBvdXIgbWVudSBzdGF0ZXMuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXcgfHwgIXRoaXMubWVudSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIE9iamVjdC52YWx1ZXModGhpcy5tZW51KSkge1xuICAgICAgICAgICAgaXRlbS51cGRhdGUodGhpcy52aWV3LCB0aGlzLnZpZXcuc3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKCk6IHZvaWQge1xuICAgICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE8gZGlzYWJsZSBlZGl0b3IgP1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMudmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuKGV2ZW50OiBFdmVudCwga2V5OiBLZXkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXcgfHwgIXRoaXMubWVudSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMubWVudVtrZXldO1xuICAgICAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCB8fCAhaXRlbS5zaG93KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnNwZWMucnVuKHRoaXMudmlldy5zdGF0ZSwgdGhpcy52aWV3LmRpc3BhdGNoLCB0aGlzLnZpZXcsIGV2ZW50KTtcbiAgICAgICAgdGhpcy52aWV3LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwbG9hZChmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3IHx8ICF0aGlzLmltYWdlVXBsb2FkZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLiRmcm9tLnBhcmVudC5pbmxpbmVDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlUGx1Z2luLnN0YXJ0SW1hZ2VVcGxvYWQodGhpcy52aWV3LCBmaWxlLCB0aGlzLmltYWdlVXBsb2FkZXIsIHRoaXMuc2NoZW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmlldy5mb2N1cygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiICpuZ0lmPVwibWVudVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtZW51XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwic2F2ZS5vYnNlcnZlZFwiIChjbGljayk9XCJzYXZlLmVtaXQoKVwiIGkxOG4tbWF0VG9vbHRpcCBtYXRUb29sdGlwPVwiRW5yZWdpc3RyZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cInNhdmVcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgbXVsdGlwbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlU3Ryb25nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVTdHJvbmcuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUudG9nZ2xlU3Ryb25nLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVTdHJvbmcnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkdyYXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImZvcm1hdF9ib2xkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVFbVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlRW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUudG9nZ2xlRW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUVtJylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJJdGFsaXF1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRJY29uPVwiZm9ybWF0X2l0YWxpY1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlQ29kZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlQ29kZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS50b2dnbGVDb2RlLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVDb2RlJylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDb2RlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udEljb249XCJjb2RlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVMaW5rXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVMaW5rLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LnRvZ2dsZUxpbmsuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUxpbmsnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkluc8OpcmVyIHVuIGxpZW4uLi5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImluc2VydF9saW5rXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJibG9ja01lbnVcIj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+VHlwZTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImFycm93X2Ryb3BfZG93blwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtbWVudSAjYmxvY2tNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZVBhcmFncmFwaFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZVBhcmFncmFwaC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlUGFyYWdyYXBoJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+UGFyYWdyYXBoZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlQ29kZUJsb2NrXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlQ29kZUJsb2NrLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VDb2RlQmxvY2snKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5Db2RlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkMVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQxLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkMScpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDFcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQyJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgMlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkMy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDMnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSAzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkNFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQ0LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkNCcpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQ1XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQ1JylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgNVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDZcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkNi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDYnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSA2XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmJsb2NrQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmJsb2NrQ2xhc3MuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYmxvY2tDbGFzcycpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkNsYXNzZS4uLlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5ibG9ja0lkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5ibG9ja0lkLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2Jsb2NrSWQnKVwiXG4gICAgICAgICAgICAgICAgPklELi4uXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT5cblxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRhYmxlTWVudVwiICpuZ0lmPVwibWVudS5hZGRDb2x1bW5CZWZvcmVcIj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+VGFibGVhdTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImFycm93X2Ryb3BfZG93blwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtbWVudSAjdGFibGVNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuaW5zZXJ0VGFibGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lmluc2VydFRhYmxlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2luc2VydFRhYmxlJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW4gdGFibGVhdVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5kZWxldGVUYWJsZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuZGVsZXRlVGFibGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnZGVsZXRlVGFibGUnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5TdXBwcmltZXIgbGUgdGFibGVhdVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tZXJnZUNlbGxzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tZXJnZUNlbGxzLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21lcmdlQ2VsbHMnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5GdXNpb25uZXIgbGVzIGNlbGx1bGVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnNwbGl0Q2VsbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuc3BsaXRDZWxsLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3NwbGl0Q2VsbCcpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlNjaW5kZXIgbGVzIGNlbGx1bGVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmNlbGxCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmNlbGxCYWNrZ3JvdW5kQ29sb3IuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnY2VsbEJhY2tncm91bmRDb2xvcicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkNvdWxldXIgZGUgZm9uZC4uLlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50YWJsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50YWJsZUNsYXNzLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RhYmxlQ2xhc3MnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5DbGFzc2UuLi5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudGFibGVJZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudGFibGVJZC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0YWJsZUlkJylcIlxuICAgICAgICAgICAgICAgID5JRC4uLlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hZGRDb2x1bW5CZWZvcmVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFkZENvbHVtbkJlZm9yZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdhZGRDb2x1bW5CZWZvcmUnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5JbnPDqXJlciB1bmUgY29sb25uZSBhdmFudFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hZGRDb2x1bW5BZnRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWRkQ29sdW1uQWZ0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWRkQ29sdW1uQWZ0ZXInKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5JbnPDqXJlciB1bmUgY29sb25uZSBhcHLDqHNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuZGVsZXRlQ29sdW1uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5kZWxldGVDb2x1bW4uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnZGVsZXRlQ29sdW1uJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+U3VwcHJpbWVyIGxhIGNvbG9ubmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWRkUm93QmVmb3JlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hZGRSb3dCZWZvcmUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWRkUm93QmVmb3JlJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW5lIGxpZ25lIGF2YW50XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFkZFJvd0FmdGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hZGRSb3dBZnRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdhZGRSb3dBZnRlcicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkluc8OpcmVyIHVuZSBsaWduZSBhcHLDqHNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuZGVsZXRlUm93XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5kZWxldGVSb3cuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnZGVsZXRlUm93JylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+U3VwcHJpbWVyIGxhIGxpZ25lXG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRvZ2dsZUhlYWRlckNvbHVtblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlSGVhZGVyQ29sdW1uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUhlYWRlckNvbHVtbicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkVudMOqdGUgZGUgY29sb25uZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVIZWFkZXJSb3dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZUhlYWRlclJvdy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVIZWFkZXJSb3cnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5FbnTDqnRlIGRlIGxpZ25lXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRvZ2dsZUhlYWRlckNlbGxcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZUhlYWRlckNlbGwuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlSGVhZGVyQ2VsbCcpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkVudMOqdGUgZGUgY2VsbHVsZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImltYWdlVXBsb2FkZXJcIlxuICAgICAgICAgICAgbmF0dXJhbEZpbGVEcm9wXG4gICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFticm9hZGNhc3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiSW5zw6lyZXIgdW5lIGltYWdlXCJcbiAgICAgICAgICAgIChmaWxlQ2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRJY29uPVwiaW5zZXJ0X3Bob3RvXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwICpuZ0lmPVwibWVudS5hbGlnbkxlZnRcIj5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hbGlnbkxlZnRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduTGVmdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS5hbGlnbkxlZnQuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FsaWduTGVmdCcpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQWxpZ25lciBnYXVjaGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImZvcm1hdF9hbGlnbl9sZWZ0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hbGlnbkNlbnRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWxpZ25DZW50ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUuYWxpZ25DZW50ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FsaWduQ2VudGVyJylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDZW50cmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udEljb249XCJmb3JtYXRfYWxpZ25fY2VudGVyXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hbGlnblJpZ2h0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hbGlnblJpZ2h0LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LmFsaWduUmlnaHQuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FsaWduUmlnaHQnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFsaWduZXIgZHJvaXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udEljb249XCJmb3JtYXRfYWxpZ25fcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFsaWduSnVzdGlmeVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWxpZ25KdXN0aWZ5LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LmFsaWduSnVzdGlmeS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWxpZ25KdXN0aWZ5JylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJKdXN0aWZpZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImZvcm1hdF9hbGlnbl9qdXN0aWZ5XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUudW5kb1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS51bmRvLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndW5kbycpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFubnVsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gZm9udEljb249XCJ1bmRvXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUucmVkb1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5yZWRvLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAncmVkbycpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlJlZmFpcmVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gZm9udEljb249XCJyZWRvXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUud3JhcEJ1bGxldExpc3QgJiYgbWVudS53cmFwQnVsbGV0TGlzdC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LndyYXBCdWxsZXRMaXN0LmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnd3JhcEJ1bGxldExpc3QnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMaXN0ZSDDoCBwdWNlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRJY29uPVwiZm9ybWF0X2xpc3RfYnVsbGV0ZWRcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS53cmFwT3JkZXJlZExpc3QgJiYgbWVudS53cmFwT3JkZXJlZExpc3Quc2hvd1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS53cmFwT3JkZXJlZExpc3QuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd3cmFwT3JkZXJlZExpc3QnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMaXN0ZSDDoCBudW3DqXJvXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRJY29uPVwiZm9ybWF0X2xpc3RfbnVtYmVyZWRcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS53cmFwQmxvY2tRdW90ZSAmJiBtZW51LndyYXBCbG9ja1F1b3RlLnNob3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUud3JhcEJsb2NrUXVvdGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd3cmFwQmxvY2tRdW90ZScpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNpdGF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRJY29uPVwiZm9ybWF0X3F1b3RlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUuam9pblVwICYmIG1lbnUuam9pblVwLnNob3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuam9pblVwLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnam9pblVwJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRnVzaW9ubmVyIGF2ZWMgbCfDqWzDqW1lbnQgZHUgaGF1dFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cIm1vdmVfdXBcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS5saWZ0ICYmIG1lbnUubGlmdC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmxpZnQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdsaWZ0JylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRMOpc2luZGVudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRJY29uPVwiZm9ybWF0X2luZGVudF9kZWNyZWFzZVwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LnNlbGVjdFBhcmVudE5vZGUgJiYgbWVudS5zZWxlY3RQYXJlbnROb2RlLnNob3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuc2VsZWN0UGFyZW50Tm9kZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3NlbGVjdFBhcmVudE5vZGUnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJTw6lsZWN0aW9ubmVyIGwnw6lsw6ltZW50IHBhcmVudFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cInNlbGVjdF9hbGxcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImVkaXRvci1jb250YWluZXJcIiAjZWRpdG9yPjwvZGl2PlxuIl19
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { NaturalEditorComponent } from './editor/editor.component';
|
|
4
|
-
import {
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
5
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
6
6
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
7
7
|
import { MatIconModule } from '@angular/material/icon';
|
|
8
|
-
import {
|
|
8
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
9
9
|
import { LinkDialogComponent } from './link-dialog/link-dialog.component';
|
|
10
10
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
12
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
13
|
+
import { MatInputModule } from '@angular/material/input';
|
|
14
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
15
15
|
import { NaturalFileModule, NaturalIconModule } from '@ecodev/natural';
|
|
16
16
|
import { MatDividerModule } from '@angular/material/divider';
|
|
17
17
|
import { ColorDialogComponent } from './color-dialog/color-dialog.component';
|
|
@@ -97,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
97
97
|
exports: [...imports, ...declarationsToExport],
|
|
98
98
|
}]
|
|
99
99
|
}] });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOztBQUU1RSxNQUFNLE9BQU8sR0FBRztJQUNaLFlBQVk7SUFDWixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixtQkFBbUI7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0FBYWpGLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFUeEIsb0JBQW9CO1FBQ3BCLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsbUJBQW1CLEVBUEcsc0JBQXNCLEVBQUUseUJBQXlCLGFBaEIzRSxZQUFZO1FBQ1osZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsbUJBQW1CLGFBYm5CLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixjQUFjO1FBQ2QsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixtQkFBbUIsRUFHTyxzQkFBc0IsRUFBRSx5QkFBeUI7aUhBYWxFLG1CQUFtQixZQUhmLE9BQU8sRUExQnBCLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixjQUFjO1FBQ2QsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixtQkFBbUI7MkZBZ0JWLG1CQUFtQjtrQkFYL0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1Ysb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixHQUFHLG9CQUFvQjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3JCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsb0JBQW9CLENBQUM7aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF0dXJhbEVkaXRvckNvbXBvbmVudH0gZnJvbSAnLi9lZGl0b3IvZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7TWF0QnV0dG9uVG9nZ2xlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7TWF0VG9vbGJhck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRNZW51TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7TGlua0RpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi9saW5rLWRpYWxvZy9saW5rLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdERpYWxvZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7TWF0VG9vbHRpcE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQge05hdHVyYWxGaWxlTW9kdWxlLCBOYXR1cmFsSWNvbk1vZHVsZX0gZnJvbSAnQGVjb2Rldi9uYXR1cmFsJztcbmltcG9ydCB7TWF0RGl2aWRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQge0NvbG9yRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuL2NvbG9yLWRpYWxvZy9jb2xvci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7Q2xhc3NEaWFsb2dDb21wb25lbnR9IGZyb20gJy4vY2xhc3MtZGlhbG9nL2NsYXNzLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtJZERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi9pZC1kaWFsb2cvaWQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxDdXN0b21Dc3NEaXJlY3RpdmV9IGZyb20gJy4vY3VzdG9tLWNzcy9jdXN0b20tY3NzLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IGltcG9ydHMgPSBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTmF0dXJhbEZpbGVNb2R1bGUsXG4gICAgTmF0dXJhbEljb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbl07XG5cbmNvbnN0IGRlY2xhcmF0aW9uc1RvRXhwb3J0ID0gW05hdHVyYWxFZGl0b3JDb21wb25lbnQsIE5hdHVyYWxDdXN0b21Dc3NEaXJlY3RpdmVdO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBDbGFzc0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgQ29sb3JEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIElkRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBMaW5rRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAuLi5kZWNsYXJhdGlvbnNUb0V4cG9ydCxcbiAgICBdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBleHBvcnRzOiBbLi4uaW1wb3J0cywgLi4uZGVjbGFyYXRpb25zVG9FeHBvcnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRWRpdG9yTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
3
|
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
4
4
|
import { ifValid } from '@ecodev/natural';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/material/
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
7
|
import * as i2 from "@angular/common";
|
|
8
|
-
import * as i3 from "@angular/material/
|
|
9
|
-
import * as i4 from "@angular/material/
|
|
10
|
-
import * as i5 from "@angular/material/
|
|
8
|
+
import * as i3 from "@angular/material/button";
|
|
9
|
+
import * as i4 from "@angular/material/form-field";
|
|
10
|
+
import * as i5 from "@angular/material/input";
|
|
11
11
|
import * as i6 from "@angular/forms";
|
|
12
12
|
export class IdDialogComponent {
|
|
13
13
|
constructor(data, dialogRef) {
|
|
@@ -28,13 +28,13 @@ export class IdDialogComponent {
|
|
|
28
28
|
this.dialogRef.close(this.form.getRawValue());
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
IdDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: IdDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.
|
|
32
|
-
IdDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: IdDialogComponent, selector: "ng-component", ngImport: i0, template: "<h2 i18n mat-dialog-title>Saisir le ID</h2>\n\n<mat-dialog-content [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>ID</mat-label>\n <input matInput [formControl]=\"idControl\" (keydown.enter)=\"maybeConfirm()\" cdkFocusInitial />\n <
|
|
31
|
+
IdDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: IdDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
IdDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: IdDialogComponent, selector: "ng-component", ngImport: i0, template: "<h2 i18n mat-dialog-title>Saisir le ID</h2>\n\n<mat-dialog-content [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>ID</mat-label>\n <input matInput [formControl]=\"idControl\" (keydown.enter)=\"maybeConfirm()\" cdkFocusInitial />\n <mat-error *ngIf=\"idControl.hasError('pattern')\" i18n>Doit \u00EAtre un ID valide</mat-error>\n </mat-form-field>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Annuler</button>\n <button mat-stroked-button (click)=\"maybeConfirm()\" [disabled]=\"!form.valid\"><span i18n>Valider</span></button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-content{width:70vw;max-width:30em;display:grid}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: IdDialogComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
|
-
args: [{ template: "<h2 i18n mat-dialog-title>Saisir le ID</h2>\n\n<mat-dialog-content [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>ID</mat-label>\n <input matInput [formControl]=\"idControl\" (keydown.enter)=\"maybeConfirm()\" cdkFocusInitial />\n <
|
|
35
|
+
args: [{ template: "<h2 i18n mat-dialog-title>Saisir le ID</h2>\n\n<mat-dialog-content [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>ID</mat-label>\n <input matInput [formControl]=\"idControl\" (keydown.enter)=\"maybeConfirm()\" cdkFocusInitial />\n <mat-error *ngIf=\"idControl.hasError('pattern')\" i18n>Doit \u00EAtre un ID valide</mat-error>\n </mat-form-field>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Annuler</button>\n <button mat-stroked-button (click)=\"maybeConfirm()\" [disabled]=\"!form.valid\"><span i18n>Valider</span></button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-content{width:70vw;max-width:30em;display:grid}\n"] }]
|
|
36
36
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
37
37
|
type: Inject,
|
|
38
38
|
args: [MAT_DIALOG_DATA]
|
|
39
|
-
}] }, { type: i1.
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
}] }, { type: i1.MatDialogRef }]; } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvaWQtZGlhbG9nL2lkLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL2lkLWRpYWxvZy9pZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFrQnhDLE1BQU0sT0FBTyxpQkFBaUI7SUFTMUIsWUFDNkIsSUFBa0IsRUFDbkMsU0FBd0Q7UUFBeEQsY0FBUyxHQUFULFNBQVMsQ0FBK0M7UUFWcEQsY0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUM1QyxVQUFVLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQztZQUNsRSxXQUFXLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7UUFDYSxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDakMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3JCLENBQUMsQ0FBQztRQU1DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxZQUFZO1FBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLE9BQU87UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7OEdBdEJRLGlCQUFpQixrQkFVZCxlQUFlO2tHQVZsQixpQkFBaUIsb0RDckI5Qiw0b0JBY0E7MkZET2EsaUJBQWlCO2tCQUo3QixTQUFTOzs7MEJBY0QsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge2lmVmFsaWR9IGZyb20gJ0BlY29kZXYvbmF0dXJhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWREaWFsb2dEYXRhIHtcbiAgICAvKipcbiAgICAgKiBJRCBuYW1lXG4gICAgICpcbiAgICAgKiBFZzpcbiAgICAgKlxuICAgICAqIC0gYFwiXCJgXG4gICAgICogLSBgXCJteS1pZFwiYFxuICAgICAqL1xuICAgIGlkOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9pZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lkLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJZERpYWxvZ0NvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGlkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnBhdHRlcm4oLyheKC0/W19hLXpBLVpdK1tfYS16QS1aMC05LV0qKSspLyksXG4gICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGlkOiB0aGlzLmlkQ29udHJvbCxcbiAgICB9KTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGE6IElkRGlhbG9nRGF0YSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxJZERpYWxvZ0NvbXBvbmVudCwgSWREaWFsb2dEYXRhPixcbiAgICApIHtcbiAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXliZUNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGlmVmFsaWQodGhpcy5mb3JtKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jb25maXJtKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgIH1cbn1cbiIsIjxoMiBpMThuIG1hdC1kaWFsb2ctdGl0bGU+U2Fpc2lyIGxlIElEPC9oMj5cblxuPG1hdC1kaWFsb2ctY29udGVudCBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+SUQ8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJpZENvbnRyb2xcIiAoa2V5ZG93bi5lbnRlcik9XCJtYXliZUNvbmZpcm0oKVwiIGNka0ZvY3VzSW5pdGlhbCAvPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaWRDb250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJylcIiBpMThuPkRvaXQgw6p0cmUgdW4gSUQgdmFsaWRlPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgaTE4bj5Bbm51bGVyPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm1heWJlQ29uZmlybSgpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCI+PHNwYW4gaTE4bj5WYWxpZGVyPC9zcGFuPjwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
|