tui-image-editor-angular3 14.0.2 → 14.0.4
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/interfaces/tools-config.mjs +1 -1
- package/esm2020/lib/services/tools.config-manager.service.mjs +10 -5
- package/esm2020/lib/submenus/draw/draw.component.mjs +3 -3
- package/esm2020/lib/submenus/text/text.component.mjs +28 -8
- package/esm2020/lib/tui-image-editor.component.mjs +14 -4
- package/fesm2015/tui-image-editor-angular2.mjs +2527 -214
- package/fesm2015/tui-image-editor-angular2.mjs.map +1 -1
- package/fesm2015/tui-image-editor-angular3.mjs +53 -19
- package/fesm2015/tui-image-editor-angular3.mjs.map +1 -1
- package/fesm2020/tui-image-editor-angular2.mjs +2453 -423
- package/fesm2020/tui-image-editor-angular2.mjs.map +1 -1
- package/fesm2020/tui-image-editor-angular3.mjs +53 -19
- package/fesm2020/tui-image-editor-angular3.mjs.map +1 -1
- package/lib/interfaces/tools-config.d.ts +7 -3
- package/lib/interfaces/tools-config.d.ts.map +1 -1
- package/lib/services/tools.config-manager.service.d.ts.map +1 -1
- package/lib/submenus/draw/draw.component.d.ts.map +1 -1
- package/lib/submenus/text/text.component.d.ts +3 -1
- package/lib/submenus/text/text.component.d.ts.map +1 -1
- package/lib/tui-image-editor.component.d.ts +3 -1
- package/lib/tui-image-editor.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVpLWltYWdlLWVkaXRvci1hbmd1bGFyMi9zcmMvbGliL2ludGVyZmFjZXMvdG9vbHMtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFBlbkNvbmZpZyB7XHJcbiAgICBkcmF3VHlwZTogJ2ZyZWUnIHwgJ2xpbmUnO1xyXG4gICAgZHJhd1N0cm9rZUNvbG9yOiBzdHJpbmc7XHJcbiAgICBkcmF3U3Ryb2tlV2lkdGhWYWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDb25maWcge1xyXG4gICAgdGV4dENvbG9yOiBzdHJpbmc7XHJcbiAgICB0ZXh0U2l6ZVZhbHVlOiBudW1iZXI7XHJcbiAgICB0ZXh0QWxpZ246ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JztcclxuICAgIHRleHRGb250RmFtaWx5IDogc3RyaW5nO1xyXG4gICAgdGV4dEZvbnRTdHlsZTogJ25vcm1hbCcgfCAnaXRhbGljJztcclxuICAgIHRleHRGb250V2VpZ2h0OiAnbm9ybWFsJyB8ICdib2xkJztcclxuICAgIHRleHREZWNvcmF0aW9uOlxyXG4gICAgICAgIHwgJ3VuZGVybGluZSdcclxuICAgICAgICB8ICdsaW5lLXRocm91Z2gnXHJcbiAgICAgICAgfCAnb3ZlcmxpbmUnXHJcbiAgICAgICAgfCBudWxsIDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUb29sQ29uZmlnIHtcclxuICAgIHBlbjogUGVuQ29uZmlnO1xyXG4gICAgdGV4dDogVGV4dENvbmZpZztcclxufSJdfQ==
|
|
@@ -10,9 +10,13 @@ export class ToolsConfigService {
|
|
|
10
10
|
drawStrokeColor: 'rgb(60, 60, 60)'
|
|
11
11
|
},
|
|
12
12
|
text: {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
textColor: 'rgb(60, 60, 60)',
|
|
14
|
+
textSizeValue: 24,
|
|
15
|
+
textAlign: 'left',
|
|
16
|
+
textFontFamily: 'Noto Sans',
|
|
17
|
+
textFontStyle: 'normal',
|
|
18
|
+
textFontWeight: 'normal',
|
|
19
|
+
textDecoration: null
|
|
16
20
|
},
|
|
17
21
|
};
|
|
18
22
|
this.configSubject = new BehaviorSubject(this.defaultConfig);
|
|
@@ -31,7 +35,8 @@ export class ToolsConfigService {
|
|
|
31
35
|
this.updateConfig('pen', { ...currentConf.pen, ...newConfig });
|
|
32
36
|
}
|
|
33
37
|
changeTextConfig(newConfig) {
|
|
34
|
-
|
|
38
|
+
const currentConf = this.configSubject.getValue();
|
|
39
|
+
this.updateConfig('text', { ...currentConf.text, ...newConfig });
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
ToolsConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToolsConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -42,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
42
47
|
providedIn: 'root'
|
|
43
48
|
}]
|
|
44
49
|
}] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuY29uZmlnLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zZXJ2aWNlcy90b29scy5jb25maWctbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNdkMsTUFBTSxPQUFPLGtCQUFrQjtJQUgvQjtRQUlVLGtCQUFhLEdBQWU7WUFDbEMsR0FBRyxFQUFFO2dCQUNILG9CQUFvQixFQUFDLENBQUM7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixlQUFlLEVBQUMsaUJBQWlCO2FBQ2xDO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLFNBQVMsRUFBRSxpQkFBaUI7Z0JBQzVCLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixTQUFTLEVBQUUsTUFBTTtnQkFDakIsY0FBYyxFQUFFLFdBQVc7Z0JBQzNCLGFBQWEsRUFBRSxRQUFRO2dCQUN2QixjQUFjLEVBQUUsUUFBUTtnQkFDeEIsY0FBYyxFQUFFLElBQUk7YUFDckI7U0FDRixDQUFDO1FBRU0sa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUUsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7S0FvQjdDO0lBbEJDLFlBQVksQ0FBQyxJQUFzQixFQUFFLFNBQTBDO1FBQzdFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEQsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsR0FBRyxhQUFhO1lBQ2hCLENBQUMsSUFBSSxDQUFDLEVBQUUsaUJBQWlCO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBNkI7UUFDM0MsTUFBTSxXQUFXLEdBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBQyxHQUFHLFNBQVMsRUFBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQThCO1FBQzdDLE1BQU0sV0FBVyxHQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUMsR0FBRyxTQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7OytHQXRDVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb29sQ29uZmlnLCBQZW5Db25maWcsIFRleHRDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Rvb2xzLWNvbmZpZyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb29sc0NvbmZpZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgZGVmYXVsdENvbmZpZzogVG9vbENvbmZpZyA9IHtcclxuICAgIHBlbjoge1xyXG4gICAgICBkcmF3U3Ryb2tlV2lkdGhWYWx1ZTo1LFxyXG4gICAgICBkcmF3VHlwZTogJ2ZyZWUnLFxyXG4gICAgICBkcmF3U3Ryb2tlQ29sb3I6J3JnYig2MCwgNjAsIDYwKSdcclxuICAgIH0sXHJcbiAgICB0ZXh0OiB7XHJcbiAgICAgIHRleHRDb2xvcjogJ3JnYig2MCwgNjAsIDYwKScsXHJcbiAgICAgIHRleHRTaXplVmFsdWU6IDI0LFxyXG4gICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcclxuICAgICAgdGV4dEZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxyXG4gICAgICB0ZXh0Rm9udFN0eWxlOiAnbm9ybWFsJyxcclxuICAgICAgdGV4dEZvbnRXZWlnaHQ6ICdub3JtYWwnLFxyXG4gICAgICB0ZXh0RGVjb3JhdGlvbjogbnVsbFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNvbmZpZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRvb2xDb25maWc+KHRoaXMuZGVmYXVsdENvbmZpZyk7XHJcbiAgY29uZmlnJCA9IHRoaXMuY29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgdXBkYXRlQ29uZmlnKHRvb2w6IGtleW9mIFRvb2xDb25maWcsIG5ld0NvbmZpZzogUGFydGlhbDxQZW5Db25maWcgfCBUZXh0Q29uZmlnPikge1xyXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuY29uZmlnU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gICAgY29uc3QgdXBkYXRlZFRvb2xDb25maWcgPSB7IC4uLmN1cnJlbnRDb25maWdbdG9vbF0sIC4uLm5ld0NvbmZpZyB9O1xyXG4gICAgdGhpcy5jb25maWdTdWJqZWN0Lm5leHQoe1xyXG4gICAgICAuLi5jdXJyZW50Q29uZmlnLFxyXG4gICAgICBbdG9vbF06IHVwZGF0ZWRUb29sQ29uZmlnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQZW5Db25maWcobmV3Q29uZmlnOiBQYXJ0aWFsPFBlbkNvbmZpZz4pIHtcclxuICAgIGNvbnN0IGN1cnJlbnRDb25mPXRoaXMuY29uZmlnU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy51cGRhdGVDb25maWcoJ3BlbicsIHsuLi5jdXJyZW50Q29uZi5wZW4sLi4ubmV3Q29uZmlnfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUZXh0Q29uZmlnKG5ld0NvbmZpZzogUGFydGlhbDxUZXh0Q29uZmlnPikge1xyXG4gICAgY29uc3QgY3VycmVudENvbmY9dGhpcy5jb25maWdTdWJqZWN0LmdldFZhbHVlKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZygndGV4dCcsIHsuLi5jdXJyZW50Q29uZi50ZXh0LC4uLm5ld0NvbmZpZ30pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -137,13 +137,13 @@ export class DrawComponent {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
DrawComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DrawComponent, deps: [{ token: i1.ToolsConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
-
DrawComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DrawComponent, selector: "tui-image-editor-submenus-draw", inputs: { imageEditor: "imageEditor", defaultDrawShapeColors: "defaultDrawShapeColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-draw\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-draw-line-select-button\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <div\r\n (click)=\"setDrawType('free')\"\r\n [class]=\"\r\n 'tui-image-editor-button free ' +\r\n (drawType == 'free' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-free\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-free\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-free\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n (click)=\"setDrawType('line')\"\r\n [class]=\"\r\n 'tui-image-editor-button line ' +\r\n (drawType == 'line' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-line\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-line\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-straight\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-draw-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [style.background]=\"drawStrokeColor\"\r\n [(colorPicker)]=\"drawStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultDrawShapeColors\"\r\n [cpUseRootViewContainer]=\"true\"\r\n (colorPickerChange)=\"drawStrokeColorChanged($event)\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-draw-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-draw-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n min=\"
|
|
140
|
+
DrawComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DrawComponent, selector: "tui-image-editor-submenus-draw", inputs: { imageEditor: "imageEditor", defaultDrawShapeColors: "defaultDrawShapeColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-draw\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-draw-line-select-button\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <div\r\n (click)=\"setDrawType('free')\"\r\n [class]=\"\r\n 'tui-image-editor-button free ' +\r\n (drawType == 'free' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-free\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-free\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-free\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n (click)=\"setDrawType('line')\"\r\n [class]=\"\r\n 'tui-image-editor-button line ' +\r\n (drawType == 'line' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-line\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-line\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-straight\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-draw-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [style.background]=\"drawStrokeColor\"\r\n [(colorPicker)]=\"drawStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultDrawShapeColors\"\r\n [cpUseRootViewContainer]=\"true\"\r\n (colorPickerChange)=\"drawStrokeColorChanged($event)\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-draw-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-draw-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n min=\"1\"\r\n max=\"30\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"1\"\r\n max=\"30\"\r\n step=\"1\"\r\n class=\"tie-draw-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DrawComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
|
-
args: [{ selector: 'tui-image-editor-submenus-draw', template: "<div class=\"tui-image-editor-menu-draw\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-draw-line-select-button\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <div\r\n (click)=\"setDrawType('free')\"\r\n [class]=\"\r\n 'tui-image-editor-button free ' +\r\n (drawType == 'free' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-free\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-free\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-free\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n (click)=\"setDrawType('line')\"\r\n [class]=\"\r\n 'tui-image-editor-button line ' +\r\n (drawType == 'line' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-line\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-line\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-straight\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-draw-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [style.background]=\"drawStrokeColor\"\r\n [(colorPicker)]=\"drawStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultDrawShapeColors\"\r\n [cpUseRootViewContainer]=\"true\"\r\n (colorPickerChange)=\"drawStrokeColorChanged($event)\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-draw-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-draw-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n min=\"
|
|
143
|
+
args: [{ selector: 'tui-image-editor-submenus-draw', template: "<div class=\"tui-image-editor-menu-draw\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-draw-line-select-button\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <div\r\n (click)=\"setDrawType('free')\"\r\n [class]=\"\r\n 'tui-image-editor-button free ' +\r\n (drawType == 'free' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-free\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-free\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-free\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n (click)=\"setDrawType('line')\"\r\n [class]=\"\r\n 'tui-image-editor-button line ' +\r\n (drawType == 'line' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-line\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-line\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-straight\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-draw-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [style.background]=\"drawStrokeColor\"\r\n [(colorPicker)]=\"drawStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultDrawShapeColors\"\r\n [cpUseRootViewContainer]=\"true\"\r\n (colorPickerChange)=\"drawStrokeColorChanged($event)\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-draw-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-draw-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n min=\"1\"\r\n max=\"30\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"1\"\r\n max=\"30\"\r\n step=\"1\"\r\n class=\"tie-draw-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
144
144
|
}], ctorParameters: function () { return [{ type: i1.ToolsConfigService }]; }, propDecorators: { imageEditor: [{
|
|
145
145
|
type: Input
|
|
146
146
|
}], defaultDrawShapeColors: [{
|
|
147
147
|
type: Input
|
|
148
148
|
}] } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvc3VibWVudXMvZHJhdy9kcmF3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy9kcmF3L2RyYXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBT2hFLE1BQU0sT0FBTyxhQUFhO0lBU3hCLFlBQ1UsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFSdEMsMkJBQXNCLEdBQWEsYUFBYSxDQUFDO1FBQ25ELHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUVsQyxvQkFBZSxHQUFXLHNCQUFzQixDQUFDO1FBT3RELElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hELE1BQU0sRUFBQyxRQUFRLEVBQUMsZUFBZSxFQUFDLG9CQUFvQixFQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNuRSxJQUFJLENBQUMsb0JBQW9CLEdBQUMsb0JBQW9CLENBQUM7WUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBQyxRQUFRLENBQUM7WUFDdkIsSUFBSSxDQUFD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VyxDQUFDLDBCQUEwQixDQUN6QyxJQUFJLENBQUMsY0FBYyxFQUNuQixVQUFVLENBQ1gsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQ2xDLElBQUksQ0FBQyxjQUFjLEVBQ25CLFVBQVUsQ0FDWCxDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzBHQWpMVSxhQUFhOzhGQUFiLGFBQWEscUxDbEIxQiwwbkhBNEZBOzJGRDFFYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLGdDQUFnQzt5R0FLakMsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb29sc0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b29scy5jb25maWctbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9vbENvbmZpZywgUGVuQ29uZmlnLCBUZXh0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90b29scy1jb25maWcnO1xyXG5pbXBvcnQgeyBkZWZhdWx0Q29sb3JzLCBldmVudE5hbWVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgY2xlYXJTZWxlY3Rpb24sIGdldEFjdGl2ZU9iamVjdElkIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWRyYXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcmF3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kcmF3LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaW1hZ2VFZGl0b3I6IGFueTtcclxuICBASW5wdXQoKSBkZWZhdWx0RHJhd1NoYXBlQ29sb3JzOiBzdHJpbmdbXSA9IGRlZmF1bHRDb2xvcnM7XHJcbiAgcHVibGljIGRyYXdTdHJva2VXaWR0aFZhbHVlOiBudW1iZXIgPSAxMjtcclxuICBwdWJsaWMgZHJhd1R5cGU6ICdmcmVlJyB8ICdsaW5lJztcclxuICBwdWJsaWMgZHJhd1N0cm9rZUNvbG9yOiBzdHJpbmcgPSAncmdiYSgwLCAxNjksIDI1NSwgMSknO1xyXG4gIHB1YmxpYyBhY3RpdmVPYmplY3RJZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBvbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRvb2xDb25maWdTZXJ2aWNlOiBUb29sc0NvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyID0gdGhpcy5vbk9iamVjdEFjdGl2YXRlZC5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy50b29sQ29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICBjb25zdCB7ZHJhd1R5cGUsZHJhd1N0cm9rZUNvbG9yLGRyYXdTdHJva2VXaWR0aFZhbHVlfSA9IGNvbmZpZy5wZW47XHJcbiAgICAgIHRoaXMuZHJhd1N0cm9rZVdpZHRoVmFsdWU9ZHJhd1N0cm9rZVdpZHRoVmFsdWU7XHJcbiAgICAgIHRoaXMuZHJhd1R5cGU9ZHJhd1R5cGU7XHJcbiAgICAgIHRoaXMuZHJhd1N0cm9rZUNvbG9yPWRyYXdTdHJva2VDb2xvcjtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB2YXIgdGhhdCA9IHRoaXM7XHJcbiAgICBpZiAoY2hhbmdlc1snaW1hZ2VFZGl0b3InXSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU9iamVjdElkID0gZ2V0QWN0aXZlT2JqZWN0SWQoXHJcbiAgICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5jdXJyZW50VmFsdWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jaGVja0FjdGl2ZU9iamVjdCh0aGlzLmFjdGl2ZU9iamVjdElkLCB0cnVlKTtcclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5wcmV2aW91c1ZhbHVlPy5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQUNUSVZBVEVELFxyXG4gICAgICAgIHRoYXQub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICAgIGNoYW5nZXNbJ2ltYWdlRWRpdG9yJ10uY3VycmVudFZhbHVlPy5vbihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhhdC5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VFZGl0b3IpIHtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQUNUSVZBVEVELFxyXG4gICAgICAgIHRoaXMub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uT2JqZWN0QWN0aXZhdGVkKHByb3BzKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9iamVjdElkID0gcHJvcHM/LmlkO1xyXG4gICAgdGhpcy5jaGVja0FjdGl2ZU9iamVjdCh0aGlzLmFjdGl2ZU9iamVjdElkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tBY3RpdmVPYmplY3QoXHJcbiAgICBhY3RpdmVPYmplY3RJZDogbnVtYmVyLFxyXG4gICAgZW5hYmxlRHJhd01vZGVJZk5vQWN0aXZlT2JqZWN0OiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGxldCBpZk5vQWN0aXZlT2JqZWN0ID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldERyYXdNb2RlKCdmcmVlJywge1xyXG4gICAgICAgIHdpZHRoOiB0aGlzLmRyYXdTdHJva2VXaWR0aFZhbHVlLFxyXG4gICAgICAgIGNvbG9yOiB0aGlzLmRyYXdTdHJva2VDb2xvcixcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKGFjdGl2ZU9iamVjdElkICE9IG51bGwpIHtcclxuICAgICAgdmFyIHByb3BzID0gdGhpcy5pbWFnZUVkaXRvcj8uZ2V0T2JqZWN0UHJvcGVydGllcyhhY3RpdmVPYmplY3RJZCwgW1xyXG4gICAgICAgICd0eXBlJyxcclxuICAgICAgICAnc3Ryb2tlV2lkdGgnLFxyXG4gICAgICAgICdzdHJva2UnLFxyXG4gICAgICBdKTtcclxuICAgICAgaWYgKHByb3BzICYmIChwcm9wcy50eXBlID09PSAncGF0aCcgfHwgcHJvcHMudHlwZSA9PT0gJ2xpbmUnKSkge1xyXG4gICAgICAgIHRoaXMuZHJhd1N0cm9rZVdpZHRoVmFsdWUgPSBwcm9wcy5zdHJva2VXaWR0aDtcclxuICAgICAgICB0aGlzLmRyYXdTdHJva2VDb2xvciA9IHByb3BzLnN0cm9rZTtcclxuICAgICAgfSBlbHNlIGlmIChlbmFibGVEcmF3TW9kZUlmTm9BY3RpdmVPYmplY3QpIHtcclxuICAgICAgICBpZk5vQWN0aXZlT2JqZWN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZW5hYmxlRHJhd01vZGVJZk5vQWN0aXZlT2JqZWN0KSB7XHJcbiAgICAgIGlmTm9BY3RpdmVPYmplY3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYXdTdHJva2VXaWR0aENoYW5nZWQoY3VycmVudFN0cm9rZVdpZHRoOiBudW1iZXIgfCBFdmVudCwgaXNTaWxlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0RHJhd01vZGUodGhpcy5kcmF3VHlwZSwge1xyXG4gICAgICB3aWR0aDogdHlwZW9mIGN1cnJlbnRTdHJva2VXaWR0aCA9PT0gXCJudW1iZXJcIiA/IGN1cnJlbnRTdHJva2VXaWR0aCA6IHRoaXMuZHJhd1N0cm9rZVdpZHRoVmFsdWUsXHJcbiAgICAgIGNvbG9yOiB0aGlzLmRyYXdTdHJva2VDb2xvcixcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHJva2VDaGFuZ2VBY3RpdmVPYmplY3QoJ3N0cm9rZVdpZHRoJywgaXNTaWxlbnQpO1xyXG4gICAgdGhpcy50b29sQ29uZmlnU2VydmljZS5jaGFuZ2VQZW5Db25maWcoe2RyYXdTdHJva2VXaWR0aFZhbHVlOih0eXBlb2YgY3VycmVudFN0cm9rZVdpZHRoID09PSBcIm51bWJlclwiID8gY3VycmVudFN0cm9rZVdpZHRoIDogdGhpcy5kcmF3U3Ryb2tlV2lkdGhWYWx1ZSl9KVxyXG4gIH1cclxuXHJcbiAgc2V0RHJhd1R5cGUodHlwZTogJ2ZyZWUnIHwgJ2xpbmUnKSB7XHJcbiAgICBjbGVhclNlbGVjdGlvbih0aGlzLmltYWdlRWRpdG9yKTtcclxuICAgIGlmICh0aGlzLmRyYXdUeXBlICE9IHR5cGUpIHtcclxuICAgICAgdGhpcy5kcmF3VHlwZSA9IHR5cGU7XHJcbiAgICAgIHRoaXMuc2V0RHJhd01vZGUodGhpcy5kcmF3VHlwZSwge1xyXG4gICAgICAgIHdpZHRoOiB0aGlzLmRyYXdTdHJva2VXaWR0aFZhbHVlLFxyXG4gICAgICAgIGNvbG9yOiB0aGlzLmRyYXdTdHJva2VDb2xvcixcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudG9vbENvbmZpZ1NlcnZpY2UuY2hhbmdlUGVuQ29uZmlnKHtkcmF3VHlwZTp0eXBlfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZHJhd1R5cGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLnN0b3BEcmF3aW5nTW9kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJhd1N0cm9rZUNvbG9yQ2hhbmdlZChjdXJyZW50U3Ryb2tlQ29sb3I6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZXREcmF3TW9kZSh0aGlzLmRyYXdUeXBlLCB7XHJcbiAgICAgIHdpZHRoOiB0aGlzLmRyYXdTdHJva2VXaWR0aFZhbHVlLFxyXG4gICAgICBjb2xvcjogY3VycmVudFN0cm9rZUNvbG9yLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0cm9rZUNoYW5nZUFjdGl2ZU9iamVjdCgnc3Ryb2tlQ29sb3InLCBmYWxzZSk7XHJcbiAgICB0aGlzLnRvb2xDb25maWdTZXJ2aWNlLmNoYW5nZVBlbkNvbmZpZyh7ZHJhd1N0cm9rZUNvbG9yOmN1cnJlbnRTdHJva2VDb2xvcn0pXHJcbiAgfVxyXG5cclxuICBzZXREcmF3TW9kZShcclxuICAgIHR5cGU6ICdmcmVlJyB8ICdsaW5lJyB8IG51bGwsXHJcbiAgICBzZXR0aW5nczoge1xyXG4gICAgICB3aWR0aDogbnVtYmVyO1xyXG4gICAgICBjb2xvcjogc3RyaW5nO1xyXG4gICAgICBhcnJvd1R5cGU/OiB7XHJcbiAgICAgICAgdGFpbDogJ2NoZXZyb24nIHwgJ3RyaWFuZ2xlJztcclxuICAgICAgICBoZWFkOiAnY2hldnJvbicgfCAndHJpYW5nbGUnO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICkge1xyXG4gICAgdGhpcy5kcmF3VHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmltYWdlRWRpdG9yLnN0b3BEcmF3aW5nTW9kZSgpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdmcmVlJykge1xyXG4gICAgICBjbGVhclNlbGVjdGlvbih0aGlzLmltYWdlRWRpdG9yKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5zdGFydERyYXdpbmdNb2RlKCdGUkVFX0RSQVdJTkcnLCBzZXR0aW5ncyk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaW5lJykge1xyXG4gICAgICBjbGVhclNlbGVjdGlvbih0aGlzLmltYWdlRWRpdG9yKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5zdGFydERyYXdpbmdNb2RlKCdMSU5FX0RSQVdJTkcnLCBzZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdHJva2VDaGFuZ2VBY3RpdmVPYmplY3QoXHJcbiAgICBjaGFuZ2VkUHJvcGVydHk6ICdzdHJva2VXaWR0aCcgfCAnc3Ryb2tlQ29sb3InLFxyXG4gICAgaXNTaWxlbnQ6IGJvb2xlYW5cclxuICApIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCAhPSBudWxsICYmXHJcbiAgICAgIGdldEFjdGl2ZU9iamVjdElkKHRoaXMuaW1hZ2VFZGl0b3IpID09IHRoaXMuYWN0aXZlT2JqZWN0SWRcclxuICAgICkge1xyXG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLmltYWdlRWRpdG9yLmdldE9iamVjdFByb3BlcnRpZXMoXHJcbiAgICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCxcclxuICAgICAgICAndHlwZSdcclxuICAgICAgKTtcclxuICAgICAgaWYgKHByb3BzICE9IG51bGwgJiYgKHByb3BzLnR5cGUgPT09ICdwYXRoJyB8fCBwcm9wcy50eXBlID09PSAnbGluZScpKSB7XHJcbiAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBudWxsO1xyXG4gICAgICAgIHN3aXRjaCAoY2hhbmdlZFByb3BlcnR5KSB7XHJcbiAgICAgICAgICBjYXNlICdzdHJva2VXaWR0aCc6XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHRoaXMuZHJhd1N0cm9rZVdpZHRoVmFsdWUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnc3Ryb2tlQ29sb3InOlxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgIHN0cm9rZTogdGhpcy5kcmF3U3Ryb2tlQ29sb3IsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNTaWxlbnQpIHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VFZGl0b3Iuc2V0T2JqZWN0UHJvcGVydGllc1F1aWV0bHkoXHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQsXHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlRWRpdG9yLnNldE9iamVjdFByb3BlcnRpZXMoXHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCxcclxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItbWVudS1kcmF3XCI+XHJcbiAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3Itc3VibWVudS1pdGVtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGllLWRyYXctbGluZS1zZWxlY3QtYnV0dG9uXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1yb3cgdHVpLWltYWdlLWVkaXRvci1hbGlnbi1pdGVtcy1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItbXktM1wiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwic2V0RHJhd1R5cGUoJ2ZyZWUnKVwiXHJcbiAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICd0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiBmcmVlICcgK1xyXG4gICAgICAgICAgICAoZHJhd1R5cGUgPT0gJ2ZyZWUnID8gJ2FjdGl2ZScgOiAnJylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWRyYXctZnJlZVwiIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWRyYXctZnJlZVwiIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWRyYXctZnJlZVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIChjbGljayk9XCJzZXREcmF3VHlwZSgnbGluZScpXCJcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIGxpbmUgJyArXHJcbiAgICAgICAgICAgIChkcmF3VHlwZSA9PSAnbGluZScgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjaWMtZHJhdy1saW5lXCIgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIj48L3VzZT5cclxuICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjaWMtZHJhdy1saW5lXCIgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIj48L3VzZT5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtZHJhdy1zdHJhaWdodFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLXBhcnRpdGlvblwiPlxyXG4gICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInRpZS1kcmF3LWNvbG9yIHR1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIHR1aS1pbWFnZS1lZGl0b3ItYnV0dG9uLWNvbG9yLXBpY2tlciB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtY29sdW1uXCJcclxuICAgICAgICAgIHRpdGxlPVwiQ29sb3JcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICBjbGFzcz1cInRpZS1kcmF3LWNvbG9yLXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZHJhd1N0cm9rZUNvbG9yXCJcclxuICAgICAgICAgICAgICBbKGNvbG9yUGlja2VyKV09XCJkcmF3U3Ryb2tlQ29sb3JcIlxyXG4gICAgICAgICAgICAgIFtjcE91dHB1dEZvcm1hdF09XCIncmdiYSdcIlxyXG4gICAgICAgICAgICAgIFtjcFByZXNldENvbG9yc109XCJkZWZhdWx0RHJhd1NoYXBlQ29sb3JzXCJcclxuICAgICAgICAgICAgICBbY3BVc2VSb290Vmlld0NvbnRhaW5lcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAoY29sb3JQaWNrZXJDaGFuZ2UpPVwiZHJhd1N0cm9rZUNvbG9yQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1kcmF3LWNvbG9yXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9kaXY+PC9sYWJlbFxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1uZXdsaW5lIHR1aS1pbWFnZS1lZGl0b3ItcmFuZ2Utd3JhcCB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLW15LTNcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwicmFuZ2VcIj57e1xyXG4gICAgICAgICAgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtZHJhdy1zdHJva2VXaWR0aFwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInJhbmdlXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZHJhd1N0cm9rZVdpZHRoVmFsdWVcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZHJhd1N0cm9rZVdpZHRoQ2hhbmdlZCgkZXZlbnQsIHRydWUpXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwiZHJhd1N0cm9rZVdpZHRoQ2hhbmdlZCgkZXZlbnQsIGZhbHNlKVwiXHJcbiAgICAgICAgICBtaW49XCI1XCJcclxuICAgICAgICAgIG1heD1cIjMwXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICBtaW49XCI1XCJcclxuICAgICAgICAgIG1heD1cIjMwXCJcclxuICAgICAgICAgIHN0ZXA9XCIxXCJcclxuICAgICAgICAgIGNsYXNzPVwidGllLWRyYXctcmFuZ2UtdmFsdWUgdHVpLWltYWdlLWVkaXRvci1yYW5nZS12YWx1ZVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImRyYXdTdHJva2VXaWR0aFZhbHVlXCJcclxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImRyYXdTdHJva2VXaWR0aENoYW5nZWQoJGV2ZW50LCB0cnVlKVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cImRyYXdTdHJva2VXaWR0aENoYW5nZWQoJGV2ZW50LCBmYWxzZSlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvc3VibWVudXMvZHJhdy9kcmF3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy9kcmF3L2RyYXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBT2hFLE1BQU0sT0FBTyxhQUFhO0lBU3hCLFlBQ1UsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFSdEMsMkJBQXNCLEdBQWEsYUFBYSxDQUFDO1FBQ25ELHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUVsQyxvQkFBZSxHQUFXLHNCQUFzQixDQUFDO1FBT3RELElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hELE1BQU0sRUFBQyxRQUFRLEVBQUMsZUFBZSxFQUFDLG9CQUFvQixFQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNuRSxJQUFJLENBQUMsb0JBQW9CLEdBQUMsb0JBQW9CLENBQUM7WUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBQyxRQUFRLENBQUM7WUFDdkIsSUFBSSxDQUFD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VyxDQUFDLDBCQUEwQixDQUN6QyxJQUFJLENBQUMsY0FBYyxFQUNuQixVQUFVLENBQ1gsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQ2xDLElBQUksQ0FBQyxjQUFjLEVBQ25CLFVBQVUsQ0FDWCxDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzBHQWhMVSxhQUFhOzhGQUFiLGFBQWEscUxDakIxQiwwbkhBNEZBOzJGRDNFYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLGdDQUFnQzt5R0FLakMsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb29sc0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b29scy5jb25maWctbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZGVmYXVsdENvbG9ycywgZXZlbnROYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XHJcbmltcG9ydCB7IGNsZWFyU2VsZWN0aW9uLCBnZXRBY3RpdmVPYmplY3RJZCB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1kcmF3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHJhdy5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcmF3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGltYWdlRWRpdG9yOiBhbnk7XHJcbiAgQElucHV0KCkgZGVmYXVsdERyYXdTaGFwZUNvbG9yczogc3RyaW5nW10gPSBkZWZhdWx0Q29sb3JzO1xyXG4gIHB1YmxpYyBkcmF3U3Ryb2tlV2lkdGhWYWx1ZTogbnVtYmVyID0gMTI7XHJcbiAgcHVibGljIGRyYXdUeXBlOiAnZnJlZScgfCAnbGluZSc7XHJcbiAgcHVibGljIGRyYXdTdHJva2VDb2xvcjogc3RyaW5nID0gJ3JnYmEoMCwgMTY5LCAyNTUsIDEpJztcclxuICBwdWJsaWMgYWN0aXZlT2JqZWN0SWQ6IG51bWJlcjtcclxuICBwdWJsaWMgb25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0b29sQ29uZmlnU2VydmljZTogVG9vbHNDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLm9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lciA9IHRoaXMub25PYmplY3RBY3RpdmF0ZWQuYmluZCh0aGlzKTtcclxuICAgIHRoaXMudG9vbENvbmZpZ1NlcnZpY2UuY29uZmlnJC5zdWJzY3JpYmUoY29uZmlnID0+IHtcclxuICAgICAgY29uc3Qge2RyYXdUeXBlLGRyYXdTdHJva2VDb2xvcixkcmF3U3Ryb2tlV2lkdGhWYWx1ZX0gPSBjb25maWcucGVuO1xyXG4gICAgICB0aGlzLmRyYXdTdHJva2VXaWR0aFZhbHVlPWRyYXdTdHJva2VXaWR0aFZhbHVlO1xyXG4gICAgICB0aGlzLmRyYXdUeXBlPWRyYXdUeXBlO1xyXG4gICAgICB0aGlzLmRyYXdTdHJva2VDb2xvcj1kcmF3U3Ryb2tlQ29sb3I7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgIGlmIChjaGFuZ2VzWydpbWFnZUVkaXRvciddKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgPSBnZXRBY3RpdmVPYmplY3RJZChcclxuICAgICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLmN1cnJlbnRWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNoZWNrQWN0aXZlT2JqZWN0KHRoaXMuYWN0aXZlT2JqZWN0SWQsIHRydWUpO1xyXG4gICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLnByZXZpb3VzVmFsdWU/Lm9mZihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhhdC5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5jdXJyZW50VmFsdWU/Lm9uKFxyXG4gICAgICAgIGV2ZW50TmFtZXMuT0JKRUNUX0FDVElWQVRFRCxcclxuICAgICAgICB0aGF0Lm9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbWFnZUVkaXRvcikge1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLm9mZihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhpcy5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25PYmplY3RBY3RpdmF0ZWQocHJvcHMpIHtcclxuICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgPSBwcm9wcz8uaWQ7XHJcbiAgICB0aGlzLmNoZWNrQWN0aXZlT2JqZWN0KHRoaXMuYWN0aXZlT2JqZWN0SWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0FjdGl2ZU9iamVjdChcclxuICAgIGFjdGl2ZU9iamVjdElkOiBudW1iZXIsXHJcbiAgICBlbmFibGVEcmF3TW9kZUlmTm9BY3RpdmVPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICkge1xyXG4gICAgbGV0IGlmTm9BY3RpdmVPYmplY3QgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0RHJhd01vZGUoJ2ZyZWUnLCB7XHJcbiAgICAgICAgd2lkdGg6IHRoaXMuZHJhd1N0cm9rZVdpZHRoVmFsdWUsXHJcbiAgICAgICAgY29sb3I6IHRoaXMuZHJhd1N0cm9rZUNvbG9yLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICBpZiAoYWN0aXZlT2JqZWN0SWQgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLmltYWdlRWRpdG9yPy5nZXRPYmplY3RQcm9wZXJ0aWVzKGFjdGl2ZU9iamVjdElkLCBbXHJcbiAgICAgICAgJ3R5cGUnLFxyXG4gICAgICAgICdzdHJva2VXaWR0aCcsXHJcbiAgICAgICAgJ3N0cm9rZScsXHJcbiAgICAgIF0pO1xyXG4gICAgICBpZiAocHJvcHMgJiYgKHByb3BzLnR5cGUgPT09ICdwYXRoJyB8fCBwcm9wcy50eXBlID09PSAnbGluZScpKSB7XHJcbiAgICAgICAgdGhpcy5kcmF3U3Ryb2tlV2lkdGhWYWx1ZSA9IHByb3BzLnN0cm9rZVdpZHRoO1xyXG4gICAgICAgIHRoaXMuZHJhd1N0cm9rZUNvbG9yID0gcHJvcHMuc3Ryb2tlO1xyXG4gICAgICB9IGVsc2UgaWYgKGVuYWJsZURyYXdNb2RlSWZOb0FjdGl2ZU9iamVjdCkge1xyXG4gICAgICAgIGlmTm9BY3RpdmVPYmplY3QoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChlbmFibGVEcmF3TW9kZUlmTm9BY3RpdmVPYmplY3QpIHtcclxuICAgICAgaWZOb0FjdGl2ZU9iamVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJhd1N0cm9rZVdpZHRoQ2hhbmdlZChjdXJyZW50U3Ryb2tlV2lkdGg6IG51bWJlciB8IEV2ZW50LCBpc1NpbGVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXREcmF3TW9kZSh0aGlzLmRyYXdUeXBlLCB7XHJcbiAgICAgIHdpZHRoOiB0eXBlb2YgY3VycmVudFN0cm9rZVdpZHRoID09PSBcIm51bWJlclwiID8gY3VycmVudFN0cm9rZVdpZHRoIDogdGhpcy5kcmF3U3Ryb2tlV2lkdGhWYWx1ZSxcclxuICAgICAgY29sb3I6IHRoaXMuZHJhd1N0cm9rZUNvbG9yLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0cm9rZUNoYW5nZUFjdGl2ZU9iamVjdCgnc3Ryb2tlV2lkdGgnLCBpc1NpbGVudCk7XHJcbiAgICB0aGlzLnRvb2xDb25maWdTZXJ2aWNlLmNoYW5nZVBlbkNvbmZpZyh7ZHJhd1N0cm9rZVdpZHRoVmFsdWU6KHR5cGVvZiBjdXJyZW50U3Ryb2tlV2lkdGggPT09IFwibnVtYmVyXCIgPyBjdXJyZW50U3Ryb2tlV2lkdGggOiB0aGlzLmRyYXdTdHJva2VXaWR0aFZhbHVlKX0pXHJcbiAgfVxyXG5cclxuICBzZXREcmF3VHlwZSh0eXBlOiAnZnJlZScgfCAnbGluZScpIHtcclxuICAgIGNsZWFyU2VsZWN0aW9uKHRoaXMuaW1hZ2VFZGl0b3IpO1xyXG4gICAgaWYgKHRoaXMuZHJhd1R5cGUgIT0gdHlwZSkge1xyXG4gICAgICB0aGlzLmRyYXdUeXBlID0gdHlwZTtcclxuICAgICAgdGhpcy5zZXREcmF3TW9kZSh0aGlzLmRyYXdUeXBlLCB7XHJcbiAgICAgICAgd2lkdGg6IHRoaXMuZHJhd1N0cm9rZVdpZHRoVmFsdWUsXHJcbiAgICAgICAgY29sb3I6IHRoaXMuZHJhd1N0cm9rZUNvbG9yLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50b29sQ29uZmlnU2VydmljZS5jaGFuZ2VQZW5Db25maWcoe2RyYXdUeXBlOnR5cGV9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kcmF3VHlwZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuaW1hZ2VFZGl0b3Iuc3RvcERyYXdpbmdNb2RlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmF3U3Ryb2tlQ29sb3JDaGFuZ2VkKGN1cnJlbnRTdHJva2VDb2xvcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNldERyYXdNb2RlKHRoaXMuZHJhd1R5cGUsIHtcclxuICAgICAgd2lkdGg6IHRoaXMuZHJhd1N0cm9rZVdpZHRoVmFsdWUsXHJcbiAgICAgIGNvbG9yOiBjdXJyZW50U3Ryb2tlQ29sb3IsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3Ryb2tlQ2hhbmdlQWN0aXZlT2JqZWN0KCdzdHJva2VDb2xvcicsIGZhbHNlKTtcclxuICAgIHRoaXMudG9vbENvbmZpZ1NlcnZpY2UuY2hhbmdlUGVuQ29uZmlnKHtkcmF3U3Ryb2tlQ29sb3I6Y3VycmVudFN0cm9rZUNvbG9yfSlcclxuICB9XHJcblxyXG4gIHNldERyYXdNb2RlKFxyXG4gICAgdHlwZTogJ2ZyZWUnIHwgJ2xpbmUnIHwgbnVsbCxcclxuICAgIHNldHRpbmdzOiB7XHJcbiAgICAgIHdpZHRoOiBudW1iZXI7XHJcbiAgICAgIGNvbG9yOiBzdHJpbmc7XHJcbiAgICAgIGFycm93VHlwZT86IHtcclxuICAgICAgICB0YWlsOiAnY2hldnJvbicgfCAndHJpYW5nbGUnO1xyXG4gICAgICAgIGhlYWQ6ICdjaGV2cm9uJyB8ICd0cmlhbmdsZSc7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgKSB7XHJcbiAgICB0aGlzLmRyYXdUeXBlID0gdHlwZTtcclxuICAgIHRoaXMuaW1hZ2VFZGl0b3Iuc3RvcERyYXdpbmdNb2RlKCk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2ZyZWUnKSB7XHJcbiAgICAgIGNsZWFyU2VsZWN0aW9uKHRoaXMuaW1hZ2VFZGl0b3IpO1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLnN0YXJ0RHJhd2luZ01vZGUoJ0ZSRUVfRFJBV0lORycsIHNldHRpbmdzKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xpbmUnKSB7XHJcbiAgICAgIGNsZWFyU2VsZWN0aW9uKHRoaXMuaW1hZ2VFZGl0b3IpO1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLnN0YXJ0RHJhd2luZ01vZGUoJ0xJTkVfRFJBV0lORycsIHNldHRpbmdzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0cm9rZUNoYW5nZUFjdGl2ZU9iamVjdChcclxuICAgIGNoYW5nZWRQcm9wZXJ0eTogJ3N0cm9rZVdpZHRoJyB8ICdzdHJva2VDb2xvcicsXHJcbiAgICBpc1NpbGVudDogYm9vbGVhblxyXG4gICkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFjdGl2ZU9iamVjdElkICE9IG51bGwgJiZcclxuICAgICAgZ2V0QWN0aXZlT2JqZWN0SWQodGhpcy5pbWFnZUVkaXRvcikgPT0gdGhpcy5hY3RpdmVPYmplY3RJZFxyXG4gICAgKSB7XHJcbiAgICAgIHZhciBwcm9wcyA9IHRoaXMuaW1hZ2VFZGl0b3IuZ2V0T2JqZWN0UHJvcGVydGllcyhcclxuICAgICAgICB0aGlzLmFjdGl2ZU9iamVjdElkLFxyXG4gICAgICAgICd0eXBlJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAocHJvcHMgIT0gbnVsbCAmJiAocHJvcHMudHlwZSA9PT0gJ3BhdGgnIHx8IHByb3BzLnR5cGUgPT09ICdsaW5lJykpIHtcclxuICAgICAgICBsZXQgcGFyYW1ldGVycyA9IG51bGw7XHJcbiAgICAgICAgc3dpdGNoIChjaGFuZ2VkUHJvcGVydHkpIHtcclxuICAgICAgICAgIGNhc2UgJ3N0cm9rZVdpZHRoJzpcclxuICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICBzdHJva2VXaWR0aDogdGhpcy5kcmF3U3Ryb2tlV2lkdGhWYWx1ZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdzdHJva2VDb2xvcic6XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgc3Ryb2tlOiB0aGlzLmRyYXdTdHJva2VDb2xvcixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1NpbGVudCkge1xyXG4gICAgICAgICAgdGhpcy5pbWFnZUVkaXRvci5zZXRPYmplY3RQcm9wZXJ0aWVzUXVpZXRseShcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCxcclxuICAgICAgICAgICAgcGFyYW1ldGVyc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFZGl0b3Iuc2V0T2JqZWN0UHJvcGVydGllcyhcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU9iamVjdElkLFxyXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1tZW51LWRyYXdcIj5cclxuICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1zdWJtZW51LWl0ZW1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aWUtZHJhdy1saW5lLXNlbGVjdC1idXR0b25cIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWFsaWduLWl0ZW1zLWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLWp1c3RpZnktY29udGVudC1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1teS0zXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIChjbGljayk9XCJzZXREcmF3VHlwZSgnZnJlZScpXCJcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIGZyZWUgJyArXHJcbiAgICAgICAgICAgIChkcmF3VHlwZSA9PSAnZnJlZScgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjaWMtZHJhdy1mcmVlXCIgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIj48L3VzZT5cclxuICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjaWMtZHJhdy1mcmVlXCIgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIj48L3VzZT5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtZHJhdy1mcmVlXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldERyYXdUeXBlKCdsaW5lJylcIlxyXG4gICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAndHVpLWltYWdlLWVkaXRvci1idXR0b24gbGluZSAnICtcclxuICAgICAgICAgICAgKGRyYXdUeXBlID09ICdsaW5lJyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1kcmF3LWxpbmVcIiBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1kcmF3LWxpbmVcIiBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1kcmF3LXN0cmFpZ2h0XCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItcGFydGl0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidGllLWRyYXctY29sb3IgdHVpLWltYWdlLWVkaXRvci1idXR0b24gdHVpLWltYWdlLWVkaXRvci1idXR0b24tY29sb3ItcGlja2VyIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1jb2x1bW5cIlxyXG4gICAgICAgICAgdGl0bGU9XCJDb2xvclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGllLWRyYXctY29sb3ItcGlja2VyXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJkcmF3U3Ryb2tlQ29sb3JcIlxyXG4gICAgICAgICAgICAgIFsoY29sb3JQaWNrZXIpXT1cImRyYXdTdHJva2VDb2xvclwiXHJcbiAgICAgICAgICAgICAgW2NwT3V0cHV0Rm9ybWF0XT1cIidyZ2JhJ1wiXHJcbiAgICAgICAgICAgICAgW2NwUHJlc2V0Q29sb3JzXT1cImRlZmF1bHREcmF3U2hhcGVDb2xvcnNcIlxyXG4gICAgICAgICAgICAgIFtjcFVzZVJvb3RWaWV3Q29udGFpbmVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIChjb2xvclBpY2tlckNoYW5nZSk9XCJkcmF3U3Ryb2tlQ29sb3JDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWRyYXctY29sb3JcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj48L2xhYmVsXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLW5ld2xpbmUgdHVpLWltYWdlLWVkaXRvci1yYW5nZS13cmFwIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1yb3cgdHVpLWltYWdlLWVkaXRvci1hbGlnbi1pdGVtcy1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItbXktM1wiXHJcbiAgICAgID5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJyYW5nZVwiPnt7XHJcbiAgICAgICAgICBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1kcmF3LXN0cm9rZVdpZHRoXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJkcmF3U3Ryb2tlV2lkdGhWYWx1ZVwiXHJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkcmF3U3Ryb2tlV2lkdGhDaGFuZ2VkKCRldmVudCwgdHJ1ZSlcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJkcmF3U3Ryb2tlV2lkdGhDaGFuZ2VkKCRldmVudCwgZmFsc2UpXCJcclxuICAgICAgICAgIG1pbj1cIjFcIlxyXG4gICAgICAgICAgbWF4PVwiMzBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgIG1pbj1cIjFcIlxyXG4gICAgICAgICAgbWF4PVwiMzBcIlxyXG4gICAgICAgICAgc3RlcD1cIjFcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0aWUtZHJhdy1yYW5nZS12YWx1ZSB0dWktaW1hZ2UtZWRpdG9yLXJhbmdlLXZhbHVlXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZHJhd1N0cm9rZVdpZHRoVmFsdWVcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZHJhd1N0cm9rZVdpZHRoQ2hhbmdlZCgkZXZlbnQsIHRydWUpXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwiZHJhd1N0cm9rZVdpZHRoQ2hhbmdlZCgkZXZlbnQsIGZhbHNlKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -2,11 +2,13 @@ import { Component, Input, } from '@angular/core';
|
|
|
2
2
|
import { defaultColors, eventNames } from '../../consts';
|
|
3
3
|
import { getActiveObjectId } from '../../utils';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "
|
|
6
|
-
import * as i2 from "
|
|
7
|
-
import * as i3 from "
|
|
5
|
+
import * as i1 from "../../services/tools.config-manager.service";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "ngx-color-picker";
|
|
8
|
+
import * as i4 from "@ngx-translate/core";
|
|
8
9
|
export class TextComponent {
|
|
9
|
-
constructor() {
|
|
10
|
+
constructor(toolConfigService) {
|
|
11
|
+
this.toolConfigService = toolConfigService;
|
|
10
12
|
this.defaultTextColors = defaultColors;
|
|
11
13
|
this.textColor = 'rgba(255, 187, 59, 1)';
|
|
12
14
|
this.textSizeValue = 50;
|
|
@@ -17,6 +19,16 @@ export class TextComponent {
|
|
|
17
19
|
this.textDecoration = null;
|
|
18
20
|
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
19
21
|
this.onTextAddedEventListener = this.onTextAdded.bind(this);
|
|
22
|
+
this.toolConfigService.config$.subscribe(config => {
|
|
23
|
+
const { textColor, textSizeValue, textAlign, textFontFamily, textFontStyle, textFontWeight, textDecoration } = config.text;
|
|
24
|
+
this.textColor = textColor,
|
|
25
|
+
this.textSizeValue = textSizeValue,
|
|
26
|
+
this.textAlign = textAlign,
|
|
27
|
+
this.textFontFamily = textFontFamily,
|
|
28
|
+
this.textFontStyle = textFontStyle,
|
|
29
|
+
this.textFontWeight = textFontWeight,
|
|
30
|
+
this.textDecoration = textDecoration;
|
|
31
|
+
});
|
|
20
32
|
}
|
|
21
33
|
ngOnChanges(changes) {
|
|
22
34
|
var that = this;
|
|
@@ -87,24 +99,32 @@ export class TextComponent {
|
|
|
87
99
|
changeTextAlignment(newValue) {
|
|
88
100
|
this.textAlign = newValue;
|
|
89
101
|
this.textChangeActiveObject('textAlign');
|
|
102
|
+
this.toolConfigService.changeTextConfig({ textAlign: newValue });
|
|
90
103
|
}
|
|
91
104
|
changeTextFontStyle(newFontStyle) {
|
|
92
105
|
this.textFontStyle = newFontStyle;
|
|
93
106
|
this.textChangeActiveObject('fontStyle');
|
|
107
|
+
this.toolConfigService.changeTextConfig({ textFontStyle: newFontStyle });
|
|
94
108
|
}
|
|
95
109
|
changeTextFontWeight(newFontWeight) {
|
|
96
110
|
this.textFontWeight = newFontWeight;
|
|
97
111
|
this.textChangeActiveObject('fontWeight');
|
|
112
|
+
this.toolConfigService.changeTextConfig({ textFontWeight: newFontWeight });
|
|
98
113
|
}
|
|
99
114
|
changeTextDecoration(newTextDecoration) {
|
|
100
115
|
this.textDecoration = newTextDecoration;
|
|
101
116
|
this.textChangeActiveObject('textDecoration');
|
|
117
|
+
this.toolConfigService.changeTextConfig({ textDecoration: newTextDecoration });
|
|
102
118
|
}
|
|
103
119
|
textSizeValueChanged(currentTextSizeValue, isSilent) {
|
|
104
120
|
this.textChangeActiveObject('fontSize', isSilent);
|
|
121
|
+
if (typeof currentTextSizeValue === 'number') {
|
|
122
|
+
this.toolConfigService.changeTextConfig({ textSizeValue: currentTextSizeValue });
|
|
123
|
+
}
|
|
105
124
|
}
|
|
106
125
|
textColorChanged(currentColor) {
|
|
107
126
|
this.textChangeActiveObject('color');
|
|
127
|
+
this.toolConfigService.changeTextConfig({ textColor: currentColor });
|
|
108
128
|
}
|
|
109
129
|
textChangeActiveObject(type, isSilent = false) {
|
|
110
130
|
if (this.activeObjectId != null &&
|
|
@@ -162,14 +182,14 @@ export class TextComponent {
|
|
|
162
182
|
}
|
|
163
183
|
}
|
|
164
184
|
}
|
|
165
|
-
TextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
-
TextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TextComponent, selector: "tui-image-editor-submenus-text", inputs: { imageEditor: "imageEditor", defaultTextColors: "defaultTextColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-text\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n [style.maxWidth]=\"'100%'\"\r\n >\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div\r\n class=\"tie-text-effect-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button bold ' +\r\n (textFontWeight == 'bold' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontWeight(textFontWeight == 'bold' ? 'normal' : 'bold')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-bold\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button italic ' +\r\n (textFontStyle == 'italic' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontStyle(\r\n textFontStyle == 'italic' ? 'normal' : 'italic'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-italic\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button underline ' +\r\n (textDecoration == 'underline' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextDecoration(\r\n textDecoration == 'underline' ? null : 'underline'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-text-underline\" | translate\r\n }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-text-align-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button left ' +\r\n (textAlign == 'left' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('left')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-left\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button center ' +\r\n (textAlign == 'center' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('center')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-center\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button right ' +\r\n (textAlign == 'right' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('right')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-right\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div>\r\n <div\r\n class=\"tie-text-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-text-color-picker\"\r\n [(colorPicker)]=\"textColor\"\r\n [style.background]=\"textColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultTextColors\"\r\n (colorPickerChange)=\"textColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-text-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-mb-3\"\r\n >\r\n <label class=\"range\">\r\n {{\r\n \"tui-image-editor-angular-submenus-text-textSize\" | translate\r\n }}</label\r\n >\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n min=\"10\"\r\n max=\"100\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"10\"\r\n max=\"100\"\r\n step=\"1\"\r\n class=\"tie-text-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
185
|
+
TextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextComponent, deps: [{ token: i1.ToolsConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
186
|
+
TextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TextComponent, selector: "tui-image-editor-submenus-text", inputs: { imageEditor: "imageEditor", defaultTextColors: "defaultTextColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-text\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n [style.maxWidth]=\"'100%'\"\r\n >\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div\r\n class=\"tie-text-effect-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button bold ' +\r\n (textFontWeight == 'bold' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontWeight(textFontWeight == 'bold' ? 'normal' : 'bold')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-bold\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button italic ' +\r\n (textFontStyle == 'italic' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontStyle(\r\n textFontStyle == 'italic' ? 'normal' : 'italic'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-italic\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button underline ' +\r\n (textDecoration == 'underline' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextDecoration(\r\n textDecoration == 'underline' ? null : 'underline'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-text-underline\" | translate\r\n }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-text-align-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button left ' +\r\n (textAlign == 'left' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('left')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-left\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button center ' +\r\n (textAlign == 'center' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('center')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-center\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button right ' +\r\n (textAlign == 'right' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('right')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-right\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div>\r\n <div\r\n class=\"tie-text-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-text-color-picker\"\r\n [(colorPicker)]=\"textColor\"\r\n [style.background]=\"textColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultTextColors\"\r\n (colorPickerChange)=\"textColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-text-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-mb-3\"\r\n >\r\n <label class=\"range\">\r\n {{\r\n \"tui-image-editor-angular-submenus-text-textSize\" | translate\r\n }}</label\r\n >\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n min=\"10\"\r\n max=\"100\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"10\"\r\n max=\"100\"\r\n step=\"1\"\r\n class=\"tie-text-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
167
187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextComponent, decorators: [{
|
|
168
188
|
type: Component,
|
|
169
189
|
args: [{ selector: 'tui-image-editor-submenus-text', template: "<div class=\"tui-image-editor-menu-text\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n [style.maxWidth]=\"'100%'\"\r\n >\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div\r\n class=\"tie-text-effect-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button bold ' +\r\n (textFontWeight == 'bold' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontWeight(textFontWeight == 'bold' ? 'normal' : 'bold')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-bold\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button italic ' +\r\n (textFontStyle == 'italic' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontStyle(\r\n textFontStyle == 'italic' ? 'normal' : 'italic'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-italic\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button underline ' +\r\n (textDecoration == 'underline' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextDecoration(\r\n textDecoration == 'underline' ? null : 'underline'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-text-underline\" | translate\r\n }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-text-align-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button left ' +\r\n (textAlign == 'left' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('left')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-left\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button center ' +\r\n (textAlign == 'center' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('center')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-center\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button right ' +\r\n (textAlign == 'right' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('right')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-text-right\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div>\r\n <div\r\n class=\"tie-text-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-text-color-picker\"\r\n [(colorPicker)]=\"textColor\"\r\n [style.background]=\"textColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultTextColors\"\r\n (colorPickerChange)=\"textColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-text-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-mb-3\"\r\n >\r\n <label class=\"range\">\r\n {{\r\n \"tui-image-editor-angular-submenus-text-textSize\" | translate\r\n }}</label\r\n >\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n min=\"10\"\r\n max=\"100\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"10\"\r\n max=\"100\"\r\n step=\"1\"\r\n class=\"tie-text-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
170
|
-
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
190
|
+
}], ctorParameters: function () { return [{ type: i1.ToolsConfigService }]; }, propDecorators: { imageEditor: [{
|
|
171
191
|
type: Input
|
|
172
192
|
}], defaultTextColors: [{
|
|
173
193
|
type: Input
|
|
174
194
|
}] } });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvc3VibWVudXMvdGV4dC90ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy90ZXh0L3RleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQU9oRCxNQUFNLE9BQU8sYUFBYTtJQWtCeEI7UUFmUyxzQkFBaUIsR0FBYSxhQUFhLENBQUM7UUFDOUMsY0FBUyxHQUFXLHVCQUF1QixDQUFDO1FBQzVDLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLGNBQVMsR0FBZ0MsTUFBTSxDQUFDO1FBQ2hELG1CQUFjLEdBQUcsV0FBVyxDQUFDO1FBQzdCLGtCQUFhLEdBQXdCLFFBQVEsQ0FBQztRQUM5QyxtQkFBYyxHQUFzQixRQUFRLENBQUM7UUFDN0MsbUJBQWMsR0FJVixJQUFJLENBQUM7UUFLZCxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxP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QUFNO29CQUNSLEtBQUssWUFBWTt3QkFDZixVQUFVLEdBQUc7NEJBQ1gsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjO3lCQUNoQyxDQUFDO3dCQUNGLE1BQU07b0JBQ1IsS0FBSyxXQUFXO3dCQUNkLFVBQVUsR0FBRzs0QkFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7eUJBQzFCLENBQUM7d0JBQ0YsTUFBTTtvQkFDUixLQUFLLGdCQUFnQjt3QkFDbkIsVUFBVSxHQUFHOzRCQUNYLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYzt5QkFDcEMsQ0FBQzt3QkFDRixNQUFNO2lCQUNUO2dCQUNELElBQUksaUJBQWlCLEdBQUcsR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsVUFBVSxFQUNWLFFBQVEsQ0FDVCxDQUFDO2dCQUNKLENBQUMsQ0FBQztnQkFDRixJQUFJLFFBQVEsRUFBRTtvQkFDWixpQkFBaUIsRUFBRSxDQUFDO2lCQUNyQjtxQkFBTTtvQkFDTCxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztpQkFDL0I7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7MEdBdk5VLGFBQWE7OEZBQWIsYUFBYSwyS0NoQjFCLHkrUEFrT0E7MkZEbE5hLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsZ0NBQWdDOzBFQUtqQyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmF1bHRDb2xvcnMsIGV2ZW50TmFtZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xyXG5pbXBvcnQgeyBnZXRBY3RpdmVPYmplY3RJZCB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy10ZXh0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGltYWdlRWRpdG9yOiBhbnk7XHJcbiAgcHVibGljIGFjdGl2ZU9iamVjdElkOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGVmYXVsdFRleHRDb2xvcnM6IHN0cmluZ1tdID0gZGVmYXVsdENvbG9ycztcclxuICBwdWJsaWMgdGV4dENvbG9yOiBzdHJpbmcgPSAncmdiYSgyNTUsIDE4NywgNTksIDEpJztcclxuICBwdWJsaWMgdGV4dFNpemVWYWx1ZTogbnVtYmVyID0gNTA7XHJcbiAgcHVibGljIHRleHRBbGlnbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2xlZnQnO1xyXG4gIHB1YmxpYyB0ZXh0Rm9udEZhbWlseSA9ICdOb3RvIFNhbnMnO1xyXG4gIHB1YmxpYyB0ZXh0Rm9udFN0eWxlOiAnbm9ybWFsJyB8ICdpdGFsaWMnID0gJ25vcm1hbCc7XHJcbiAgcHVibGljIHRleHRGb250V2VpZ2h0OiAnbm9ybWFsJyB8ICdib2xkJyA9ICdub3JtYWwnO1xyXG4gIHB1YmxpYyB0ZXh0RGVjb3JhdGlvbjpcclxuICAgIHwgJ3VuZGVybGluZSdcclxuICAgIHwgJ2xpbmUtdGhyb3VnaCdcclxuICAgIHwgJ292ZXJsaW5lJ1xyXG4gICAgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgb25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyOiBhbnk7XHJcbiAgcHVibGljIG9uVGV4dEFkZGVkRXZlbnRMaXN0ZW5lcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyID0gdGhpcy5vbk9iamVjdEFjdGl2YXRlZC5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5vblRleHRBZGRlZEV2ZW50TGlzdGVuZXIgPSB0aGlzLm9uVGV4dEFkZGVkLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB2YXIgdGhhdCA9IHRoaXM7XHJcbiAgICBpZiAoY2hhbmdlc1snaW1hZ2VFZGl0b3InXSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU9iamVjdElkID0gZ2V0QWN0aXZlT2JqZWN0SWQoXHJcbiAgICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5jdXJyZW50VmFsdWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jaGVja0FjdGl2ZU9iamVjdCh0aGlzLmFjdGl2ZU9iamVjdElkKTtcclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5jdXJyZW50VmFsdWU/LnN0YXJ0RHJhd2luZ01vZGUoJ1RFWFQnKTtcclxuXHJcbiAgICAgIGNoYW5nZXNbJ2ltYWdlRWRpdG9yJ10ucHJldmlvdXNWYWx1ZT8ub2ZmKFxyXG4gICAgICAgIGV2ZW50TmFtZXMuT0JKRUNUX0FDVElWQVRFRCxcclxuICAgICAgICB0aGF0Lm9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG4gICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLmN1cnJlbnRWYWx1ZT8ub24oXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQUNUSVZBVEVELFxyXG4gICAgICAgIHRoYXQub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLnByZXZpb3VzVmFsdWU/Lm9mZihcclxuICAgICAgICBldmVudE5hbWVzLkFERF9URVhULFxyXG4gICAgICAgIHRoYXQub25UZXh0QWRkZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICAgIGNoYW5nZXNbJ2ltYWdlRWRpdG9yJ10uY3VycmVudFZhbHVlPy5vbihcclxuICAgICAgICBldmVudE5hbWVzLkFERF9URVhULFxyXG4gICAgICAgIHRoYXQub25UZXh0QWRkZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmltYWdlRWRpdG9yKSB7XHJcbiAgICAgIHRoaXMuaW1hZ2VFZGl0b3Iub2ZmKFxyXG4gICAgICAgIGV2ZW50TmFtZXMuT0JKRUNUX0FDVElWQVRFRCxcclxuICAgICAgICB0aGlzLm9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLm9mZihldmVudE5hbWVzLkFERF9URVhULCB0aGlzLm9uVGV4dEFkZGVkRXZlbnRMaXN0ZW5lcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uT2JqZWN0QWN0aXZhdGVkKHByb3BzKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9iamVjdElkID0gcHJvcHM/LmlkO1xyXG4gICAgdGhpcy5jaGVja0FjdGl2ZU9iamVjdCh0aGlzLmFjdGl2ZU9iamVjdElkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25UZXh0QWRkZWQoZSkge1xyXG4gICAgdGhpcy5pbWFnZUVkaXRvclxyXG4gICAgICAuYWRkVGV4dCgnRWRpdCB0ZXh0Jywge1xyXG4gICAgICAgIHBvc2l0aW9uOiBlLm9yaWdpblBvc2l0aW9uLFxyXG4gICAgICAgIHN0eWxlczoge1xyXG4gICAgICAgICAgZmlsbDogdGhpcy50ZXh0Q29sb3IsXHJcbiAgICAgICAgICBmb250RmFtaWx5OiB0aGlzLnRleHRGb250RmFtaWx5LFxyXG4gICAgICAgICAgZm9udFNpemU6IHRoaXMudGV4dFNpemVWYWx1ZSxcclxuICAgICAgICAgIGZvbnRTdHlsZTogdGhpcy50ZXh0Rm9udFN0eWxlLFxyXG4gICAgICAgICAgZm9udFdlaWdodDogdGhpcy50ZXh0Rm9udFdlaWdodCxcclxuICAgICAgICAgIHRleHRBbGlnbjogdGhpcy50ZXh0QWxpZ24sXHJcbiAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogdGhpcy50ZXh0RGVjb3JhdGlvbixcclxuICAgICAgICAgIHVuZGVybGluZTogdGhpcy50ZXh0RGVjb3JhdGlvbiA9PSAndW5kZXJsaW5lJyxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbWFnZUVkaXRvci5jaGFuZ2VDdXJzb3IoJ2RlZmF1bHQnKTtcclxuICAgICAgICB0aGlzLmltYWdlRWRpdG9yPy5zdGFydERyYXdpbmdNb2RlKCdURVhUJyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0FjdGl2ZU9iamVjdChhY3RpdmVPYmplY3RJZDogbnVtYmVyKSB7XHJcbiAgICBpZiAoYWN0aXZlT2JqZWN0SWQgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLmltYWdlRWRpdG9yPy5nZXRPYmplY3RQcm9wZXJ0aWVzKGFjdGl2ZU9iamVjdElkLCBbXHJcbiAgICAgICAgJ3R5cGUnLFxyXG4gICAgICAgICdmaWxsJyxcclxuICAgICAgICAndGV4dEFsaWduJyxcclxuICAgICAgICAndGV4dERlY29yYXRpb24nLFxyXG4gICAgICAgICdmb250RmFtaWx5JyxcclxuICAgICAgICAnZm9udFN0eWxlJyxcclxuICAgICAgICAnZm9udFdlaWdodCcsXHJcbiAgICAgICAgJ2ZvbnRTaXplJyxcclxuICAgICAgXSk7XHJcbiAgICAgIGlmIChwcm9wcyAmJiAocHJvcHMudHlwZSA9PT0gJ2ktdGV4dCcgfHwgcHJvcHMudHlwZSA9PT0gJ3RleHQnKSkge1xyXG4gICAgICAgIHRoaXMudGV4dEFsaWduID0gcHJvcHMudGV4dEFsaWduO1xyXG4gICAgICAgIHRoaXMudGV4dENvbG9yID0gcHJvcHMuZmlsbDtcclxuICAgICAgICB0aGlzLnRleHREZWNvcmF0aW9uID0gcHJvcHMudGV4dERlY29yYXRpb247XHJcbiAgICAgICAgdGhpcy50ZXh0Rm9udEZhbWlseSA9IHByb3BzLmZvbnRGYW1pbHk7XHJcbiAgICAgICAgdGhpcy50ZXh0Rm9udFN0eWxlID0gcHJvcHMuZm9udFN0eWxlO1xyXG4gICAgICAgIHRoaXMudGV4dEZvbnRXZWlnaHQgPSBwcm9wcy5mb250V2VpZ2h0O1xyXG4gICAgICAgIHRoaXMudGV4dFNpemVWYWx1ZSA9IHByb3BzLmZvbnRTaXplO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VFZGl0b3I/LnN0YXJ0RHJhd2luZ01vZGUoJ1RFWFQnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGV4dEFsaWdubWVudChuZXdWYWx1ZTogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKSB7XHJcbiAgICB0aGlzLnRleHRBbGlnbiA9IG5ld1ZhbHVlO1xyXG4gICAgdGhpcy50ZXh0Q2hhbmdlQWN0aXZlT2JqZWN0KCd0ZXh0QWxpZ24nKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRleHRGb250U3R5bGUobmV3Rm9udFN0eWxlOiAnbm9ybWFsJyB8ICdpdGFsaWMnKSB7XHJcbiAgICB0aGlzLnRleHRGb250U3R5bGUgPSBuZXdGb250U3R5bGU7XHJcbiAgICB0aGlzLnRleHRDaGFuZ2VBY3RpdmVPYmplY3QoJ2ZvbnRTdHlsZScpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGV4dEZvbnRXZWlnaHQobmV3Rm9udFdlaWdodDogJ25vcm1hbCcgfCAnYm9sZCcpIHtcclxuICAgIHRoaXMudGV4dEZvbnRXZWlnaHQgPSBuZXdGb250V2VpZ2h0O1xyXG4gICAgdGhpcy50ZXh0Q2hhbmdlQWN0aXZlT2JqZWN0KCdmb250V2VpZ2h0Jyk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUZXh0RGVjb3JhdGlvbihcclxuICAgIG5ld1RleHREZWNvcmF0aW9uOiAndW5kZXJsaW5lJyB8ICdsaW5lLXRocm91Z2gnIHwgJ292ZXJsaW5lJyB8IG51bGxcclxuICApIHtcclxuICAgIHRoaXMudGV4dERlY29yYXRpb24gPSBuZXdUZXh0RGVjb3JhdGlvbjtcclxuICAgIHRoaXMudGV4dENoYW5nZUFjdGl2ZU9iamVjdCgndGV4dERlY29yYXRpb24nKTtcclxuICB9XHJcblxyXG4gIHRleHRTaXplVmFsdWVDaGFuZ2VkKGN1cnJlbnRUZXh0U2l6ZVZhbHVlOiBudW1iZXIsIGlzU2lsZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnRleHRDaGFuZ2VBY3RpdmVPYmplY3QoJ2ZvbnRTaXplJywgaXNTaWxlbnQpO1xyXG4gIH1cclxuXHJcbiAgdGV4dENvbG9yQ2hhbmdlZChjdXJyZW50Q29sb3I6IHN0cmluZykge1xyXG4gICAgdGhpcy50ZXh0Q2hhbmdlQWN0aXZlT2JqZWN0KCdjb2xvcicpO1xyXG4gIH1cclxuXHJcbiAgdGV4dENoYW5nZUFjdGl2ZU9iamVjdChcclxuICAgIHR5cGU6XHJcbiAgICAgIHwgJ2NvbG9yJ1xyXG4gICAgICB8ICdmb250RmFtaWx5J1xyXG4gICAgICB8ICdmb250U2l6ZSdcclxuICAgICAgfCAnZm9udFN0eWxlJ1xyXG4gICAgICB8ICdmb250V2VpZ2h0J1xyXG4gICAgICB8ICd0ZXh0QWxpZ24nXHJcbiAgICAgIHwgJ3RleHREZWNvcmF0aW9uJyxcclxuICAgIGlzU2lsZW50OiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCAhPSBudWxsICYmXHJcbiAgICAgIGdldEFjdGl2ZU9iamVjdElkKHRoaXMuaW1hZ2VFZGl0b3IpID09IHRoaXMuYWN0aXZlT2JqZWN0SWRcclxuICAgICkge1xyXG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLmltYWdlRWRpdG9yLmdldE9iamVjdFByb3BlcnRpZXMoXHJcbiAgICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCxcclxuICAgICAgICAndHlwZSdcclxuICAgICAgKTtcclxuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBudWxsO1xyXG4gICAgICBpZiAocHJvcHMudHlwZSA9PT0gJ2ktdGV4dCcgfHwgcHJvcHMudHlwZSA9PT0gJ3RleHQnKSB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICBjYXNlICdjb2xvcic6XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgZmlsbDogdGhpcy50ZXh0Q29sb3IsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZm9udEZhbWlseSc6XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgZm9udEZhbWlseTogdGhpcy50ZXh0Rm9udEZhbWlseSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdmb250U2l6ZSc6XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgZm9udFNpemU6IHRoaXMudGV4dFNpemVWYWx1ZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdmb250U3R5bGUnOlxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgIGZvbnRTdHlsZTogdGhpcy50ZXh0Rm9udFN0eWxlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2ZvbnRXZWlnaHQnOlxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMudGV4dEZvbnRXZWlnaHQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAndGV4dEFsaWduJzpcclxuICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICB0ZXh0QWxpZ246IHRoaXMudGV4dEFsaWduLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3RleHREZWNvcmF0aW9uJzpcclxuICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogdGhpcy50ZXh0RGVjb3JhdGlvbixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBmdW5jdGlvblRvRXhlY3V0ZSA9ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VFZGl0b3IuY2hhbmdlVGV4dFN0eWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU9iamVjdElkLFxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzLFxyXG4gICAgICAgICAgICBpc1NpbGVudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChpc1NpbGVudCkge1xyXG4gICAgICAgICAgZnVuY3Rpb25Ub0V4ZWN1dGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvblRvRXhlY3V0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLW1lbnUtdGV4dFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnUtaXRlbVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgIFtzdHlsZS5tYXhXaWR0aF09XCInMTAwJSdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3Itb3ZlcmZsb3dhYmxlLXggdHVpLWltYWdlLWVkaXRvci1weS0zXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidGllLXRleHQtZWZmZWN0LWJ1dHRvbiB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgICAndHVpLWltYWdlLWVkaXRvci1idXR0b24gYm9sZCAnICtcclxuICAgICAgICAgICAgICAodGV4dEZvbnRXZWlnaHQgPT0gJ2JvbGQnID8gJ2FjdGl2ZScgOiAnJylcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgIGNoYW5nZVRleHRGb250V2VpZ2h0KHRleHRGb250V2VpZ2h0ID09ICdib2xkJyA/ICdub3JtYWwnIDogJ2JvbGQnKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXRleHQtYm9sZFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtdGV4dC1ib2xkXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIGl0YWxpYyAnICtcclxuICAgICAgICAgICAgICAodGV4dEZvbnRTdHlsZSA9PSAnaXRhbGljJyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBjaGFuZ2VUZXh0Rm9udFN0eWxlKFxyXG4gICAgICAgICAgICAgICAgdGV4dEZvbnRTdHlsZSA9PSAnaXRhbGljJyA/ICdub3JtYWwnIDogJ2l0YWxpYydcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1pdGFsaWNcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1pdGFsaWNcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtdGV4dC1pdGFsaWNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgICAndHVpLWltYWdlLWVkaXRvci1idXR0b24gdW5kZXJsaW5lICcgK1xyXG4gICAgICAgICAgICAgICh0ZXh0RGVjb3JhdGlvbiA9PSAndW5kZXJsaW5lJyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBjaGFuZ2VUZXh0RGVjb3JhdGlvbihcclxuICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uID09ICd1bmRlcmxpbmUnID8gbnVsbCA6ICd1bmRlcmxpbmUnXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXRleHQtdW5kZXJsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXRleHQtdW5kZXJsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy10ZXh0LXVuZGVybGluZVwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLXBhcnRpdGlvblwiPlxyXG4gICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInRpZS10ZXh0LWFsaWduLWJ1dHRvbiB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgICAndHVpLWltYWdlLWVkaXRvci1idXR0b24gbGVmdCAnICtcclxuICAgICAgICAgICAgICAodGV4dEFsaWduID09ICdsZWZ0JyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VUZXh0QWxpZ25tZW50KCdsZWZ0JylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXRleHQtYWxpZ24tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LWFsaWduLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtdGV4dC1sZWZ0XCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIGNlbnRlciAnICtcclxuICAgICAgICAgICAgICAodGV4dEFsaWduID09ICdjZW50ZXInID8gJ2FjdGl2ZScgOiAnJylcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRleHRBbGlnbm1lbnQoJ2NlbnRlcicpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy10ZXh0LWNlbnRlclwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICd0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiByaWdodCAnICtcclxuICAgICAgICAgICAgICAodGV4dEFsaWduID09ICdyaWdodCcgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVGV4dEFsaWdubWVudCgncmlnaHQnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1hbGlnbi1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LWFsaWduLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLXRleHQtcmlnaHRcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItcGFydGl0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGllLXRleHQtY29sb3IgdHVpLWltYWdlLWVkaXRvci1idXR0b24gdHVpLWltYWdlLWVkaXRvci1idXR0b24tY29sb3ItcGlja2VyIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1jb2x1bW5cIlxyXG4gICAgICAgICAgICB0aXRsZT1cIkNvbG9yXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGllLXRleHQtY29sb3ItcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIFsoY29sb3JQaWNrZXIpXT1cInRleHRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0ZXh0Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW2NwT3V0cHV0Rm9ybWF0XT1cIidyZ2JhJ1wiXHJcbiAgICAgICAgICAgICAgICBbY3BQcmVzZXRDb2xvcnNdPVwiZGVmYXVsdFRleHRDb2xvcnNcIlxyXG4gICAgICAgICAgICAgICAgKGNvbG9yUGlja2VyQ2hhbmdlKT1cInRleHRDb2xvckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbY3BVc2VSb290Vmlld0NvbnRhaW5lcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy10ZXh0LWNvbG9yXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj48L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItbmV3bGluZSB0dWktaW1hZ2UtZWRpdG9yLXJhbmdlLXdyYXAgdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWFsaWduLWl0ZW1zLWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLWp1c3RpZnktY29udGVudC1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1tYi0zXCJcclxuICAgID5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwicmFuZ2VcIj5cclxuICAgICAgICB7e1xyXG4gICAgICAgICAgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtdGV4dC10ZXh0U2l6ZVwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgfX08L2xhYmVsXHJcbiAgICAgID5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInJhbmdlXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInRleHRTaXplVmFsdWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRleHRTaXplVmFsdWVDaGFuZ2VkKCRldmVudCwgdHJ1ZSlcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidGV4dFNpemVWYWx1ZUNoYW5nZWQoJGV2ZW50LCBmYWxzZSlcIlxyXG4gICAgICAgIG1pbj1cIjEwXCJcclxuICAgICAgICBtYXg9XCIxMDBcIlxyXG4gICAgICAvPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICBtaW49XCIxMFwiXHJcbiAgICAgICAgbWF4PVwiMTAwXCJcclxuICAgICAgICBzdGVwPVwiMVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0aWUtdGV4dC1yYW5nZS12YWx1ZSB0dWktaW1hZ2UtZWRpdG9yLXJhbmdlLXZhbHVlXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInRleHRTaXplVmFsdWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRleHRTaXplVmFsdWVDaGFuZ2VkKCRldmVudCwgdHJ1ZSlcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidGV4dFNpemVWYWx1ZUNoYW5nZWQoJGV2ZW50LCBmYWxzZSlcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvc3VibWVudXMvdGV4dC90ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy90ZXh0L3RleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFPaEQsTUFBTSxPQUFPLGFBQWE7SUFrQnhCLFlBQ1UsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFoQnRDLHNCQUFpQixHQUFhLGFBQWEsQ0FBQztRQUM5QyxjQUFTLEdBQVcsdUJBQXVCLENBQUM7UUFDNUMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0IsY0FBUyxHQUFnQyxNQUFNLENBQUM7UUFDaEQsbUJBQWMsR0FBRyxXQUFXLENBQUM7UUFDN0Isa0JBQWEsR0FBd0IsUUFBUSxDQUFDO1FBQzlDLG1CQUFjLEdBQXNCLFFBQVEsQ0FBQztRQUM3QyxtQkFBYyxHQUlWLElBQUksQ0FBQztRQU9kLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMs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d0JBQ2QsVUFBVSxHQUFHOzRCQUNYLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYTt5QkFDOUIsQ0FBQzt3QkFDRixNQUFNO29CQUNSLEtBQUssWUFBWTt3QkFDZixVQUFVLEdBQUc7NEJBQ1gsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjO3lCQUNoQyxDQUFDO3dCQUNGLE1BQU07b0JBQ1IsS0FBSyxXQUFXO3dCQUNkLFVBQVUsR0FBRzs0QkFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7eUJBQzFCLENBQUM7d0JBQ0YsTUFBTTtvQkFDUixLQUFLLGdCQUFnQjt3QkFDbkIsVUFBVSxHQUFHOzRCQUNYLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYzt5QkFDcEMsQ0FBQzt3QkFDRixNQUFNO2lCQUNUO2dCQUNELElBQUksaUJBQWlCLEdBQUcsR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsVUFBVSxFQUNWLFFBQVEsQ0FDVCxDQUFDO2dCQUNKLENBQUMsQ0FBQztnQkFDRixJQUFJLFFBQVEsRUFBRTtvQkFDWixpQkFBaUIsRUFBRSxDQUFDO2lCQUNyQjtxQkFBTTtvQkFDTCxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztpQkFDL0I7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7MEdBcFBVLGFBQWE7OEZBQWIsYUFBYSwyS0NqQjFCLHkrUEFrT0E7MkZEak5hLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsZ0NBQWdDO3lHQUtqQyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmF1bHRDb2xvcnMsIGV2ZW50TmFtZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xyXG5pbXBvcnQgeyBUb29sc0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b29scy5jb25maWctbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0QWN0aXZlT2JqZWN0SWQgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3R1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtdGV4dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RleHQuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBpbWFnZUVkaXRvcjogYW55O1xyXG4gIHB1YmxpYyBhY3RpdmVPYmplY3RJZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRUZXh0Q29sb3JzOiBzdHJpbmdbXSA9IGRlZmF1bHRDb2xvcnM7XHJcbiAgcHVibGljIHRleHRDb2xvcjogc3RyaW5nID0gJ3JnYmEoMjU1LCAxODcsIDU5LCAxKSc7XHJcbiAgcHVibGljIHRleHRTaXplVmFsdWU6IG51bWJlciA9IDUwO1xyXG4gIHB1YmxpYyB0ZXh0QWxpZ246ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcclxuICBwdWJsaWMgdGV4dEZvbnRGYW1pbHkgPSAnTm90byBTYW5zJztcclxuICBwdWJsaWMgdGV4dEZvbnRTdHlsZTogJ25vcm1hbCcgfCAnaXRhbGljJyA9ICdub3JtYWwnO1xyXG4gIHB1YmxpYyB0ZXh0Rm9udFdlaWdodDogJ25vcm1hbCcgfCAnYm9sZCcgPSAnbm9ybWFsJztcclxuICBwdWJsaWMgdGV4dERlY29yYXRpb246XHJcbiAgICB8ICd1bmRlcmxpbmUnXHJcbiAgICB8ICdsaW5lLXRocm91Z2gnXHJcbiAgICB8ICdvdmVybGluZSdcclxuICAgIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIG9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lcjogYW55O1xyXG4gIHB1YmxpYyBvblRleHRBZGRlZEV2ZW50TGlzdGVuZXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRvb2xDb25maWdTZXJ2aWNlOiBUb29sc0NvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyID0gdGhpcy5vbk9iamVjdEFjdGl2YXRlZC5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5vblRleHRBZGRlZEV2ZW50TGlzdGVuZXIgPSB0aGlzLm9uVGV4dEFkZGVkLmJpbmQodGhpcyk7XHJcbiAgICB0aGlzLnRvb2xDb25maWdTZXJ2aWNlLmNvbmZpZyQuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICB0ZXh0Q29sb3IsXHJcbiAgICAgICAgdGV4dFNpemVWYWx1ZSxcclxuICAgICAgICB0ZXh0QWxpZ24sXHJcbiAgICAgICAgdGV4dEZvbnRGYW1pbHksXHJcbiAgICAgICAgdGV4dEZvbnRTdHlsZSxcclxuICAgICAgICB0ZXh0Rm9udFdlaWdodCxcclxuICAgICAgICB0ZXh0RGVjb3JhdGlvblxyXG4gICAgICB9ID0gY29uZmlnLnRleHQ7XHJcblxyXG4gICAgICB0aGlzLnRleHRDb2xvcj10ZXh0Q29sb3IsXHJcbiAgICAgIHRoaXMudGV4dFNpemVWYWx1ZT10ZXh0U2l6ZVZhbHVlLFxyXG4gICAgICB0aGlzLnRleHRBbGlnbj10ZXh0QWxpZ24sXHJcbiAgICAgIHRoaXMudGV4dEZvbnRGYW1pbHk9dGV4dEZvbnRGYW1pbHksXHJcbiAgICAgIHRoaXMudGV4dEZvbnRTdHlsZT10ZXh0Rm9udFN0eWxlLFxyXG4gICAgICB0aGlzLnRleHRGb250V2VpZ2h0PXRleHRGb250V2VpZ2h0LFxyXG4gICAgICB0aGlzLnRleHREZWNvcmF0aW9uPXRleHREZWNvcmF0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgIGlmIChjaGFuZ2VzWydpbWFnZUVkaXRvciddKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgPSBnZXRBY3RpdmVPYmplY3RJZChcclxuICAgICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLmN1cnJlbnRWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNoZWNrQWN0aXZlT2JqZWN0KHRoaXMuYWN0aXZlT2JqZWN0SWQpO1xyXG4gICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLmN1cnJlbnRWYWx1ZT8uc3RhcnREcmF3aW5nTW9kZSgnVEVYVCcpO1xyXG5cclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5wcmV2aW91c1ZhbHVlPy5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQUNUSVZBVEVELFxyXG4gICAgICAgIHRoYXQub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICAgIGNoYW5nZXNbJ2ltYWdlRWRpdG9yJ10uY3VycmVudFZhbHVlPy5vbihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhhdC5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNoYW5nZXNbJ2ltYWdlRWRpdG9yJ10ucHJldmlvdXNWYWx1ZT8ub2ZmKFxyXG4gICAgICAgIGV2ZW50TmFtZXMuQUREX1RFWFQsXHJcbiAgICAgICAgdGhhdC5vblRleHRBZGRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5jdXJyZW50VmFsdWU/Lm9uKFxyXG4gICAgICAgIGV2ZW50TmFtZXMuQUREX1RFWFQsXHJcbiAgICAgICAgdGhhdC5vblRleHRBZGRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VFZGl0b3IpIHtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQUNUSVZBVEVELFxyXG4gICAgICAgIHRoaXMub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaW1hZ2VFZGl0b3Iub2ZmKGV2ZW50TmFtZXMuQUREX1RFWFQsIHRoaXMub25UZXh0QWRkZWRFdmVudExpc3RlbmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25PYmplY3RBY3RpdmF0ZWQocHJvcHMpIHtcclxuICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgPSBwcm9wcz8uaWQ7XHJcbiAgICB0aGlzLmNoZWNrQWN0aXZlT2JqZWN0KHRoaXMuYWN0aXZlT2JqZWN0SWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblRleHRBZGRlZChlKSB7XHJcbiAgICB0aGlzLmltYWdlRWRpdG9yXHJcbiAgICAgIC5hZGRUZXh0KCdFZGl0IHRleHQnLCB7XHJcbiAgICAgICAgcG9zaXRpb246IGUub3JpZ2luUG9zaXRpb24sXHJcbiAgICAgICAgc3R5bGVzOiB7XHJcbiAgICAgICAgICBmaWxsOiB0aGlzLnRleHRDb2xvcixcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IHRoaXMudGV4dEZvbnRGYW1pbHksXHJcbiAgICAgICAgICBmb250U2l6ZTogdGhpcy50ZXh0U2l6ZVZhbHVlLFxyXG4gICAgICAgICAgZm9udFN0eWxlOiB0aGlzLnRleHRGb250U3R5bGUsXHJcbiAgICAgICAgICBmb250V2VpZ2h0OiB0aGlzLnRleHRGb250V2VpZ2h0LFxyXG4gICAgICAgICAgdGV4dEFsaWduOiB0aGlzLnRleHRBbGlnbixcclxuICAgICAgICAgIHRleHREZWNvcmF0aW9uOiB0aGlzLnRleHREZWNvcmF0aW9uLFxyXG4gICAgICAgICAgdW5kZXJsaW5lOiB0aGlzLnRleHREZWNvcmF0aW9uID09ICd1bmRlcmxpbmUnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmltYWdlRWRpdG9yLmNoYW5nZUN1cnNvcignZGVmYXVsdCcpO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VFZGl0b3I/LnN0YXJ0RHJhd2luZ01vZGUoJ1RFWFQnKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQWN0aXZlT2JqZWN0KGFjdGl2ZU9iamVjdElkOiBudW1iZXIpIHtcclxuICAgIGlmIChhY3RpdmVPYmplY3RJZCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBwcm9wcyA9IHRoaXMuaW1hZ2VFZGl0b3I/LmdldE9iamVjdFByb3BlcnRpZXMoYWN0aXZlT2JqZWN0SWQsIFtcclxuICAgICAgICAndHlwZScsXHJcbiAgICAgICAgJ2ZpbGwnLFxyXG4gICAgICAgICd0ZXh0QWxpZ24nLFxyXG4gICAgICAgICd0ZXh0RGVjb3JhdGlvbicsXHJcbiAgICAgICAgJ2ZvbnRGYW1pbHknLFxyXG4gICAgICAgICdmb250U3R5bGUnLFxyXG4gICAgICAgICdmb250V2VpZ2h0JyxcclxuICAgICAgICAnZm9udFNpemUnLFxyXG4gICAgICBdKTtcclxuICAgICAgaWYgKHByb3BzICYmIChwcm9wcy50eXBlID09PSAnaS10ZXh0JyB8fCBwcm9wcy50eXBlID09PSAndGV4dCcpKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0QWxpZ24gPSBwcm9wcy50ZXh0QWxpZ247XHJcbiAgICAgICAgdGhpcy50ZXh0Q29sb3IgPSBwcm9wcy5maWxsO1xyXG4gICAgICAgIHRoaXMudGV4dERlY29yYXRpb24gPSBwcm9wcy50ZXh0RGVjb3JhdGlvbjtcclxuICAgICAgICB0aGlzLnRleHRGb250RmFtaWx5ID0gcHJvcHMuZm9udEZhbWlseTtcclxuICAgICAgICB0aGlzLnRleHRGb250U3R5bGUgPSBwcm9wcy5mb250U3R5bGU7XHJcbiAgICAgICAgdGhpcy50ZXh0Rm9udFdlaWdodCA9IHByb3BzLmZvbnRXZWlnaHQ7XHJcbiAgICAgICAgdGhpcy50ZXh0U2l6ZVZhbHVlID0gcHJvcHMuZm9udFNpemU7XHJcbiAgICAgICAgdGhpcy5pbWFnZUVkaXRvcj8uc3RhcnREcmF3aW5nTW9kZSgnVEVYVCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUZXh0QWxpZ25tZW50KG5ld1ZhbHVlOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpIHtcclxuICAgIHRoaXMudGV4dEFsaWduID0gbmV3VmFsdWU7XHJcbiAgICB0aGlzLnRleHRDaGFuZ2VBY3RpdmVPYmplY3QoJ3RleHRBbGlnbicpO1xyXG4gICAgdGhpcy50b29sQ29uZmlnU2VydmljZS5jaGFuZ2VUZXh0Q29uZmlnKHt0ZXh0QWxpZ246bmV3VmFsdWV9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRleHRGb250U3R5bGUobmV3Rm9udFN0eWxlOiAnbm9ybWFsJyB8ICdpdGFsaWMnKSB7XHJcbiAgICB0aGlzLnRleHRGb250U3R5bGUgPSBuZXdGb250U3R5bGU7XHJcbiAgICB0aGlzLnRleHRDaGFuZ2VBY3RpdmVPYmplY3QoJ2ZvbnRTdHlsZScpO1xyXG4gICAgdGhpcy50b29sQ29uZmlnU2VydmljZS5jaGFuZ2VUZXh0Q29uZmlnKHt0ZXh0Rm9udFN0eWxlOm5ld0ZvbnRTdHlsZX0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGV4dEZvbnRXZWlnaHQobmV3Rm9udFdlaWdodDogJ25vcm1hbCcgfCAnYm9sZCcpIHtcclxuICAgIHRoaXMudGV4dEZvbnRXZWlnaHQgPSBuZXdGb250V2VpZ2h0O1xyXG4gICAgdGhpcy50ZXh0Q2hhbmdlQWN0aXZlT2JqZWN0KCdmb250V2VpZ2h0Jyk7XHJcbiAgICB0aGlzLnRvb2xDb25maWdTZXJ2aWNlLmNoYW5nZVRleHRDb25maWcoe3RleHRGb250V2VpZ2h0Om5ld0ZvbnRXZWlnaHR9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRleHREZWNvcmF0aW9uKFxyXG4gICAgbmV3VGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnIHwgJ2xpbmUtdGhyb3VnaCcgfCAnb3ZlcmxpbmUnIHwgbnVsbFxyXG4gICkge1xyXG4gICAgdGhpcy50ZXh0RGVjb3JhdGlvbiA9IG5ld1RleHREZWNvcmF0aW9uO1xyXG4gICAgdGhpcy50ZXh0Q2hhbmdlQWN0aXZlT2JqZWN0KCd0ZXh0RGVjb3JhdGlvbicpO1xyXG4gICAgdGhpcy50b29sQ29uZmlnU2VydmljZS5jaGFuZ2VUZXh0Q29uZmlnKHt0ZXh0RGVjb3JhdGlvbjpuZXdUZXh0RGVjb3JhdGlvbn0pO1xyXG4gIH1cclxuXHJcbiAgdGV4dFNpemVWYWx1ZUNoYW5nZWQoY3VycmVudFRleHRTaXplVmFsdWU6IG51bWJlciwgaXNTaWxlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMudGV4dENoYW5nZUFjdGl2ZU9iamVjdCgnZm9udFNpemUnLCBpc1NpbGVudCk7XHJcbiAgICBpZih0eXBlb2YgY3VycmVudFRleHRTaXplVmFsdWUgPT09ICdudW1iZXInKXtcclxuICAgICAgdGhpcy50b29sQ29uZmlnU2VydmljZS5jaGFuZ2VUZXh0Q29uZmlnKHt0ZXh0U2l6ZVZhbHVlOmN1cnJlbnRUZXh0U2l6ZVZhbHVlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0ZXh0Q29sb3JDaGFuZ2VkKGN1cnJlbnRDb2xvcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRleHRDaGFuZ2VBY3RpdmVPYmplY3QoJ2NvbG9yJyk7XHJcbiAgICB0aGlzLnRvb2xDb25maWdTZXJ2aWNlLmNoYW5nZVRleHRDb25maWcoe3RleHRDb2xvcjpjdXJyZW50Q29sb3J9KTtcclxuICB9XHJcblxyXG4gIHRleHRDaGFuZ2VBY3RpdmVPYmplY3QoXHJcbiAgICB0eXBlOlxyXG4gICAgICB8ICdjb2xvcidcclxuICAgICAgfCAnZm9udEZhbWlseSdcclxuICAgICAgfCAnZm9udFNpemUnXHJcbiAgICAgIHwgJ2ZvbnRTdHlsZSdcclxuICAgICAgfCAnZm9udFdlaWdodCdcclxuICAgICAgfCAndGV4dEFsaWduJ1xyXG4gICAgICB8ICd0ZXh0RGVjb3JhdGlvbicsXHJcbiAgICBpc1NpbGVudDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgIT0gbnVsbCAmJlxyXG4gICAgICBnZXRBY3RpdmVPYmplY3RJZCh0aGlzLmltYWdlRWRpdG9yKSA9PSB0aGlzLmFjdGl2ZU9iamVjdElkXHJcbiAgICApIHtcclxuICAgICAgdmFyIHByb3BzID0gdGhpcy5pbWFnZUVkaXRvci5nZXRPYmplY3RQcm9wZXJ0aWVzKFxyXG4gICAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQsXHJcbiAgICAgICAgJ3R5cGUnXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBwYXJhbWV0ZXJzID0gbnVsbDtcclxuICAgICAgaWYgKHByb3BzLnR5cGUgPT09ICdpLXRleHQnIHx8IHByb3BzLnR5cGUgPT09ICd0ZXh0Jykge1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnY29sb3InOlxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgIGZpbGw6IHRoaXMudGV4dENvbG9yLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2ZvbnRGYW1pbHknOlxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHRoaXMudGV4dEZvbnRGYW1pbHksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZm9udFNpemUnOlxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiB0aGlzLnRleHRTaXplVmFsdWUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZm9udFN0eWxlJzpcclxuICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICBmb250U3R5bGU6IHRoaXMudGV4dEZvbnRTdHlsZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdmb250V2VpZ2h0JzpcclxuICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICBmb250V2VpZ2h0OiB0aGlzLnRleHRGb250V2VpZ2h0LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3RleHRBbGlnbic6XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiB0aGlzLnRleHRBbGlnbixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICd0ZXh0RGVjb3JhdGlvbic6XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IHRoaXMudGV4dERlY29yYXRpb24sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZnVuY3Rpb25Ub0V4ZWN1dGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRWRpdG9yLmNoYW5nZVRleHRTdHlsZShcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCxcclxuICAgICAgICAgICAgcGFyYW1ldGVycyxcclxuICAgICAgICAgICAgaXNTaWxlbnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoaXNTaWxlbnQpIHtcclxuICAgICAgICAgIGZ1bmN0aW9uVG9FeGVjdXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb25Ub0V4ZWN1dGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1tZW51LXRleHRcIj5cclxuICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1zdWJtZW51LWl0ZW1cIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICBbc3R5bGUubWF4V2lkdGhdPVwiJzEwMCUnXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWFsaWduLWl0ZW1zLWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLW92ZXJmbG93YWJsZS14IHR1aS1pbWFnZS1lZGl0b3ItcHktM1wiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInRpZS10ZXh0LWVmZmVjdC1idXR0b24gdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvd1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIGJvbGQgJyArXHJcbiAgICAgICAgICAgICAgKHRleHRGb250V2VpZ2h0ID09ICdib2xkJyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBjaGFuZ2VUZXh0Rm9udFdlaWdodCh0ZXh0Rm9udFdlaWdodCA9PSAnYm9sZCcgPyAnbm9ybWFsJyA6ICdib2xkJylcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1ib2xkXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLXRleHQtYm9sZFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICd0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiBpdGFsaWMgJyArXHJcbiAgICAgICAgICAgICAgKHRleHRGb250U3R5bGUgPT0gJ2l0YWxpYycgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgY2hhbmdlVGV4dEZvbnRTdHlsZShcclxuICAgICAgICAgICAgICAgIHRleHRGb250U3R5bGUgPT0gJ2l0YWxpYycgPyAnbm9ybWFsJyA6ICdpdGFsaWMnXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXRleHQtaXRhbGljXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXRleHQtaXRhbGljXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLXRleHQtaXRhbGljXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIHVuZGVybGluZSAnICtcclxuICAgICAgICAgICAgICAodGV4dERlY29yYXRpb24gPT0gJ3VuZGVybGluZScgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgY2hhbmdlVGV4dERlY29yYXRpb24oXHJcbiAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbiA9PSAndW5kZXJsaW5lJyA/IG51bGwgOiAndW5kZXJsaW5lJ1xyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LXVuZGVybGluZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LXVuZGVybGluZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtdGV4dC11bmRlcmxpbmVcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1wYXJ0aXRpb25cIj5cclxuICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ0aWUtdGV4dC1hbGlnbi1idXR0b24gdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvd1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIGxlZnQgJyArXHJcbiAgICAgICAgICAgICAgKHRleHRBbGlnbiA9PSAnbGVmdCcgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVGV4dEFsaWdubWVudCgnbGVmdCcpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy10ZXh0LWFsaWduLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1hbGlnbi1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLXRleHQtbGVmdFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICd0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiBjZW50ZXIgJyArXHJcbiAgICAgICAgICAgICAgKHRleHRBbGlnbiA9PSAnY2VudGVyJyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VUZXh0QWxpZ25tZW50KCdjZW50ZXInKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtdGV4dC1jZW50ZXJcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgICAndHVpLWltYWdlLWVkaXRvci1idXR0b24gcmlnaHQgJyArXHJcbiAgICAgICAgICAgICAgKHRleHRBbGlnbiA9PSAncmlnaHQnID8gJ2FjdGl2ZScgOiAnJylcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRleHRBbGlnbm1lbnQoJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXRleHQtYWxpZ24tcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtdGV4dC1hbGlnbi1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy10ZXh0LXJpZ2h0XCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLXBhcnRpdGlvblwiPlxyXG4gICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInRpZS10ZXh0LWNvbG9yIHR1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIHR1aS1pbWFnZS1lZGl0b3ItYnV0dG9uLWNvbG9yLXBpY2tlciB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtY29sdW1uXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRpZS10ZXh0LWNvbG9yLXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICBbKGNvbG9yUGlja2VyKV09XCJ0ZXh0Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGV4dENvbG9yXCJcclxuICAgICAgICAgICAgICAgIFtjcE91dHB1dEZvcm1hdF09XCIncmdiYSdcIlxyXG4gICAgICAgICAgICAgICAgW2NwUHJlc2V0Q29sb3JzXT1cImRlZmF1bHRUZXh0Q29sb3JzXCJcclxuICAgICAgICAgICAgICAgIChjb2xvclBpY2tlckNoYW5nZSk9XCJ0ZXh0Q29sb3JDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2NwVXNlUm9vdFZpZXdDb250YWluZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtdGV4dC1jb2xvclwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+PC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLW5ld2xpbmUgdHVpLWltYWdlLWVkaXRvci1yYW5nZS13cmFwIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1yb3cgdHVpLWltYWdlLWVkaXRvci1hbGlnbi1pdGVtcy1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItbWItM1wiXHJcbiAgICA+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInJhbmdlXCI+XHJcbiAgICAgICAge3tcclxuICAgICAgICAgIFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLXRleHQtdGV4dFNpemVcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgIH19PC9sYWJlbFxyXG4gICAgICA+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYW5nZVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZXh0U2l6ZVZhbHVlXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0ZXh0U2l6ZVZhbHVlQ2hhbmdlZCgkZXZlbnQsIHRydWUpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRleHRTaXplVmFsdWVDaGFuZ2VkKCRldmVudCwgZmFsc2UpXCJcclxuICAgICAgICBtaW49XCIxMFwiXHJcbiAgICAgICAgbWF4PVwiMTAwXCJcclxuICAgICAgLz5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgbWluPVwiMTBcIlxyXG4gICAgICAgIG1heD1cIjEwMFwiXHJcbiAgICAgICAgc3RlcD1cIjFcIlxyXG4gICAgICAgIGNsYXNzPVwidGllLXRleHQtcmFuZ2UtdmFsdWUgdHVpLWltYWdlLWVkaXRvci1yYW5nZS12YWx1ZVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZXh0U2l6ZVZhbHVlXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0ZXh0U2l6ZVZhbHVlQ2hhbmdlZCgkZXZlbnQsIHRydWUpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRleHRTaXplVmFsdWVDaGFuZ2VkKCRldmVudCwgZmFsc2UpXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|