@c80/ui 1.0.38 → 1.0.40
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/esm2022/lib/icon/icon.component.mjs +24 -55
- package/esm2022/lib/icon/icon.constants.mjs +48 -1
- package/esm2022/lib/icon/icon.utils.mjs +4 -0
- package/esm2022/lib/icon/index.mjs +2 -1
- package/esm2022/lib/stat-card/stat-card.component.mjs +1 -1
- package/esm2022/lib/table/table.component.mjs +2 -2
- package/lib/icon/icon.component.d.ts +8 -28
- package/lib/icon/icon.constants.d.ts +6 -0
- package/lib/icon/icon.utils.d.ts +1 -0
- package/lib/icon/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,80 +1,49 @@
|
|
|
1
|
-
import { Component, input, output, computed
|
|
1
|
+
import { Component, input, output, computed } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { BASE_ICON_COLORS, DISABLED_COLOR, DEFAULT_ICON_COLOR, DISABLED_OPACITY, SECONDARY_WARN_OPACITY, DEFAULT_OPACITY,
|
|
3
|
+
import { BASE_ICON_SIZE, BASE_ICON_COLORS, DISABLED_COLOR, DEFAULT_ICON_COLOR, DISABLED_OPACITY, SECONDARY_WARN_OPACITY, DEFAULT_OPACITY, ICON_PATHS, ICON_ADDITIONAL_SHAPES, } from './icon.constants';
|
|
4
|
+
import { transformToBoolean } from './icon.utils';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common";
|
|
6
7
|
export class C80IconComponent {
|
|
7
|
-
icon = input('check');
|
|
8
|
-
color = input('primary');
|
|
9
|
-
customColor = input(undefined);
|
|
10
|
-
disabled = input(false);
|
|
11
|
-
size = input(1);
|
|
12
|
-
button = input(false, {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
icon = input('check'); // Tipo de icono a mostrar
|
|
9
|
+
color = input('primary'); // Color del icono (primary, secondary, warn, success)
|
|
10
|
+
customColor = input(undefined); // Color personalizado (sobrescribe color)
|
|
11
|
+
disabled = input(false); // Estado deshabilitado
|
|
12
|
+
size = input(1); // Multiplicador de tamaño (1 = 24px)
|
|
13
|
+
button = input(false, { transform: transformToBoolean }); // Renderiza como botón clickeable
|
|
14
|
+
border = input(false, { transform: transformToBoolean }); // Agrega borde al wrapper
|
|
15
|
+
type = input('button'); // Tipo de botón (button, submit, reset)
|
|
16
|
+
textLeft = input(undefined); // Texto a la izquierda del icono
|
|
17
|
+
textRight = input(undefined); // Texto a la derecha del icono
|
|
18
|
+
iconClick = output(); // Evento emitido al hacer click (solo si button=true)
|
|
17
19
|
iconSize = computed(() => BASE_ICON_SIZE * this.size());
|
|
18
20
|
iconColor = computed(() => {
|
|
19
|
-
if (this.disabled())
|
|
21
|
+
if (this.disabled())
|
|
20
22
|
return DISABLED_COLOR;
|
|
21
|
-
}
|
|
22
23
|
const custom = this.customColor();
|
|
23
|
-
if (custom)
|
|
24
|
+
if (custom)
|
|
24
25
|
return custom;
|
|
25
|
-
}
|
|
26
26
|
return BASE_ICON_COLORS[this.color()] ?? DEFAULT_ICON_COLOR;
|
|
27
27
|
});
|
|
28
28
|
iconOpacity = computed(() => {
|
|
29
|
-
if (this.disabled())
|
|
29
|
+
if (this.disabled())
|
|
30
30
|
return DISABLED_OPACITY;
|
|
31
|
-
}
|
|
32
|
-
const currentColor = this.color();
|
|
33
31
|
const hasCustomColor = this.customColor() !== undefined;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return SECONDARY_WARN_OPACITY;
|
|
37
|
-
}
|
|
38
|
-
return DEFAULT_OPACITY;
|
|
39
|
-
});
|
|
40
|
-
iconTemplate = computed(() => {
|
|
41
|
-
const iconName = this.icon();
|
|
42
|
-
const viewChildSignal = this[iconName];
|
|
43
|
-
return typeof viewChildSignal === 'function' ? viewChildSignal() : undefined;
|
|
32
|
+
const isSecondaryOrWarn = ['secondary', 'warn'].includes(this.color());
|
|
33
|
+
return !hasCustomColor && isSecondaryOrWarn ? SECONDARY_WARN_OPACITY : DEFAULT_OPACITY;
|
|
44
34
|
});
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
edit = viewChild('edit');
|
|
48
|
-
delete = viewChild('delete');
|
|
49
|
-
add = viewChild('add');
|
|
50
|
-
view = viewChild('view');
|
|
51
|
-
get = viewChild('get');
|
|
52
|
-
settings = viewChild('settings');
|
|
53
|
-
schedule = viewChild('schedule');
|
|
54
|
-
refresh = viewChild('refresh');
|
|
55
|
-
checkCircle = viewChild('checkCircle');
|
|
56
|
-
cancelCircle = viewChild('cancelCircle');
|
|
57
|
-
error = viewChild('error');
|
|
58
|
-
queue = viewChild('queue');
|
|
59
|
-
arrowUp = viewChild('arrowUp');
|
|
60
|
-
arrowDown = viewChild('arrowDown');
|
|
61
|
-
toggleOn = viewChild('toggleOn');
|
|
62
|
-
toggleOff = viewChild('toggleOff');
|
|
63
|
-
search = viewChild('search');
|
|
64
|
-
upload = viewChild('upload');
|
|
65
|
-
pendingActions = viewChild('pendingActions');
|
|
66
|
-
playCircle = viewChild('playCircle');
|
|
67
|
-
default = viewChild('default');
|
|
35
|
+
iconPath = computed(() => ICON_PATHS[this.icon()] ?? ICON_PATHS['default']);
|
|
36
|
+
additionalShapes = computed(() => ICON_ADDITIONAL_SHAPES[this.icon()] ?? []);
|
|
68
37
|
onButtonClick(event) {
|
|
69
38
|
if (!this.disabled()) {
|
|
70
39
|
this.iconClick.emit(event);
|
|
71
40
|
}
|
|
72
41
|
}
|
|
73
42
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customColor: { classPropertyName: "customColor", publicName: "customColor", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { iconClick: "iconClick" }, viewQueries: [{ propertyName: "check", first: true, predicate: ["check"], descendants: true, isSignal: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true, isSignal: true }, { propertyName: "edit", first: true, predicate: ["edit"], descendants: true, isSignal: true }, { propertyName: "delete", first: true, predicate: ["delete"], descendants: true, isSignal: true }, { propertyName: "add", first: true, predicate: ["add"], descendants: true, isSignal: true }, { propertyName: "view", first: true, predicate: ["view"], descendants: true, isSignal: true }, { propertyName: "get", first: true, predicate: ["get"], descendants: true, isSignal: true }, { propertyName: "settings", first: true, predicate: ["settings"], descendants: true, isSignal: true }, { propertyName: "schedule", first: true, predicate: ["schedule"], descendants: true, isSignal: true }, { propertyName: "refresh", first: true, predicate: ["refresh"], descendants: true, isSignal: true }, { propertyName: "checkCircle", first: true, predicate: ["checkCircle"], descendants: true, isSignal: true }, { propertyName: "cancelCircle", first: true, predicate: ["cancelCircle"], descendants: true, isSignal: true }, { propertyName: "error", first: true, predicate: ["error"], descendants: true, isSignal: true }, { propertyName: "queue", first: true, predicate: ["queue"], descendants: true, isSignal: true }, { propertyName: "arrowUp", first: true, predicate: ["arrowUp"], descendants: true, isSignal: true }, { propertyName: "arrowDown", first: true, predicate: ["arrowDown"], descendants: true, isSignal: true }, { propertyName: "toggleOn", first: true, predicate: ["toggleOn"], descendants: true, isSignal: true }, { propertyName: "toggleOff", first: true, predicate: ["toggleOff"], descendants: true, isSignal: true }, { propertyName: "search", first: true, predicate: ["search"], descendants: true, isSignal: true }, { propertyName: "upload", first: true, predicate: ["upload"], descendants: true, isSignal: true }, { propertyName: "pendingActions", first: true, predicate: ["pendingActions"], descendants: true, isSignal: true }, { propertyName: "playCircle", first: true, predicate: ["playCircle"], descendants: true, isSignal: true }, { propertyName: "default", first: true, predicate: ["default"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-button\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize()\" [style.height.px]=\"iconSize()\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #check>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancel>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #edit>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor()\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #delete>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #add>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #view>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #get>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settings>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #default>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #schedule>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refresh>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #error>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queue>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUp>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDown>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOn>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor()\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOff>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #search>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #upload>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActions>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customColor: { classPropertyName: "customColor", publicName: "customColor", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, textLeft: { classPropertyName: "textLeft", publicName: "textLeft", isSignal: true, isRequired: false, transformFunction: null }, textRight: { classPropertyName: "textRight", publicName: "textRight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { iconClick: "iconClick" }, ngImport: i0, template: "<ng-template #svgContent>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n @for (shape of additionalShapes(); track $index) {\r\n @if (shape.type === 'circle') {\r\n <circle [attr.cx]=\"shape['cx']\" [attr.cy]=\"shape['cy']\" [attr.r]=\"shape['r']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'rect') {\r\n <rect [attr.x]=\"shape['x']\" [attr.y]=\"shape['y']\" [attr.width]=\"shape['width']\" [attr.height]=\"shape['height']\" [attr.rx]=\"shape['rx']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'path') {\r\n <path [attr.d]=\"shape['d']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n }\r\n }\r\n <path [attr.d]=\"iconPath()\" [attr.stroke]=\"iconColor()\" [attr.fill]=\"icon() === 'delete' ? iconColor() : 'none'\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #textContent>\r\n @if (textLeft()) {\r\n <span class=\"icon-text\" style=\"margin-left: 12px\">{{ textLeft() }}</span>\r\n }\r\n <span class=\"icon-content\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\">\r\n <ng-container *ngTemplateOutlet=\"svgContent\" />\r\n </span>\r\n @if (textRight()) {\r\n <span class=\"icon-text\" style=\"margin-right: 12px\">{{ textRight() }}</span>\r\n }\r\n</ng-template>\r\n\r\n@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</button>\r\n} @else {\r\n<span class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</span>\r\n}", styles: [":host .icon-wrapper{display:inline-flex;align-items:center;gap:8px;background:transparent;padding:0;border:none;outline:none;cursor:pointer;transition:opacity .2s}:host button.icon-wrapper:focus-visible{outline:2px solid #1976d2;outline-offset:2px;border-radius:4px}:host button.icon-wrapper:disabled{opacity:.5;cursor:default}:host .icon-content{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;min-width:0;min-height:0;padding:4px;margin:0 4px;transition:background .2s;box-sizing:border-box}:host button.icon-wrapper:hover:not(:disabled) .icon-content{background:#1976d214}:host button.icon-wrapper:active:not(:disabled) .icon-content{background:#1976d229}:host .icon-text{font-size:14px;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none}:host .icon-wrapper-border{border:1px solid rgba(0,0,0,.23);border-radius:4px;padding:4px 8px}:host button.icon-wrapper-border:hover:not(:disabled){border-color:#000000de}:host button.icon-wrapper-border:disabled{border-color:#0000001f}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
75
44
|
}
|
|
76
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, decorators: [{
|
|
77
46
|
type: Component,
|
|
78
|
-
args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-button\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize()\" [style.height.px]=\"iconSize()\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #check>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancel>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #edit>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor()\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #delete>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #add>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #view>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #get>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settings>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #default>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #schedule>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refresh>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #error>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queue>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUp>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDown>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOn>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor()\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOff>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #search>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #upload>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActions>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"] }]
|
|
47
|
+
args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "<ng-template #svgContent>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n @for (shape of additionalShapes(); track $index) {\r\n @if (shape.type === 'circle') {\r\n <circle [attr.cx]=\"shape['cx']\" [attr.cy]=\"shape['cy']\" [attr.r]=\"shape['r']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'rect') {\r\n <rect [attr.x]=\"shape['x']\" [attr.y]=\"shape['y']\" [attr.width]=\"shape['width']\" [attr.height]=\"shape['height']\" [attr.rx]=\"shape['rx']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'path') {\r\n <path [attr.d]=\"shape['d']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n }\r\n }\r\n <path [attr.d]=\"iconPath()\" [attr.stroke]=\"iconColor()\" [attr.fill]=\"icon() === 'delete' ? iconColor() : 'none'\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #textContent>\r\n @if (textLeft()) {\r\n <span class=\"icon-text\" style=\"margin-left: 12px\">{{ textLeft() }}</span>\r\n }\r\n <span class=\"icon-content\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\">\r\n <ng-container *ngTemplateOutlet=\"svgContent\" />\r\n </span>\r\n @if (textRight()) {\r\n <span class=\"icon-text\" style=\"margin-right: 12px\">{{ textRight() }}</span>\r\n }\r\n</ng-template>\r\n\r\n@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</button>\r\n} @else {\r\n<span class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</span>\r\n}", styles: [":host .icon-wrapper{display:inline-flex;align-items:center;gap:8px;background:transparent;padding:0;border:none;outline:none;cursor:pointer;transition:opacity .2s}:host button.icon-wrapper:focus-visible{outline:2px solid #1976d2;outline-offset:2px;border-radius:4px}:host button.icon-wrapper:disabled{opacity:.5;cursor:default}:host .icon-content{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;min-width:0;min-height:0;padding:4px;margin:0 4px;transition:background .2s;box-sizing:border-box}:host button.icon-wrapper:hover:not(:disabled) .icon-content{background:#1976d214}:host button.icon-wrapper:active:not(:disabled) .icon-content{background:#1976d229}:host .icon-text{font-size:14px;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none}:host .icon-wrapper-border{border:1px solid rgba(0,0,0,.23);border-radius:4px;padding:4px 8px}:host button.icon-wrapper-border:hover:not(:disabled){border-color:#000000de}:host button.icon-wrapper-border:disabled{border-color:#0000001f}\n"] }]
|
|
79
48
|
}] });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBVzFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsSUFBSSxHQUFHLEtBQUssQ0FBVyxPQUFPLENBQUMsQ0FBQztJQUNoQyxLQUFLLEdBQUcsS0FBSyxDQUFZLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLFdBQVcsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRTtRQUM3QixTQUFTLEVBQUUsQ0FBQyxHQUF3QyxFQUFFLEVBQUUsQ0FDdEQsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU87S0FDeEUsQ0FBQyxDQUFDO0lBQ00sSUFBSSxHQUFHLEtBQUssQ0FBYSxRQUFRLENBQUMsQ0FBQztJQUVuQyxTQUFTLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFFNUIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFeEQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNwQixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDcEIsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUM7UUFFeEQsSUFDRSxDQUFDLFlBQVksS0FBSyxXQUFXLElBQUksWUFBWSxLQUFLLE1BQU0sQ0FBQztZQUN6RCxDQUFDLGNBQWMsRUFDZixDQUFDO1lBQ0QsT0FBTyxzQkFBc0IsQ0FBQztRQUNoQyxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQXNCLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sZUFBZSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvRSxDQUFDLENBQUMsQ0FBQztJQUVNLEtBQUssR0FBRyxTQUFTLENBQXVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELElBQUksR0FBRyxTQUFTLENBQXVCLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELEdBQUcsR0FBRyxTQUFTLENBQXVCLEtBQUssQ0FBQyxDQUFDO0lBQzdDLElBQUksR0FBRyxTQUFTLENBQXVCLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLEdBQUcsR0FBRyxTQUFTLENBQXVCLEtBQUssQ0FBQyxDQUFDO0lBQzdDLFFBQVEsR0FBRyxTQUFTLENBQXVCLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsR0FBRyxTQUFTLENBQXVCLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sR0FBRyxTQUFTLENBQXVCLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELFdBQVcsR0FBRyxTQUFTLENBQXVCLGFBQWEsQ0FBQyxDQUFDO0lBQzdELFlBQVksR0FBRyxTQUFTLENBQXVCLGNBQWMsQ0FBQyxDQUFDO0lBQy9ELEtBQUssR0FBRyxTQUFTLENBQXVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELEtBQUssR0FBRyxTQUFTLENBQXVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE9BQU8sR0FBRyxTQUFTLENBQXVCLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBRyxTQUFTLENBQXVCLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsR0FBRyxTQUFTLENBQXVCLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELFNBQVMsR0FBRyxTQUFTLENBQXVCLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELGNBQWMsR0FBRyxTQUFTLENBQXVCLGdCQUFnQixDQUFDLENBQUM7SUFDbkUsVUFBVSxHQUFHLFNBQVMsQ0FBdUIsWUFBWSxDQUFDLENBQUM7SUFDM0QsT0FBTyxHQUFHLFNBQVMsQ0FBdUIsU0FBUyxDQUFDLENBQUM7SUFFOUQsYUFBYSxDQUFDLEtBQVk7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO3dHQWpGVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQix3dkdDNUI3QixrclZBb0pjLDZvQkQ1SEYsWUFBWTs7NEZBSVgsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUVFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIGNvbXB1dGVkLFxuICB2aWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBCQVNFX0lDT05fQ09MT1JTLFxuICBESVNBQkxFRF9DT0xPUixcbiAgREVGQVVMVF9JQ09OX0NPTE9SLFxuICBESVNBQkxFRF9PUEFDSVRZLFxuICBTRUNPTkRBUllfV0FSTl9PUEFDSVRZLFxuICBERUZBVUxUX09QQUNJVFksXG4gIEJBU0VfSUNPTl9TSVpFLFxufSBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcbmltcG9ydCB7IEljb25UeXBlLCBDb2xvclR5cGUsIEJ1dHRvblR5cGUgfSBmcm9tICcuL2ljb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdjODAtaWNvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQzgwSWNvbkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxJY29uVHlwZT4oJ2NoZWNrJyk7XG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQ8Q29sb3JUeXBlPigncHJpbWFyeScpO1xuICByZWFkb25seSBjdXN0b21Db2xvciA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dCgxKTtcbiAgcmVhZG9ubHkgYnV0dG9uID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWw6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gZmFsc2UgJiYgdmFsICE9PSAnZmFsc2UnLFxuICB9KTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PEJ1dHRvblR5cGU+KCdidXR0b24nKTtcblxuICByZWFkb25seSBpY29uQ2xpY2sgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgcmVhZG9ubHkgaWNvblNpemUgPSBjb21wdXRlZCgoKSA9PiBCQVNFX0lDT05fU0laRSAqIHRoaXMuc2l6ZSgpKTtcblxuICByZWFkb25seSBpY29uQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIERJU0FCTEVEX0NPTE9SO1xuICAgIH1cblxuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMuY3VzdG9tQ29sb3IoKTtcbiAgICBpZiAoY3VzdG9tKSB7XG4gICAgICByZXR1cm4gY3VzdG9tO1xuICAgIH1cblxuICAgIHJldHVybiBCQVNFX0lDT05fQ09MT1JTW3RoaXMuY29sb3IoKV0gPz8gREVGQVVMVF9JQ09OX0NPTE9SO1xuICB9KTtcblxuICByZWFkb25seSBpY29uT3BhY2l0eSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm4gRElTQUJMRURfT1BBQ0lUWTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q29sb3IgPSB0aGlzLmNvbG9yKCk7XG4gICAgY29uc3QgaGFzQ3VzdG9tQ29sb3IgPSB0aGlzLmN1c3RvbUNvbG9yKCkgIT09IHVuZGVmaW5lZDtcblxuICAgIGlmIChcbiAgICAgIChjdXJyZW50Q29sb3IgPT09ICdzZWNvbmRhcnknIHx8IGN1cnJlbnRDb2xvciA9PT0gJ3dhcm4nKSAmJlxuICAgICAgIWhhc0N1c3RvbUNvbG9yXG4gICAgKSB7XG4gICAgICByZXR1cm4gU0VDT05EQVJZX1dBUk5fT1BBQ0lUWTtcbiAgICB9XG5cbiAgICByZXR1cm4gREVGQVVMVF9PUEFDSVRZO1xuICB9KTtcblxuICByZWFkb25seSBpY29uVGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaWNvbk5hbWUgPSB0aGlzLmljb24oKTtcbiAgICBjb25zdCB2aWV3Q2hpbGRTaWduYWwgPSB0aGlzW2ljb25OYW1lIGFzIGtleW9mIHRoaXNdO1xuICAgIHJldHVybiB0eXBlb2Ygdmlld0NoaWxkU2lnbmFsID09PSAnZnVuY3Rpb24nID8gdmlld0NoaWxkU2lnbmFsKCkgOiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNoZWNrID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignY2hlY2snKTtcbiAgcmVhZG9ubHkgY2FuY2VsID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignY2FuY2VsJyk7XG4gIHJlYWRvbmx5IGVkaXQgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdlZGl0Jyk7XG4gIHJlYWRvbmx5IGRlbGV0ZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2RlbGV0ZScpO1xuICByZWFkb25seSBhZGQgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdhZGQnKTtcbiAgcmVhZG9ubHkgdmlldyA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3ZpZXcnKTtcbiAgcmVhZG9ubHkgZ2V0ID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignZ2V0Jyk7XG4gIHJlYWRvbmx5IHNldHRpbmdzID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+Pignc2V0dGluZ3MnKTtcbiAgcmVhZG9ubHkgc2NoZWR1bGUgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdzY2hlZHVsZScpO1xuICByZWFkb25seSByZWZyZXNoID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncmVmcmVzaCcpO1xuICByZWFkb25seSBjaGVja0NpcmNsZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2NoZWNrQ2lyY2xlJyk7XG4gIHJlYWRvbmx5IGNhbmNlbENpcmNsZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2NhbmNlbENpcmNsZScpO1xuICByZWFkb25seSBlcnJvciA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2Vycm9yJyk7XG4gIHJlYWRvbmx5IHF1ZXVlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncXVldWUnKTtcbiAgcmVhZG9ubHkgYXJyb3dVcCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2Fycm93VXAnKTtcbiAgcmVhZG9ubHkgYXJyb3dEb3duID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignYXJyb3dEb3duJyk7XG4gIHJlYWRvbmx5IHRvZ2dsZU9uID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigndG9nZ2xlT24nKTtcbiAgcmVhZG9ubHkgdG9nZ2xlT2ZmID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigndG9nZ2xlT2ZmJyk7XG4gIHJlYWRvbmx5IHNlYXJjaCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3NlYXJjaCcpO1xuICByZWFkb25seSB1cGxvYWQgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCd1cGxvYWQnKTtcbiAgcmVhZG9ubHkgcGVuZGluZ0FjdGlvbnMgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdwZW5kaW5nQWN0aW9ucycpO1xuICByZWFkb25seSBwbGF5Q2lyY2xlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncGxheUNpcmNsZScpO1xuICByZWFkb25seSBkZWZhdWx0ID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignZGVmYXVsdCcpO1xuXG4gIG9uQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuaWNvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiQGlmIChidXR0b24oKSkge1xyXG48YnV0dG9uIFt0eXBlXT1cInR5cGUoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCIgY2xhc3M9XCJpY29uLWJ1dHRvblwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZSgpICsgOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemUoKSArIDhcIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZSgpIHx8IGRlZmF1bHRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9idXR0b24+XHJcbn0gQGVsc2Uge1xyXG48c3BhbiBjbGFzcz1cImljb24tc3BhblwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZSgpXCIgW3N0eWxlLmhlaWdodC5weF09XCJpY29uU2l6ZSgpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZSgpIHx8IGRlZmF1bHRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9zcGFuPlxyXG59XHJcblxyXG48bmctdGVtcGxhdGUgI2NoZWNrPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk01IDEzbDQgNEwxOSA3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk02IDZsMTIgMTJNNiAxOEwxOCA2XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2VkaXQ+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cmVjdCB4PVwiNVwiIHk9XCIxOVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3IoKVwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTE2LjUgMy41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0w3IDE5bC00IDEgMS00IDEyLjUtMTIuNXpcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNkZWxldGU+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwiTTYgMTlhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yKClcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2FkZD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNMTIgNXYxNE01IDEyaDE0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3ZpZXc+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwiTTEyIDVDNyA1IDIuNzMgOC4xMSAxIDEyYzEuNzMgMy44OSA2IDcgMTEgN3M5LjI3LTMuMTEgMTEtN2MtMS43My0zLjg5LTYtNy0xMS03elwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZ2V0PlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjE4XCIgY3k9XCIxOFwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTguNSA4LjUgNyA3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIm0xMyAxMSAyIDItMiAyXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjc2V0dGluZ3M+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMTIgMXY2bTAgNnYxME0zLjM0IDdsNS4yIDNNMTUuNDYgMTRsNS4yIDNNMy4zNCAxN2w1LjItM00xNS40NiAxMGw1LjItM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3NjaGVkdWxlPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjEyLDYgMTIsMTIgMTYsMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNyZWZyZXNoPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk0zIDEyYTkgOSAwIDAgMSA5LTkgOS43NSA5Ljc1IDAgMCAxIDYuNzQgMi43NEwyMSA4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTIxIDN2NWgtNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0zIDIxdi01aDVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNjaGVja0NpcmNsZT5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJtOSAxMiAyIDIgNC00XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsQ2lyY2xlPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBhdGggZD1cIm0xNSA5LTYgNm0wLTYgNiA2XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZXJyb3I+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8bGluZSB4MT1cIjE1XCIgeTE9XCI5XCIgeDI9XCI5XCIgeTI9XCIxNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiOVwiIHkxPVwiOVwiIHgyPVwiMTVcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3F1ZXVlPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk0zIDEyaDE4bS05LTl2MThcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICA8cmVjdCB4PVwiMlwiIHk9XCIzXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjZcIiByeD1cIjFcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgPHJlY3QgeD1cIjJcIiB5PVwiMTVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiNlwiIHJ4PVwiMVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjYXJyb3dVcD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJtMTggMTUtNi02LTYgNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Fycm93RG93bj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJtNiA5IDYgNiA2LTZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVPbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxyZWN0IHg9XCIxXCIgeT1cIjVcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjdcIiBbYXR0ci5maWxsXT1cImljb25Db2xvcigpXCIgLz5cclxuICAgIDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTJcIiByPVwiM1wiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdG9nZ2xlT2ZmPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHJlY3QgeD1cIjFcIiB5PVwiNVwiIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiN1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiMTJcIiByPVwiM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjc2VhcmNoPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTIxIDIxLTQuMzUtNC4zNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3VwbG9hZD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjcsMTAgMTIsNSAxNywxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiNVwiIHgyPVwiMTJcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BlbmRpbmdBY3Rpb25zPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjEyLDYgMTIsMTIgMTYsMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNOCAydjRNMTYgMnY0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcGxheUNpcmNsZT5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5Z29uIHBvaW50cz1cIjEwLDggMTYsMTIgMTAsMTZcIiBbYXR0ci5maWxsXT1cImljb25Db2xvcigpXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixVQUFVLEVBQ1Ysc0JBQXNCLEdBQ3ZCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFVbEQsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixJQUFJLEdBQUcsS0FBSyxDQUFXLE9BQU8sQ0FBQyxDQUFDLENBQUMsMEJBQTBCO0lBQzNELEtBQUssR0FBRyxLQUFLLENBQVksU0FBUyxDQUFDLENBQUMsQ0FBQyxzREFBc0Q7SUFDM0YsV0FBVyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7SUFDOUYsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtJQUNoRCxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDO0lBQ3RELE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztJQUM1RixNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7SUFDcEYsSUFBSSxHQUFHLEtBQUssQ0FBYSxRQUFRLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztJQUM1RSxRQUFRLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztJQUNsRixTQUFTLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtJQUVqRixTQUFTLEdBQUcsTUFBTSxFQUFTLENBQUMsQ0FBQyxzREFBc0Q7SUFFbkYsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFeEQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTyxjQUFjLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDO1FBRTFCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksa0JBQWtCLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLGdCQUFnQixDQUFDO1FBRTdDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUM7UUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFdkUsT0FBTyxDQUFDLGNBQWMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUN6RixDQUFDLENBQUMsQ0FBQztJQUVNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVFLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV0RixhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7d0dBekNVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLGsxQ0N4QjdCLDA4REFtQ0Msb2tDRGZXLFlBQVk7OzRGQUlYLGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFFRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEJBU0VfSUNPTl9TSVpFLFxuICBCQVNFX0lDT05fQ09MT1JTLFxuICBESVNBQkxFRF9DT0xPUixcbiAgREVGQVVMVF9JQ09OX0NPTE9SLFxuICBESVNBQkxFRF9PUEFDSVRZLFxuICBTRUNPTkRBUllfV0FSTl9PUEFDSVRZLFxuICBERUZBVUxUX09QQUNJVFksXG4gIElDT05fUEFUSFMsXG4gIElDT05fQURESVRJT05BTF9TSEFQRVMsXG59IGZyb20gJy4vaWNvbi5jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBJY29uVHlwZSwgQ29sb3JUeXBlLCBCdXR0b25UeXBlIH0gZnJvbSAnLi9pY29uLnR5cGVzJztcbmltcG9ydCB7IHRyYW5zZm9ybVRvQm9vbGVhbiB9IGZyb20gJy4vaWNvbi51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2M4MC1pY29uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDODBJY29uQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgaWNvbiA9IGlucHV0PEljb25UeXBlPignY2hlY2snKTsgLy8gVGlwbyBkZSBpY29ubyBhIG1vc3RyYXJcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxDb2xvclR5cGU+KCdwcmltYXJ5Jyk7IC8vIENvbG9yIGRlbCBpY29ubyAocHJpbWFyeSwgc2Vjb25kYXJ5LCB3YXJuLCBzdWNjZXNzKVxuICByZWFkb25seSBjdXN0b21Db2xvciA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsgLy8gQ29sb3IgcGVyc29uYWxpemFkbyAoc29icmVzY3JpYmUgY29sb3IpXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpOyAvLyBFc3RhZG8gZGVzaGFiaWxpdGFkb1xuICByZWFkb25seSBzaXplID0gaW5wdXQoMSk7IC8vIE11bHRpcGxpY2Fkb3IgZGUgdGFtYcOxbyAoMSA9IDI0cHgpXG4gIHJlYWRvbmx5IGJ1dHRvbiA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogdHJhbnNmb3JtVG9Cb29sZWFuIH0pOyAvLyBSZW5kZXJpemEgY29tbyBib3TDs24gY2xpY2tlYWJsZVxuICByZWFkb25seSBib3JkZXIgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IHRyYW5zZm9ybVRvQm9vbGVhbiB9KTsgLy8gQWdyZWdhIGJvcmRlIGFsIHdyYXBwZXJcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PEJ1dHRvblR5cGU+KCdidXR0b24nKTsgLy8gVGlwbyBkZSBib3TDs24gKGJ1dHRvbiwgc3VibWl0LCByZXNldClcbiAgcmVhZG9ubHkgdGV4dExlZnQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIFRleHRvIGEgbGEgaXpxdWllcmRhIGRlbCBpY29ub1xuICByZWFkb25seSB0ZXh0UmlnaHQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIFRleHRvIGEgbGEgZGVyZWNoYSBkZWwgaWNvbm9cblxuICByZWFkb25seSBpY29uQ2xpY2sgPSBvdXRwdXQ8RXZlbnQ+KCk7IC8vIEV2ZW50byBlbWl0aWRvIGFsIGhhY2VyIGNsaWNrIChzb2xvIHNpIGJ1dHRvbj10cnVlKVxuXG4gIHJlYWRvbmx5IGljb25TaXplID0gY29tcHV0ZWQoKCkgPT4gQkFTRV9JQ09OX1NJWkUgKiB0aGlzLnNpemUoKSk7XG5cbiAgcmVhZG9ubHkgaWNvbkNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHJldHVybiBESVNBQkxFRF9DT0xPUjtcblxuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMuY3VzdG9tQ29sb3IoKTtcbiAgICBpZiAoY3VzdG9tKSByZXR1cm4gY3VzdG9tO1xuXG4gICAgcmV0dXJuIEJBU0VfSUNPTl9DT0xPUlNbdGhpcy5jb2xvcigpXSA/PyBERUZBVUxUX0lDT05fQ09MT1I7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGljb25PcGFjaXR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHJldHVybiBESVNBQkxFRF9PUEFDSVRZO1xuXG4gICAgY29uc3QgaGFzQ3VzdG9tQ29sb3IgPSB0aGlzLmN1c3RvbUNvbG9yKCkgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBpc1NlY29uZGFyeU9yV2FybiA9IFsnc2Vjb25kYXJ5JywgJ3dhcm4nXS5pbmNsdWRlcyh0aGlzLmNvbG9yKCkpO1xuXG4gICAgcmV0dXJuICFoYXNDdXN0b21Db2xvciAmJiBpc1NlY29uZGFyeU9yV2FybiA/IFNFQ09OREFSWV9XQVJOX09QQUNJVFkgOiBERUZBVUxUX09QQUNJVFk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGljb25QYXRoID0gY29tcHV0ZWQoKCkgPT4gSUNPTl9QQVRIU1t0aGlzLmljb24oKV0gPz8gSUNPTl9QQVRIU1snZGVmYXVsdCddKTtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbFNoYXBlcyA9IGNvbXB1dGVkKCgpID0+IElDT05fQURESVRJT05BTF9TSEFQRVNbdGhpcy5pY29uKCldID8/IFtdKTtcblxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmljb25DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjc3ZnQ29udGVudD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIEBmb3IgKHNoYXBlIG9mIGFkZGl0aW9uYWxTaGFwZXMoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICBAaWYgKHNoYXBlLnR5cGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICA8Y2lyY2xlIFthdHRyLmN4XT1cInNoYXBlWydjeCddXCIgW2F0dHIuY3ldPVwic2hhcGVbJ2N5J11cIiBbYXR0ci5yXT1cInNoYXBlWydyJ11cIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgfSBAZWxzZSBpZiAoc2hhcGUudHlwZSA9PT0gJ3JlY3QnKSB7XHJcbiAgICA8cmVjdCBbYXR0ci54XT1cInNoYXBlWyd4J11cIiBbYXR0ci55XT1cInNoYXBlWyd5J11cIiBbYXR0ci53aWR0aF09XCJzaGFwZVsnd2lkdGgnXVwiIFthdHRyLmhlaWdodF09XCJzaGFwZVsnaGVpZ2h0J11cIiBbYXR0ci5yeF09XCJzaGFwZVsncngnXVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICB9IEBlbHNlIGlmIChzaGFwZS50eXBlID09PSAncGF0aCcpIHtcclxuICAgIDxwYXRoIFthdHRyLmRdPVwic2hhcGVbJ2QnXVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICB9XHJcbiAgICB9XHJcbiAgICA8cGF0aCBbYXR0ci5kXT1cImljb25QYXRoKClcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBbYXR0ci5maWxsXT1cImljb24oKSA9PT0gJ2RlbGV0ZScgPyBpY29uQ29sb3IoKSA6ICdub25lJ1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0ZXh0Q29udGVudD5cclxuICBAaWYgKHRleHRMZWZ0KCkpIHtcclxuICA8c3BhbiBjbGFzcz1cImljb24tdGV4dFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj57eyB0ZXh0TGVmdCgpIH19PC9zcGFuPlxyXG4gIH1cclxuICA8c3BhbiBjbGFzcz1cImljb24tY29udGVudFwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZSgpICsgOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemUoKSArIDhcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdmdDb250ZW50XCIgLz5cclxuICA8L3NwYW4+XHJcbiAgQGlmICh0ZXh0UmlnaHQoKSkge1xyXG4gIDxzcGFuIGNsYXNzPVwiaWNvbi10ZXh0XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEycHhcIj57eyB0ZXh0UmlnaHQoKSB9fTwvc3Bhbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5AaWYgKGJ1dHRvbigpKSB7XHJcbjxidXR0b24gW3R5cGVdPVwidHlwZSgpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIiBjbGFzcz1cImljb24td3JhcHBlclwiIFtjbGFzcy5pY29uLXdyYXBwZXItYm9yZGVyXT1cImJvcmRlcigpXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0Q29udGVudFwiIC8+XHJcbjwvYnV0dG9uPlxyXG59IEBlbHNlIHtcclxuPHNwYW4gY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbY2xhc3MuaWNvbi13cmFwcGVyLWJvcmRlcl09XCJib3JkZXIoKVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0Q29udGVudFwiIC8+XHJcbjwvc3Bhbj5cclxufSJdfQ==
|
|
@@ -35,4 +35,51 @@ export const DISABLED_OPACITY = 0.5;
|
|
|
35
35
|
export const SECONDARY_WARN_OPACITY = 0.7;
|
|
36
36
|
export const DEFAULT_OPACITY = 1;
|
|
37
37
|
export const BASE_ICON_SIZE = 24;
|
|
38
|
-
|
|
38
|
+
export const ICON_PATHS = {
|
|
39
|
+
check: 'M5 13l4 4L19 7',
|
|
40
|
+
cancel: 'M6 6l12 12M6 18L18 6',
|
|
41
|
+
edit: 'M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z',
|
|
42
|
+
delete: 'M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z',
|
|
43
|
+
add: 'M12 5v14M5 12h14',
|
|
44
|
+
view: 'M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z',
|
|
45
|
+
get: 'm8.5 8.5 7 7',
|
|
46
|
+
settings: 'M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3',
|
|
47
|
+
schedule: 'M12 6v6l4 2',
|
|
48
|
+
refresh: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8M21 3v5h-5M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16M3 21v-5h5',
|
|
49
|
+
checkCircle: 'm9 12 2 2 4-4',
|
|
50
|
+
cancelCircle: 'm15 9-6 6m0-6 6 6',
|
|
51
|
+
error: 'M15 9L9 15M9 9l6 6',
|
|
52
|
+
queue: 'M3 12h18m-9-9v18',
|
|
53
|
+
arrowUp: 'm18 15-6-6-6 6',
|
|
54
|
+
arrowDown: 'm6 9 6 6 6-6',
|
|
55
|
+
toggleOn: 'M17 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2',
|
|
56
|
+
toggleOff: 'M7 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2',
|
|
57
|
+
search: 'm21 21-6-6m2-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0z',
|
|
58
|
+
upload: 'M12 15V3m0 0l-4 4m4-4l4 4M2 17l.621 2.485A2 2 0 0 0 4.561 21h14.878a2 2 0 0 0 1.94-1.515L22 17',
|
|
59
|
+
pendingActions: 'M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z',
|
|
60
|
+
playCircle: 'M14.752 11.168l-3.197-2.132A1 1 0 0 0 10 9.87v4.263a1 1 0 0 0 1.555.832l3.197-2.132a1 1 0 0 0 0-1.664z',
|
|
61
|
+
default: '',
|
|
62
|
+
};
|
|
63
|
+
export const ICON_ADDITIONAL_SHAPES = {
|
|
64
|
+
view: [{ type: 'circle', cx: '12', cy: '12', r: '3' }],
|
|
65
|
+
get: [
|
|
66
|
+
{ type: 'circle', cx: '6', cy: '6', r: '3' },
|
|
67
|
+
{ type: 'circle', cx: '18', cy: '18', r: '3' },
|
|
68
|
+
{ type: 'path', d: 'm13 11 2 2-2 2' },
|
|
69
|
+
],
|
|
70
|
+
settings: [{ type: 'circle', cx: '12', cy: '12', r: '3' }],
|
|
71
|
+
schedule: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
72
|
+
checkCircle: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
73
|
+
cancelCircle: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
74
|
+
error: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
75
|
+
queue: [
|
|
76
|
+
{ type: 'rect', x: '2', y: '3', width: '20', height: '6', rx: '1' },
|
|
77
|
+
{ type: 'rect', x: '2', y: '15', width: '20', height: '6', rx: '1' },
|
|
78
|
+
],
|
|
79
|
+
toggleOn: [{ type: 'rect', x: '5', y: '5', width: '14', height: '6', rx: '3' }],
|
|
80
|
+
toggleOff: [{ type: 'rect', x: '5', y: '5', width: '14', height: '6', rx: '3' }],
|
|
81
|
+
playCircle: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
82
|
+
default: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
83
|
+
edit: [{ type: 'rect', x: '5', y: '19', width: '14', height: '2', rx: '1' }],
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsT0FBTztJQUNQLFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLFVBQVU7SUFDVixVQUFVO0lBQ1YsU0FBUztJQUNULGFBQWE7SUFDYixjQUFjO0lBQ2QsT0FBTztJQUNQLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsUUFBUTtJQUNSLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLFNBQVM7Q0FDRCxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXdDO0lBQ25FLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLElBQUksRUFBRSxTQUFTO0lBQ2YsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBcUM7SUFDMUQsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixNQUFNLEVBQUUsc0JBQXNCO0lBQzlCLElBQUksRUFBRSwwREFBMEQ7SUFDaEUsTUFBTSxFQUFFLDhFQUE4RTtJQUN0RixHQUFHLEVBQUUsa0JBQWtCO0lBQ3ZCLElBQUksRUFBRSxpRkFBaUY7SUFDdkYsR0FBRyxFQUFFLGNBQWM7SUFDbkIsUUFBUSxFQUFFLHlFQUF5RTtJQUNuRixRQUFRLEVBQUUsYUFBYTtJQUN2QixPQUFPLEVBQUUsMkhBQTJIO0lBQ3BJLFdBQVcsRUFBRSxlQUFlO0lBQzVCLFlBQVksRUFBRSxtQkFBbUI7SUFDakMsS0FBSyxFQUFFLG9CQUFvQjtJQUMzQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsU0FBUyxFQUFFLGNBQWM7SUFDekIsUUFBUSxFQUFFLG1DQUFtQztJQUM3QyxTQUFTLEVBQUUsa0NBQWtDO0lBQzdDLE1BQU0sRUFBRSwrQ0FBK0M7SUFDdkQsTUFBTSxFQUFFLGdHQUFnRztJQUN4RyxjQUFjLEVBQUUsZ0RBQWdEO0lBQ2hFLFVBQVUsRUFBRSx3R0FBd0c7SUFDcEgsT0FBTyxFQUFFLEVBQUU7Q0FDWixDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWdEO0lBQ2pGLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RELEdBQUcsRUFBRTtRQUNILEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7UUFDOUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRTtLQUN0QztJQUNELFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzFELFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlELFlBQVksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9ELEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hELEtBQUssRUFBRTtRQUNMLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUU7UUFDbkUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtLQUNyRTtJQUNELFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMvRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEYsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0QsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQzdFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvclR5cGUgfSBmcm9tICcuL2ljb24udHlwZXMnO1xuXG5leHBvcnQgY29uc3QgSUNPTl9OQU1FUyA9IFtcbiAgJ2NoZWNrJyxcbiAgJ2NhbmNlbCcsXG4gICdlZGl0JyxcbiAgJ2RlbGV0ZScsXG4gICdhZGQnLFxuICAndmlldycsXG4gICdnZXQnLFxuICAnc2V0dGluZ3MnLFxuICAnc2NoZWR1bGUnLFxuICAncmVmcmVzaCcsXG4gICdjaGVja0NpcmNsZScsXG4gICdjYW5jZWxDaXJjbGUnLFxuICAnZXJyb3InLFxuICAncXVldWUnLFxuICAnYXJyb3dVcCcsXG4gICdhcnJvd0Rvd24nLFxuICAndG9nZ2xlT24nLFxuICAndG9nZ2xlT2ZmJyxcbiAgJ3NlYXJjaCcsXG4gICd1cGxvYWQnLFxuICAncGVuZGluZ0FjdGlvbnMnLFxuICAncGxheUNpcmNsZScsXG4gICdkZWZhdWx0Jyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQVNFX0lDT05fQ09MT1JTOiBSZWFkb25seTxSZWNvcmQ8Q29sb3JUeXBlLCBzdHJpbmc+PiA9IHtcbiAgcHJpbWFyeTogJyMwMDM3NzVjOCcsXG4gIHNlY29uZGFyeTogJyM2YjcyODAnLFxuICB3YXJuOiAnI2U1MzkzNScsXG4gIHN1Y2Nlc3M6ICcjNGNhZjUwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBESVNBQkxFRF9DT0xPUiA9ICcjYmRiZGJkJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzIyMic7XG5leHBvcnQgY29uc3QgRElTQUJMRURfT1BBQ0lUWSA9IDAuNTtcbmV4cG9ydCBjb25zdCBTRUNPTkRBUllfV0FSTl9PUEFDSVRZID0gMC43O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1BBQ0lUWSA9IDE7XG5leHBvcnQgY29uc3QgQkFTRV9JQ09OX1NJWkUgPSAyNDtcblxuZXhwb3J0IGNvbnN0IElDT05fUEFUSFM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBjaGVjazogJ001IDEzbDQgNEwxOSA3JyxcbiAgY2FuY2VsOiAnTTYgNmwxMiAxMk02IDE4TDE4IDYnLFxuICBlZGl0OiAnTTE2LjUgMy41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0w3IDE5bC00IDEgMS00IDEyLjUtMTIuNXonLFxuICBkZWxldGU6ICdNNiAxOWEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6JyxcbiAgYWRkOiAnTTEyIDV2MTRNNSAxMmgxNCcsXG4gIHZpZXc6ICdNMTIgNUM3IDUgMi43MyA4LjExIDEgMTJjMS43MyAzLjg5IDYgNyAxMSA3czkuMjctMy4xMSAxMS03Yy0xLjczLTMuODktNi03LTExLTd6JyxcbiAgZ2V0OiAnbTguNSA4LjUgNyA3JyxcbiAgc2V0dGluZ3M6ICdNMTIgMXY2bTAgNnYxME0zLjM0IDdsNS4yIDNNMTUuNDYgMTRsNS4yIDNNMy4zNCAxN2w1LjItM00xNS40NiAxMGw1LjItMycsXG4gIHNjaGVkdWxlOiAnTTEyIDZ2Nmw0IDInLFxuICByZWZyZXNoOiAnTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDhNMjEgM3Y1aC01TTIxIDEyYTkgOSAwIDAgMS05IDkgOS43NSA5Ljc1IDAgMCAxLTYuNzQtMi43NEwzIDE2TTMgMjF2LTVoNScsXG4gIGNoZWNrQ2lyY2xlOiAnbTkgMTIgMiAyIDQtNCcsXG4gIGNhbmNlbENpcmNsZTogJ20xNSA5LTYgNm0wLTYgNiA2JyxcbiAgZXJyb3I6ICdNMTUgOUw5IDE1TTkgOWw2IDYnLFxuICBxdWV1ZTogJ00zIDEyaDE4bS05LTl2MTgnLFxuICBhcnJvd1VwOiAnbTE4IDE1LTYtNi02IDYnLFxuICBhcnJvd0Rvd246ICdtNiA5IDYgNiA2LTYnLFxuICB0b2dnbGVPbjogJ00xNyA4YTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMicsXG4gIHRvZ2dsZU9mZjogJ003IDhhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yJyxcbiAgc2VhcmNoOiAnbTIxIDIxLTYtNm0yLTVhNyA3IDAgMSAxLTE0IDAgNyA3IDAgMCAxIDE0IDB6JyxcbiAgdXBsb2FkOiAnTTEyIDE1VjNtMCAwbC00IDRtNC00bDQgNE0yIDE3bC42MjEgMi40ODVBMiAyIDAgMCAwIDQuNTYxIDIxaDE0Ljg3OGEyIDIgMCAwIDAgMS45NC0xLjUxNUwyMiAxNycsXG4gIHBlbmRpbmdBY3Rpb25zOiAnTTEyIDh2NGwzIDNtNi0zYTkgOSAwIDEgMS0xOCAwIDkgOSAwIDAgMSAxOCAweicsXG4gIHBsYXlDaXJjbGU6ICdNMTQuNzUyIDExLjE2OGwtMy4xOTctMi4xMzJBMSAxIDAgMCAwIDEwIDkuODd2NC4yNjNhMSAxIDAgMCAwIDEuNTU1LjgzMmwzLjE5Ny0yLjEzMmExIDEgMCAwIDAgMC0xLjY2NHonLFxuICBkZWZhdWx0OiAnJyxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcGVBdHRyaWJ1dGVzIHtcbiAgdHlwZTogJ2NpcmNsZScgfCAncmVjdCcgfCAncGF0aCc7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IElDT05fQURESVRJT05BTF9TSEFQRVM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIFNoYXBlQXR0cmlidXRlc1tdPj4gPSB7XG4gIHZpZXc6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICczJyB9XSxcbiAgZ2V0OiBbXG4gICAgeyB0eXBlOiAnY2lyY2xlJywgY3g6ICc2JywgY3k6ICc2JywgcjogJzMnIH0sXG4gICAgeyB0eXBlOiAnY2lyY2xlJywgY3g6ICcxOCcsIGN5OiAnMTgnLCByOiAnMycgfSxcbiAgICB7IHR5cGU6ICdwYXRoJywgZDogJ20xMyAxMSAyIDItMiAyJyB9LFxuICBdLFxuICBzZXR0aW5nczogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzMnIH1dLFxuICBzY2hlZHVsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgY2hlY2tDaXJjbGU6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGNhbmNlbENpcmNsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgZXJyb3I6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIHF1ZXVlOiBbXG4gICAgeyB0eXBlOiAncmVjdCcsIHg6ICcyJywgeTogJzMnLCB3aWR0aDogJzIwJywgaGVpZ2h0OiAnNicsIHJ4OiAnMScgfSxcbiAgICB7IHR5cGU6ICdyZWN0JywgeDogJzInLCB5OiAnMTUnLCB3aWR0aDogJzIwJywgaGVpZ2h0OiAnNicsIHJ4OiAnMScgfSxcbiAgXSxcbiAgdG9nZ2xlT246IFt7IHR5cGU6ICdyZWN0JywgeDogJzUnLCB5OiAnNScsIHdpZHRoOiAnMTQnLCBoZWlnaHQ6ICc2Jywgcng6ICczJyB9XSxcbiAgdG9nZ2xlT2ZmOiBbeyB0eXBlOiAncmVjdCcsIHg6ICc1JywgeTogJzUnLCB3aWR0aDogJzE0JywgaGVpZ2h0OiAnNicsIHJ4OiAnMycgfV0sXG4gIHBsYXlDaXJjbGU6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGRlZmF1bHQ6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGVkaXQ6IFt7IHR5cGU6ICdyZWN0JywgeDogJzUnLCB5OiAnMTknLCB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMicsIHJ4OiAnMScgfV0sXG59O1xuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function transformToBoolean(val) {
|
|
2
|
+
return val !== null && val !== undefined && val !== false && val !== 'false';
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQXdDO0lBQ3pFLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sQ0FBQztBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVRvQm9vbGVhbih2YWw6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBmYWxzZSAmJiB2YWwgIT09ICdmYWxzZSc7XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './icon.component';
|
|
2
2
|
export * from './icon.types';
|
|
3
3
|
export * from './icon.constants';
|
|
4
|
-
|
|
4
|
+
export * from './icon.utils';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi51dGlscyc7XG4iXX0=
|
|
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export class C80StatCardComponent {
|
|
6
6
|
cards = [];
|
|
7
7
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80StatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80StatCardComponent, isStandalone: true, selector: "c80-stat-card", inputs: { cards: "cards" }, ngImport: i0, template: "<div class=\"stats-section py-4\">\r\n @for (card of cards; track card.text) {\r\n <div class=\"stat-card\" [style.border-left-color]=\"card.color\">\r\n <div class=\"stat-card-content\">\r\n <div class=\"stat-content\">\r\n <c80-icon [icon]=\"card.icon\" [color]=\"'secondary'\" [size]=\"1.1\"></c80-icon>\r\n <div class=\"stat-info\">\r\n <div class=\"stat-number\">{{ card.count }}</div>\r\n <div class=\"stat-label\">{{ card.text }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:0 2px 8px #0000001a;transition:box-shadow .3s ease;border-left:4px solid transparent;background:#fff;color:#000000de;border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:0 4px 12px #00000026}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:#6b7280}.stat-info .stat-label{font-size:12px;color:#666;text-transform:uppercase;letter-spacing:.5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "type"], outputs: ["iconClick"] }] });
|
|
8
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80StatCardComponent, isStandalone: true, selector: "c80-stat-card", inputs: { cards: "cards" }, ngImport: i0, template: "<div class=\"stats-section py-4\">\r\n @for (card of cards; track card.text) {\r\n <div class=\"stat-card\" [style.border-left-color]=\"card.color\">\r\n <div class=\"stat-card-content\">\r\n <div class=\"stat-content\">\r\n <c80-icon [icon]=\"card.icon\" [color]=\"'secondary'\" [size]=\"1.1\"></c80-icon>\r\n <div class=\"stat-info\">\r\n <div class=\"stat-number\">{{ card.count }}</div>\r\n <div class=\"stat-label\">{{ card.text }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:0 2px 8px #0000001a;transition:box-shadow .3s ease;border-left:4px solid transparent;background:#fff;color:#000000de;border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:0 4px 12px #00000026}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:#6b7280}.stat-info .stat-label{font-size:12px;color:#666;text-transform:uppercase;letter-spacing:.5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "border", "type", "textLeft", "textRight"], outputs: ["iconClick"] }] });
|
|
9
9
|
}
|
|
10
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80StatCardComponent, decorators: [{
|
|
11
11
|
type: Component,
|
|
@@ -422,7 +422,7 @@ import * as i0 from "@angular/core";
|
|
|
422
422
|
this.uploadAction.emit(row);
|
|
423
423
|
}
|
|
424
424
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
425
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80TableComponent, isStandalone: true, selector: "c80-table", inputs: { data$: "data$", columns: "columns", inputValues$: "inputValues$", size: "size", multiple: "multiple", noConfirm: ["noConfirm", "noConfirm", (value) => value === '' || value === true || value === 'true'], customActionIcon: "customActionIcon", customActionTooltip: "customActionTooltip" }, outputs: { createAction: "createAction", updateAction: "updateAction", deleteAction: "deleteAction", cancelAction: "cancelAction", viewAction: "viewAction", uploadAction: "uploadAction", getRowButtonAction: "getRowButtonAction", customAction: "customAction", moveUpAction: "moveUpAction", moveDownAction: "moveDownAction", enableAction: "enableAction", searchTerm: "searchTerm", errorEvent: "errorEvent", selectable: "selectable" }, ngImport: i0, template: "<div class=\"table-responsive\" [style.max-height]=\"getTableMaxHeight()\" [style.overflow-y]=\"size > 0 ? 'auto' : 'visible'\">\n <!-- Search Bar -->\n @if (hasSearchTermListener()) {\n <div class=\"search-container\">\n <div class=\"search-input-wrapper\">\n <div class=\"input-group\">\n <span class=\"input-group-text\">\n <c80-icon icon=\"search\" [size]=\".8\"></c80-icon>\n </span>\n <input type=\"text\" class=\"form-control search-input\" placeholder=\"Buscar...\" [value]=\"searchValue()\" (input)=\"onSearchInput($event)\" aria-label=\"Buscar en la tabla\" />\n @if (searchValue()) {\n <button class=\"btn btn-outline-secondary btn-borrar\" type=\"button\" (click)=\"clearSearch()\" title=\"Limpiar b\u00FAsqueda\">\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n <table class=\"table table-bordered table-hover align-middle\">\n <thead class=\"thead table-light sticky-header\">\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <th class=\"text-center selection-column\">\n @if (multiple) {\n <input type=\"checkbox\" [checked]=\"selectAllChecked()\" [indeterminate]=\"selectAllIndeterminate()\" (change)=\"toggleSelectAll()\" aria-label=\"Seleccionar todo\" />\n }\n </th>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleInHeader(col)) {\n @if (col.type === 'boolean') {\n <th class=\"text-center boolean-column\">{{ col.label }}</th>\n }\n @else if (col.type === 'number') {\n <th class=\"text-center number-column\">{{ col.label }}</th>\n }\n @else {\n <th>{{ col.label }}</th>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <th class=\"table-actions-header\">\n <div class=\"actions-wrapper\">\n <span>Actions</span>\n @if (hasCreateActionListener()) {\n <c80-icon button icon=\"add\" [disabled]=\"creating()\" title=\"Agregar\" [size]=\".6\" (iconClick)=\"startCreate()\"></c80-icon>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackById(i, row); let i = $index) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <input type=\"checkbox\" [checked]=\"isItemSelected(row)\" (change)=\"toggleItemSelection(row)\" [attr.aria-label]=\"'Seleccionar fila ' + (i + 1)\" />\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleForRow(col, row)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center boolean-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!editRow()?.[col.accessor]\" (change)=\"onEditInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n @if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n <br />\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n <br />\n }\n }\n </td>\n }\n @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n </td>\n }\n @else {\n <td>\n @if (editing() === row['id'] && !col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"editRow()?.[col.accessor] ?? ''\" (change)=\"onEditInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" [type]=\"col.type === 'password' ? 'password' : 'text'\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n }\n @else {\n @if (col.type === 'password') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">******</span>\n }\n @else if (col.type === 'enum') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{\n getEnumDisplayValue(getCellValue(row, col.accessor), col)\n }}</span>\n }\n @else if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n }\n </td>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n @if (editing() === row['id']) {\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveEdit(row)\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelEdit()\" [size]=\".7\"></c80-icon>\n }\n @else {\n @if (hasUpdateActionListener()) {\n <c80-icon button icon=\"edit\" title=\"Editar\" (iconClick)=\"onEdit(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCancelActionListener()) {\n <c80-icon button icon=\"cancelCircle\" color=\"secondary\" title=\"Cancelar\" (iconClick)=\"onCancel(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasViewActionListener()) {\n <c80-icon button icon=\"view\" color=\"primary\" title=\"Ver\" (iconClick)=\"onView(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasUploadActionListener()) {\n <c80-icon button icon=\"upload\" color=\"primary\" title=\"Subir\" (iconClick)=\"onUpload(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasGetRowButtonListener()) {\n <c80-icon button icon=\"get\" color=\"success\" title=\"Vincular\" (iconClick)=\"onGetRowButton(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCustomActionListener()) {\n <c80-icon button [icon]=\"customActionIcon\" color=\"primary\" [title]=\"customActionTooltip\" (iconClick)=\"onCustomAction(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveUpActionListener()) {\n <c80-icon button icon=\"arrowUp\" color=\"secondary\" title=\"Mover arriba\" (iconClick)=\"onMoveUp(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveDownActionListener()) {\n <c80-icon button icon=\"arrowDown\" color=\"secondary\" title=\"Mover abajo\" (iconClick)=\"onMoveDown(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasEnableActionListener()) {\n <c80-icon button [icon]=\"getCellValue(row, 'enabled') ? 'toggleOn' : 'toggleOff'\" [color]=\"getCellValue(row, 'enabled') ? 'success' : 'secondary'\" [title]=\"getCellValue(row, 'enabled') ? 'Deshabilitar' : 'Habilitar'\"\n (iconClick)=\"onEnable(row)\" [size]=\".7\">\n </c80-icon>\n }\n @if (hasDeleteActionListener()) {\n <c80-icon button icon=\"delete\" color=\"warn\" title=\"Borrar\" (iconClick)=\"onDelete(row)\" [size]=\".7\"></c80-icon>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n @if (creating() && hasCreateActionListener()) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <!-- Empty cell for alignment -->\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisible(col, true)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center\">\n @if (!col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!newRow()?.[col.accessor]\" (change)=\"onInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n <!-- ReadOnly boolean column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (!col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n @else {\n <!-- ReadOnly number column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else {\n <td>\n @if (!col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"newRow()?.[col.accessor] ?? ''\" (change)=\"onInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" type=\"text\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n }\n @else {\n <!-- ReadOnly column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n }\n }\n }\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveCreate()\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelCreate()\" [size]=\".7\"></c80-icon>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (data().length === 0 && !creating()) {\n <div class=\"text-center text-muted py-3 small\">\n No hay datos para mostrar.\n </div>\n }\n</div>\n\n<c80-modal></c80-modal>", styles: ["@charset \"UTF-8\";input[type=checkbox]{width:1.3rem!important;height:1.3rem!important;accent-color:rgba(226,0,0,.7647058824);background:#fff;margin:0 .25rem;vertical-align:middle;cursor:pointer}.table-responsive{width:100%;overflow-x:auto}.table-responsive .search-container{margin-bottom:-.06rem}.table-responsive .search-container .search-input-wrapper .input-group .btn-borrar{border-bottom-right-radius:0;border-color:#dee2e6}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text{background-color:#f8f9fa;border-color:#dee2e6;border-bottom-left-radius:0;color:#6c757d;width:56px}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text c80-icon{display:flex;align-items:center;justify-content:center;padding-bottom:.2rem}.table-responsive .search-container .search-input-wrapper .input-group .search-input{border-color:#dee2e6;border-bottom-right-radius:0;font-size:.95rem;outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input:focus{outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input::placeholder{color:#999;font-style:italic}.table-responsive .table{min-width:0px;margin-bottom:.5rem}.table-responsive .table .sticky-header{position:sticky;top:0;z-index:10;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .table-actions-header{display:table-cell;vertical-align:middle;padding:.2rem .6rem!important;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .actions-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;height:100%}.table-responsive .table .sticky-header th{max-height:31px!important;vertical-align:middle!important;padding:.2rem .6rem!important;font-size:small!important;background-color:#f8f9fa!important;border-bottom:2px solid #dee2e6}.table-responsive .table tbody td{height:35px!important;min-height:35px!important;max-height:35px!important;vertical-align:middle!important;padding:.2rem .8rem!important;font-size:small}.table-responsive .table tbody tr{height:35px!important;min-height:35px!important;max-height:35px!important;cursor:pointer}.table-responsive .table tbody tr:hover{background-color:#f5f5f5}.table-responsive .table tbody input{border:1px solid rgba(34,0,255,.37);height:100%!important;font-size:smaller!important}.table-responsive .table tbody input[type=text],.table-responsive .table tbody input:not([type]){width:100%!important}.table-responsive .table tbody input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table thead th.boolean-column,.table-responsive .table tbody td.boolean-column,.table-responsive .table thead th.selection-column,.table-responsive .table tbody td.selection-column,.table-responsive .table thead th.table-actions-header,.table-responsive .table tbody td.table-actions-header{width:1%;white-space:nowrap}.table-responsive .table thead th.number-column,.table-responsive .table tbody td.number-column{width:1%;white-space:nowrap;text-align:center}.table-responsive .table thead th.number-column input[type=number],.table-responsive .table tbody td.number-column input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table .actions-cell{white-space:nowrap;padding:0!important}.table-responsive .table .actions-container{display:flex;flex-direction:row;justify-content:center;align-items:center;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "type"], outputs: ["iconClick"] }, { kind: "component", type: C80ModalComponent, selector: "c80-modal" }] });
|
|
425
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80TableComponent, isStandalone: true, selector: "c80-table", inputs: { data$: "data$", columns: "columns", inputValues$: "inputValues$", size: "size", multiple: "multiple", noConfirm: ["noConfirm", "noConfirm", (value) => value === '' || value === true || value === 'true'], customActionIcon: "customActionIcon", customActionTooltip: "customActionTooltip" }, outputs: { createAction: "createAction", updateAction: "updateAction", deleteAction: "deleteAction", cancelAction: "cancelAction", viewAction: "viewAction", uploadAction: "uploadAction", getRowButtonAction: "getRowButtonAction", customAction: "customAction", moveUpAction: "moveUpAction", moveDownAction: "moveDownAction", enableAction: "enableAction", searchTerm: "searchTerm", errorEvent: "errorEvent", selectable: "selectable" }, ngImport: i0, template: "<div class=\"table-responsive\" [style.max-height]=\"getTableMaxHeight()\" [style.overflow-y]=\"size > 0 ? 'auto' : 'visible'\">\n <!-- Search Bar -->\n @if (hasSearchTermListener()) {\n <div class=\"search-container\">\n <div class=\"search-input-wrapper\">\n <div class=\"input-group\">\n <span class=\"input-group-text\">\n <c80-icon icon=\"search\" [size]=\".8\"></c80-icon>\n </span>\n <input type=\"text\" class=\"form-control search-input\" placeholder=\"Buscar...\" [value]=\"searchValue()\" (input)=\"onSearchInput($event)\" aria-label=\"Buscar en la tabla\" />\n @if (searchValue()) {\n <button class=\"btn btn-outline-secondary btn-borrar\" type=\"button\" (click)=\"clearSearch()\" title=\"Limpiar b\u00FAsqueda\">\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n <table class=\"table table-bordered table-hover align-middle\">\n <thead class=\"thead table-light sticky-header\">\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <th class=\"text-center selection-column\">\n @if (multiple) {\n <input type=\"checkbox\" [checked]=\"selectAllChecked()\" [indeterminate]=\"selectAllIndeterminate()\" (change)=\"toggleSelectAll()\" aria-label=\"Seleccionar todo\" />\n }\n </th>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleInHeader(col)) {\n @if (col.type === 'boolean') {\n <th class=\"text-center boolean-column\">{{ col.label }}</th>\n }\n @else if (col.type === 'number') {\n <th class=\"text-center number-column\">{{ col.label }}</th>\n }\n @else {\n <th>{{ col.label }}</th>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <th class=\"table-actions-header\">\n <div class=\"actions-wrapper\">\n <span>Actions</span>\n @if (hasCreateActionListener()) {\n <c80-icon button icon=\"add\" [disabled]=\"creating()\" title=\"Agregar\" [size]=\".6\" (iconClick)=\"startCreate()\"></c80-icon>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackById(i, row); let i = $index) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <input type=\"checkbox\" [checked]=\"isItemSelected(row)\" (change)=\"toggleItemSelection(row)\" [attr.aria-label]=\"'Seleccionar fila ' + (i + 1)\" />\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleForRow(col, row)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center boolean-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!editRow()?.[col.accessor]\" (change)=\"onEditInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n @if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n <br />\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n <br />\n }\n }\n </td>\n }\n @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n </td>\n }\n @else {\n <td>\n @if (editing() === row['id'] && !col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"editRow()?.[col.accessor] ?? ''\" (change)=\"onEditInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" [type]=\"col.type === 'password' ? 'password' : 'text'\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n }\n @else {\n @if (col.type === 'password') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">******</span>\n }\n @else if (col.type === 'enum') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{\n getEnumDisplayValue(getCellValue(row, col.accessor), col)\n }}</span>\n }\n @else if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n }\n </td>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n @if (editing() === row['id']) {\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveEdit(row)\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelEdit()\" [size]=\".7\"></c80-icon>\n }\n @else {\n @if (hasUpdateActionListener()) {\n <c80-icon button icon=\"edit\" title=\"Editar\" (iconClick)=\"onEdit(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCancelActionListener()) {\n <c80-icon button icon=\"cancelCircle\" color=\"secondary\" title=\"Cancelar\" (iconClick)=\"onCancel(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasViewActionListener()) {\n <c80-icon button icon=\"view\" color=\"primary\" title=\"Ver\" (iconClick)=\"onView(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasUploadActionListener()) {\n <c80-icon button icon=\"upload\" color=\"primary\" title=\"Subir\" (iconClick)=\"onUpload(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasGetRowButtonListener()) {\n <c80-icon button icon=\"get\" color=\"success\" title=\"Vincular\" (iconClick)=\"onGetRowButton(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCustomActionListener()) {\n <c80-icon button [icon]=\"customActionIcon\" color=\"primary\" [title]=\"customActionTooltip\" (iconClick)=\"onCustomAction(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveUpActionListener()) {\n <c80-icon button icon=\"arrowUp\" color=\"secondary\" title=\"Mover arriba\" (iconClick)=\"onMoveUp(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveDownActionListener()) {\n <c80-icon button icon=\"arrowDown\" color=\"secondary\" title=\"Mover abajo\" (iconClick)=\"onMoveDown(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasEnableActionListener()) {\n <c80-icon button [icon]=\"getCellValue(row, 'enabled') ? 'toggleOn' : 'toggleOff'\" [color]=\"getCellValue(row, 'enabled') ? 'success' : 'secondary'\" [title]=\"getCellValue(row, 'enabled') ? 'Deshabilitar' : 'Habilitar'\"\n (iconClick)=\"onEnable(row)\" [size]=\".7\">\n </c80-icon>\n }\n @if (hasDeleteActionListener()) {\n <c80-icon button icon=\"delete\" color=\"warn\" title=\"Borrar\" (iconClick)=\"onDelete(row)\" [size]=\".7\"></c80-icon>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n @if (creating() && hasCreateActionListener()) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <!-- Empty cell for alignment -->\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisible(col, true)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center\">\n @if (!col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!newRow()?.[col.accessor]\" (change)=\"onInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n <!-- ReadOnly boolean column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (!col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n @else {\n <!-- ReadOnly number column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else {\n <td>\n @if (!col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"newRow()?.[col.accessor] ?? ''\" (change)=\"onInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" type=\"text\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n }\n @else {\n <!-- ReadOnly column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n }\n }\n }\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveCreate()\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelCreate()\" [size]=\".7\"></c80-icon>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (data().length === 0 && !creating()) {\n <div class=\"text-center text-muted py-3 small\">\n No hay datos para mostrar.\n </div>\n }\n</div>\n\n<c80-modal></c80-modal>", styles: ["@charset \"UTF-8\";input[type=checkbox]{width:1.3rem!important;height:1.3rem!important;accent-color:rgba(226,0,0,.7647058824);background:#fff;margin:0 .25rem;vertical-align:middle;cursor:pointer}.table-responsive{width:100%;overflow-x:auto}.table-responsive .search-container{margin-bottom:-.06rem}.table-responsive .search-container .search-input-wrapper .input-group .btn-borrar{border-bottom-right-radius:0;border-color:#dee2e6}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text{background-color:#f8f9fa;border-color:#dee2e6;border-bottom-left-radius:0;color:#6c757d;width:56px}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text c80-icon{display:flex;align-items:center;justify-content:center;padding-bottom:.2rem}.table-responsive .search-container .search-input-wrapper .input-group .search-input{border-color:#dee2e6;border-bottom-right-radius:0;font-size:.95rem;outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input:focus{outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input::placeholder{color:#999;font-style:italic}.table-responsive .table{min-width:0px;margin-bottom:.5rem}.table-responsive .table .sticky-header{position:sticky;top:0;z-index:10;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .table-actions-header{display:table-cell;vertical-align:middle;padding:.2rem .6rem!important;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .actions-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;height:100%}.table-responsive .table .sticky-header th{max-height:31px!important;vertical-align:middle!important;padding:.2rem .6rem!important;font-size:small!important;background-color:#f8f9fa!important;border-bottom:2px solid #dee2e6}.table-responsive .table tbody td{height:35px!important;min-height:35px!important;max-height:35px!important;vertical-align:middle!important;padding:.2rem .8rem!important;font-size:small}.table-responsive .table tbody tr{height:35px!important;min-height:35px!important;max-height:35px!important;cursor:pointer}.table-responsive .table tbody tr:hover{background-color:#f5f5f5}.table-responsive .table tbody input{border:1px solid rgba(34,0,255,.37);height:100%!important;font-size:smaller!important}.table-responsive .table tbody input[type=text],.table-responsive .table tbody input:not([type]){width:100%!important}.table-responsive .table tbody input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table thead th.boolean-column,.table-responsive .table tbody td.boolean-column,.table-responsive .table thead th.selection-column,.table-responsive .table tbody td.selection-column,.table-responsive .table thead th.table-actions-header,.table-responsive .table tbody td.table-actions-header{width:1%;white-space:nowrap}.table-responsive .table thead th.number-column,.table-responsive .table tbody td.number-column{width:1%;white-space:nowrap;text-align:center}.table-responsive .table thead th.number-column input[type=number],.table-responsive .table tbody td.number-column input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table .actions-cell{white-space:nowrap;padding:0!important}.table-responsive .table .actions-container{display:flex;flex-direction:row;justify-content:center;align-items:center;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "border", "type", "textLeft", "textRight"], outputs: ["iconClick"] }, { kind: "component", type: C80ModalComponent, selector: "c80-modal" }] });
|
|
426
426
|
}
|
|
427
427
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80TableComponent, decorators: [{
|
|
428
428
|
type: Component,
|
|
@@ -473,4 +473,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
473
473
|
}], selectable: [{
|
|
474
474
|
type: Output
|
|
475
475
|
}] } });
|
|
476
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFlBQVksRUFHWixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLFNBQVMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUUzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERyxDQVFILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsdUJBQXVCO0lBQ04sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxTQUFTLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRTdE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RUFBRSxDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUU1RixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEM4MEljb25Db21wb25lbnQsIHR5cGUgSWNvblR5cGUgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNydWRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNydWQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDODBUYWJsZUNvbERlZiwgSUQgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IEM4ME1vZGFsQ29tcG9uZW50LCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbCc7XG5cbi8qKlxuICogQzgwVGFibGVDb21wb25lbnQgLSBDb21wb25lbnRlIGRlIHRhYmxhIGF2YW56YWRvIGNvbiBmdW5jaW9uYWxpZGFkZXMgQ1JVRFxuICpcbiAqIENPTVBPUlRBTUlFTlRPIERFIFZJU0lCSUxJREFEIERFIENPTFVNTkFTOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIDEuIFBSSU9SSURBRCBNw4FYSU1BIC0gdmlzaWJsZTogZmFsc2VcbiAqICAgIC0gTGEgY29sdW1uYSBzZSBvY3VsdGEgU0lFTVBSRSwgc2luIGV4Y2VwY2lvbmVzXG4gKiAgICAtIE5pIGVuIG1vZG8gY3JlYWNpw7NuIG5pIGVuIG1vZG8gZWRpY2nDs24gc2UgbXVlc3RyYVxuICpcbiAqIDIuIE9DVUxUQUNJw5NOIEFVVE9Nw4FUSUNBIC0gaGlkZUlmQWxsVmFsdWVzQXJlTnVsbDogdHJ1ZVxuICogICAgLSBMYSBjb2x1bW5hIHNlIG9jdWx0YSBzb2xvIHNpIFRPRE9TIGxvcyB2YWxvcmVzIGFjdHVhbGVzIGVzdMOhbiB2YWPDrW9zXG4gKiAgICAtIFZhbG9yZXMgY29uc2lkZXJhZG9zIHZhY8Otb3M6IG51bGwsIHVuZGVmaW5lZCwgJycsIFtdLCB7fVxuICogICAgLSBWYWxvcmVzIE5PIHZhY8Otb3M6IDAsIGZhbHNlIChzb24gdmFsb3JlcyB2w6FsaWRvcylcbiAqICAgIC0gRVhDRVBDSU9ORVMgSU1QT1JUQU5URVM6XG4gKiAgICAgICogRW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIGVzdGFzIGNvbHVtbmFzIFPDjSBzZSBtdWVzdHJhblxuICogICAgICAqIEVuIG1vZG8gZWRpY2nDs24gZGUgdW5hIGZpbGEgZXNwZWPDrWZpY2Egc2UgbXVlc3RyYW4gU09MTyBzaSBlc2EgZmlsYSB0aWVuZSB2YWxvclxuICpcbiAqIDMuIFBPUiBERUZFQ1RPIC0gQ29sdW1uYXMgbm9ybWFsZXNcbiAqICAgIC0gU2UgbXVlc3RyYW4gc2llbXByZSAodmlzdWFsaXphY2nDs24sIGNyZWFjacOzbiB5IGVkaWNpw7NuKVxuICpcbiAqIFZBTE9SRVMgUE9SIERFRkVDVE8gRU4gQ1JFQUNJw5NOOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gUHJvcGllZGFkIGBkZWZhdWx0PzogdW5rbm93bmAgcGVybWl0ZSBkZWZpbmlyIHZhbG9yZXMgcG9yIGRlZmVjdG8gcGFyYSBtb2RvIGNyZWFjacOzblxuICogLSBTb2xvIHNlIGFwbGljYSBjdWFuZG8gc2UgaW5pY2lhIGVsIG1vZG8gY3JlYWNpw7NuIChzdGFydENyZWF0ZSlcbiAqIC0gUHVlZGUgc2VyIGN1YWxxdWllciB0aXBvOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgZXRjLlxuICogLSBTaSBubyBzZSBlc3BlY2lmaWNhIGBkZWZhdWx0YCwgc2UgdXNhIGNhZGVuYSB2YWPDrWEgKCcnKVxuICpcbiAqIFZBTE9SRVMgRElOw4FNSUNPUyBFTiBDUkVBQ0nDk04gWSBFRElDScOTTjpcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gSW5wdXQgYGlucHV0VmFsdWVzJD86IE9ic2VydmFibGU8UGFydGlhbDxUPj5gIHBlcm1pdGUgYWN0dWFsaXphciB2YWxvcmVzIGRpbsOhbWljYW1lbnRlXG4gKiAtIFNvbG8gc2UgYXBsaWNhIGR1cmFudGUgbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIG8gZWRpY2nDs24gKGVkaXRpbmchPW51bGwpXG4gKiAtIExvcyB2YWxvcmVzIHNlIGFwbGljYW4gYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gZWwgT2JzZXJ2YWJsZSBlbWl0ZVxuICogLSBQZXJtaXRlIGNhbWJpb3MgbcO6bHRpcGxlcyBkdXJhbnRlIGVsIG1pc21vIG1vZG8gZGUgY3JlYWNpw7NuL2VkaWNpw7NuXG4gKiAtIExvcyBudWV2b3MgdmFsb3JlcyBzb2JyZXNjcmliZW4gbG9zIGV4aXN0ZW50ZXMgKHNwcmVhZCBvcGVyYXRvcilcbiAqXG4gKiBUSVBPUyBERSBEQVRPUyBTT1BPUlRBRE9TOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gJ3N0cmluZyc6IFRleHRvIG5vcm1hbCAoZGVmYXVsdClcbiAqIC0gJ251bWJlcic6IE7Dum1lcm9zIGRlY2ltYWxlcyAocHJlc2VydmEgZGVjaW1hbGVzOiA1LjMg4oaSIDUuMylcbiAqIC0gJ2ludGVnZXInOiBOw7ptZXJvcyBlbnRlcm9zIChjb252aWVydGUgYSBlbnRlcm86IDUuMyDihpIgNSlcbiAqIC0gJ2Jvb2xlYW4nOiBWZXJkYWRlcm8vRmFsc28gKGNoZWNrYm94KVxuICogLSAncGFzc3dvcmQnOiBUZXh0byBvY3VsdG8gKGlucHV0IHR5cGU9XCJwYXNzd29yZFwiKVxuICogLSAnZW51bSc6IExpc3RhIGRlIG9wY2lvbmVzIHByZWRlZmluaWRhcyAoc2VsZWN0KVxuICpcbiAqIEVKRU1QTE9TOlxuICogLSB7IGFjY2Vzc29yOiAnaWQnLCB2aXNpYmxlOiBmYWxzZSB9IOKGkiBOVU5DQSBzZSBtdWVzdHJhXG4gKiAtIHsgYWNjZXNzb3I6ICdtb3RvclBvcycsIGhpZGVJZkFsbFZhbHVlc0FyZU51bGw6IHRydWUsIGRlZmF1bHQ6IDAsIHR5cGU6ICdpbnRlZ2VyJyB9IOKGkiBFbnRlcm8gKDUuNyDihpIgNSlcbiAqIC0geyBhY2Nlc3NvcjogJ3dlaWdodCcsIHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAyLjUgfSDihpIgRGVjaW1hbCBwcmVzZXJ2YWRvICg1Ljcg4oaSIDUuNylcbiAqIC0geyBhY2Nlc3NvcjogJ3N0YXR1cycsIGRlZmF1bHQ6ICdhY3RpdmUnIH0g4oaSIFNlIGF1dG9yZWxsZW5hIGNvbiAnYWN0aXZlJyBlbiBjcmVhY2nDs25cbiAqIC0geyBhY2Nlc3NvcjogJ25hbWUnIH0g4oaSIFNpZW1wcmUgdmlzaWJsZSwgc2luIHZhbG9yIHBvciBkZWZlY3RvIChjYWRlbmEgdmFjw61hKVxuICogLSBpbnB1dFZhbHVlcyQgZW1pdGUgeyBtb3RvclBvczogNSwgd2VpZ2h0OiAyLjMgfSDihpIgYWN0dWFsaXphIGlucHV0cyBkaW7DoW1pY2FtZW50ZVxuICovQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYzgwLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0M4MEljb25Db21wb25lbnQsIEM4ME1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQzgwVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gU2VydmljaW9zIGlueWVjdGFkb3NcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2aXNpYmlsaXR5U2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhVXRpbHMgPSBpbmplY3QoVGFibGVEYXRhVXRpbHNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VsZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3J1ZFNlcnZpY2UgPSBpbmplY3QoVGFibGVDcnVkU3RhdGVTZXJ2aWNlKTtcblxuICAvLyBJbnB1dHNcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPFRbXT47XG4gIEBJbnB1dCgpIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10gPSBbXTtcbiAgQElucHV0KCkgaW5wdXRWYWx1ZXMkPzogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PjsgLy8gT2JzZXJ2YWJsZSBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkZSBpbnB1dHMgZGluw6FtaWNhbWVudGUgZW4gY3JlYWNpw7NuL2VkaWNpw7NuXG4gIEBJbnB1dCgpIHNpemUgPSAwOyAvLyBUYW1hw7FvIGRlIGxhIHRhYmxhICgwID0gc2luIGzDrW1pdGUsID4gMCBhcGxpY2EgbWF4LWhlaWdodClcbiAgQElucHV0KCkgbXVsdGlwbGUgPSB0cnVlOyAvLyBQZXJtaXRlIHNlbGVjY2nDs24gbcO6bHRpcGxlIHBvciBkZWZlY3RvXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJyB9KVxuICBub0NvbmZpcm0gPSBmYWxzZTsgLy8gU2kgZXMgdHJ1ZSwgbm8gbXVlc3RyYSBjb25maXJtYWNpb25lcyBtb2RhbGVzXG4gIEBJbnB1dCgpIGN1c3RvbUFjdGlvbkljb246IEljb25UeXBlID0gJ3NldHRpbmdzJzsgLy8gSWNvbm8gcGFyYSBsYSBhY2Npw7NuIHBlcnNvbmFsaXphZGFcbiAgQElucHV0KCkgY3VzdG9tQWN0aW9uVG9vbHRpcCA9ICdBY2Npw7NuIHBlcnNvbmFsaXphZGEnOyAvLyBUb29sdGlwIHBhcmEgbGEgYWNjacOzbiBwZXJzb25hbGl6YWRhXG5cbiAgLy8gT3V0cHV0c1xuICBAT3V0cHV0KCkgY3JlYXRlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJvdzogUGFydGlhbDxUPjsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHVwZGF0ZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGNoYW5nZXM6IFBhcnRpYWw8VD47IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBJRDsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHZpZXdBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBnZXRSb3dCdXR0b25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBjdXN0b21BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7IC8vIEFjY2nDs24gcGVyc29uYWxpemFkYSBnZW7DqXJpY2FcbiAgQE91dHB1dCgpIG1vdmVVcEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBtb3ZlRG93bkFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBlbmFibGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBlbmFibGVkOiBib29sZWFuOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoVGVybSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZXJyb3JFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0YWJsZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIC8vIEVzdGFkbyBwcmluY2lwYWxcbiAgcmVhZG9ubHkgZGF0YSA9IHNpZ25hbDxUW10+KFtdKTtcbiAgcmVhZG9ubHkga2V5cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBzZWFyY2hWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvLyBFc3RhZG8gZGUgc2VsZWNjacOzbiAoZGVsZWdhZG8gYSBzZXJ2aWNpbylcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TdGF0ZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5jcmVhdGVTZWxlY3Rpb25TdGF0ZTxUPigpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RlZEl0ZW1zO1xuICByZWFkb25seSBzZWxlY3RBbGxDaGVja2VkID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxDaGVja2VkO1xuICByZWFkb25seSBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxJbmRldGVybWluYXRlO1xuXG4gIC8vIEVzdGFkbyBDUlVEIChkZWxlZ2FkbyBhIHNlcnZpY2lvKVxuICBwcml2YXRlIHJlYWRvbmx5IGNydWRTdGF0ZSA9IHRoaXMuY3J1ZFNlcnZpY2UuY3JlYXRlQ3J1ZFN0YXRlPFQ+KCk7XG4gIHJlYWRvbmx5IGNyZWF0aW5nID0gdGhpcy5jcnVkU3RhdGUuY3JlYXRpbmc7XG4gIHJlYWRvbmx5IG5ld1JvdyA9IHRoaXMuY3J1ZFN0YXRlLm5ld1JvdztcbiAgcmVhZG9ubHkgZWRpdGluZyA9IHRoaXMuY3J1ZFN0YXRlLmVkaXRpbmc7XG4gIHJlYWRvbmx5IGVkaXRSb3cgPSB0aGlzLmNydWRTdGF0ZS5lZGl0Um93O1xuXG4gIC8vIEZsYWdzIHRvIGNoZWNrIGlmIGV2ZW50cyBoYXZlIGxpc3RlbmVyc1xuICByZWFkb25seSBoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDdXN0b21BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc01vdmVVcEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VhcmNoVGVybUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VsZWN0YWJsZUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIGRhdGFTdWI/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaW5wdXRWYWx1ZXNTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2UoZXJyOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBlcnJvciA9IGVyciBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfTtcbiAgICByZXR1cm4gZXJyb3I/Lm1lc3NhZ2UgfHwgJ0Vycm9yIGFsIGNhcmdhciBkYXRvcyc7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIGxhcyBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmxlS2V5cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlS2V5cyA9IHRoaXMudmlzaWJpbGl0eVNlcnZpY2UudXBkYXRlVmlzaWJsZUtleXMoXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICB0aGlzLmRhdGEoKSxcbiAgICAgIHRoaXMuY3JlYXRpbmcoKSxcbiAgICAgIHRoaXMuZWRpdGluZygpXG4gICAgKTtcbiAgICB0aGlzLmtleXMuc2V0KHZpc2libGVLZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGxpY2EgdmFsb3JlcyBwYXJjaWFsZXMgYSBsb3MgaW5wdXRzIGVuIG1vZG8gY3JlYWNpw7NuIG8gZWRpY2nDs24uXG4gICAqIFNvbG8gYWN0dWFsaXphIHNpIGVzdGFtb3MgZW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nID0gdHJ1ZSkgbyBlZGljacOzbiAoZWRpdGluZyAhPSBudWxsKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXM6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5hcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG91dHB1dHMgaGF2ZSBsaXN0ZW5lcnNcbiAgICB0aGlzLmhhc0NyZWF0ZUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNyZWF0ZUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGRhdGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGRhdGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMuZGVsZXRlQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0NhbmNlbEFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNhbmNlbEFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNWaWV3QWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMudmlld0FjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGxvYWRBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGxvYWRBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIuc2V0KHRoaXMuZ2V0Um93QnV0dG9uQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0N1c3RvbUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmN1c3RvbUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlVXBBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlRG93bkFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNFbmFibGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5lbmFibGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VhcmNoVGVybUxpc3RlbmVyLnNldCh0aGlzLnNlYXJjaFRlcm0ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VsZWN0YWJsZUxpc3RlbmVyLnNldCh0aGlzLnNlbGVjdGFibGUub2JzZXJ2ZWQpO1xuXG4gICAgaWYgKCF0aGlzLmRhdGEkKSByZXR1cm47XG4gICAgdGhpcy5kYXRhU3ViID0gdGhpcy5kYXRhJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGl0ZW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVV0aWxzLmFwcGx5U29ydGluZyhpdGVtcywgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5kYXRhLnNldChpdGVtcyk7XG4gICAgICAgIC8vIEFjdHVhbGl6YXIgbGFzIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gICAgICAgIC8vIE1hbnRlbmVyIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zXG4gICAgICAgIHRoaXMucHJlc2VydmVTZWxlY3Rpb24oKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogdW5rbm93bikgPT5cbiAgICAgICAgdGhpcy5lcnJvckV2ZW50LmVtaXQodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgfSk7XG5cbiAgICAvLyBTdXNjcmliaXJzZSBhIGlucHV0VmFsdWVzJCBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkaW7DoW1pY2FtZW50ZSBlbiBjcmVhY2nDs24vZWRpY2nDs25cbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlcyQpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZXNTdWIgPSB0aGlzLmlucHV0VmFsdWVzJC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocGFydGlhbFZhbHVlcykgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwbHlJbnB1dFZhbHVlcyhwYXJ0aWFsVmFsdWVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IHVua25vd24pID0+XG4gICAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciBlbiBpbnB1dFZhbHVlcyQ6JywgdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRhdGFTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlc1N1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgIC8vIENsb3NlIGFueSBvcGVuIG1vZGFsIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIGNoZWNrZWQpO1xuICAgIH0gZWxzZSBpZiAoY29sPy50eXBlID09PSAnZW51bScpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAodGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTmV3Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkRlbGV0ZShyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcblxuICAgIGxldCBjb25maXJtZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5ub0NvbmZpcm0pIHtcbiAgICAgIGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgICdDb25maXJtYXIgZWxpbWluYWNpw7NuJyxcbiAgICAgICAgJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBlbGltaW5hciBlc3RlIGVsZW1lbnRvPyBFc3RhIGFjY2nDs24gbm8gc2UgcHVlZGUgZGVzaGFjZXIuJyxcbiAgICAgICAgJ0VsaW1pbmFyJyxcbiAgICAgICAgJ0NhbmNlbGFyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICB0aGlzLmRlbGV0ZUFjdGlvbi5lbWl0KHtcbiAgICAgICAgaWQsXG4gICAgICAgIGRvbmU6IChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25DYW5jZWwocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG5cbiAgICBsZXQgY29uZmlybWVkID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMubm9Db25maXJtKSB7XG4gICAgICBjb25maXJtZWQgPSBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICAnQ29uZmlybWFyIGNhbmNlbGFjacOzbicsXG4gICAgICAgICfCv0VzdMOhIHNlZ3VybyBkZSBxdWUgZGVzZWEgY2FuY2VsYXIgZXN0ZSBlbGVtZW50bz8nLFxuICAgICAgICAnQ2FuY2VsYXIgZWxlbWVudG8nLFxuICAgICAgICAnTm8gY2FuY2VsYXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aW9uLmVtaXQoe1xuICAgICAgICBpZCxcbiAgICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdGFydENyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zdGFydENyZWF0ZSh0aGlzLmNvbHVtbnMsIHRoaXMuZGF0YSgpKTtcbiAgICAvLyBBY3R1YWxpemFyIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgY3VhbmRvIGVudHJhbW9zIGVuIG1vZG8gY3JlYWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsQ3JlYXRlKCkge1xuICAgIHRoaXMuY3J1ZFN0YXRlLmNhbmNlbENyZWF0ZSgpO1xuICAgIC8vIEFjdHVhbGl6YXIga2V5cyBkZSBjb2x1bW5hcyB2aXNpYmxlcyBjdWFuZG8gc2FsaW1vcyBkZWwgbW9kbyBjcmVhY2nDs25cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gIH1cblxuICB1cGRhdGVOZXdSb3coa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUudXBkYXRlTmV3Um93KGtleSwgdmFsdWUpO1xuICB9XG5cbiAgc2F2ZUNyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlQ3JlYXRlKHRoaXMuY29sdW1ucywgdGhpcy5kYXRhKCksIHRoaXMuY3JlYXRlQWN0aW9uKTtcbiAgfVxuXG5cblxuICBvbkVkaXQocm93OiBUKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUuc3RhcnRFZGl0KHJvdywgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBlbnRyYW1vcyBlbiBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5jYW5jZWxFZGl0KCk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBzYWxpbW9zIGRlbCBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgb25FZGl0SW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgY2hlY2tlZCk7XG4gICAgfSBlbHNlIGlmIChjb2w/LnR5cGUgPT09ICdlbnVtJykge1xuICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZTtcbiAgICAgIHRoaXMuY3J1ZFN0YXRlLnVwZGF0ZUVkaXRSb3coa2V5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzYXZlRWRpdChyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlRWRpdChpZCwgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSwgdGhpcy51cGRhdGVBY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrQnkgZnVuY3Rpb24gZm9yIG5nRm9yIHRvIGF2b2lkIERPTSByZS1jcmVhdGlvbiAoTkcwOTU2IHdhcm5pbmcpLlxuICAgKi9cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIHJvdzogVCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgY29uc3QgaWQgPVxuICAgICAgcm93ICYmIHR5cGVvZiByb3cgPT09ICdvYmplY3QnICYmICdpZCcgaW4gcm93XG4gICAgICAgID8gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ2lkJ11cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGlkID09PSAnbnVtYmVyJyA/IGlkIDogaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHZpZXcgZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvblZpZXcocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy52aWV3QWN0aW9uLmVtaXQocm93KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZ2V0Um93QnV0dG9uQWN0aW9uIGV2ZW50IHdpdGggdGhlIGVudGlyZSByb3cgZGF0YVxuICAgKi9cbiAgb25HZXRSb3dCdXR0b24ocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy5nZXRSb3dCdXR0b25BY3Rpb24uZW1pdChyb3cpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXN0b21BY3Rpb24gZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvbkN1c3RvbUFjdGlvbihyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIG1vdmVVcEFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZVVwKHJvdzogVCkge1xuICAgIGNvbnN0IGlkID0gcm93WydpZCddIGFzIElEO1xuICAgIHRoaXMubW92ZVVwQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBkb25lOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBtb3ZlRG93bkFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZURvd24ocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgdGhpcy5tb3ZlRG93bkFjdGlvbi5lbWl0KHtcbiAgICAgIGlkLFxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZW5hYmxlQWN0aW9uIGV2ZW50IHdpdGggdGhlIHJvdyBpZCBhbmQgY3VycmVudCBlbmFibGVkIHN0YXR1c1xuICAgKi9cbiAgYXN5bmMgb25FbmFibGUocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgY29uc3QgY3VycmVudEVuYWJsZWQgPSByb3dbJ2VuYWJsZWQnXSBhcyBib29sZWFuO1xuICAgIHRoaXMuZW5hYmxlQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBlbmFibGVkOiAhY3VycmVudEVuYWJsZWQsIC8vIFRvZ2dsZSB0aGUgY3VycmVudCBzdGF0ZVxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzIHdpdGggZGVib3VuY2luZ1xuICAgKi9cbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgc2VhcmNoIGlucHV0XG4gICAqL1xuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQoJycpO1xuICB9XG5cbiAgLy8gTcOpdG9kb3MgZGVsZWdhZG9zIGEgc2VydmljaW9zXG4gIGdldENlbGxWYWx1ZShyb3c6IFQsIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbFZhbHVlKHJvdywgYWNjZXNzb3IpO1xuICB9XG5cbiAgZ2V0RGlzcGxheVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0RGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIGdldEVudW1EaXNwbGF5VmFsdWUodmFsdWU6IHVua25vd24sIGNvbDogQzgwVGFibGVDb2xEZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtRGlzcGxheVZhbHVlKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0RW51bU9wdGlvbnMoY29sOiBDODBUYWJsZUNvbERlZik6IHsgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtT3B0aW9ucyhjb2wpO1xuICB9XG5cbiAgZ2V0Q2VsbENvbG9yKHZhbHVlOiB1bmtub3duLCBjb2w6IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbENvbG9yKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0VGFibGVNYXhIZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0VGFibGVNYXhIZWlnaHQodGhpcy5zaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbWV0aG9kc1xuICAgKi9cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25TdGF0ZS5jbGVhclNlbGVjdGlvbigpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnRpZW5lIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zLFxuICAgKiBlbGltaW5hbmRvIHNvbG8gbG9zIElEcyBxdWUgeWEgbm8gZXhpc3RlbiBlbiBsb3MgbnVldm9zIGRhdG9zXG4gICAqL1xuICBwcml2YXRlIHByZXNlcnZlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUucHJlc2VydmVTZWxlY3Rpb24odGhpcy5kYXRhKCkpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlU2VsZWN0QWxsKHRoaXMuZGF0YSgpKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIHRvZ2dsZUl0ZW1TZWxlY3Rpb24oaXRlbTogVCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtLCB0aGlzLm11bHRpcGxlKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGF0ZS5pc0l0ZW1TZWxlY3RlZChpdGVtKTtcbiAgfVxuXG5cblxuICAvLyBNw6l0b2RvcyBkZSB2aXNpYmlsaWRhZCBkZWxlZ2Fkb3MgYSBzZXJ2aWNpb1xuICBpc0NvbHVtblZpc2libGUoY29sdW1uOiBDODBUYWJsZUNvbERlZiwgZm9yY2VTaG93SW5DcmVhdGlvbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGhpcy5kYXRhKCksIGZvcmNlU2hvd0luQ3JlYXRpb24pO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sdW1uOiBDODBUYWJsZUNvbERlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKFxuICAgICAgY29sdW1uLFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmNyZWF0aW5nKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBpc0NvbHVtblZpc2libGVGb3JSb3coY29sdW1uOiBDODBUYWJsZUNvbERlZiwgcm93OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlRm9yUm93KFxuICAgICAgY29sdW1uLFxuICAgICAgcm93LFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBvblVwbG9hZChyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZEFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwiZ2V0VGFibGVNYXhIZWlnaHQoKVwiIFtzdHlsZS5vdmVyZmxvdy15XT1cInNpemUgPiAwID8gJ2F1dG8nIDogJ3Zpc2libGUnXCI+XG4gIDwhLS0gU2VhcmNoIEJhciAtLT5cbiAgQGlmIChoYXNTZWFyY2hUZXJtTGlzdGVuZXIoKSkge1xuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwic2VhcmNoXCIgW3NpemVdPVwiLjhcIj48L2M4MC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiQnVzY2FyLi4uXCIgW3ZhbHVlXT1cInNlYXJjaFZhbHVlKClcIiAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCIgYXJpYS1sYWJlbD1cIkJ1c2NhciBlbiBsYSB0YWJsYVwiIC8+XG4gICAgICAgIEBpZiAoc2VhcmNoVmFsdWUoKSkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tYm9ycmFyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCIgdGl0bGU9XCJMaW1waWFyIGLDunNxdWVkYVwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG5cbiAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgYWxpZ24tbWlkZGxlXCI+XG4gICAgPHRoZWFkIGNsYXNzPVwidGhlYWQgdGFibGUtbGlnaHQgc3RpY2t5LWhlYWRlclwiPlxuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2VsZWN0QWxsQ2hlY2tlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSgpXCIgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoKVwiIGFyaWEtbGFiZWw9XCJTZWxlY2Npb25hciB0b2RvXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbCkge1xuICAgICAgICBAaWYgKGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKGNvbCkpIHtcbiAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIGJvb2xlYW4tY29sdW1uXCI+e3sgY29sLmxhYmVsIH19PC90aD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAoY29sLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIG51bWJlci1jb2x1bW5cIj57eyBjb2wubGFiZWwgfX08L3RoPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgPHRoPnt7IGNvbC5sYWJlbCB9fTwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0RlbGV0ZUFjdGlvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzQ2FuY2VsQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNWaWV3QWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0dldFJvd0J1dHRvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNNb3ZlRG93bkFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGFibGUtYWN0aW9ucy1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj5BY3Rpb25zPC9zcGFuPlxuICAgICAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJhZGRcIiBbZGlzYWJsZWRdPVwiY3JlYXRpbmcoKVwiIHRpdGxlPVwiQWdyZWdhclwiIFtzaXplXT1cIi42XCIgKGljb25DbGljayk9XCJzdGFydENyZWF0ZSgpXCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfVxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIEBmb3IgKHJvdyBvZiBkYXRhKCk7IHRyYWNrIHRyYWNrQnlJZChpLCByb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChyb3cpXCIgKGNoYW5nZSk9XCJ0b2dnbGVJdGVtU2VsZWN0aW9uKHJvdylcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlY2Npb25hciBmaWxhICcgKyAoaSArIDEpXCIgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sKSB7XG4gICAgICAgIEBpZiAoaXNDb2x1bW5WaXNpYmxlRm9yUm93KGNvbCwgcm93KSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgYm9vbGVhbi1jb2x1bW5cIj5cbiAgICAgICAgICBAaWYgKGVkaXRpbmcoKSA9PT0gcm93WydpZCddICYmICFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdXCIgKGNoYW5nZSk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sLmxhYmVsXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIEBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2hlY2tcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIGlmIChnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpID09PSBmYWxzZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBudW1iZXItY29sdW1uXCI+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIHR5cGU9XCJudW1iZXJcIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImdldENlbGxDb2xvcihnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXCI+e3sgZ2V0RGlzcGxheVZhbHVlKGdldENlbGxWYWx1ZShyb3csXG4gICAgICAgICAgICBjb2wuYWNjZXNzb3IpKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIChjaGFuZ2UpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57eyBjb2wubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBnZXRFbnVtT3B0aW9ucyhjb2wpOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIFt0eXBlXT1cImNvbC50eXBlID09PSAncGFzc3dvcmQnID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiIFt2YWx1ZV09XCJlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgW3BsYWNlaG9sZGVyXT1cImNvbC5sYWJlbFwiIChpbnB1dCk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPioqKioqKjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnZW51bScpIHtcbiAgICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiZ2V0Q2VsbENvbG9yKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvciksIGNvbClcIj57e1xuICAgICAgICAgICAgZ2V0RW51bURpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvcikgPT09IHRydWUpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNoZWNrXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNhbmNlbFwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPnt7IGdldERpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LFxuICAgICAgICAgICAgY29sLmFjY2Vzc29yKSkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZiAoZWRpdGluZygpID09PSByb3dbJ2lkJ10pIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiY2FuY2VsXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJDYW5jZWxhclwiIChpY29uQ2xpY2spPVwiY2FuY2VsRWRpdCgpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJlZGl0XCIgdGl0bGU9XCJFZGl0YXJcIiAoaWNvbkNsaWNrKT1cIm9uRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxDaXJjbGVcIiBjb2xvcj1cInNlY29uZGFyeVwiIHRpdGxlPVwiQ2FuY2VsYXJcIiAoaWNvbkNsaWNrKT1cIm9uQ2FuY2VsKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ2aWV3XCIgY29sb3I9XCJwcmltYXJ5XCIgdGl0bGU9XCJWZXJcIiAoaWNvbkNsaWNrKT1cIm9uVmlldyhyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ1cGxvYWRcIiBjb2xvcj1cInByaW1hcnlcIiB0aXRsZT1cIlN1YmlyXCIgKGljb25DbGljayk9XCJvblVwbG9hZChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNHZXRSb3dCdXR0b25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJnZXRcIiBjb2xvcj1cInN1Y2Nlc3NcIiB0aXRsZT1cIlZpbmN1bGFyXCIgKGljb25DbGljayk9XCJvbkdldFJvd0J1dHRvbihyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDdXN0b21BY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIFtpY29uXT1cImN1c3RvbUFjdGlvbkljb25cIiBjb2xvcj1cInByaW1hcnlcIiBbdGl0bGVdPVwiY3VzdG9tQWN0aW9uVG9vbHRpcFwiIChpY29uQ2xpY2spPVwib25DdXN0b21BY3Rpb24ocm93KVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dVcFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgdGl0bGU9XCJNb3ZlciBhcnJpYmFcIiAoaWNvbkNsaWNrKT1cIm9uTW92ZVVwKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dEb3duXCIgY29sb3I9XCJzZWNvbmRhcnlcIiB0aXRsZT1cIk1vdmVyIGFiYWpvXCIgKGljb25DbGljayk9XCJvbk1vdmVEb3duKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gW2ljb25dPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICd0b2dnbGVPbicgOiAndG9nZ2xlT2ZmJ1wiIFtjb2xvcl09XCJnZXRDZWxsVmFsdWUocm93LCAnZW5hYmxlZCcpID8gJ3N1Y2Nlc3MnIDogJ3NlY29uZGFyeSdcIiBbdGl0bGVdPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICdEZXNoYWJpbGl0YXInIDogJ0hhYmlsaXRhcidcIlxuICAgICAgICAgICAgICAoaWNvbkNsaWNrKT1cIm9uRW5hYmxlKHJvdylcIiBbc2l6ZV09XCIuN1wiPlxuICAgICAgICAgICAgPC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiZGVsZXRlXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJCb3JyYXJcIiAoaWNvbkNsaWNrKT1cIm9uRGVsZXRlKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgICBAaWYgKGNyZWF0aW5nKCkgJiYgaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDwhLS0gRW1wdHkgY2VsbCBmb3IgYWxpZ25tZW50IC0tPlxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wpIHtcbiAgICAgICAgQGlmIChpc0NvbHVtblZpc2libGUoY29sLCB0cnVlKSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICBAaWYgKCFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl1cIiAoY2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbC5sYWJlbFwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IGJvb2xlYW4gY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9IEBlbHNlIGlmIChjb2wudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgbnVtYmVyLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAoIWNvbC5yZWFkT25seSkge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwibnVtYmVyXCIgW3ZhbHVlXT1cIm5ld1JvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IG51bWJlciBjb2x1bW4gaW4gY3JlYXRlIG1vZGUgc2hvd3MgZW1wdHkgLS0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+LTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmICghY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwibmV3Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgKGNoYW5nZSk9XCJvbklucHV0KCRldmVudCwgY29sLmFjY2Vzc29yLCBjb2wpXCI+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgY29sLmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZ2V0RW51bU9wdGlvbnMoY29sKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl0gPz8gJydcIiBbcGxhY2Vob2xkZXJdPVwiY29sLmxhYmVsXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDwhLS0gUmVhZE9ubHkgY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlQ3JlYXRlKClcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxcIiBjb2xvcj1cIndhcm5cIiB0aXRsZT1cIkNhbmNlbGFyXCIgKGljb25DbGljayk9XCJjYW5jZWxDcmVhdGUoKVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbiAgQGlmIChkYXRhKCkubGVuZ3RoID09PSAwICYmICFjcmVhdGluZygpKSB7XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTMgc21hbGxcIj5cbiAgICBObyBoYXkgZGF0b3MgcGFyYSBtb3N0cmFyLlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxjODAtbW9kYWw+PC9jODAtbW9kYWw+Il19
|
|
476
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFlBQVksRUFHWixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLFNBQVMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUUzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERyxDQVFILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsdUJBQXVCO0lBQ04sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxTQUFTLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRTdE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RUFBRSxDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUU1RixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEM4MEljb25Db21wb25lbnQsIHR5cGUgSWNvblR5cGUgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNydWRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNydWQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDODBUYWJsZUNvbERlZiwgSUQgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IEM4ME1vZGFsQ29tcG9uZW50LCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbCc7XG5cbi8qKlxuICogQzgwVGFibGVDb21wb25lbnQgLSBDb21wb25lbnRlIGRlIHRhYmxhIGF2YW56YWRvIGNvbiBmdW5jaW9uYWxpZGFkZXMgQ1JVRFxuICpcbiAqIENPTVBPUlRBTUlFTlRPIERFIFZJU0lCSUxJREFEIERFIENPTFVNTkFTOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIDEuIFBSSU9SSURBRCBNw4FYSU1BIC0gdmlzaWJsZTogZmFsc2VcbiAqICAgIC0gTGEgY29sdW1uYSBzZSBvY3VsdGEgU0lFTVBSRSwgc2luIGV4Y2VwY2lvbmVzXG4gKiAgICAtIE5pIGVuIG1vZG8gY3JlYWNpw7NuIG5pIGVuIG1vZG8gZWRpY2nDs24gc2UgbXVlc3RyYVxuICpcbiAqIDIuIE9DVUxUQUNJw5NOIEFVVE9Nw4FUSUNBIC0gaGlkZUlmQWxsVmFsdWVzQXJlTnVsbDogdHJ1ZVxuICogICAgLSBMYSBjb2x1bW5hIHNlIG9jdWx0YSBzb2xvIHNpIFRPRE9TIGxvcyB2YWxvcmVzIGFjdHVhbGVzIGVzdMOhbiB2YWPDrW9zXG4gKiAgICAtIFZhbG9yZXMgY29uc2lkZXJhZG9zIHZhY8Otb3M6IG51bGwsIHVuZGVmaW5lZCwgJycsIFtdLCB7fVxuICogICAgLSBWYWxvcmVzIE5PIHZhY8Otb3M6IDAsIGZhbHNlIChzb24gdmFsb3JlcyB2w6FsaWRvcylcbiAqICAgIC0gRVhDRVBDSU9ORVMgSU1QT1JUQU5URVM6XG4gKiAgICAgICogRW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIGVzdGFzIGNvbHVtbmFzIFPDjSBzZSBtdWVzdHJhblxuICogICAgICAqIEVuIG1vZG8gZWRpY2nDs24gZGUgdW5hIGZpbGEgZXNwZWPDrWZpY2Egc2UgbXVlc3RyYW4gU09MTyBzaSBlc2EgZmlsYSB0aWVuZSB2YWxvclxuICpcbiAqIDMuIFBPUiBERUZFQ1RPIC0gQ29sdW1uYXMgbm9ybWFsZXNcbiAqICAgIC0gU2UgbXVlc3RyYW4gc2llbXByZSAodmlzdWFsaXphY2nDs24sIGNyZWFjacOzbiB5IGVkaWNpw7NuKVxuICpcbiAqIFZBTE9SRVMgUE9SIERFRkVDVE8gRU4gQ1JFQUNJw5NOOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gUHJvcGllZGFkIGBkZWZhdWx0PzogdW5rbm93bmAgcGVybWl0ZSBkZWZpbmlyIHZhbG9yZXMgcG9yIGRlZmVjdG8gcGFyYSBtb2RvIGNyZWFjacOzblxuICogLSBTb2xvIHNlIGFwbGljYSBjdWFuZG8gc2UgaW5pY2lhIGVsIG1vZG8gY3JlYWNpw7NuIChzdGFydENyZWF0ZSlcbiAqIC0gUHVlZGUgc2VyIGN1YWxxdWllciB0aXBvOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgZXRjLlxuICogLSBTaSBubyBzZSBlc3BlY2lmaWNhIGBkZWZhdWx0YCwgc2UgdXNhIGNhZGVuYSB2YWPDrWEgKCcnKVxuICpcbiAqIFZBTE9SRVMgRElOw4FNSUNPUyBFTiBDUkVBQ0nDk04gWSBFRElDScOTTjpcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gSW5wdXQgYGlucHV0VmFsdWVzJD86IE9ic2VydmFibGU8UGFydGlhbDxUPj5gIHBlcm1pdGUgYWN0dWFsaXphciB2YWxvcmVzIGRpbsOhbWljYW1lbnRlXG4gKiAtIFNvbG8gc2UgYXBsaWNhIGR1cmFudGUgbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIG8gZWRpY2nDs24gKGVkaXRpbmchPW51bGwpXG4gKiAtIExvcyB2YWxvcmVzIHNlIGFwbGljYW4gYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gZWwgT2JzZXJ2YWJsZSBlbWl0ZVxuICogLSBQZXJtaXRlIGNhbWJpb3MgbcO6bHRpcGxlcyBkdXJhbnRlIGVsIG1pc21vIG1vZG8gZGUgY3JlYWNpw7NuL2VkaWNpw7NuXG4gKiAtIExvcyBudWV2b3MgdmFsb3JlcyBzb2JyZXNjcmliZW4gbG9zIGV4aXN0ZW50ZXMgKHNwcmVhZCBvcGVyYXRvcilcbiAqXG4gKiBUSVBPUyBERSBEQVRPUyBTT1BPUlRBRE9TOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gJ3N0cmluZyc6IFRleHRvIG5vcm1hbCAoZGVmYXVsdClcbiAqIC0gJ251bWJlcic6IE7Dum1lcm9zIGRlY2ltYWxlcyAocHJlc2VydmEgZGVjaW1hbGVzOiA1LjMg4oaSIDUuMylcbiAqIC0gJ2ludGVnZXInOiBOw7ptZXJvcyBlbnRlcm9zIChjb252aWVydGUgYSBlbnRlcm86IDUuMyDihpIgNSlcbiAqIC0gJ2Jvb2xlYW4nOiBWZXJkYWRlcm8vRmFsc28gKGNoZWNrYm94KVxuICogLSAncGFzc3dvcmQnOiBUZXh0byBvY3VsdG8gKGlucHV0IHR5cGU9XCJwYXNzd29yZFwiKVxuICogLSAnZW51bSc6IExpc3RhIGRlIG9wY2lvbmVzIHByZWRlZmluaWRhcyAoc2VsZWN0KVxuICpcbiAqIEVKRU1QTE9TOlxuICogLSB7IGFjY2Vzc29yOiAnaWQnLCB2aXNpYmxlOiBmYWxzZSB9IOKGkiBOVU5DQSBzZSBtdWVzdHJhXG4gKiAtIHsgYWNjZXNzb3I6ICdtb3RvclBvcycsIGhpZGVJZkFsbFZhbHVlc0FyZU51bGw6IHRydWUsIGRlZmF1bHQ6IDAsIHR5cGU6ICdpbnRlZ2VyJyB9IOKGkiBFbnRlcm8gKDUuNyDihpIgNSlcbiAqIC0geyBhY2Nlc3NvcjogJ3dlaWdodCcsIHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAyLjUgfSDihpIgRGVjaW1hbCBwcmVzZXJ2YWRvICg1Ljcg4oaSIDUuNylcbiAqIC0geyBhY2Nlc3NvcjogJ3N0YXR1cycsIGRlZmF1bHQ6ICdhY3RpdmUnIH0g4oaSIFNlIGF1dG9yZWxsZW5hIGNvbiAnYWN0aXZlJyBlbiBjcmVhY2nDs25cbiAqIC0geyBhY2Nlc3NvcjogJ25hbWUnIH0g4oaSIFNpZW1wcmUgdmlzaWJsZSwgc2luIHZhbG9yIHBvciBkZWZlY3RvIChjYWRlbmEgdmFjw61hKVxuICogLSBpbnB1dFZhbHVlcyQgZW1pdGUgeyBtb3RvclBvczogNSwgd2VpZ2h0OiAyLjMgfSDihpIgYWN0dWFsaXphIGlucHV0cyBkaW7DoW1pY2FtZW50ZVxuICovQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYzgwLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0M4MEljb25Db21wb25lbnQsIEM4ME1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQzgwVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gU2VydmljaW9zIGlueWVjdGFkb3NcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2aXNpYmlsaXR5U2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhVXRpbHMgPSBpbmplY3QoVGFibGVEYXRhVXRpbHNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VsZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3J1ZFNlcnZpY2UgPSBpbmplY3QoVGFibGVDcnVkU3RhdGVTZXJ2aWNlKTtcblxuICAvLyBJbnB1dHNcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPFRbXT47XG4gIEBJbnB1dCgpIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10gPSBbXTtcbiAgQElucHV0KCkgaW5wdXRWYWx1ZXMkPzogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PjsgLy8gT2JzZXJ2YWJsZSBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkZSBpbnB1dHMgZGluw6FtaWNhbWVudGUgZW4gY3JlYWNpw7NuL2VkaWNpw7NuXG4gIEBJbnB1dCgpIHNpemUgPSAwOyAvLyBUYW1hw7FvIGRlIGxhIHRhYmxhICgwID0gc2luIGzDrW1pdGUsID4gMCBhcGxpY2EgbWF4LWhlaWdodClcbiAgQElucHV0KCkgbXVsdGlwbGUgPSB0cnVlOyAvLyBQZXJtaXRlIHNlbGVjY2nDs24gbcO6bHRpcGxlIHBvciBkZWZlY3RvXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJyB9KVxuICBub0NvbmZpcm0gPSBmYWxzZTsgLy8gU2kgZXMgdHJ1ZSwgbm8gbXVlc3RyYSBjb25maXJtYWNpb25lcyBtb2RhbGVzXG4gIEBJbnB1dCgpIGN1c3RvbUFjdGlvbkljb246IEljb25UeXBlID0gJ3NldHRpbmdzJzsgLy8gSWNvbm8gcGFyYSBsYSBhY2Npw7NuIHBlcnNvbmFsaXphZGFcbiAgQElucHV0KCkgY3VzdG9tQWN0aW9uVG9vbHRpcCA9ICdBY2Npw7NuIHBlcnNvbmFsaXphZGEnOyAvLyBUb29sdGlwIHBhcmEgbGEgYWNjacOzbiBwZXJzb25hbGl6YWRhXG5cbiAgLy8gT3V0cHV0c1xuICBAT3V0cHV0KCkgY3JlYXRlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJvdzogUGFydGlhbDxUPjsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHVwZGF0ZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGNoYW5nZXM6IFBhcnRpYWw8VD47IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBJRDsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHZpZXdBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBnZXRSb3dCdXR0b25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBjdXN0b21BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7IC8vIEFjY2nDs24gcGVyc29uYWxpemFkYSBnZW7DqXJpY2FcbiAgQE91dHB1dCgpIG1vdmVVcEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBtb3ZlRG93bkFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBlbmFibGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBlbmFibGVkOiBib29sZWFuOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoVGVybSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZXJyb3JFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0YWJsZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIC8vIEVzdGFkbyBwcmluY2lwYWxcbiAgcmVhZG9ubHkgZGF0YSA9IHNpZ25hbDxUW10+KFtdKTtcbiAgcmVhZG9ubHkga2V5cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBzZWFyY2hWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvLyBFc3RhZG8gZGUgc2VsZWNjacOzbiAoZGVsZWdhZG8gYSBzZXJ2aWNpbylcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TdGF0ZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5jcmVhdGVTZWxlY3Rpb25TdGF0ZTxUPigpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RlZEl0ZW1zO1xuICByZWFkb25seSBzZWxlY3RBbGxDaGVja2VkID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxDaGVja2VkO1xuICByZWFkb25seSBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxJbmRldGVybWluYXRlO1xuXG4gIC8vIEVzdGFkbyBDUlVEIChkZWxlZ2FkbyBhIHNlcnZpY2lvKVxuICBwcml2YXRlIHJlYWRvbmx5IGNydWRTdGF0ZSA9IHRoaXMuY3J1ZFNlcnZpY2UuY3JlYXRlQ3J1ZFN0YXRlPFQ+KCk7XG4gIHJlYWRvbmx5IGNyZWF0aW5nID0gdGhpcy5jcnVkU3RhdGUuY3JlYXRpbmc7XG4gIHJlYWRvbmx5IG5ld1JvdyA9IHRoaXMuY3J1ZFN0YXRlLm5ld1JvdztcbiAgcmVhZG9ubHkgZWRpdGluZyA9IHRoaXMuY3J1ZFN0YXRlLmVkaXRpbmc7XG4gIHJlYWRvbmx5IGVkaXRSb3cgPSB0aGlzLmNydWRTdGF0ZS5lZGl0Um93O1xuXG4gIC8vIEZsYWdzIHRvIGNoZWNrIGlmIGV2ZW50cyBoYXZlIGxpc3RlbmVyc1xuICByZWFkb25seSBoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDdXN0b21BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc01vdmVVcEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VhcmNoVGVybUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VsZWN0YWJsZUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIGRhdGFTdWI/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaW5wdXRWYWx1ZXNTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2UoZXJyOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBlcnJvciA9IGVyciBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfTtcbiAgICByZXR1cm4gZXJyb3I/Lm1lc3NhZ2UgfHwgJ0Vycm9yIGFsIGNhcmdhciBkYXRvcyc7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIGxhcyBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmxlS2V5cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlS2V5cyA9IHRoaXMudmlzaWJpbGl0eVNlcnZpY2UudXBkYXRlVmlzaWJsZUtleXMoXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICB0aGlzLmRhdGEoKSxcbiAgICAgIHRoaXMuY3JlYXRpbmcoKSxcbiAgICAgIHRoaXMuZWRpdGluZygpXG4gICAgKTtcbiAgICB0aGlzLmtleXMuc2V0KHZpc2libGVLZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGxpY2EgdmFsb3JlcyBwYXJjaWFsZXMgYSBsb3MgaW5wdXRzIGVuIG1vZG8gY3JlYWNpw7NuIG8gZWRpY2nDs24uXG4gICAqIFNvbG8gYWN0dWFsaXphIHNpIGVzdGFtb3MgZW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nID0gdHJ1ZSkgbyBlZGljacOzbiAoZWRpdGluZyAhPSBudWxsKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXM6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5hcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG91dHB1dHMgaGF2ZSBsaXN0ZW5lcnNcbiAgICB0aGlzLmhhc0NyZWF0ZUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNyZWF0ZUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGRhdGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGRhdGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMuZGVsZXRlQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0NhbmNlbEFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNhbmNlbEFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNWaWV3QWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMudmlld0FjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGxvYWRBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGxvYWRBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIuc2V0KHRoaXMuZ2V0Um93QnV0dG9uQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0N1c3RvbUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmN1c3RvbUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlVXBBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlRG93bkFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNFbmFibGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5lbmFibGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VhcmNoVGVybUxpc3RlbmVyLnNldCh0aGlzLnNlYXJjaFRlcm0ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VsZWN0YWJsZUxpc3RlbmVyLnNldCh0aGlzLnNlbGVjdGFibGUub2JzZXJ2ZWQpO1xuXG4gICAgaWYgKCF0aGlzLmRhdGEkKSByZXR1cm47XG4gICAgdGhpcy5kYXRhU3ViID0gdGhpcy5kYXRhJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGl0ZW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVV0aWxzLmFwcGx5U29ydGluZyhpdGVtcywgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5kYXRhLnNldChpdGVtcyk7XG4gICAgICAgIC8vIEFjdHVhbGl6YXIgbGFzIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gICAgICAgIC8vIE1hbnRlbmVyIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zXG4gICAgICAgIHRoaXMucHJlc2VydmVTZWxlY3Rpb24oKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogdW5rbm93bikgPT5cbiAgICAgICAgdGhpcy5lcnJvckV2ZW50LmVtaXQodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgfSk7XG5cbiAgICAvLyBTdXNjcmliaXJzZSBhIGlucHV0VmFsdWVzJCBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkaW7DoW1pY2FtZW50ZSBlbiBjcmVhY2nDs24vZWRpY2nDs25cbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlcyQpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZXNTdWIgPSB0aGlzLmlucHV0VmFsdWVzJC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocGFydGlhbFZhbHVlcykgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwbHlJbnB1dFZhbHVlcyhwYXJ0aWFsVmFsdWVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IHVua25vd24pID0+XG4gICAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciBlbiBpbnB1dFZhbHVlcyQ6JywgdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRhdGFTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlc1N1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgIC8vIENsb3NlIGFueSBvcGVuIG1vZGFsIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIGNoZWNrZWQpO1xuICAgIH0gZWxzZSBpZiAoY29sPy50eXBlID09PSAnZW51bScpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAodGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTmV3Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkRlbGV0ZShyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcblxuICAgIGxldCBjb25maXJtZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5ub0NvbmZpcm0pIHtcbiAgICAgIGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgICdDb25maXJtYXIgZWxpbWluYWNpw7NuJyxcbiAgICAgICAgJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBlbGltaW5hciBlc3RlIGVsZW1lbnRvPyBFc3RhIGFjY2nDs24gbm8gc2UgcHVlZGUgZGVzaGFjZXIuJyxcbiAgICAgICAgJ0VsaW1pbmFyJyxcbiAgICAgICAgJ0NhbmNlbGFyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICB0aGlzLmRlbGV0ZUFjdGlvbi5lbWl0KHtcbiAgICAgICAgaWQsXG4gICAgICAgIGRvbmU6IChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25DYW5jZWwocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG5cbiAgICBsZXQgY29uZmlybWVkID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMubm9Db25maXJtKSB7XG4gICAgICBjb25maXJtZWQgPSBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICAnQ29uZmlybWFyIGNhbmNlbGFjacOzbicsXG4gICAgICAgICfCv0VzdMOhIHNlZ3VybyBkZSBxdWUgZGVzZWEgY2FuY2VsYXIgZXN0ZSBlbGVtZW50bz8nLFxuICAgICAgICAnQ2FuY2VsYXIgZWxlbWVudG8nLFxuICAgICAgICAnTm8gY2FuY2VsYXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aW9uLmVtaXQoe1xuICAgICAgICBpZCxcbiAgICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdGFydENyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zdGFydENyZWF0ZSh0aGlzLmNvbHVtbnMsIHRoaXMuZGF0YSgpKTtcbiAgICAvLyBBY3R1YWxpemFyIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgY3VhbmRvIGVudHJhbW9zIGVuIG1vZG8gY3JlYWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsQ3JlYXRlKCkge1xuICAgIHRoaXMuY3J1ZFN0YXRlLmNhbmNlbENyZWF0ZSgpO1xuICAgIC8vIEFjdHVhbGl6YXIga2V5cyBkZSBjb2x1bW5hcyB2aXNpYmxlcyBjdWFuZG8gc2FsaW1vcyBkZWwgbW9kbyBjcmVhY2nDs25cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gIH1cblxuICB1cGRhdGVOZXdSb3coa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUudXBkYXRlTmV3Um93KGtleSwgdmFsdWUpO1xuICB9XG5cbiAgc2F2ZUNyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlQ3JlYXRlKHRoaXMuY29sdW1ucywgdGhpcy5kYXRhKCksIHRoaXMuY3JlYXRlQWN0aW9uKTtcbiAgfVxuXG5cblxuICBvbkVkaXQocm93OiBUKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUuc3RhcnRFZGl0KHJvdywgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBlbnRyYW1vcyBlbiBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5jYW5jZWxFZGl0KCk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBzYWxpbW9zIGRlbCBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgb25FZGl0SW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgY2hlY2tlZCk7XG4gICAgfSBlbHNlIGlmIChjb2w/LnR5cGUgPT09ICdlbnVtJykge1xuICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZTtcbiAgICAgIHRoaXMuY3J1ZFN0YXRlLnVwZGF0ZUVkaXRSb3coa2V5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzYXZlRWRpdChyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlRWRpdChpZCwgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSwgdGhpcy51cGRhdGVBY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrQnkgZnVuY3Rpb24gZm9yIG5nRm9yIHRvIGF2b2lkIERPTSByZS1jcmVhdGlvbiAoTkcwOTU2IHdhcm5pbmcpLlxuICAgKi9cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIHJvdzogVCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgY29uc3QgaWQgPVxuICAgICAgcm93ICYmIHR5cGVvZiByb3cgPT09ICdvYmplY3QnICYmICdpZCcgaW4gcm93XG4gICAgICAgID8gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ2lkJ11cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGlkID09PSAnbnVtYmVyJyA/IGlkIDogaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHZpZXcgZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvblZpZXcocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy52aWV3QWN0aW9uLmVtaXQocm93KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZ2V0Um93QnV0dG9uQWN0aW9uIGV2ZW50IHdpdGggdGhlIGVudGlyZSByb3cgZGF0YVxuICAgKi9cbiAgb25HZXRSb3dCdXR0b24ocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy5nZXRSb3dCdXR0b25BY3Rpb24uZW1pdChyb3cpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXN0b21BY3Rpb24gZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvbkN1c3RvbUFjdGlvbihyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIG1vdmVVcEFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZVVwKHJvdzogVCkge1xuICAgIGNvbnN0IGlkID0gcm93WydpZCddIGFzIElEO1xuICAgIHRoaXMubW92ZVVwQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBkb25lOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBtb3ZlRG93bkFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZURvd24ocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgdGhpcy5tb3ZlRG93bkFjdGlvbi5lbWl0KHtcbiAgICAgIGlkLFxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZW5hYmxlQWN0aW9uIGV2ZW50IHdpdGggdGhlIHJvdyBpZCBhbmQgY3VycmVudCBlbmFibGVkIHN0YXR1c1xuICAgKi9cbiAgYXN5bmMgb25FbmFibGUocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgY29uc3QgY3VycmVudEVuYWJsZWQgPSByb3dbJ2VuYWJsZWQnXSBhcyBib29sZWFuO1xuICAgIHRoaXMuZW5hYmxlQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBlbmFibGVkOiAhY3VycmVudEVuYWJsZWQsIC8vIFRvZ2dsZSB0aGUgY3VycmVudCBzdGF0ZVxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzIHdpdGggZGVib3VuY2luZ1xuICAgKi9cbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgc2VhcmNoIGlucHV0XG4gICAqL1xuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQoJycpO1xuICB9XG5cbiAgLy8gTcOpdG9kb3MgZGVsZWdhZG9zIGEgc2VydmljaW9zXG4gIGdldENlbGxWYWx1ZShyb3c6IFQsIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbFZhbHVlKHJvdywgYWNjZXNzb3IpO1xuICB9XG5cbiAgZ2V0RGlzcGxheVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0RGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIGdldEVudW1EaXNwbGF5VmFsdWUodmFsdWU6IHVua25vd24sIGNvbDogQzgwVGFibGVDb2xEZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtRGlzcGxheVZhbHVlKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0RW51bU9wdGlvbnMoY29sOiBDODBUYWJsZUNvbERlZik6IHsgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtT3B0aW9ucyhjb2wpO1xuICB9XG5cbiAgZ2V0Q2VsbENvbG9yKHZhbHVlOiB1bmtub3duLCBjb2w6IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbENvbG9yKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0VGFibGVNYXhIZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0VGFibGVNYXhIZWlnaHQodGhpcy5zaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbWV0aG9kc1xuICAgKi9cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25TdGF0ZS5jbGVhclNlbGVjdGlvbigpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnRpZW5lIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zLFxuICAgKiBlbGltaW5hbmRvIHNvbG8gbG9zIElEcyBxdWUgeWEgbm8gZXhpc3RlbiBlbiBsb3MgbnVldm9zIGRhdG9zXG4gICAqL1xuICBwcml2YXRlIHByZXNlcnZlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUucHJlc2VydmVTZWxlY3Rpb24odGhpcy5kYXRhKCkpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlU2VsZWN0QWxsKHRoaXMuZGF0YSgpKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIHRvZ2dsZUl0ZW1TZWxlY3Rpb24oaXRlbTogVCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtLCB0aGlzLm11bHRpcGxlKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGF0ZS5pc0l0ZW1TZWxlY3RlZChpdGVtKTtcbiAgfVxuXG5cblxuICAvLyBNw6l0b2RvcyBkZSB2aXNpYmlsaWRhZCBkZWxlZ2Fkb3MgYSBzZXJ2aWNpb1xuICBpc0NvbHVtblZpc2libGUoY29sdW1uOiBDODBUYWJsZUNvbERlZiwgZm9yY2VTaG93SW5DcmVhdGlvbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGhpcy5kYXRhKCksIGZvcmNlU2hvd0luQ3JlYXRpb24pO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sdW1uOiBDODBUYWJsZUNvbERlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKFxuICAgICAgY29sdW1uLFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmNyZWF0aW5nKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBpc0NvbHVtblZpc2libGVGb3JSb3coY29sdW1uOiBDODBUYWJsZUNvbERlZiwgcm93OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlRm9yUm93KFxuICAgICAgY29sdW1uLFxuICAgICAgcm93LFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBvblVwbG9hZChyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZEFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwiZ2V0VGFibGVNYXhIZWlnaHQoKVwiIFtzdHlsZS5vdmVyZmxvdy15XT1cInNpemUgPiAwID8gJ2F1dG8nIDogJ3Zpc2libGUnXCI+XG4gIDwhLS0gU2VhcmNoIEJhciAtLT5cbiAgQGlmIChoYXNTZWFyY2hUZXJtTGlzdGVuZXIoKSkge1xuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwic2VhcmNoXCIgW3NpemVdPVwiLjhcIj48L2M4MC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiQnVzY2FyLi4uXCIgW3ZhbHVlXT1cInNlYXJjaFZhbHVlKClcIiAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCIgYXJpYS1sYWJlbD1cIkJ1c2NhciBlbiBsYSB0YWJsYVwiIC8+XG4gICAgICAgIEBpZiAoc2VhcmNoVmFsdWUoKSkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tYm9ycmFyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCIgdGl0bGU9XCJMaW1waWFyIGLDunNxdWVkYVwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG5cbiAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgYWxpZ24tbWlkZGxlXCI+XG4gICAgPHRoZWFkIGNsYXNzPVwidGhlYWQgdGFibGUtbGlnaHQgc3RpY2t5LWhlYWRlclwiPlxuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2VsZWN0QWxsQ2hlY2tlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSgpXCIgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoKVwiIGFyaWEtbGFiZWw9XCJTZWxlY2Npb25hciB0b2RvXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbCkge1xuICAgICAgICBAaWYgKGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKGNvbCkpIHtcbiAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIGJvb2xlYW4tY29sdW1uXCI+e3sgY29sLmxhYmVsIH19PC90aD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAoY29sLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIG51bWJlci1jb2x1bW5cIj57eyBjb2wubGFiZWwgfX08L3RoPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgPHRoPnt7IGNvbC5sYWJlbCB9fTwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0RlbGV0ZUFjdGlvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzQ2FuY2VsQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNWaWV3QWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0dldFJvd0J1dHRvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNNb3ZlRG93bkFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGFibGUtYWN0aW9ucy1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj5BY3Rpb25zPC9zcGFuPlxuICAgICAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJhZGRcIiBbZGlzYWJsZWRdPVwiY3JlYXRpbmcoKVwiIHRpdGxlPVwiQWdyZWdhclwiIFtzaXplXT1cIi42XCIgKGljb25DbGljayk9XCJzdGFydENyZWF0ZSgpXCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfVxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIEBmb3IgKHJvdyBvZiBkYXRhKCk7IHRyYWNrIHRyYWNrQnlJZChpLCByb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChyb3cpXCIgKGNoYW5nZSk9XCJ0b2dnbGVJdGVtU2VsZWN0aW9uKHJvdylcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlY2Npb25hciBmaWxhICcgKyAoaSArIDEpXCIgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sKSB7XG4gICAgICAgIEBpZiAoaXNDb2x1bW5WaXNpYmxlRm9yUm93KGNvbCwgcm93KSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgYm9vbGVhbi1jb2x1bW5cIj5cbiAgICAgICAgICBAaWYgKGVkaXRpbmcoKSA9PT0gcm93WydpZCddICYmICFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdXCIgKGNoYW5nZSk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sLmxhYmVsXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIEBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2hlY2tcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIGlmIChnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpID09PSBmYWxzZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBudW1iZXItY29sdW1uXCI+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIHR5cGU9XCJudW1iZXJcIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImdldENlbGxDb2xvcihnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXCI+e3sgZ2V0RGlzcGxheVZhbHVlKGdldENlbGxWYWx1ZShyb3csXG4gICAgICAgICAgICBjb2wuYWNjZXNzb3IpKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIChjaGFuZ2UpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57eyBjb2wubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBnZXRFbnVtT3B0aW9ucyhjb2wpOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIFt0eXBlXT1cImNvbC50eXBlID09PSAncGFzc3dvcmQnID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiIFt2YWx1ZV09XCJlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgW3BsYWNlaG9sZGVyXT1cImNvbC5sYWJlbFwiIChpbnB1dCk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPioqKioqKjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnZW51bScpIHtcbiAgICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiZ2V0Q2VsbENvbG9yKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvciksIGNvbClcIj57e1xuICAgICAgICAgICAgZ2V0RW51bURpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvcikgPT09IHRydWUpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNoZWNrXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNhbmNlbFwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPnt7IGdldERpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LFxuICAgICAgICAgICAgY29sLmFjY2Vzc29yKSkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZiAoZWRpdGluZygpID09PSByb3dbJ2lkJ10pIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiY2FuY2VsXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJDYW5jZWxhclwiIChpY29uQ2xpY2spPVwiY2FuY2VsRWRpdCgpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJlZGl0XCIgdGl0bGU9XCJFZGl0YXJcIiAoaWNvbkNsaWNrKT1cIm9uRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxDaXJjbGVcIiBjb2xvcj1cInNlY29uZGFyeVwiIHRpdGxlPVwiQ2FuY2VsYXJcIiAoaWNvbkNsaWNrKT1cIm9uQ2FuY2VsKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ2aWV3XCIgY29sb3I9XCJwcmltYXJ5XCIgdGl0bGU9XCJWZXJcIiAoaWNvbkNsaWNrKT1cIm9uVmlldyhyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ1cGxvYWRcIiBjb2xvcj1cInByaW1hcnlcIiB0aXRsZT1cIlN1YmlyXCIgKGljb25DbGljayk9XCJvblVwbG9hZChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNHZXRSb3dCdXR0b25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJnZXRcIiBjb2xvcj1cInN1Y2Nlc3NcIiB0aXRsZT1cIlZpbmN1bGFyXCIgKGljb25DbGljayk9XCJvbkdldFJvd0J1dHRvbihyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDdXN0b21BY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIFtpY29uXT1cImN1c3RvbUFjdGlvbkljb25cIiBjb2xvcj1cInByaW1hcnlcIiBbdGl0bGVdPVwiY3VzdG9tQWN0aW9uVG9vbHRpcFwiIChpY29uQ2xpY2spPVwib25DdXN0b21BY3Rpb24ocm93KVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dVcFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgdGl0bGU9XCJNb3ZlciBhcnJpYmFcIiAoaWNvbkNsaWNrKT1cIm9uTW92ZVVwKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dEb3duXCIgY29sb3I9XCJzZWNvbmRhcnlcIiB0aXRsZT1cIk1vdmVyIGFiYWpvXCIgKGljb25DbGljayk9XCJvbk1vdmVEb3duKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gW2ljb25dPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICd0b2dnbGVPbicgOiAndG9nZ2xlT2ZmJ1wiIFtjb2xvcl09XCJnZXRDZWxsVmFsdWUocm93LCAnZW5hYmxlZCcpID8gJ3N1Y2Nlc3MnIDogJ3NlY29uZGFyeSdcIiBbdGl0bGVdPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICdEZXNoYWJpbGl0YXInIDogJ0hhYmlsaXRhcidcIlxuICAgICAgICAgICAgICAoaWNvbkNsaWNrKT1cIm9uRW5hYmxlKHJvdylcIiBbc2l6ZV09XCIuN1wiPlxuICAgICAgICAgICAgPC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiZGVsZXRlXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJCb3JyYXJcIiAoaWNvbkNsaWNrKT1cIm9uRGVsZXRlKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgICBAaWYgKGNyZWF0aW5nKCkgJiYgaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDwhLS0gRW1wdHkgY2VsbCBmb3IgYWxpZ25tZW50IC0tPlxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wpIHtcbiAgICAgICAgQGlmIChpc0NvbHVtblZpc2libGUoY29sLCB0cnVlKSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICBAaWYgKCFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl1cIiAoY2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbC5sYWJlbFwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IGJvb2xlYW4gY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9IEBlbHNlIGlmIChjb2wudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgbnVtYmVyLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAoIWNvbC5yZWFkT25seSkge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwibnVtYmVyXCIgW3ZhbHVlXT1cIm5ld1JvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IG51bWJlciBjb2x1bW4gaW4gY3JlYXRlIG1vZGUgc2hvd3MgZW1wdHkgLS0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+LTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmICghY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwibmV3Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgKGNoYW5nZSk9XCJvbklucHV0KCRldmVudCwgY29sLmFjY2Vzc29yLCBjb2wpXCI+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgY29sLmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZ2V0RW51bU9wdGlvbnMoY29sKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl0gPz8gJydcIiBbcGxhY2Vob2xkZXJdPVwiY29sLmxhYmVsXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDwhLS0gUmVhZE9ubHkgY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlQ3JlYXRlKClcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxcIiBjb2xvcj1cIndhcm5cIiB0aXRsZT1cIkNhbmNlbGFyXCIgKGljb25DbGljayk9XCJjYW5jZWxDcmVhdGUoKVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbiAgQGlmIChkYXRhKCkubGVuZ3RoID09PSAwICYmICFjcmVhdGluZygpKSB7XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTMgc21hbGxcIj5cbiAgICBObyBoYXkgZGF0b3MgcGFyYSBtb3N0cmFyLlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxjODAtbW9kYWw+PC9jODAtbW9kYWw+Il19
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ColorType, ButtonType } from './icon.types';
|
|
1
|
+
import type { ColorType, ButtonType } from './icon.types';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class C80IconComponent {
|
|
5
4
|
readonly icon: import("@angular/core").InputSignal<"check" | "cancel" | "edit" | "delete" | "add" | "view" | "get" | "settings" | "schedule" | "refresh" | "checkCircle" | "cancelCircle" | "error" | "queue" | "arrowUp" | "arrowDown" | "toggleOn" | "toggleOff" | "search" | "upload" | "pendingActions" | "playCircle" | "default">;
|
|
@@ -8,36 +7,17 @@ export declare class C80IconComponent {
|
|
|
8
7
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
9
8
|
readonly size: import("@angular/core").InputSignal<number>;
|
|
10
9
|
readonly button: import("@angular/core").InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
10
|
+
readonly border: import("@angular/core").InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
11
11
|
readonly type: import("@angular/core").InputSignal<ButtonType>;
|
|
12
|
+
readonly textLeft: import("@angular/core").InputSignal<string | undefined>;
|
|
13
|
+
readonly textRight: import("@angular/core").InputSignal<string | undefined>;
|
|
12
14
|
readonly iconClick: import("@angular/core").OutputEmitterRef<Event>;
|
|
13
15
|
readonly iconSize: import("@angular/core").Signal<number>;
|
|
14
16
|
readonly iconColor: import("@angular/core").Signal<string>;
|
|
15
|
-
readonly iconOpacity: import("@angular/core").Signal<0.5 | 0.7
|
|
16
|
-
readonly
|
|
17
|
-
readonly
|
|
18
|
-
readonly cancel: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
19
|
-
readonly edit: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
20
|
-
readonly delete: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
21
|
-
readonly add: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
22
|
-
readonly view: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
23
|
-
readonly get: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
24
|
-
readonly settings: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
25
|
-
readonly schedule: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
26
|
-
readonly refresh: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
27
|
-
readonly checkCircle: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
28
|
-
readonly cancelCircle: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
29
|
-
readonly error: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
30
|
-
readonly queue: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
31
|
-
readonly arrowUp: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
32
|
-
readonly arrowDown: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
33
|
-
readonly toggleOn: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
34
|
-
readonly toggleOff: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
35
|
-
readonly search: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
36
|
-
readonly upload: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
37
|
-
readonly pendingActions: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
38
|
-
readonly playCircle: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
39
|
-
readonly default: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
17
|
+
readonly iconOpacity: import("@angular/core").Signal<1 | 0.5 | 0.7>;
|
|
18
|
+
readonly iconPath: import("@angular/core").Signal<string>;
|
|
19
|
+
readonly additionalShapes: import("@angular/core").Signal<import("./icon.constants").ShapeAttributes[]>;
|
|
40
20
|
onButtonClick(event: Event): void;
|
|
41
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<C80IconComponent, never>;
|
|
42
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<C80IconComponent, "c80-icon", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "customColor": { "alias": "customColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "iconClick": "iconClick"; }, never, never, true, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<C80IconComponent, "c80-icon", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "customColor": { "alias": "customColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "textLeft": { "alias": "textLeft"; "required": false; "isSignal": true; }; "textRight": { "alias": "textRight"; "required": false; "isSignal": true; }; }, { "iconClick": "iconClick"; }, never, never, true, never>;
|
|
43
23
|
}
|
|
@@ -7,3 +7,9 @@ export declare const DISABLED_OPACITY = 0.5;
|
|
|
7
7
|
export declare const SECONDARY_WARN_OPACITY = 0.7;
|
|
8
8
|
export declare const DEFAULT_OPACITY = 1;
|
|
9
9
|
export declare const BASE_ICON_SIZE = 24;
|
|
10
|
+
export declare const ICON_PATHS: Readonly<Record<string, string>>;
|
|
11
|
+
export interface ShapeAttributes {
|
|
12
|
+
type: 'circle' | 'rect' | 'path';
|
|
13
|
+
[key: string]: string | number;
|
|
14
|
+
}
|
|
15
|
+
export declare const ICON_ADDITIONAL_SHAPES: Readonly<Record<string, ShapeAttributes[]>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function transformToBoolean(val: boolean | string | null | undefined): boolean;
|
package/lib/icon/index.d.ts
CHANGED