@rooted/elements 1.0.0-alpha.4 → 1.0.0-alpha.6
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/dist/elements.d.mts +35 -5
- package/dist/elements.mjs +54 -18
- package/package.json +3 -3
package/dist/elements.d.mts
CHANGED
|
@@ -82,16 +82,46 @@ type FunctionKeys<T> = {
|
|
|
82
82
|
type OnHandlerKeys<T> = {
|
|
83
83
|
[P in keyof T]: P extends `on${string}` ? P : never;
|
|
84
84
|
}[keyof T];
|
|
85
|
-
|
|
85
|
+
/** A subset of CSSStyleDeclaration containing only the individual CSS style properties. */
|
|
86
|
+
type InlineStyle = {
|
|
87
|
+
[K in keyof CSSStyleDeclaration as CSSStyleDeclaration[K] extends string ? K extends 'cssText' ? never : K : never]?: string;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
type SanitizedHtmlProperties<TElement extends HTMLElement> = Omit<TElement, NonWritableKeys<TElement> | FunctionKeys<TElement> | Exclude<keyof ARIAMixin, 'role'> | OnHandlerKeys<TElement> | 'children' | 'className' | 'classList' | 'style'>;
|
|
86
91
|
type HtmlElementPropertiesMapped<TElement extends HTMLElement> = Partial<SanitizedHtmlProperties<TElement>> & {
|
|
92
|
+
[key: string]: unknown;
|
|
87
93
|
children?: Array<Node | string> | Node | string;
|
|
88
94
|
classes?: CssClasses;
|
|
95
|
+
style?: InlineStyle;
|
|
89
96
|
aria?: Aria;
|
|
90
97
|
on?: ElementOnHandlers<TElement>;
|
|
91
98
|
};
|
|
92
99
|
type HtmlElementProperties<KElement extends keyof HTMLElementTagNameMap> = HtmlElementPropertiesMapped<HTMLElementTagNameMap[KElement]>;
|
|
93
|
-
type ElementCreator = (key: string) => HTMLElement;
|
|
94
|
-
type ElementFactory = ReturnType<typeof createElementFactory>;
|
|
95
|
-
declare function createElementFactory(constructElement: ElementCreator, signal: AbortSignal): <KElement extends keyof HTMLElementTagNameMap>(tag: KElement, properties?: NoInfer<HtmlElementProperties<KElement>>) => HTMLElementTagNameMap[KElement];
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
type SvgTagName = 'svg' | `svg:${Exclude<keyof SVGElementTagNameMap, 'svg'>}`;
|
|
102
|
+
type SvgTagElement<T extends SvgTagName> = T extends 'svg' ? SVGSVGElement : T extends `svg:${infer K extends keyof SVGElementTagNameMap}` ? SVGElementTagNameMap[K] : never;
|
|
103
|
+
type SanitizedSvgProperties<TElement extends SVGElement> = Omit<TElement, NonWritableKeys<TElement> | FunctionKeys<TElement> | Exclude<keyof ARIAMixin, 'role'> | OnHandlerKeys<TElement> | 'children' | 'className' | 'classList' | 'style'>;
|
|
104
|
+
type SvgElementPropertiesMapped<TElement extends SVGElement> = Partial<SanitizedSvgProperties<TElement>> & {
|
|
105
|
+
[key: string]: unknown;
|
|
106
|
+
classes?: CssClasses;
|
|
107
|
+
style?: InlineStyle;
|
|
108
|
+
children?: Array<Node | string> | Node | string;
|
|
109
|
+
aria?: Aria;
|
|
110
|
+
on?: ElementOnHandlers<TElement>;
|
|
111
|
+
};
|
|
112
|
+
type SvgElementProperties<K extends SvgTagName> = SvgElementPropertiesMapped<SvgTagElement<K> & SVGElement>;
|
|
113
|
+
|
|
114
|
+
type ElementCreator = (key: string, ns?: string) => Element;
|
|
115
|
+
/**
|
|
116
|
+
* The overloaded function type returned by {@link createElementFactory}.
|
|
117
|
+
* Accepts HTML or SVG tag names and returns the matching element type.
|
|
118
|
+
*/
|
|
119
|
+
interface ElementCreatorFunction {
|
|
120
|
+
(tag: 'svg', properties?: SvgElementProperties<'svg'>): SVGSVGElement;
|
|
121
|
+
<K extends Exclude<SvgTagName, 'svg'>>(tag: K, properties?: SvgElementProperties<K>): SvgTagElement<K>;
|
|
122
|
+
<K extends keyof HTMLElementTagNameMap>(tag: K, properties?: NoInfer<HtmlElementProperties<K>>): HTMLElementTagNameMap[K];
|
|
123
|
+
}
|
|
124
|
+
type ElementFactory = ElementCreatorFunction;
|
|
125
|
+
declare function createElementFactory(constructElement: ElementCreator, signal: AbortSignal): ElementCreatorFunction;
|
|
126
|
+
|
|
127
|
+
export { type Aria, type CssClass, type CssClasses, type ElementCreator, type ElementCreatorFunction, type ElementFactory, type HtmlElementProperties, type SvgElementProperties, type SvgTagElement, type SvgTagName, createElementFactory, cssClass };
|
package/dist/elements.mjs
CHANGED
|
@@ -66,31 +66,67 @@ function buildClassList(classes) {
|
|
|
66
66
|
if (Array.isArray(classes)) return { className: classes.filter(Boolean).join(" ") };
|
|
67
67
|
return { className: String(classes) };
|
|
68
68
|
}
|
|
69
|
+
function isWritableDomProperty(element, key) {
|
|
70
|
+
let proto = element;
|
|
71
|
+
while (proto) {
|
|
72
|
+
const desc = Object.getOwnPropertyDescriptor(proto, key);
|
|
73
|
+
if (desc) return !!(desc.writable || desc.set);
|
|
74
|
+
proto = Object.getPrototypeOf(proto);
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
69
78
|
function createElementFactory(constructElement, signal) {
|
|
70
79
|
function createElement(tag, properties) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (Array.isArray(children)) {
|
|
83
|
-
for (const child of children) {
|
|
84
|
-
newElement.append(child);
|
|
80
|
+
if (tag === "svg" || tag.startsWith("svg:")) {
|
|
81
|
+
const actualTag = tag === "svg" ? "svg" : tag.slice(4);
|
|
82
|
+
const { classes: classes2, children: children2, aria: aria2, on: on2, style: style2, ...attributes } = properties ?? {};
|
|
83
|
+
const newElement2 = constructElement(actualTag, "http://www.w3.org/2000/svg");
|
|
84
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
85
|
+
if (value === void 0 || value === null) continue;
|
|
86
|
+
if (isWritableDomProperty(newElement2, key)) {
|
|
87
|
+
newElement2[key] = value;
|
|
88
|
+
} else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
89
|
+
newElement2.setAttribute(key, String(value));
|
|
90
|
+
}
|
|
85
91
|
}
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
const { className: className2 } = buildClassList(classes2);
|
|
93
|
+
if (className2) newElement2.setAttribute("class", className2);
|
|
94
|
+
if (style2) Object.assign(newElement2.style, style2);
|
|
95
|
+
buildAriaProperties(aria2, newElement2);
|
|
96
|
+
buildOnHandlers(on2, newElement2, signal);
|
|
97
|
+
appendChildren(newElement2, children2);
|
|
98
|
+
return newElement2;
|
|
88
99
|
}
|
|
100
|
+
const { aria, children, classes, on, style, ...assignableProperties } = properties ?? {};
|
|
101
|
+
const newElement = constructElement(tag);
|
|
102
|
+
const { className } = buildClassList(classes);
|
|
103
|
+
if (className) newElement.className = className;
|
|
104
|
+
for (const [key, value] of Object.entries(assignableProperties)) {
|
|
105
|
+
if (value === void 0 || value === null) continue;
|
|
106
|
+
if (isWritableDomProperty(newElement, key)) {
|
|
107
|
+
newElement[key] = value;
|
|
108
|
+
} else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
109
|
+
newElement.setAttribute(key, String(value));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (style) Object.assign(newElement.style, style);
|
|
113
|
+
buildAriaProperties(aria, newElement);
|
|
114
|
+
buildOnHandlers(on, newElement, signal);
|
|
115
|
+
appendChildren(newElement, children);
|
|
89
116
|
return newElement;
|
|
90
117
|
}
|
|
91
|
-
return createElement
|
|
118
|
+
return createElement;
|
|
119
|
+
}
|
|
120
|
+
function appendChildren(element, children) {
|
|
121
|
+
if (Array.isArray(children)) {
|
|
122
|
+
for (const child of children) {
|
|
123
|
+
element.append(child);
|
|
124
|
+
}
|
|
125
|
+
} else if (children) {
|
|
126
|
+
element.append(children);
|
|
127
|
+
}
|
|
92
128
|
}
|
|
93
129
|
|
|
94
130
|
export { createElementFactory, cssClass };
|
|
95
131
|
//# sourceMappingURL=elements.mjs.map
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzc2VzLm10cyIsIi4uL3NyYy9hcmlhLm10cyIsIi4uL3NyYy9lbGVtZW50LWZhY3RvcnkubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUE2Q08sU0FBUyxRQUFBLENBQVMsU0FBQSxFQUFxQixPQUFBLEdBQXNDLElBQUEsRUFBZ0I7QUFDbkcsRUFBQSxJQUFJLFlBQVksSUFBQSxFQUFNO0FBQ3RCLEVBQUEsT0FBTyxTQUFBO0FBQ1I7OztBQ3BCQSxJQUFNLHlCQUFBLEdBQTZFO0FBQUEsRUFDbEYsZ0JBQUEsRUFBa0IsdUJBQUE7QUFBQSxFQUNsQixRQUFBLEVBQVUsZUFBQTtBQUFBLEVBQ1YsV0FBQSxFQUFhLGtCQUFBO0FBQUEsRUFDYixPQUFBLEVBQVMsY0FBQTtBQUFBLEVBQ1QsWUFBQSxFQUFjLG1CQUFBO0FBQUEsRUFDZCxNQUFBLEVBQVEsYUFBQTtBQUFBLEVBQ1IsVUFBQSxFQUFZLGlCQUFBO0FBQUEsRUFDWixJQUFBLEVBQU07QUFDUCxDQUFBO0FBR0EsSUFBTSxnQ0FBQSxHQUFvRjtBQUFBLEVBQ3pGLGdCQUFBLEVBQWtCLDZCQUFBO0FBQUEsRUFDbEIsUUFBQSxFQUFVLHNCQUFBO0FBQUEsRUFDVixXQUFBLEVBQWEseUJBQUE7QUFBQSxFQUNiLE9BQUEsRUFBUyxxQkFBQTtBQUFBLEVBQ1QsWUFBQSxFQUFjLDBCQUFBO0FBQUEsRUFDZCxNQUFBLEVBQVEsb0JBQUE7QUFBQSxFQUNSLFVBQUEsRUFBWSx3QkFBQTtBQUFBLEVBQ1osSUFBQSxFQUFNO0FBQ1AsQ0FBQTtBQUVBLFNBQVMsV0FBQSxDQUFZLE9BQUEsRUFBa0IsR0FBQSxFQUFhLEtBQUEsRUFBc0I7QUFDekUsRUFBQyxPQUFBLENBQStDLEdBQUcsQ0FBQSxHQUFJLEtBQUE7QUFDeEQ7QUFFTyxTQUFTLG1CQUFBLENBQW9CLE1BQXdCLE9BQUEsRUFBd0I7QUFDbkYsRUFBQSxJQUFJLENBQUMsSUFBQSxFQUFNO0FBQ1gsRUFBQSxLQUFBLE1BQVcsQ0FBQyxH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QUFBLENBQW9CLE1BQU0sVUFBVSxDQUFBO0FBQ3BDLElBQUEsZUFBQSxDQUFnQixFQUFBLEVBQUksWUFBWSxNQUFNLENBQUE7QUFFdEMsSUFBQSxJQUFJLEtBQUEsQ0FBTSxPQUFBLENBQVEsUUFBUSxDQUFBLEVBQUc7QUFDNUIsTUFBQSxLQUFBLE1BQVcsU0FBUyxRQUFBLEVBQVU7QUFDN0IsUUFBQSxVQUFBLENBQVcsT0FBTyxLQUFLLENBQUE7QUFBQSxNQUN4QjtBQUFBLElBQ0QsV0FDUyxRQUFBLEVBQVU7QUFDbEIsTUFBQSxVQUFBLENBQVcsT0FBTyxRQUFRLENBQUE7QUFBQSxJQUMzQjtBQUVBLElBQUEsT0FBTyxVQUFBO0FBQUEsRUFDUjtBQUVBLEVBQUEsT0FBTyxhQUFBLENBQWMsS0FBSyxNQUFVLENBQUE7QUFDckMiLCJmaWxlIjoiZWxlbWVudHMubWpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNpbmdsZSBDU1MgY2xhc3MgdmFsdWUuIEZhbHN5IHZhcmlhbnRzIChgdW5kZWZpbmVkYCBhbmQgYG51bGxgKSBhcmVcbiAqIGF1dG9tYXRpY2FsbHkgZmlsdGVyZWQgb3V0IHdoZW4gYnVpbGRpbmcgYSBjbGFzcyBsaXN0LCBzbyBjb25kaXRpb25hbFxuICogY2xhc3NlcyBjYW4gYmUgZXhwcmVzc2VkIHdpdGhvdXQgZXhwbGljaXQgZ3VhcmRzLlxuICovXG5leHBvcnQgdHlwZSBDc3NDbGFzcyA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuLyoqXG4gKiBPbmUgb3IgbW9yZSBDU1MgY2xhc3MgdmFsdWVzIGFjY2VwdGVkIGJ5IHRoZSBgY2xhc3Nlc2AgcHJvcCBvZiBldmVyeSBIVE1MXG4gKiBlbGVtZW50IGNyZWF0ZWQgdmlhIGBjcmVhdGUoKWAgb3IgYGFwcGVuZCgpYC5cbiAqXG4gKiAtIEEgc2luZ2xlIHN0cmluZyBpcyB1c2VkIGFzLWlzLlxuICogLSBBbiBhcnJheSBvZiB7QGxpbmsgQ3NzQ2xhc3N9IHZhbHVlcyBpcyBqb2luZWQgd2l0aCBzcGFjZXMgYWZ0ZXIgZmFsc3lcbiAqICAgZW50cmllcyBhcmUgcmVtb3ZlZC5cbiAqXG4gKiBAc2VlIHtAbGluayBjc3NDbGFzc30gZm9yIGNvbXBvc2luZyBjb25kaXRpb25hbCBjbGFzcyBuYW1lcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ3NzQ2xhc3NlcyA9IEFycmF5PENzc0NsYXNzPiB8IENzc0NsYXNzXG5cbi8qKlxuICogUmV0dXJucyBgY2xhc3NOYW1lYCB3aGVuIGB2aXNpYmxlYCBpcyB0cnV0aHksIG90aGVyd2lzZSBgdW5kZWZpbmVkYC5cbiAqXG4gKiBEZXNpZ25lZCB0byBjb21wb3NlIGNsZWFubHkgd2l0aCB7QGxpbmsgQ3NzQ2xhc3Nlc306IGZhbHN5IHZhbHVlcyBhcmVcbiAqIGZpbHRlcmVkIG91dCBhdXRvbWF0aWNhbGx5LCBzbyBzdGF0aWMgYW5kIGNvbmRpdGlvbmFsIGNsYXNzZXMgY2FuIGJlIG1peGVkXG4gKiBpbiBhIHNpbmdsZSBhcnJheSB3aXRob3V0IGJyYW5jaGluZy5cbiAqXG4gKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIENTUyBjbGFzcyB0byBhcHBseS5cbiAqIEBwYXJhbSB2aXNpYmxlIC0gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSB0aGUgY2xhc3MgaXMgcmV0dXJuZWQ7IGFueSBvdGhlclxuICogICB2YWx1ZSBwcm9kdWNlcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGFwcGVuZCgnYnV0dG9uJywge1xuICogICBjbGFzc2VzOiBbXG4gKiAgICAgJ2J0bicsXG4gKiAgICAgY3NzQ2xhc3MoJ2J0bi0tYWN0aXZlJywgaXNBY3RpdmUpLFxuICogICAgIGNzc0NsYXNzKCdidG4tLWRpc2FibGVkJywgaXNEaXNhYmxlZCksXG4gKiAgIF0sXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKTogQ3NzQ2xhc3NcbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IENzc0NsYXNzKTogQ3NzQ2xhc3NcbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IENzc0NsYXNzLCB2aXNpYmxlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcywgdmlzaWJsZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgPSB0cnVlKTogQ3NzQ2xhc3Mge1xuXHRpZiAodmlzaWJsZSAhPT0gdHJ1ZSkgcmV0dXJuXG5cdHJldHVybiBjbGFzc05hbWVcbn1cbiIsInR5cGUgU3RyaXBBcmlhPFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGBhcmlhJHtpbmZlciBSZXN0fWAgPyBVbmNhcGl0YWxpemU8UmVzdD4gOiBTXG5cbnR5cGUgQXJpYVN0cmluZ1Byb3BlcnRpZXMgPSB7XG5cdFtQIGluIGtleW9mIEFSSUFNaXhpbiBhcyBBUklBTWl4aW5bUF0gZXh0ZW5kcyBzdHJpbmcgfCBudWxsID8gU3RyaXBBcmlhPHN0cmluZyAmIFA+IDogbmV2ZXJdPzogc3RyaW5nIHwgbnVsbFxufVxuXG4vLyBQcm9wZXJ0aWVzIHRoYXQgb25seSBleGlzdCBhcyBFbGVtZW50W10gaW4gQVJJQU1peGluIOKAlCBhY2NlcHRzIGEgc3RyaW5nIElEIG9yIGFuIEVsZW1lbnQgZGlyZWN0bHlcbnR5cGUgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllcyA9IHtcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCddfSAqL1xuXHRhY3RpdmVEZXNjZW5kYW50Pzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFDb250cm9sc0VsZW1lbnRzJ119ICovXG5cdGNvbnRyb2xzPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJ119ICovXG5cdGRlc2NyaWJlZEJ5Pzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFEZXRhaWxzRWxlbWVudHMnXX0gKi9cblx0ZGV0YWlscz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnXX0gKi9cblx0ZXJyb3JNZXNzYWdlPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFGbG93VG9FbGVtZW50cyddfSAqL1xuXHRmbG93VG8/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUxhYmVsbGVkQnlFbGVtZW50cyddfSAqL1xuXHRsYWJlbGxlZEJ5Pzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFPd25zRWxlbWVudHMnXX0gKi9cblx0b3ducz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEFyaWEgPSBBcmlhU3RyaW5nUHJvcGVydGllcyAmIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNcblxuY29uc3QgYXJpYUlkUmVmZXJlbmNlQXR0cmlidXRlczogUmVjb3JkPGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXMsIHN0cmluZz4gPSB7XG5cdGFjdGl2ZURlc2NlbmRhbnQ6ICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLFxuXHRjb250cm9sczogJ2FyaWEtY29udHJvbHMnLFxuXHRkZXNjcmliZWRCeTogJ2FyaWEtZGVzY3JpYmVkYnknLFxuXHRkZXRhaWxzOiAnYXJpYS1kZXRhaWxzJyxcblx0ZXJyb3JNZXNzYWdlOiAnYXJpYS1lcnJvcm1lc3NhZ2UnLFxuXHRmbG93VG86ICdhcmlhLWZsb3d0bycsXG5cdGxhYmVsbGVkQnk6ICdhcmlhLWxhYmVsbGVkYnknLFxuXHRvd25zOiAnYXJpYS1vd25zJyxcbn1cblxuLy8gYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50IGlzIHNpbmd1bGFyOyB0aGUgcmVzdCB0YWtlIEVsZW1lbnRbXVxuY29uc3QgYXJpYUlkUmVmZXJlbmNlRWxlbWVudFByb3BlcnRpZXM6IFJlY29yZDxrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzLCBzdHJpbmc+ID0ge1xuXHRhY3RpdmVEZXNjZW5kYW50OiAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jyxcblx0Y29udHJvbHM6ICdhcmlhQ29udHJvbHNFbGVtZW50cycsXG5cdGRlc2NyaWJlZEJ5OiAnYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMnLFxuXHRkZXRhaWxzOiAnYXJpYURldGFpbHNFbGVtZW50cycsXG5cdGVycm9yTWVzc2FnZTogJ2FyaWFFcnJvck1lc3NhZ2VFbGVtZW50cycsXG5cdGZsb3dUbzogJ2FyaWFGbG93VG9FbGVtZW50cycsXG5cdGxhYmVsbGVkQnk6ICdhcmlhTGFiZWxsZWRCeUVsZW1lbnRzJyxcblx0b3duczogJ2FyaWFPd25zRWxlbWVudHMnLFxufVxuXG5mdW5jdGlvbiBzZXRQcm9wZXJ0eShlbGVtZW50OiBFbGVtZW50LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0KGVsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFyaWFQcm9wZXJ0aWVzKGFyaWE6IEFyaWEgfCB1bmRlZmluZWQsIGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcblx0aWYgKCFhcmlhKSByZXR1cm5cblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJpYSkpIHtcblx0XHRpZiAoIShrZXkgaW4gYXJpYUlkUmVmZXJlbmNlQXR0cmlidXRlcykpIHtcblx0XHRcdGNvbnN0IGRvbUtleSA9IGBhcmlhJHtrZXlbMF0udG9VcHBlckNhc2UoKX0ke2tleS5zbGljZSgxKX1gXG5cdFx0XHRzZXRQcm9wZXJ0eShlbGVtZW50LCBkb21LZXksIHZhbHVlKVxuXHRcdFx0Y29udGludWVcblx0XHR9XG5cdFx0aWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXNba2V5IGFzIGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNdKVxuXHRcdFx0Y29udGludWVcblx0XHR9XG5cdFx0aWYgKHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCkge1xuXHRcdFx0Y29uc3QgaWRsS2V5ID0gYXJpYUlkUmVmZXJlbmNlRWxlbWVudFByb3BlcnRpZXNba2V5IGFzIGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNdXG5cdFx0XHRzZXRQcm9wZXJ0eShlbGVtZW50LCBpZGxLZXksIGlkbEtleS5lbmRzV2l0aCgnRWxlbWVudHMnKSA/IFt2YWx1ZV0gOiB2YWx1ZSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGVsZW1lbnQuc2V0QXR0cmlidXRlKGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXNba2V5IGFzIGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXNdLCB2YWx1ZSlcblx0fVxufVxuIiwiaW1wb3J0IHsgRWxlbWVudE9uSGFuZGxlcnMgfSBmcm9tICdAcm9vdGVkL2V2ZW50cydcblxuaW1wb3J0IHsgdHlwZSBBcmlhLCBidWlsZEFyaWFQcm9wZXJ0aWVzIH0gZnJvbSAnLi9hcmlhLm10cydcbmltcG9ydCB7IENzc0NsYXNzZXMgfSBmcm9tICcuL2NsYXNzZXMubXRzJ1xuXG50eXBlIElmRXF1YWxzPFgsIFksIEEgPSBYLCBCID0gbmV2ZXI+ID0gKDxUPigpID0+IFQgZXh0ZW5kcyBYID8gMSA6IDIpIGV4dGVuZHMgKDxUPigpID0+IFQgZXh0ZW5kcyBZID8gMSA6IDIpID8gQSA6IEJcbnR5cGUgTm9uV3JpdGFibGVLZXlzPFQ+ID0ge1xuXHRbUCBpbiBrZXlvZiBUXS0/OiBJZkVxdWFsczx7IFtRIGluIFBdOiBUW1BdIH0sIHsgLXJlYWRvbmx5IFtRIGluIFBdOiBUW1BdIH0sIG5ldmVyLCBQPlxufVtrZXlvZiBUXVxudHlwZSBGdW5jdGlvbktleXM8VD4gPSB7XG5cdFtQIGluIGtleW9mIFRdOiBOb25OdWxsYWJsZTxUW1BdPiBleHRlbmRzICguLi5hcmd1bWVudHNfOiBuZXZlcltdKSA9PiB1bmtub3duID8gUCA6IG5ldmVyXG59W2tleW9mIFRdXG50eXBlIE9uSGFuZGxlcktleXM8VD4gPSB7IFtQIGluIGtleW9mIFRdOiBQIGV4dGVuZHMgYG9uJHtzdHJpbmd9YCA/IFAgOiBuZXZlciB9W2tleW9mIFRdXG5cbnR5cGUgU2FuaXRpemVkSHRtbFByb3BlcnRpZXM8VEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBPbWl0PFxuXHRURWxlbWVudCxcblx0fCBOb25Xcml0YWJsZUtleXM8VEVsZW1lbnQ+XG5cdHwgRnVuY3Rpb25LZXlzPFRFbGVtZW50PlxuXHR8IEV4Y2x1ZGU8a2V5b2YgQVJJQU1peGluLCAncm9sZSc+XG5cdHwgT25IYW5kbGVyS2V5czxURWxlbWVudD5cblx0fCAnY2hpbGRyZW4nIHwgJ2NsYXNzTmFtZScgfCAnY2xhc3NMaXN0J1xuPlxudHlwZSBIdG1sRWxlbWVudFByb3BlcnRpZXNNYXBwZWQ8VEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD5cblx0PSBQYXJ0aWFsPFNhbml0aXplZEh0bWxQcm9wZXJ0aWVzPFRFbGVtZW50Pj5cblx0JiB7XG5cdFx0Y2hpbGRyZW4/OiBBcnJheTxOb2RlIHwgc3RyaW5nPiB8IE5vZGUgfCBzdHJpbmdcblx0XHRjbGFzc2VzPzogQ3NzQ2xhc3Nlc1xuXHRcdGFyaWE/OiBBcmlhXG5cdFx0b24/OiBFbGVtZW50T25IYW5kbGVyczxURWxlbWVudD5cblx0fVxuXG50eXBlIEh0bWxFbGVtZW50UHJvcGVydGllczxLRWxlbWVudCBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD5cblx0PSBIdG1sRWxlbWVudFByb3BlcnRpZXNNYXBwZWQ8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XT5cblxuZnVuY3Rpb24gYnVpbGRPbkhhbmRsZXJzPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuXHRvbjogRWxlbWVudE9uSGFuZGxlcnM8VEVsZW1lbnQ+IHwgdW5kZWZpbmVkLFxuXHRlbGVtZW50OiBURWxlbWVudCxcblx0c2lnbmFsOiBBYm9ydFNpZ25hbCxcbik6IHZvaWQge1xuXHRpZiAoIW9uKSByZXR1cm5cblx0Zm9yIChjb25zdCBba2V5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyhvbikpIHtcblx0XHRpZiAoIWhhbmRsZXIpIGNvbnRpbnVlXG5cdFx0ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0a2V5LFxuXG5cdFx0XHRldmVudCA9PiB2b2lkIChoYW5kbGVyIGFzIChldmVudD86IEV2ZW50KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikoZXZlbnQpLFxuXHRcdFx0c2lnbmFsID8geyBzaWduYWwgfSA6IHVuZGVmaW5lZCxcblx0XHQpXG5cdH1cbn1cblxuZnVuY3Rpb24gYnVpbGRDbGFzc0xpc3QoY2xhc3NlczogQ3NzQ2xhc3NlcyB8IHVuZGVmaW5lZCkge1xuXHRpZiAoY2xhc3NlcyA9PT0gbnVsbCB8fCBjbGFzc2VzID09PSB1bmRlZmluZWQpIHJldHVybiB7fVxuXHRpZiAoQXJyYXkuaXNBcnJheShjbGFzc2VzKSkgcmV0dXJuIHsgY2xhc3NOYW1lOiBjbGFzc2VzLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykgfVxuXG5cdHJldHVybiB7IGNsYXNzTmFtZTogU3RyaW5nKGNsYXNzZXMpIH1cbn1cblxuZXhwb3J0IHR5cGUgRWxlbWVudENyZWF0b3IgPSAoa2V5OiBzdHJpbmcpID0+IEhUTUxFbGVtZW50XG5leHBvcnQgdHlwZSBFbGVtZW50RmFjdG9yeSA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUVsZW1lbnRGYWN0b3J5PlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGYWN0b3J5KGNvbnN0cnVjdEVsZW1lbnQ6IEVsZW1lbnRDcmVhdG9yLCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IEhUTUwgZWxlbWVudC4gVGhlIGVsZW1lbnQgaXMgKipub3QqKiBhcHBlbmRlZCB0byB0aGVcblx0ICogZG9jdW1lbnQgYXV0b21hdGljYWxseS5cblx0ICpcblx0ICogKipgY2xhc3Nlc2AqKiDigJQgYWNjZXB0cyBhIHNpbmdsZSBjbGFzcyBzdHJpbmcgb3IgYSB7QGxpbmsgQ3NzQ2xhc3Nlc30gYXJyYXk7XG5cdCAqIGZhbHN5IGVudHJpZXMgYXJlIGZpbHRlcmVkIG91dCBhdXRvbWF0aWNhbGx5LlxuXHQgKlxuXHQgKiAqKkRPTSBwcm9wZXJ0eSBuYW1lcyoqIOKAlCBvdGhlciBwcm9wZXJ0aWVzIGFyZSBzZXQgdmlhIGBPYmplY3QuYXNzaWduYCBhbmRcblx0ICogbXVzdCB1c2UgRE9NIHByb3BlcnR5IG5hbWVzLCBub3QgSFRNTCBhdHRyaWJ1dGUgbmFtZXM6XG5cdCAqIHwgSFRNTCBhdHRyaWJ1dGUgfCBET00gcHJvcGVydHkgfFxuXHQgKiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXxcblx0ICogfCBgZm9yYCAgICAgICAgICB8IGBodG1sRm9yYCAgICB8XG5cdCAqIHwgYHJlYWRvbmx5YCAgICAgfCBgcmVhZE9ubHlgICAgfFxuXHQgKlxuXHQgKiAqKkNoaWxkcmVuKiog4oCUIHBhc3MgYSBzaW5nbGUgYE5vZGVgIG9yIGFuIGFycmF5IG9mIGBOb2RlYHMgdmlhIHRoZVxuXHQgKiBgY2hpbGRyZW5gIHByb3BlcnR5OyB0aGV5IGFyZSBhcHBlbmRlZCBpbiBvcmRlci5cblx0ICpcblx0ICogKipFdmVudCBsaXN0ZW5lcnMqKiDigJQgdXNlIHRoZSBgb25gIHByb3Agd2l0aCBhbiBvYmplY3Qgb2YgZXZlbnQgaGFuZGxlcnMuXG5cdCAqIExpc3RlbmVycyBhcmUgYXV0b21hdGljYWxseSByZW1vdmVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bm1vdW50cy5cblx0ICpcblx0ICogKipBUklBKiog4oCUIHVzZSB0aGUgYGFyaWFgIHByb3AgZm9yIEFSSUEgYXR0cmlidXRlcy4gQWNjZXB0cyBzdHJpbmcgSURzIG9yXG5cdCAqIGBFbGVtZW50YCByZWZlcmVuY2VzIGZvciBJREwgcmVmbGVjdGlvbiBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZXhhbXBsZVxuXHQgKiBgYGB0c1xuXHQgKiBjb25zdCBkaXYgPSBjcmVhdGUoJ2RpdicsIHtcblx0ICogICBjbGFzc2VzOiAnY2FyZCcsXG5cdCAqICAgYXJpYTogeyBsYWJlbDogJ0NhcmQnLCBsYWJlbGxlZEJ5OiBoZWFkaW5nRWwgfSxcblx0ICogICBjaGlsZHJlbjogW1xuXHQgKiAgICAgY3JlYXRlKCdoMicsIHsgdGV4dENvbnRlbnQ6ICdUaXRsZScgfSksXG5cdCAqICAgICBjcmVhdGUoJ3AnLCAgeyB0ZXh0Q29udGVudDogJ0JvZHknICB9KSxcblx0ICogICBdLFxuXHQgKiB9KVxuXHQgKiBgYGBcblx0ICovXG5cdGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8S0VsZW1lbnQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KHRhZzogS0VsZW1lbnQsIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLRWxlbWVudD4+KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XSB7XG5cdFx0Y29uc3QgeyBhcmlhLCBjaGlsZHJlbiwgY2xhc3Nlcywgb24sIC4uLmFzc2lnbmFibGVQcm9wZXJ0aWVzIH0gPSAocHJvcGVydGllcyA/PyB7fSlcblx0XHRjb25zdCBkZWZpbmVkUHJvcGVydGllcyA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Rcblx0XHRcdC5lbnRyaWVzKGFzc2lnbmFibGVQcm9wZXJ0aWVzKVxuXHRcdFx0LmZpbHRlcigoWywgdl0pID0+IHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsKSxcblx0XHQpXG5cdFx0Y29uc3QgbmV3RWxlbWVudCA9IE9iamVjdC5hc3NpZ24oXG5cdFx0XHRjb25zdHJ1Y3RFbGVtZW50KHRhZykgYXMgSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XSxcblx0XHRcdGRlZmluZWRQcm9wZXJ0aWVzLFxuXHRcdFx0YnVpbGRDbGFzc0xpc3QoY2xhc3NlcyksXG5cdFx0KVxuXG5cdFx0YnVpbGRBcmlhUHJvcGVydGllcyhhcmlhLCBuZXdFbGVtZW50KVxuXHRcdGJ1aWxkT25IYW5kbGVycyhvbiwgbmV3RWxlbWVudCwgc2lnbmFsKVxuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG5cdFx0XHRcdG5ld0VsZW1lbnQuYXBwZW5kKGNoaWxkKVxuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNlIGlmIChjaGlsZHJlbikge1xuXHRcdFx0bmV3RWxlbWVudC5hcHBlbmQoY2hpbGRyZW4pXG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ld0VsZW1lbnQgYXMgSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XVxuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQuYmluZCh1bmRlZmluZWQhKVxufVxuIl19
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzc2VzLm10cyIsIi4uL3NyYy9hcmlhLm10cyIsIi4uL3NyYy9lbGVtZW50LWZhY3RvcnkubXRzIl0sIm5hbWVzIjpbImNsYXNzZXMiLCJjaGlsZHJlbiIsImFyaWEiLCJvbiIsInN0eWxlIiwibmV3RWxlbWVudCIsImNsYXNzTmFtZSJdLCJtYXBwaW5ncyI6IjtBQTZDTyxTQUFTLFFBQUEsQ0FBUyxTQUFBLEVBQXFCLE9BQUEsR0FBc0MsSUFBQSxFQUFnQjtBQUNuRyxFQUFBLElBQUksWUFBWSxJQUFBLEVBQU07QUFDdEIsRUFBQSxPQUFPLFNBQUE7QUFDUjs7O0FDcEJBLElBQU0seUJBQUEsR0FBNkU7QUFBQSxFQUNsRixnQkFBQSxFQUFrQix1QkFBQTtBQUFBLEVBQ2xCLFFBQUEsRUFBVSxlQUFBO0FBQUEsRUFDVixXQUFBLEVBQWEsa0JBQUE7QUFBQSxFQUNiLE9BQUEsRUFBUyxjQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsbUJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxhQUFBO0FBQUEsRUFDUixVQUFBLEVBQVksaUJBQUE7QUFBQSxFQUNaLElBQUEsRUFBTTtBQUNQLENBQUE7QUFHQSxJQUFNLGdDQUFBLEdBQW9GO0FBQUEsRUFDekYsZ0JBQUEsRUFBa0IsNkJBQUE7QUFBQSxFQUNsQixRQUFBLEVBQVUsc0JBQUE7QUFBQSxFQUNWLFdBQUEsRUFBYSx5QkFBQTtBQUFBLEVBQ2IsT0FBQSxFQUFTLHFCQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsMEJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxvQkFBQTtBQUFBLEVBQ1IsVUFBQSxFQUFZLHdCQUFBO0FBQUEsRUFDWixJQUFBLEVBQU07QUFDUCxDQUFBO0FBRUEsU0FBUyxXQUFBLENBQVksT0FBQSxFQUFrQixHQUFBLEVBQWEsS0FBQSxFQUFzQjtBQUN6RSxFQUFDLE9BQUEsQ0FBK0MsR0FBRyxDQUFBLEdBQUksS0FBQTtBQUN4RDtBQUVPLFNBQVMsbUJBQUEsQ0FBb0IsTUFBd0IsT0FB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QyxDQUFBO0FBQUEsTUFDM0M7QUFBQSxJQUNEO0FBRUEsSUFBQSxJQUFJLEtBQUEsRUFBTyxNQUFBLENBQU8sTUFBQSxDQUFPLFVBQUEsQ0FBVyxPQUFPLEtBQUssQ0FBQTtBQUNoRCxJQUFBLG1CQUFBLENBQW9CLE1BQTBCLFVBQVUsQ0FBQTtBQUN4RCxJQUFBLGVBQUEsQ0FBZ0IsRUFBQSxFQUFrRCxZQUFZLE1BQU0sQ0FBQTtBQUNwRixJQUFBLGNBQUEsQ0FBZSxZQUFZLFFBQTRELENBQUE7QUFFdkYsSUFBQSxPQUFPLFVBQUE7QUFBQSxFQUNSO0FBRUEsRUFBQSxPQUFPLGFBQUE7QUFDUjtBQUVBLFNBQVMsY0FBQSxDQUFlLFNBQWtCLFFBQUEsRUFBa0U7QUFDM0csRUFBQSxJQUFJLEtBQUEsQ0FBTSxPQUFBLENBQVEsUUFBUSxDQUFBLEVBQUc7QUFDNUIsSUFBQSxLQUFBLE1BQVcsU0FBUyxRQUFBLEVBQVU7QUFDN0IsTUFBQSxPQUFBLENBQVEsT0FBTyxLQUFLLENBQUE7QUFBQSxJQUNyQjtBQUFBLEVBQ0QsV0FDUyxRQUFBLEVBQVU7QUFDbEIsSUFBQSxPQUFBLENBQVEsT0FBTyxRQUFRLENBQUE7QUFBQSxFQUN4QjtBQUNEIiwiZmlsZSI6ImVsZW1lbnRzLm1qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzaW5nbGUgQ1NTIGNsYXNzIHZhbHVlLiBGYWxzeSB2YXJpYW50cyAoYHVuZGVmaW5lZGAgYW5kIGBudWxsYCkgYXJlXG4gKiBhdXRvbWF0aWNhbGx5IGZpbHRlcmVkIG91dCB3aGVuIGJ1aWxkaW5nIGEgY2xhc3MgbGlzdCwgc28gY29uZGl0aW9uYWxcbiAqIGNsYXNzZXMgY2FuIGJlIGV4cHJlc3NlZCB3aXRob3V0IGV4cGxpY2l0IGd1YXJkcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ3NzQ2xhc3MgPSBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbi8qKlxuICogT25lIG9yIG1vcmUgQ1NTIGNsYXNzIHZhbHVlcyBhY2NlcHRlZCBieSB0aGUgYGNsYXNzZXNgIHByb3Agb2YgZXZlcnkgSFRNTFxuICogZWxlbWVudCBjcmVhdGVkIHZpYSBgY3JlYXRlKClgIG9yIGBhcHBlbmQoKWAuXG4gKlxuICogLSBBIHNpbmdsZSBzdHJpbmcgaXMgdXNlZCBhcy1pcy5cbiAqIC0gQW4gYXJyYXkgb2Yge0BsaW5rIENzc0NsYXNzfSB2YWx1ZXMgaXMgam9pbmVkIHdpdGggc3BhY2VzIGFmdGVyIGZhbHN5XG4gKiAgIGVudHJpZXMgYXJlIHJlbW92ZWQuXG4gKlxuICogQHNlZSB7QGxpbmsgY3NzQ2xhc3N9IGZvciBjb21wb3NpbmcgY29uZGl0aW9uYWwgY2xhc3MgbmFtZXMuXG4gKi9cbmV4cG9ydCB0eXBlIENzc0NsYXNzZXMgPSBBcnJheTxDc3NDbGFzcz4gfCBDc3NDbGFzc1xuXG4vKipcbiAqIFJldHVybnMgYGNsYXNzTmFtZWAgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1dGh5LCBvdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gKlxuICogRGVzaWduZWQgdG8gY29tcG9zZSBjbGVhbmx5IHdpdGgge0BsaW5rIENzc0NsYXNzZXN9OiBmYWxzeSB2YWx1ZXMgYXJlXG4gKiBmaWx0ZXJlZCBvdXQgYXV0b21hdGljYWxseSwgc28gc3RhdGljIGFuZCBjb25kaXRpb25hbCBjbGFzc2VzIGNhbiBiZSBtaXhlZFxuICogaW4gYSBzaW5nbGUgYXJyYXkgd2l0aG91dCBicmFuY2hpbmcuXG4gKlxuICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBDU1MgY2xhc3MgdG8gYXBwbHkuXG4gKiBAcGFyYW0gdmlzaWJsZSAtIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgdGhlIGNsYXNzIGlzIHJldHVybmVkOyBhbnkgb3RoZXJcbiAqICAgdmFsdWUgcHJvZHVjZXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBhcHBlbmQoJ2J1dHRvbicsIHtcbiAqICAgY2xhc3NlczogW1xuICogICAgICdidG4nLFxuICogICAgIGNzc0NsYXNzKCdidG4tLWFjdGl2ZScsIGlzQWN0aXZlKSxcbiAqICAgICBjc3NDbGFzcygnYnRuLS1kaXNhYmxlZCcsIGlzRGlzYWJsZWQpLFxuICogICBdLFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcyk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcywgdmlzaWJsZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogQ3NzQ2xhc3MsIHZpc2libGU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gdHJ1ZSk6IENzc0NsYXNzIHtcblx0aWYgKHZpc2libGUgIT09IHRydWUpIHJldHVyblxuXHRyZXR1cm4gY2xhc3NOYW1lXG59XG4iLCJ0eXBlIFN0cmlwQXJpYTxTIGV4dGVuZHMgc3RyaW5nPiA9IFMgZXh0ZW5kcyBgYXJpYSR7aW5mZXIgUmVzdH1gID8gVW5jYXBpdGFsaXplPFJlc3Q+IDogU1xuXG50eXBlIEFyaWFTdHJpbmdQcm9wZXJ0aWVzID0ge1xuXHRbUCBpbiBrZXlvZiBBUklBTWl4aW4gYXMgQVJJQU1peGluW1BdIGV4dGVuZHMgc3RyaW5nIHwgbnVsbCA/IFN0cmlwQXJpYTxzdHJpbmcgJiBQPiA6IG5ldmVyXT86IHN0cmluZyB8IG51bGxcbn1cblxuLy8gUHJvcGVydGllcyB0aGF0IG9ubHkgZXhpc3QgYXMgRWxlbWVudFtdIGluIEFSSUFNaXhpbiDigJQgYWNjZXB0cyBhIHN0cmluZyBJRCBvciBhbiBFbGVtZW50IGRpcmVjdGx5XG50eXBlIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXMgPSB7XG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQnXX0gKi9cblx0YWN0aXZlRGVzY2VuZGFudD86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhQ29udHJvbHNFbGVtZW50cyddfSAqL1xuXHRjb250cm9scz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyddfSAqL1xuXHRkZXNjcmliZWRCeT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRGV0YWlsc0VsZW1lbnRzJ119ICovXG5cdGRldGFpbHM/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzJ119ICovXG5cdGVycm9yTWVzc2FnZT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRmxvd1RvRWxlbWVudHMnXX0gKi9cblx0Zmxvd1RvPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnXX0gKi9cblx0bGFiZWxsZWRCeT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhT3duc0VsZW1lbnRzJ119ICovXG5cdG93bnM/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBBcmlhID0gQXJpYVN0cmluZ1Byb3BlcnRpZXMgJiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXG5cbmNvbnN0IGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXM6IFJlY29yZDxrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzLCBzdHJpbmc+ID0ge1xuXHRhY3RpdmVEZXNjZW5kYW50OiAnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyxcblx0Y29udHJvbHM6ICdhcmlhLWNvbnRyb2xzJyxcblx0ZGVzY3JpYmVkQnk6ICdhcmlhLWRlc2NyaWJlZGJ5Jyxcblx0ZGV0YWlsczogJ2FyaWEtZGV0YWlscycsXG5cdGVycm9yTWVzc2FnZTogJ2FyaWEtZXJyb3JtZXNzYWdlJyxcblx0Zmxvd1RvOiAnYXJpYS1mbG93dG8nLFxuXHRsYWJlbGxlZEJ5OiAnYXJpYS1sYWJlbGxlZGJ5Jyxcblx0b3duczogJ2FyaWEtb3ducycsXG59XG5cbi8vIGFyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCBpcyBzaW5ndWxhcjsgdGhlIHJlc3QgdGFrZSBFbGVtZW50W11cbmNvbnN0IGFyaWFJZFJlZmVyZW5jZUVsZW1lbnRQcm9wZXJ0aWVzOiBSZWNvcmQ8a2V5b2YgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllcywgc3RyaW5nPiA9IHtcblx0YWN0aXZlRGVzY2VuZGFudDogJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcsXG5cdGNvbnRyb2xzOiAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuXHRkZXNjcmliZWRCeTogJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcblx0ZGV0YWlsczogJ2FyaWFEZXRhaWxzRWxlbWVudHMnLFxuXHRlcnJvck1lc3NhZ2U6ICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuXHRmbG93VG86ICdhcmlhRmxvd1RvRWxlbWVudHMnLFxuXHRsYWJlbGxlZEJ5OiAnYXJpYUxhYmVsbGVkQnlFbGVtZW50cycsXG5cdG93bnM6ICdhcmlhT3duc0VsZW1lbnRzJyxcbn1cblxuZnVuY3Rpb24gc2V0UHJvcGVydHkoZWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG5cdChlbGVtZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPSB2YWx1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBcmlhUHJvcGVydGllcyhhcmlhOiBBcmlhIHwgdW5kZWZpbmVkLCBlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG5cdGlmICghYXJpYSkgcmV0dXJuXG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyaWEpKSB7XG5cdFx0aWYgKCEoa2V5IGluIGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXMpKSB7XG5cdFx0XHRjb25zdCBkb21LZXkgPSBgYXJpYSR7a2V5WzBdLnRvVXBwZXJDYXNlKCl9JHtrZXkuc2xpY2UoMSl9YFxuXHRcdFx0c2V0UHJvcGVydHkoZWxlbWVudCwgZG9tS2V5LCB2YWx1ZSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IGlkbEtleSA9IGFyaWFJZFJlZmVyZW5jZUVsZW1lbnRQcm9wZXJ0aWVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXVxuXHRcdFx0c2V0UHJvcGVydHkoZWxlbWVudCwgaWRsS2V5LCBpZGxLZXkuZW5kc1dpdGgoJ0VsZW1lbnRzJykgPyBbdmFsdWVdIDogdmFsdWUpXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXSwgdmFsdWUpXG5cdH1cbn1cbiIsImltcG9ydCB7IEVsZW1lbnRPbkhhbmRsZXJzIH0gZnJvbSAnQHJvb3RlZC9ldmVudHMnXG5cbmltcG9ydCB7IHR5cGUgQXJpYSwgYnVpbGRBcmlhUHJvcGVydGllcyB9IGZyb20gJy4vYXJpYS5tdHMnXG5pbXBvcnQgeyBDc3NDbGFzc2VzIH0gZnJvbSAnLi9jbGFzc2VzLm10cydcbmltcG9ydCB7IEh0bWxFbGVtZW50UHJvcGVydGllcyB9IGZyb20gJy4vaHRtbC1lbGVtZW50LXByb3BlcnRpZXMubXRzJ1xuaW1wb3J0IHsgU3ZnRWxlbWVudFByb3BlcnRpZXMsIFN2Z1RhZ0VsZW1lbnQsIFN2Z1RhZ05hbWUgfSBmcm9tICcuL3N2Zy1lbGVtZW50LXByb3BlcnRpZXMubXRzJ1xuXG5mdW5jdGlvbiBidWlsZE9uSGFuZGxlcnM8VEVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50Pihcblx0b246IEVsZW1lbnRPbkhhbmRsZXJzPFRFbGVtZW50PiB8IHVuZGVmaW5lZCxcblx0ZWxlbWVudDogVEVsZW1lbnQsXG5cdHNpZ25hbDogQWJvcnRTaWduYWwsXG4pOiB2b2lkIHtcblx0aWYgKCFvbikgcmV0dXJuXG5cdGZvciAoY29uc3QgW2tleSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXMob24pKSB7XG5cdFx0aWYgKCFoYW5kbGVyKSBjb250aW51ZVxuXHRcdGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdGtleSxcblx0XHRcdGV2ZW50ID0+IHZvaWQgKGhhbmRsZXIgYXMgKGV2ZW50PzogRXZlbnQpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KShldmVudCksXG5cdFx0XHRzaWduYWwgPyB7IHNpZ25hbCB9IDogdW5kZWZpbmVkLFxuXHRcdClcblx0fVxufVxuXG5mdW5jdGlvbiBidWlsZENsYXNzTGlzdChjbGFzc2VzOiBDc3NDbGFzc2VzIHwgdW5kZWZpbmVkKSB7XG5cdGlmIChjbGFzc2VzID09PSBudWxsIHx8IGNsYXNzZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHt9XG5cdGlmIChBcnJheS5pc0FycmF5KGNsYXNzZXMpKSByZXR1cm4geyBjbGFzc05hbWU6IGNsYXNzZXMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB9XG5cblx0cmV0dXJuIHsgY2xhc3NOYW1lOiBTdHJpbmcoY2xhc3NlcykgfVxufVxuXG5mdW5jdGlvbiBpc1dyaXRhYmxlRG9tUHJvcGVydHkoZWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcblx0bGV0IHByb3RvOiBvYmplY3QgfCBudWxsID0gZWxlbWVudFxuXHR3aGlsZSAocHJvdG8pIHtcblx0XHRjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywga2V5KVxuXHRcdGlmIChkZXNjKSByZXR1cm4gISEoZGVzYy53cml0YWJsZSB8fCBkZXNjLnNldClcblx0XHRwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykgYXMgb2JqZWN0IHwgbnVsbFxuXHR9XG5cdHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgdHlwZSBFbGVtZW50Q3JlYXRvciA9IChrZXk6IHN0cmluZywgbnM/OiBzdHJpbmcpID0+IEVsZW1lbnRcblxuLyoqXG4gKiBUaGUgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0eXBlIHJldHVybmVkIGJ5IHtAbGluayBjcmVhdGVFbGVtZW50RmFjdG9yeX0uXG4gKiBBY2NlcHRzIEhUTUwgb3IgU1ZHIHRhZyBuYW1lcyBhbmQgcmV0dXJucyB0aGUgbWF0Y2hpbmcgZWxlbWVudCB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRDcmVhdG9yRnVuY3Rpb24ge1xuXHQodGFnOiAnc3ZnJywgcHJvcGVydGllcz86IFN2Z0VsZW1lbnRQcm9wZXJ0aWVzPCdzdmcnPik6IFNWR1NWR0VsZW1lbnRcblx0PEsgZXh0ZW5kcyBFeGNsdWRlPFN2Z1RhZ05hbWUsICdzdmcnPj4odGFnOiBLLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8Sz4pOiBTdmdUYWdFbGVtZW50PEs+XG5cdDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPih0YWc6IEssIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLPj4pOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS11cbn1cblxuZXhwb3J0IHR5cGUgRWxlbWVudEZhY3RvcnkgPSBFbGVtZW50Q3JlYXRvckZ1bmN0aW9uXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudEZhY3RvcnkoY29uc3RydWN0RWxlbWVudDogRWxlbWVudENyZWF0b3IsIHNpZ25hbDogQWJvcnRTaWduYWwpOiBFbGVtZW50Q3JlYXRvckZ1bmN0aW9uIHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgSFRNTCBvciBTVkcgZWxlbWVudC4gVGhlIGVsZW1lbnQgaXMgKipub3QqKiBhcHBlbmRlZCB0byB0aGVcblx0ICogZG9jdW1lbnQgYXV0b21hdGljYWxseS5cblx0ICpcblx0ICogKipIVE1MIGVsZW1lbnRzKiog4oCUIHBhc3MgYW55IHRhZyBmcm9tIGBIVE1MRWxlbWVudFRhZ05hbWVNYXBgOlxuXHQgKiBgYGB0c1xuXHQgKiBlbGVtZW50KCdkaXYnLCB7IGNsYXNzZXM6ICdjYXJkJywgY2hpbGRyZW46IFsuLi5dIH0pXG5cdCAqIGBgYFxuXHQgKlxuXHQgKiAqKlNWRyBlbGVtZW50cyoqIOKAlCB1c2UgYCdzdmcnYCBmb3IgdGhlIHJvb3QgZWxlbWVudCwgb3IgcHJlZml4IG90aGVyIFNWR1xuXHQgKiB0YWdzIHdpdGggYCdzdmc6J2AgdG8gYXZvaWQgY29sbGlzaW9ucyB3aXRoIHNhbWUtbmFtZWQgSFRNTCB0YWdzOlxuXHQgKiBgYGB0c1xuXHQgKiBlbGVtZW50KCdzdmcnLCB7IHZpZXdCb3g6ICcwIDAgMjQgMjQnLCBjaGlsZHJlbjogZWxlbWVudCgnc3ZnOnVzZScsIHsgaHJlZjogdXJsIH0pIH0pXG5cdCAqIGBgYFxuXHQgKlxuXHQgKiAqKmBjbGFzc2VzYCoqIOKAlCBhY2NlcHRzIGEgc2luZ2xlIGNsYXNzIHN0cmluZyBvciBhIHtAbGluayBDc3NDbGFzc2VzfSBhcnJheTtcblx0ICogZmFsc3kgZW50cmllcyBhcmUgZmlsdGVyZWQgb3V0IGF1dG9tYXRpY2FsbHkuXG5cdCAqXG5cdCAqICoqRE9NIHByb3BlcnR5IG5hbWVzKiog4oCUIGZvciBIVE1MIGVsZW1lbnRzLCBvdGhlciBwcm9wZXJ0aWVzIGFyZSBzZXQgdmlhXG5cdCAqIGBPYmplY3QuYXNzaWduYCBhbmQgbXVzdCB1c2UgRE9NIHByb3BlcnR5IG5hbWVzLCBub3QgSFRNTCBhdHRyaWJ1dGUgbmFtZXM6XG5cdCAqIHwgSFRNTCBhdHRyaWJ1dGUgfCBET00gcHJvcGVydHkgfFxuXHQgKiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXxcblx0ICogfCBgZm9yYCAgICAgICAgICB8IGBodG1sRm9yYCAgICB8XG5cdCAqIHwgYHJlYWRvbmx5YCAgICAgfCBgcmVhZE9ubHlgICAgfFxuXHQgKlxuXHQgKiBGb3IgU1ZHIGVsZW1lbnRzLCB3cml0YWJsZSBET00gcHJvcGVydGllcyBhcmUgc2V0IGRpcmVjdGx5OyBhbnl0aGluZyBlbHNlXG5cdCAqIChlLmcuIGB2aWV3Qm94YCwgYGhyZWZgKSBmYWxscyBiYWNrIHRvIGBzZXRBdHRyaWJ1dGVgIGF1dG9tYXRpY2FsbHkuXG5cdCAqXG5cdCAqICoqQ2hpbGRyZW4qKiDigJQgcGFzcyBhIHNpbmdsZSBgTm9kZWAgb3IgYW4gYXJyYXkgb2YgYE5vZGVgcyB2aWEgdGhlXG5cdCAqIGBjaGlsZHJlbmAgcHJvcGVydHk7IHRoZXkgYXJlIGFwcGVuZGVkIGluIG9yZGVyLlxuXHQgKlxuXHQgKiAqKkV2ZW50IGxpc3RlbmVycyoqIOKAlCB1c2UgdGhlIGBvbmAgcHJvcCB3aXRoIGFuIG9iamVjdCBvZiBldmVudCBoYW5kbGVycy5cblx0ICogTGlzdGVuZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiB0aGUgY29tcG9uZW50IHVubW91bnRzLlxuXHQgKlxuXHQgKiAqKkFSSUEqKiDigJQgdXNlIHRoZSBgYXJpYWAgcHJvcCBmb3IgQVJJQSBhdHRyaWJ1dGVzLiBBY2NlcHRzIHN0cmluZyBJRHMgb3Jcblx0ICogYEVsZW1lbnRgIHJlZmVyZW5jZXMgZm9yIElETCByZWZsZWN0aW9uIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqIGBgYHRzXG5cdCAqIGNvbnN0IGRpdiA9IGVsZW1lbnQoJ2RpdicsIHtcblx0ICogICBjbGFzc2VzOiAnY2FyZCcsXG5cdCAqICAgYXJpYTogeyBsYWJlbDogJ0NhcmQnLCBsYWJlbGxlZEJ5OiBoZWFkaW5nRWwgfSxcblx0ICogICBjaGlsZHJlbjogW1xuXHQgKiAgICAgZWxlbWVudCgnaDInLCB7IHRleHRDb250ZW50OiAnVGl0bGUnIH0pLFxuXHQgKiAgICAgZWxlbWVudCgncCcsICB7IHRleHRDb250ZW50OiAnQm9keScgIH0pLFxuXHQgKiAgIF0sXG5cdCAqIH0pXG5cdCAqXG5cdCAqIGNvbnN0IGljb24gPSBlbGVtZW50KCdzdmcnLCB7XG5cdCAqICAgdmlld0JveDogJzAgMCAyNCAyNCcsXG5cdCAqICAgYXJpYTogeyBoaWRkZW46ICd0cnVlJyB9LFxuXHQgKiAgIGNoaWxkcmVuOiBlbGVtZW50KCdzdmc6dXNlJywgeyBocmVmOiBzcHJpdGVVcmwgfSksXG5cdCAqIH0pXG5cdCAqIGBgYFxuXHQgKi9cblx0ZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWc6ICdzdmcnLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8J3N2Zyc+KTogU1ZHU1ZHRWxlbWVudFxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50PEsgZXh0ZW5kcyBFeGNsdWRlPFN2Z1RhZ05hbWUsICdzdmcnPj4odGFnOiBLLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8Sz4pOiBTdmdUYWdFbGVtZW50PEs+XG5cdGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8S0VsZW1lbnQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KHRhZzogS0VsZW1lbnQsIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLRWxlbWVudD4+KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XVxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZzogc3RyaW5nLCBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBFbGVtZW50IHtcblx0XHRpZiAodGFnID09PSAnc3ZnJyB8fCB0YWcuc3RhcnRzV2l0aCgnc3ZnOicpKSB7XG5cdFx0XHRjb25zdCBhY3R1YWxUYWcgPSB0YWcgPT09ICdzdmcnID8gJ3N2ZycgOiB0YWcuc2xpY2UoNClcblx0XHRcdGNvbnN0IHsgY2xhc3NlcywgY2hpbGRyZW4sIGFyaWEsIG9uLCBzdHlsZSwgLi4uYXR0cmlidXRlcyB9ID0gcHJvcGVydGllcyA/PyB7fVxuXHRcdFx0Y29uc3QgbmV3RWxlbWVudCA9IGNvbnN0cnVjdEVsZW1lbnQoYWN0dWFsVGFnLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKSBhcyBTVkdFbGVtZW50XG5cblx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG5cdFx0XHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSBjb250aW51ZVxuXHRcdFx0XHRpZiAoaXNXcml0YWJsZURvbVByb3BlcnR5KG5ld0VsZW1lbnQsIGtleSkpIHtcblx0XHRcdFx0XHQ7KG5ld0VsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG5cdFx0XHRcdFx0bmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcodmFsdWUpKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHsgY2xhc3NOYW1lIH0gPSBidWlsZENsYXNzTGlzdChjbGFzc2VzIGFzIENzc0NsYXNzZXMgfCB1bmRlZmluZWQpXG5cdFx0XHRpZiAoY2xhc3NOYW1lKSBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbGFzc05hbWUpXG5cblx0XHRcdGlmIChzdHlsZSkgT2JqZWN0LmFzc2lnbihuZXdFbGVtZW50LnN0eWxlLCBzdHlsZSlcblx0XHRcdGJ1aWxkQXJpYVByb3BlcnRpZXMoYXJpYSBhcyBBcmlhIHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50KVxuXHRcdFx0YnVpbGRPbkhhbmRsZXJzKG9uIGFzIEVsZW1lbnRPbkhhbmRsZXJzPEVsZW1lbnQ+IHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50LCBzaWduYWwpXG5cblx0XHRcdGFwcGVuZENoaWxkcmVuKG5ld0VsZW1lbnQsIGNoaWxkcmVuIGFzIEFycmF5PE5vZGUgfCBzdHJpbmc+IHwgTm9kZSB8IHN0cmluZyB8IHVuZGVmaW5lZClcblxuXHRcdFx0cmV0dXJuIG5ld0VsZW1lbnRcblx0XHR9XG5cblx0XHRjb25zdCB7IGFyaWEsIGNoaWxkcmVuLCBjbGFzc2VzLCBvbiwgc3R5bGUsIC4uLmFzc2lnbmFibGVQcm9wZXJ0aWVzIH0gPSBwcm9wZXJ0aWVzID8/IHt9XG5cdFx0Y29uc3QgbmV3RWxlbWVudCA9IGNvbnN0cnVjdEVsZW1lbnQodGFnKSBhcyBIVE1MRWxlbWVudFxuXG5cdFx0Y29uc3QgeyBjbGFzc05hbWUgfSA9IGJ1aWxkQ2xhc3NMaXN0KGNsYXNzZXMgYXMgQ3NzQ2xhc3NlcyB8IHVuZGVmaW5lZClcblx0XHRpZiAoY2xhc3NOYW1lKSBuZXdFbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZVxuXG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXNzaWduYWJsZVByb3BlcnRpZXMpKSB7XG5cdFx0XHRpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgY29udGludWVcblx0XHRcdGlmIChpc1dyaXRhYmxlRG9tUHJvcGVydHkobmV3RWxlbWVudCwga2V5KSkge1xuXHRcdFx0XHQ7KG5ld0VsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcblx0XHRcdFx0bmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcodmFsdWUpKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChzdHlsZSkgT2JqZWN0LmFzc2lnbihuZXdFbGVtZW50LnN0eWxlLCBzdHlsZSlcblx0XHRidWlsZEFyaWFQcm9wZXJ0aWVzKGFyaWEgYXMgQXJpYSB8IHVuZGVmaW5lZCwgbmV3RWxlbWVudClcblx0XHRidWlsZE9uSGFuZGxlcnMob24gYXMgRWxlbWVudE9uSGFuZGxlcnM8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50LCBzaWduYWwpXG5cdFx0YXBwZW5kQ2hpbGRyZW4obmV3RWxlbWVudCwgY2hpbGRyZW4gYXMgQXJyYXk8Tm9kZSB8IHN0cmluZz4gfCBOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKVxuXG5cdFx0cmV0dXJuIG5ld0VsZW1lbnRcblx0fVxuXG5cdHJldHVybiBjcmVhdGVFbGVtZW50IGFzIHVua25vd24gYXMgRWxlbWVudENyZWF0b3JGdW5jdGlvblxufVxuXG5mdW5jdGlvbiBhcHBlbmRDaGlsZHJlbihlbGVtZW50OiBFbGVtZW50LCBjaGlsZHJlbjogQXJyYXk8Tm9kZSB8IHN0cmluZz4gfCBOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcblx0XHRcdGVsZW1lbnQuYXBwZW5kKGNoaWxkKVxuXHRcdH1cblx0fVxuXHRlbHNlIGlmIChjaGlsZHJlbikge1xuXHRcdGVsZW1lbnQuYXBwZW5kKGNoaWxkcmVuKVxuXHR9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rooted/elements",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.6",
|
|
4
4
|
"description": "rooted — html element utilities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
|
@@ -50,11 +50,11 @@
|
|
|
50
50
|
"extract-api": "rooted-development extract-api"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@rooted/events": "1.0.0-alpha.
|
|
53
|
+
"@rooted/events": "1.0.0-alpha.6"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@rooted/development": "workspace:*",
|
|
57
|
-
"@rooted/events": "1.0.0-alpha.
|
|
57
|
+
"@rooted/events": "1.0.0-alpha.6",
|
|
58
58
|
"tsx": "^4.19.0"
|
|
59
59
|
}
|
|
60
60
|
}
|