New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@textbus/core

Package Overview
Dependencies
Maintainers
1
Versions
345
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@textbus/core - npm Package Compare versions

Comparing version 2.0.0-alpha.64 to 2.0.0-alpha.69

2

bundles/foundation/_injection-tokens.d.ts

@@ -37,3 +37,3 @@ import { InjectionToken } from '@tanbo/di';

*/
export declare const COMPONENT_LIST: InjectionToken<Component<any, any>[]>;
export declare const COMPONENT_LIST: InjectionToken<Component<ComponentInstance<import("../model/component").ComponentMethods, any>, any>[]>;
/**

@@ -40,0 +40,0 @@ * @internal Textbus 格式列表注入 token

@@ -1,2 +0,3 @@

import { Shortcut } from '../model/_api';
import { Injector } from '@tanbo/di';
import { Component, Shortcut } from '../model/_api';
import { Commander } from './commander';

@@ -14,6 +15,9 @@ import { Selection } from './selection';

export declare class Keyboard {
private components;
private commander;
private injector;
private selection;
private shortcutList;
constructor(commander: Commander, selection: Selection);
private markdownMatchers;
constructor(components: Component[], commander: Commander, injector: Injector, selection: Selection);
/**

@@ -20,0 +24,0 @@ * 调用快捷键

@@ -10,5 +10,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

};
import { Injectable } from '@tanbo/di';
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
import { Inject, Injectable, Injector } from '@tanbo/di';
import { Commander } from './commander';
import { Selection } from './selection';
import { COMPONENT_LIST } from './_injection-tokens';
/**

@@ -18,3 +22,9 @@ * Textbus 键盘管理

let Keyboard = class Keyboard {
constructor(commander, selection) {
constructor(components, commander, injector, selection) {
Object.defineProperty(this, "components", {
enumerable: true,
configurable: true,
writable: true,
value: components
});
Object.defineProperty(this, "commander", {

@@ -26,2 +36,8 @@ enumerable: true,

});
Object.defineProperty(this, "injector", {
enumerable: true,
configurable: true,
writable: true,
value: injector
});
Object.defineProperty(this, "selection", {

@@ -39,2 +55,16 @@ enumerable: true,

});
Object.defineProperty(this, "markdownMatchers", {
enumerable: true,
configurable: true,
writable: true,
value: []
});
components.forEach(i => {
if (i.markdownSupport) {
this.markdownMatchers.push({
markdownInterceptor: i.markdownSupport,
component: i
});
}
});
}

@@ -48,2 +78,61 @@ /**

const reg = /\w+/.test(key) ? new RegExp(`^${key}$`, 'i') : new RegExp(`^[${key.replace(/([-\\])/g, '\\$1')}]$`, 'i');
const commonAncestorSlot = this.selection.commonAncestorSlot;
if (!keymapState.ctrlKey && !keymapState.shiftKey && !keymapState.altKey && commonAncestorSlot === this.selection.startSlot && commonAncestorSlot === this.selection.endSlot) {
for (const item of this.markdownMatchers) {
const markdownConfig = item.markdownInterceptor;
const matchKey = Array.isArray(markdownConfig.key) ?
markdownConfig.key.some(k => reg.test(k)) :
reg.test(markdownConfig.key);
if (matchKey) {
const activeSlotContents = commonAncestorSlot.sliceContent();
let content = activeSlotContents[0];
if (activeSlotContents.length > 1 || typeof content !== 'string') {
continue;
}
content = content.replace(/\n$/, '');
let matchContent = false;
if (markdownConfig.match instanceof RegExp) {
matchContent = markdownConfig.match.test(content);
}
else if (typeof markdownConfig.match === 'function') {
matchContent = markdownConfig.match(content);
}
if (matchContent) {
const initData = markdownConfig.generateInitData(content);
const newInstance = item.component.createInstance(this.injector, initData);
if (commonAncestorSlot.schema.includes(newInstance.type)) {
this.selection.setStart(commonAncestorSlot, 0);
this.selection.setEnd(commonAncestorSlot, commonAncestorSlot.length);
this.commander.delete();
this.commander.insert(newInstance);
}
else {
const parentComponent = commonAncestorSlot.parent;
if (parentComponent && parentComponent.slots.length > 1) {
break;
}
const parentSlot = parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent.parent;
if (!parentSlot) {
break;
}
const index = parentSlot.indexOf(parentComponent);
this.selection.setStart(parentSlot, index);
this.selection.setEnd(parentSlot, index + 1);
this.commander.delete();
this.commander.insert(newInstance);
}
const newSlot = newInstance.slots.first;
if (newSlot) {
this.selection.setPosition(newSlot, 0);
return true;
}
else if (newInstance.parent) {
const index = newInstance.parent.indexOf(newInstance);
this.selection.setPosition(newInstance.parent, index + 1);
return true;
}
}
}
}
}
const commonAncestorComponent = this.selection.commonAncestorComponent;

@@ -83,6 +172,8 @@ if (commonAncestorComponent) {

Injectable(),
__metadata("design:paramtypes", [Commander,
__param(0, Inject(COMPONENT_LIST)),
__metadata("design:paramtypes", [Array, Commander,
Injector,
Selection])
], Keyboard);
export { Keyboard };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZm91bmRhdGlvbi9rZXlib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXRDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVN2Qzs7R0FFRztBQUVILElBQWEsUUFBUSxHQUFyQixNQUFhLFFBQVE7SUFHbkIsWUFBb0IsU0FBb0IsRUFDcEIsU0FBb0I7Ozs7O21CQURwQjs7Ozs7O21CQUNBOztRQUhwQjs7OzttQkFBbUMsRUFBRTtXQUFBO0lBSXJDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsV0FBd0I7UUFDbkMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQTtRQUMzQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFFckgsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFBO1FBQ3RFLElBQUksdUJBQXVCLEVBQUU7WUFDM0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ3RGLElBQUksRUFBRSxFQUFFO2dCQUNOLE9BQU8sSUFBSSxDQUFBO2FBQ1o7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFTyxjQUFjLENBQUMsR0FBVyxFQUFFLE1BQW1CLEVBQUUsWUFBd0I7UUFDL0UsS0FBSyxNQUFNLE1BQU0sSUFBSSxZQUFZLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzdCLElBQUksSUFBSTtnQkFDTixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU07Z0JBQ3hDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsUUFBUTtnQkFDNUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN6QixPQUFPLElBQUksQ0FBQTthQUNaO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRixDQUFBO0FBaERZLFFBQVE7SUFEcEIsVUFBVSxFQUFFO3FDQUlvQixTQUFTO1FBQ1QsU0FBUztHQUo3QixRQUFRLENBZ0RwQjtTQWhEWSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0B0YW5iby9kaSdcbmltcG9ydCB7IFNob3J0Y3V0IH0gZnJvbSAnLi4vbW9kZWwvX2FwaSdcbmltcG9ydCB7IENvbW1hbmRlciB9IGZyb20gJy4vY29tbWFuZGVyJ1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi9zZWxlY3Rpb24nXG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5bWFwU3RhdGUge1xuICBjdHJsS2V5OiBib29sZWFuXG4gIGFsdEtleTogYm9vbGVhblxuICBzaGlmdEtleTogYm9vbGVhblxuICBrZXk6IHN0cmluZ1xufVxuXG4vKipcbiAqIFRleHRidXMg6ZSu55uY566h55CGXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLZXlib2FyZCB7XG4gIHByaXZhdGUgc2hvcnRjdXRMaXN0OiBTaG9ydGN1dFtdID0gW11cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbW1hbmRlcjogQ29tbWFuZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uKSB7XG4gIH1cblxuICAvKipcbiAgICog6LCD55So5b+r5o236ZSuXG4gICAqIEBwYXJhbSBrZXltYXBTdGF0ZSDlv6vmjbfplK7phY3nva5cbiAgICovXG4gIGV4ZWNTaG9ydGN1dChrZXltYXBTdGF0ZTogS2V5bWFwU3RhdGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXkgPSBrZXltYXBTdGF0ZS5rZXlcbiAgICBjb25zdCByZWcgPSAvXFx3Ky8udGVzdChrZXkpID8gbmV3IFJlZ0V4cChgXiR7a2V5fSRgLCAnaScpIDogbmV3IFJlZ0V4cChgXlske2tleS5yZXBsYWNlKC8oWy1cXFxcXSkvZywgJ1xcXFwkMScpfV0kYCwgJ2knKVxuXG4gICAgY29uc3QgY29tbW9uQW5jZXN0b3JDb21wb25lbnQgPSB0aGlzLnNlbGVjdGlvbi5jb21tb25BbmNlc3RvckNvbXBvbmVudFxuICAgIGlmIChjb21tb25BbmNlc3RvckNvbXBvbmVudCkge1xuICAgICAgY29uc3QgaXMgPSB0aGlzLmhhbmRsZVNob3J0Y3V0KHJlZywga2V5bWFwU3RhdGUsIGNvbW1vbkFuY2VzdG9yQ29tcG9uZW50LnNob3J0Y3V0TGlzdClcbiAgICAgIGlmIChpcykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5oYW5kbGVTaG9ydGN1dChyZWcsIGtleW1hcFN0YXRlLCB0aGlzLnNob3J0Y3V0TGlzdClcbiAgfVxuXG4gIC8qKlxuICAgKiDms6jlhozlv6vmjbfplK5cbiAgICogQHBhcmFtIHNob3J0Y3V0IOW/q+aNt+mUrumFjee9rlxuICAgKi9cbiAgYWRkU2hvcnRjdXQoc2hvcnRjdXQ6IFNob3J0Y3V0KSB7XG4gICAgdGhpcy5zaG9ydGN1dExpc3QudW5zaGlmdChzaG9ydGN1dClcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2hvcnRjdXQocmVnOiBSZWdFeHAsIGtleW1hcDogS2V5bWFwU3RhdGUsIHNob3J0Y3V0TGlzdDogU2hvcnRjdXRbXSkge1xuICAgIGZvciAoY29uc3QgY29uZmlnIG9mIHNob3J0Y3V0TGlzdCkge1xuICAgICAgY29uc3QgdGVzdCA9IEFycmF5LmlzQXJyYXkoY29uZmlnLmtleW1hcC5rZXkpID9cbiAgICAgICAgY29uZmlnLmtleW1hcC5rZXkubWFwKGsgPT4gcmVnLnRlc3QoaykpLmluY2x1ZGVzKHRydWUpIDpcbiAgICAgICAgcmVnLnRlc3QoY29uZmlnLmtleW1hcC5rZXkpXG4gICAgICBpZiAodGVzdCAmJlxuICAgICAgICAhIWNvbmZpZy5rZXltYXAuYWx0S2V5ID09PSBrZXltYXAuYWx0S2V5ICYmXG4gICAgICAgICEhY29uZmlnLmtleW1hcC5zaGlmdEtleSA9PT0ga2V5bWFwLnNoaWZ0S2V5ICYmXG4gICAgICAgICEhY29uZmlnLmtleW1hcC5jdHJsS2V5ID09PSBrZXltYXAuY3RybEtleSkge1xuICAgICAgICBjb25maWcuYWN0aW9uKGtleW1hcC5rZXkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZm91bmRhdGlvbi9rZXlib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQVNwRDs7R0FFRztBQUVILElBQWEsUUFBUSxHQUFyQixNQUFhLFFBQVE7SUFJbkIsWUFBNEMsVUFBdUIsRUFDL0MsU0FBb0IsRUFDcEIsUUFBa0IsRUFDbEIsU0FBb0I7Ozs7O21CQUhJOzs7Ozs7bUJBQ3hCOzs7Ozs7bUJBQ0E7Ozs7OzttQkFDQTs7UUFOcEI7Ozs7bUJBQW1DLEVBQUU7V0FBQTtRQUNyQzs7OzttQkFBNkcsRUFBRTtXQUFBO1FBTTdHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUN6QixtQkFBbUIsRUFBRSxDQUFDLENBQUMsZUFBZTtvQkFDdEMsU0FBUyxFQUFFLENBQUM7aUJBQ2IsQ0FBQyxDQUFBO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsV0FBd0I7UUFDbkMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQTtRQUMzQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxF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Q0FBQTthQUNaO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRixDQUFBO0FBckhZLFFBQVE7SUFEcEIsVUFBVSxFQUFFO0lBS0UsV0FBQSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7NENBQ0osU0FBUztRQUNWLFFBQVE7UUFDUCxTQUFTO0dBUDdCLFFBQVEsQ0FxSHBCO1NBckhZLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQHRhbmJvL2RpJ1xuaW1wb3J0IHsgQ29tcG9uZW50LCBNYXJrZG93bkdyYW1tYXJJbnRlcmNlcHRvciwgU2hvcnRjdXQgfSBmcm9tICcuLi9tb2RlbC9fYXBpJ1xuaW1wb3J0IHsgQ29tbWFuZGVyIH0gZnJvbSAnLi9jb21tYW5kZXInXG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuL3NlbGVjdGlvbidcbmltcG9ydCB7IENPTVBPTkVOVF9MSVNUIH0gZnJvbSAnLi9faW5qZWN0aW9uLXRva2VucydcblxuZXhwb3J0IGludGVyZmFjZSBLZXltYXBTdGF0ZSB7XG4gIGN0cmxLZXk6IGJvb2xlYW5cbiAgYWx0S2V5OiBib29sZWFuXG4gIHNoaWZ0S2V5OiBib29sZWFuXG4gIGtleTogc3RyaW5nXG59XG5cbi8qKlxuICogVGV4dGJ1cyDplK7nm5jnrqHnkIZcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEtleWJvYXJkIHtcbiAgcHJpdmF0ZSBzaG9ydGN1dExpc3Q6IFNob3J0Y3V0W10gPSBbXVxuICBwcml2YXRlIG1hcmtkb3duTWF0Y2hlcnM6IEFycmF5PHsgY29tcG9uZW50OiBDb21wb25lbnQsIG1hcmtkb3duSW50ZXJjZXB0b3I6IE1hcmtkb3duR3JhbW1hckludGVyY2VwdG9yIH0+ID0gW11cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENPTVBPTkVOVF9MSVNUKSBwcml2YXRlIGNvbXBvbmVudHM6IENvbXBvbmVudFtdLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbW1hbmRlcjogQ29tbWFuZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvbikge1xuICAgIGNvbXBvbmVudHMuZm9yRWFjaChpID0+IHtcbiAgICAgIGlmIChpLm1hcmtkb3duU3VwcG9ydCkge1xuICAgICAgICB0aGlzLm1hcmtkb3duTWF0Y2hlcnMucHVzaCh7XG4gICAgICAgICAgbWFya2Rvd25JbnRlcmNlcHRvcjogaS5tYXJrZG93blN1cHBvcnQsXG4gICAgICAgICAgY29tcG9uZW50OiBpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDosIPnlKjlv6vmjbfplK5cbiAgICogQHBhcmFtIGtleW1hcFN0YXRlIOW/q+aNt+mUrumFjee9rlxuICAgKi9cbiAgZXhlY1Nob3J0Y3V0KGtleW1hcFN0YXRlOiBLZXltYXBTdGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleSA9IGtleW1hcFN0YXRlLmtleVxuICAgIGNvbnN0IHJlZyA9IC9cXHcrLy50ZXN0KGtleSkgPyBuZXcgUmVnRXhwKGBeJHtrZXl9JGAsICdpJykgOiBuZXcgUmVnRXhwKGBeWyR7a2V5LnJlcGxhY2UoLyhbLVxcXFxdKS9nLCAnXFxcXCQxJyl9XSRgLCAnaScpXG5cbiAgICBjb25zdCBjb21tb25BbmNlc3RvclNsb3QgPSB0aGlzLnNlbGVjdGlvbi5jb21tb25BbmNlc3RvclNsb3QhXG4gICAgaWYgKCFrZXltYXBTdGF0ZS5jdHJsS2V5ICYmICFrZXltYXBTdGF0ZS5zaGlmdEtleSAmJiAha2V5bWFwU3RhdGUuYWx0S2V5ICYmIGNvbW1vbkFuY2VzdG9yU2xvdCA9PT0gdGhpcy5zZWxlY3Rpb24uc3RhcnRTbG90ICYmIGNvbW1vbkFuY2VzdG9yU2xvdCA9PT0gdGhpcy5zZWxlY3Rpb24uZW5kU2xvdCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubWFya2Rvd25NYXRjaGVycykge1xuICAgICAgICBjb25zdCBtYXJrZG93bkNvbmZpZyA9IGl0ZW0ubWFya2Rvd25JbnRlcmNlcHRvclxuICAgICAgICBjb25zdCBtYXRjaEtleSA9IEFycmF5LmlzQXJyYXkobWFya2Rvd25Db25maWcua2V5KSA/XG4gICAgICAgICAgbWFya2Rvd25Db25maWcua2V5LnNvbWUoayA9PiByZWcudGVzdChrKSkgOlxuICAgICAgICAgIHJlZy50ZXN0KG1hcmtkb3duQ29uZmlnLmtleSlcbiAgICAgICAgaWYgKG1hdGNoS2V5KSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlU2xvdENvbnRlbnRzID0gY29tbW9uQW5jZXN0b3JTbG90LnNsaWNlQ29udGVudCgpXG4gICAgICAgICAgbGV0IGNvbnRlbnQgPSBhY3RpdmVTbG90Q29udGVudHNbMF1cbiAgICAgICAgICBpZiAoYWN0aXZlU2xvdENvbnRlbnRzLmxlbmd0aCA+IDEgfHwgdHlwZW9mIGNvbnRlbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL1xcbiQvLCAnJylcblxuICAgICAgICAgIGxldCBtYXRjaENvbnRlbnQgPSBmYWxzZVxuICAgICAgICAgIGlmIChtYXJrZG93bkNvbmZpZy5tYXRjaCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgICAgbWF0Y2hDb250ZW50ID0gbWFya2Rvd25Db25maWcubWF0Y2gudGVzdChjb250ZW50KVxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1hcmtkb3duQ29uZmlnLm1hdGNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBtYXRjaENvbnRlbnQgPSBtYXJrZG93bkNvbmZpZy5tYXRjaChjb250ZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWF0Y2hDb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpbml0RGF0YSA9IG1hcmtkb3duQ29uZmlnLmdlbmVyYXRlSW5pdERhdGEoY29udGVudClcbiAgICAgICAgICAgIGNvbnN0IG5ld0luc3RhbmNlID0gaXRlbS5jb21wb25lbnQuY3JlYXRlSW5zdGFuY2UodGhpcy5pbmplY3RvciwgaW5pdERhdGEpXG4gICAgICAgICAgICBpZiAoY29tbW9uQW5jZXN0b3JTbG90LnNjaGVtYS5pbmNsdWRlcyhuZXdJbnN0YW5jZS50eXBlKSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRTdGFydChjb21tb25BbmNlc3RvclNsb3QsIDApXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldEVuZChjb21tb25BbmNlc3RvclNsb3QsIGNvbW1vbkFuY2VzdG9yU2xvdC5sZW5ndGgpXG4gICAgICAgICAgICAgIHRoaXMuY29tbWFuZGVyLmRlbGV0ZSgpXG4gICAgICAgICAgICAgIHRoaXMuY29tbWFuZGVyLmluc2VydChuZXdJbnN0YW5jZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbXBvbmVudCA9IGNvbW1vbkFuY2VzdG9yU2xvdC5wYXJlbnRcbiAgICAgICAgICAgICAgaWYgKHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQuc2xvdHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcGFyZW50U2xvdCA9IHBhcmVudENvbXBvbmVudD8ucGFyZW50XG4gICAgICAgICAgICAgIGlmICghcGFyZW50U2xvdCkge1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnRTbG90LmluZGV4T2YocGFyZW50Q29tcG9uZW50KVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRTdGFydChwYXJlbnRTbG90LCBpbmRleClcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0RW5kKHBhcmVudFNsb3QsIGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgdGhpcy5jb21tYW5kZXIuZGVsZXRlKClcbiAgICAgICAgICAgICAgdGhpcy5jb21tYW5kZXIuaW5zZXJ0KG5ld0luc3RhbmNlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV3U2xvdCA9IG5ld0luc3RhbmNlLnNsb3RzLmZpcnN0XG4gICAgICAgICAgICBpZiAobmV3U2xvdCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRQb3NpdGlvbihuZXdTbG90LCAwKVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdJbnN0YW5jZS5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBuZXdJbnN0YW5jZS5wYXJlbnQuaW5kZXhPZihuZXdJbnN0YW5jZSlcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0UG9zaXRpb24obmV3SW5zdGFuY2UucGFyZW50LCBpbmRleCArIDEpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNvbW1vbkFuY2VzdG9yQ29tcG9uZW50ID0gdGhpcy5zZWxlY3Rpb24uY29tbW9uQW5jZXN0b3JDb21wb25lbnRcbiAgICBpZiAoY29tbW9uQW5jZXN0b3JDb21wb25lbnQpIHtcbiAgICAgIGNvbnN0IGlzID0gdGhpcy5oYW5kbGVTaG9ydGN1dChyZWcsIGtleW1hcFN0YXRlLCBjb21tb25BbmNlc3RvckNvbXBvbmVudC5zaG9ydGN1dExpc3QpXG4gICAgICBpZiAoaXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU2hvcnRjdXQocmVnLCBrZXltYXBTdGF0ZSwgdGhpcy5zaG9ydGN1dExpc3QpXG4gIH1cblxuICAvKipcbiAgICog5rOo5YaM5b+r5o236ZSuXG4gICAqIEBwYXJhbSBzaG9ydGN1dCDlv6vmjbfplK7phY3nva5cbiAgICovXG4gIGFkZFNob3J0Y3V0KHNob3J0Y3V0OiBTaG9ydGN1dCkge1xuICAgIHRoaXMuc2hvcnRjdXRMaXN0LnVuc2hpZnQoc2hvcnRjdXQpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNob3J0Y3V0KHJlZzogUmVnRXhwLCBrZXltYXA6IEtleW1hcFN0YXRlLCBzaG9ydGN1dExpc3Q6IFNob3J0Y3V0W10pIHtcbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBzaG9ydGN1dExpc3QpIHtcbiAgICAgIGNvbnN0IHRlc3QgPSBBcnJheS5pc0FycmF5KGNvbmZpZy5rZXltYXAua2V5KSA/XG4gICAgICAgIGNvbmZpZy5rZXltYXAua2V5Lm1hcChrID0+IHJlZy50ZXN0KGspKS5pbmNsdWRlcyh0cnVlKSA6XG4gICAgICAgIHJlZy50ZXN0KGNvbmZpZy5rZXltYXAua2V5KVxuICAgICAgaWYgKHRlc3QgJiZcbiAgICAgICAgISFjb25maWcua2V5bWFwLmFsdEtleSA9PT0ga2V5bWFwLmFsdEtleSAmJlxuICAgICAgICAhIWNvbmZpZy5rZXltYXAuc2hpZnRLZXkgPT09IGtleW1hcC5zaGlmdEtleSAmJlxuICAgICAgICAhIWNvbmZpZy5rZXltYXAuY3RybEtleSA9PT0ga2V5bWFwLmN0cmxLZXkpIHtcbiAgICAgICAgY29uZmlnLmFjdGlvbihrZXltYXAua2V5KVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl19

@@ -12,3 +12,3 @@ import { Component, Formatter } from '../model/_api';

*/
getComponent(name: string): Component<any, any> | undefined;
getComponent(name: string): Component<import("../model/component").ComponentInstance<import("../model/component").ComponentMethods, any>, any> | undefined;
/**

@@ -15,0 +15,0 @@ * 根据格式名获取格式

@@ -26,3 +26,3 @@ import { Injector } from '@tanbo/di';

*/
createComponentByFactory(componentLiteral: ComponentLiteral, factory: Component): any;
createComponentByFactory(componentLiteral: ComponentLiteral, factory: Component): ComponentInstance<import("../model/component").ComponentMethods, any>;
/**

@@ -29,0 +29,0 @@ * 将插槽数据填充到指定的插槽

@@ -47,2 +47,10 @@ import { Draft } from 'immer';

}
export interface MarkdownGrammarInterceptor<Data = any> {
/** 匹配字符 */
match: RegExp | ((content: string) => boolean);
/** 触发键 */
key: string | string[];
/** 触发执行的方法 */
generateInitData(content: string): Data;
}
/**

@@ -100,2 +108,4 @@ * 组件实例对象

type: ContentType;
/** markdown 支持 */
markdownSupport?: MarkdownGrammarInterceptor<ComponentData<State>>;
/**

@@ -110,5 +120,6 @@ * 组件初始化实现

*/
export interface Component<ComponentInstance = any, Data = any> {
export interface Component<Instance extends ComponentInstance = ComponentInstance, State = any> {
/** 组件名 */
name: string;
markdownSupport?: MarkdownGrammarInterceptor<State>;
/**

@@ -119,3 +130,3 @@ * 组件创建实例的方法

*/
createInstance(context: Injector, data?: Data): ComponentInstance;
createInstance(context: Injector, data?: State): Instance;
}

@@ -122,0 +133,0 @@ /**

@@ -44,2 +44,3 @@ import { produce, enablePatches } from 'immer';

name: options.name,
markdownSupport: options.markdownSupport,
createInstance(contextInjector, initData) {

@@ -301,2 +302,2 @@ const marker = new ChangeMarker();

export const onDestroy = makeEventHook('onDestroy');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsT0FBTyxFQUFTLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM1RCxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLGVBQWUsQ0FBQTtBQUdqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFL0IsYUFBYSxFQUFFLENBQUE7QUFFZixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBd01yRCxNQUFNLFVBQVU7SUFBaEI7UUFDRTs7OzttQkFBb0IsSUFBSSxHQUFHLEVBQWtCO1dBQUE7SUFrQi9DLENBQUM7SUFoQkMsR0FBRyxDQUFDLFNBQVksRUFBRSxRQUFjO1FBQzlCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1NBQ3pDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsR0FBRyxDQUFDLFNBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVk7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxD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QUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7U0FDdkM7SUFDSCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUUzRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUE7QUFFM0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUV6RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtBQUUvRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFFL0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtBQUVuRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFmdCwgcHJvZHVjZSwgUGF0Y2gsIGVuYWJsZVBhdGNoZXMgfSBmcm9tICdpbW1lcidcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ0B0YW5iby9zdHJlYW0nXG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0B0YW5iby9kaSdcblxuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSAnLi4vX3V0aWxzL21ha2UtZXJyb3InXG5pbXBvcnQgeyBWRWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCdcbmltcG9ydCB7IENvbnRlbnRUeXBlLCBGb3JtYXRzLCBTbG90LCBTbG90TGl0ZXJhbCB9IGZyb20gJy4vc2xvdCdcbmltcG9ydCB7IENoYW5nZU1hcmtlciB9IGZyb20gJy4vY2hhbmdlLW1hcmtlcidcbmltcG9ydCB7IFNsb3RzIH0gZnJvbSAnLi9zbG90cydcblxuZW5hYmxlUGF0Y2hlcygpXG5cbmNvbnN0IGNvbXBvbmVudEVycm9yRm4gPSBtYWtlRXJyb3IoJ0RlZmluZUNvbXBvbmVudCcpXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xvdHNDb21wb25lbnREYXRhPFN0YXRlPiB7XG4gIHNsb3RzOiBTbG90W11cbiAgc3RhdGU/OiBTdGF0ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlQ29tcG9uZW50RGF0YTxTdGF0ZT4ge1xuICBzbG90cz86IFNsb3RbXVxuICBzdGF0ZTogU3RhdGVcbn1cblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50RGF0YTxTdGF0ZSA9IHVua25vd24+ID0gU2xvdHNDb21wb25lbnREYXRhPFN0YXRlPiB8IFN0YXRlQ29tcG9uZW50RGF0YTxTdGF0ZT5cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRMaXRlcmFsPFN0YXRlID0gYW55PiB7XG4gIG5hbWU6IHN0cmluZ1xuICBzbG90czogU2xvdExpdGVyYWxbXVxuICBzdGF0ZTogU3RhdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbG90UmVuZGVyRmFjdG9yeSB7XG4gICgpOiBWRWxlbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNsb3RSZW5kZXIge1xuICAoc2xvdDogU2xvdCwgZmFjdG9yeTogU2xvdFJlbmRlckZhY3RvcnkpOiBWRWxlbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFJlbmRlciB7XG4gIChpc091dHB1dE1vZGU6IGJvb2xlYW4sIHNsb3RSZW5kZXI6IFNsb3RSZW5kZXIpOiBWRWxlbWVudFxufVxuXG4vKipcbiAqIOe7hOS7tiBzZXR1cCDlh73mlbDov5Tlm57lgLzlv4XpobvopoHlrp7njrDnmoTmjqXlj6NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRNZXRob2RzIHtcbiAgcmVuZGVyOiBDb21wb25lbnRSZW5kZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXltYXAge1xuICBjdHJsS2V5PzogYm9vbGVhbjtcbiAgc2hpZnRLZXk/OiBib29sZWFuO1xuICBhbHRLZXk/OiBib29sZWFuO1xuICBrZXk6IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNob3J0Y3V0IHtcbiAga2V5bWFwOiBLZXltYXBcblxuICBhY3Rpb24oa2V5OiBzdHJpbmcpOiB2b2lkXG59XG5cbi8qKlxuICog57uE5Lu25a6e5L6L5a+56LGhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50SW5zdGFuY2U8TWV0aG9kcyBleHRlbmRzIENvbXBvbmVudE1ldGhvZHMgPSBDb21wb25lbnRNZXRob2RzLCBTdGF0ZSA9IGFueT4ge1xuICAvKipcbiAgICog57uE5Lu25omA5Zyo55qE5o+S5qe9XG4gICAqIEByZWFkb25seVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHBhcmVudDogU2xvdCB8IG51bGxcbiAgLyoqXG4gICAqIOeItue7hOS7tlxuICAgKiBAcmVhZG9ubHlcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwYXJlbnRDb21wb25lbnQ6IENvbXBvbmVudEluc3RhbmNlIHwgbnVsbFxuICAvKiog57uE5Lu25Y+Y5YyW5qCH6K+G5ZmoICovXG4gIGNoYW5nZU1hcmtlcjogQ2hhbmdlTWFya2VyXG4gIC8qKiDnu4Tku7blkI0gKi9cbiAgbmFtZTogc3RyaW5nXG4gIC8qKiDnu4Tku7bplb/luqbvvIzlm7rlrprkuLogMSAqL1xuICBsZW5ndGg6IDFcbiAgLyoqIOe7hOS7tuexu+WeiyAqL1xuICB0eXBlOiBDb250ZW50VHlwZVxuICAvKiog57uE5Lu255qE5a2Q5o+S5qe96ZuG5ZCIICovXG4gIHNsb3RzOiBTbG90c1xuICAvKiog57uE5Lu25YaF6YOo5a6e546w55qE5pa55rOVICovXG4gIG1ldGhvZHM6IE1ldGhvZHNcbiAgLyoqIOe7hOS7tuWKqOaAgeS4iuS4i+aWh+iPnOWNleazqOWGjOihqCAqL1xuICBzaG9ydGN1dExpc3Q6IFNob3J0Y3V0W11cblxuICAvKipcbiAgICog5pu05paw57uE5Lu254q25oCB55qE5pa55rOVXG4gICAqIEBwYXJhbSBmblxuICAgKi9cbiAgdXBkYXRlU3RhdGUoZm46IChkcmFmdDogRHJhZnQ8U3RhdGU+KSA9PiB2b2lkKTogU3RhdGVcblxuICAvKipcbiAgICog57uE5Lu26L2s5Li6IEpTT04g5pWw5o2u55qE5pa55rOVXG4gICAqL1xuICB0b0pTT04oKTogQ29tcG9uZW50TGl0ZXJhbDxTdGF0ZT5cblxuICAvKipcbiAgICog5bCG57uE5Lu26L2s5o2i5Li6IHN0cmluZ1xuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nXG59XG5cbi8qKlxuICogVGV4dGJ1cyDmianlsZXnu4Tku7bmjqXlj6NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRPcHRpb25zPE1ldGhvZHMgZXh0ZW5kcyBDb21wb25lbnRNZXRob2RzLCBTdGF0ZT4ge1xuICAvKiog57uE5Lu25ZCNICovXG4gIG5hbWU6IHN0cmluZ1xuICAvKiog57uE5Lu257G75Z6LICovXG4gIHR5cGU6IENvbnRlbnRUeXBlXG5cbiAgLyoqXG4gICAqIOe7hOS7tuWIneWni+WMluWunueOsFxuICAgKiBAcGFyYW0gaW5pdERhdGFcbiAgICovXG4gIHNldHVwKGluaXREYXRhPzogQ29tcG9uZW50RGF0YTxTdGF0ZT4pOiBNZXRob2RzXG59XG5cbi8qKlxuICogVGV4dGJ1cyDnu4Tku7ZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnQ8Q29tcG9uZW50SW5zdGFuY2UgPSBhbnksIERhdGEgPSBhbnk+IHtcbiAgLyoqIOe7hOS7tuWQjSAqL1xuICBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICog57uE5Lu25Yib5bu65a6e5L6L55qE5pa55rOVXG4gICAqIEBwYXJhbSBjb250ZXh0XG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBjcmVhdGVJbnN0YW5jZShjb250ZXh0OiBJbmplY3RvciwgZGF0YT86IERhdGEpOiBDb21wb25lbnRJbnN0YW5jZVxufVxuXG4vKipcbiAqIOe7hOS7tuWGheeKtuaAgeeuoeeQhuWZqFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZUNvbnRyb2xsZXI8VD4ge1xuICAvKiog57uE5Lu254q25oCB5Y+Y5YyW5pe26Kem5Y+RICovXG4gIG9uQ2hhbmdlOiBPYnNlcnZhYmxlPFQ+XG5cbiAgLyoqXG4gICAqIOe7hOS7tueKtuaAgeabtOaWsOWHveaVsFxuICAgKiBAcGFyYW0gZm5cbiAgICovXG4gIHVwZGF0ZShmbjogKGRyYWZ0OiBEcmFmdDxUPikgPT4gdm9pZCk6IFRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWY8VD4ge1xuICBjdXJyZW50OiBUIHwgbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc2VydEV2ZW50RGF0YSB7XG4gIGluZGV4OiBudW1iZXJcbiAgY29udGVudDogc3RyaW5nIHwgQ29tcG9uZW50SW5zdGFuY2UsXG4gIGZvcm1hdHM6IEZvcm1hdHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRlckV2ZW50RGF0YSB7XG4gIGluZGV4OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVFdmVudERhdGEge1xuICBpbmRleDogbnVtYmVyXG4gIGNvdW50OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXN0ZUV2ZW50RGF0YSB7XG4gIGluZGV4OiBudW1iZXJcbiAgZGF0YTogU2xvdFxuICB0ZXh0OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0TWVudUl0ZW0ge1xuICBpY29uQ2xhc3Nlcz86IHN0cmluZ1tdXG4gIGxhYmVsOiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG5cbiAgb25DbGljaygpOiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dE1lbnVHcm91cCB7XG4gIGljb25DbGFzc2VzPzogc3RyaW5nW11cbiAgbGFiZWw6IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgc3VibWVudTogQ29udGV4dE1lbnVJdGVtW11cbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnVDb25maWcgPSBDb250ZXh0TWVudUdyb3VwIHwgQ29udGV4dE1lbnVJdGVtXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRUeXBlcyB7XG4gIG9uUGFzdGU6IChldmVudDogRXZlbnQ8UGFzdGVFdmVudERhdGE+KSA9PiB2b2lkXG4gIG9uQ29udGVudEluc2VydGVkOiAoZXZlbnQ6IEV2ZW50PEluc2VydEV2ZW50RGF0YT4pID0+IHZvaWRcbiAgb25Db250ZW50SW5zZXJ0OiAoZXZlbnQ6IEV2ZW50PEluc2VydEV2ZW50RGF0YT4pID0+IHZvaWRcbiAgb25FbnRlcjogKGV2ZW50OiBFdmVudDxFbnRlckV2ZW50RGF0YT4pID0+IHZvaWRcbiAgb25Db250ZW50RGVsZXRlOiAoZXZlbnQ6IEV2ZW50PERlbGV0ZUV2ZW50RGF0YT4pID0+IHZvaWRcbiAgb25TbG90UmVtb3ZlOiAoZXZlbnQ6IEV2ZW50PG51bGw+KSA9PiB2b2lkXG4gIG9uQ29udGV4dE1lbnU6IChldmVudDogRXZlbnQ8bnVsbD4pID0+IChDb250ZXh0TWVudUNvbmZpZylbXVxuICBvblZpZXdDaGVja2VkOiAoKSA9PiB2b2lkXG4gIG9uVmlld0luaXQ6ICgpID0+IHZvaWRcbiAgb25EZXN0cm95OiAoKSA9PiB2b2lkXG59XG5cbmNsYXNzIEV2ZW50Q2FjaGU8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiB7XG4gIHByaXZhdGUgbGlzdGVuZXJzID0gbmV3IE1hcDxLLCBBcnJheTxUW0tdPj4oKVxuXG4gIGFkZChldmVudFR5cGU6IEssIGNhbGxiYWNrOiBUW0tdKSB7XG4gICAgbGV0IGNhbGxiYWNrcyA9IHRoaXMubGlzdGVuZXJzLmdldChldmVudFR5cGUpXG4gICAgaWYgKCFjYWxsYmFja3MpIHtcbiAgICAgIGNhbGxiYWNrcyA9IFtdXG4gICAgICB0aGlzLmxpc3RlbmVycy5zZXQoZXZlbnRUeXBlLCBjYWxsYmFja3MpXG4gICAgfVxuICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKVxuICB9XG5cbiAgZ2V0KGV2ZW50VHlwZTogSyk6IEFycmF5PFRbS10+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSkgfHwgW11cbiAgfVxuXG4gIGNsZWFuKGV2ZW50VHlwZTogSykge1xuICAgIHRoaXMubGlzdGVuZXJzLmRlbGV0ZShldmVudFR5cGUpXG4gIH1cbn1cblxuaW50ZXJmYWNlIENvbXBvbmVudENvbnRleHQ8VD4ge1xuICBzbG90czogU2xvdHNcbiAgaW5pdFN0YXRlPzogVFxuICBjaGFuZ2VDb250cm9sbGVyOiBDaGFuZ2VDb250cm9sbGVyPFQ+XG4gIGNvbnRleHRJbmplY3RvcjogSW5qZWN0b3JcbiAgY29tcG9uZW50SW5zdGFuY2U6IENvbXBvbmVudEluc3RhbmNlXG4gIGR5bmFtaWNTaG9ydGN1dDogU2hvcnRjdXRbXVxuICBldmVudENhY2hlOiBFdmVudENhY2hlPEV2ZW50VHlwZXM+XG59XG5cbmNvbnN0IGV2ZW50Q2FjaGVNYXAgPSBuZXcgV2Vha01hcDxDb21wb25lbnRJbnN0YW5jZSwgRXZlbnRDYWNoZTxFdmVudFR5cGVzPj4oKVxuY29uc3QgY29udGV4dFN0YWNrOiBDb21wb25lbnRDb250ZXh0PGFueT5bXSA9IFtdXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRDb250ZXh0KCkge1xuICByZXR1cm4gY29udGV4dFN0YWNrW2NvbnRleHRTdGFjay5sZW5ndGggLSAxXSB8fCBudWxsXG59XG5cbi8qKlxuICogVGV4dGJ1cyDmianlsZXnu4Tku7bmlrnms5VcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb21wb25lbnQ8TWV0aG9kcyBleHRlbmRzIENvbXBvbmVudE1ldGhvZHMsXG4gIFN0YXRlID0gYW55PihvcHRpb25zOiBDb21wb25lbnRPcHRpb25zPE1ldGhvZHMsIFN0YXRlPik6IENvbXBvbmVudDxDb21wb25lbnRJbnN0YW5jZTxNZXRob2RzLCBTdGF0ZT4sIENvbXBvbmVudERhdGE8U3RhdGU+PiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgIGNyZWF0ZUluc3RhbmNlKGNvbnRleHRJbmplY3RvcjogSW5qZWN0b3IsIGluaXREYXRhPzogQ29tcG9uZW50RGF0YTxTdGF0ZT4pIHtcbiAgICAgIGNvbnN0IG1hcmtlciA9IG5ldyBDaGFuZ2VNYXJrZXIoKVxuICAgICAgY29uc3Qgc3RhdGVDaGFuZ2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpXG5cbiAgICAgIGNvbnN0IGNoYW5nZUNvbnRyb2xsZXI6IENoYW5nZUNvbnRyb2xsZXI8U3RhdGU+ID0ge1xuICAgICAgICB1cGRhdGUoZm4pIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2UudXBkYXRlU3RhdGUoZm4pXG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2hhbmdlOiBzdGF0ZUNoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2U6IENvbXBvbmVudEluc3RhbmNlPE1ldGhvZHMsIFN0YXRlPiA9IHtcbiAgICAgICAgY2hhbmdlTWFya2VyOiBtYXJrZXIsXG4gICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgZ2V0IHBhcmVudENvbXBvbmVudCgpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2UucGFyZW50Py5wYXJlbnQgfHwgbnVsbFxuICAgICAgICB9LFxuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIGxlbmd0aDogMSxcbiAgICAgICAgdHlwZTogb3B0aW9ucy50eXBlLFxuICAgICAgICBzbG90czogbnVsbCBhcyBhbnksXG4gICAgICAgIG1ldGhvZHM6IG51bGwgYXMgYW55LFxuICAgICAgICBzaG9ydGN1dExpc3Q6IG51bGwgYXMgYW55LFxuICAgICAgICB1cGRhdGVTdGF0ZShmbikge1xuICAgICAgICAgIGxldCBjaGFuZ2VzITogUGF0Y2hbXVxuICAgICAgICAgIGxldCBpbnZlcnNlQ2hhbmdlcyE6IFBhdGNoW11cbiAgICAgICAgICBjb25zdCBvbGRTdGF0ZSA9IHN0YXRlXG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBwcm9kdWNlKG9sZFN0YXRlLCBmbiwgKHAsIGlwKSA9PiB7XG4gICAgICAgICAgICBjaGFuZ2VzID0gcFxuICAgICAgICAgICAgaW52ZXJzZUNoYW5nZXMgPSBpcFxuICAgICAgICAgIH0pIGFzIFN0YXRlXG4gICAgICAgICAgc3RhdGUgPSBuZXdTdGF0ZVxuICAgICAgICAgIHN0YXRlQ2hhbmdlU3ViamVjdC5uZXh0KG5ld1N0YXRlKVxuICAgICAgICAgIG1hcmtlci5tYXJrQXNEaXJ0aWVkKHtcbiAgICAgICAgICAgIHBhdGg6IFtdLFxuICAgICAgICAgICAgYXBwbHk6IFt7XG4gICAgICAgICAgICAgIHR5cGU6ICdhcHBseScsXG4gICAgICAgICAgICAgIHBhdGNoZXM6IGNoYW5nZXMhLFxuICAgICAgICAgICAgICB2YWx1ZTogbmV3U3RhdGVcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgdW5BcHBseTogW3tcbiAgICAgICAgICAgICAgdHlwZTogJ2FwcGx5JyxcbiAgICAgICAgICAgICAgcGF0Y2hlczogaW52ZXJzZUNoYW5nZXMhLFxuICAgICAgICAgICAgICB2YWx1ZTogb2xkU3RhdGVcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICAgICAgfSxcbiAgICAgICAgdG9KU09OKCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUhLFxuICAgICAgICAgICAgc2xvdHM6IGNvbXBvbmVudEluc3RhbmNlLnNsb3RzLnRvSlNPTigpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2Uuc2xvdHMudG9TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0OiBDb21wb25lbnRDb250ZXh0PFN0YXRlPiA9IHtcbiAgICAgICAgY29udGV4dEluamVjdG9yLFxuICAgICAgICBjaGFuZ2VDb250cm9sbGVyLFxuICAgICAgICBzbG90czogbmV3IFNsb3RzKGNvbXBvbmVudEluc3RhbmNlKSxcbiAgICAgICAgY29tcG9uZW50SW5zdGFuY2U6IGNvbXBvbmVudEluc3RhbmNlLFxuICAgICAgICBkeW5hbWljU2hvcnRjdXQ6IFtdLFxuICAgICAgICBldmVudENhY2hlOiBuZXcgRXZlbnRDYWNoZTxFdmVudFR5cGVzPigpLFxuICAgICAgfVxuICAgICAgY29udGV4dFN0YWNrLnB1c2goY29udGV4dClcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLm1ldGhvZHMgPSBvcHRpb25zLnNldHVwKGluaXREYXRhKVxuICAgICAgb25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgZXZlbnRDYWNoZU1hcC5kZWxldGUoY29tcG9uZW50SW5zdGFuY2UpXG4gICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaChpID0+IGkudW5zdWJzY3JpYmUoKSlcbiAgICAgIH0pXG4gICAgICBldmVudENhY2hlTWFwLnNldChjb21wb25lbnRJbnN0YW5jZSwgY29udGV4dC5ldmVudENhY2hlKVxuICAgICAgY29udGV4dFN0YWNrLnBvcCgpXG4gICAgICBjb21wb25lbnRJbnN0YW5jZS5zbG90cyA9IGNvbnRleHQuc2xvdHNcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLnNob3J0Y3V0TGlzdCA9IGNvbnRleHQuZHluYW1pY1Nob3J0Y3V0XG4gICAgICBsZXQgc3RhdGUgPSBSZWZsZWN0Lmhhcyhjb250ZXh0LCAnaW5pdFN0YXRlJykgPyBjb250ZXh0LmluaXRTdGF0ZSA6IGluaXREYXRhPy5zdGF0ZVxuXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtcbiAgICAgICAgY29udGV4dC5zbG90cy5vbkNoYW5nZS5zdWJzY3JpYmUob3BzID0+IHtcbiAgICAgICAgICBtYXJrZXIubWFya0FzRGlydGllZChvcHMpXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGNvbnRleHQuc2xvdHMub25DaGlsZENvbXBvbmVudFJlbW92ZWQuc3Vic2NyaWJlKGluc3RhbmNlID0+IHtcbiAgICAgICAgICBtYXJrZXIucmVjb3JkQ29tcG9uZW50UmVtb3ZlZChpbnN0YW5jZSlcbiAgICAgICAgfSksXG5cbiAgICAgICAgY29udGV4dC5zbG90cy5vbkNoaWxkU2xvdENoYW5nZS5zdWJzY3JpYmUoZCA9PiB7XG4gICAgICAgICAgbWFya2VyLm1hcmtBc0NoYW5nZWQoZC5vcGVyYXRpb24pXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGNvbnRleHQuc2xvdHMub25DaGlsZFNsb3RGb3JjZUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG1hcmtlci5mb3JjZU1hcmtDaGFuZ2VkKClcbiAgICAgICAgfSlcbiAgICAgIF1cblxuICAgICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICog57uE5Lu2IHNldHVwIOaWueazleWGheiOt+WPlue8lui+keWZqCBJb0Mg5a655Zmo55qE5Yu+5a2QXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb250ZXh0KCk6IEluamVjdG9yIHtcbiAgY29uc3QgY29udGV4dCA9IGdldEN1cnJlbnRDb250ZXh0KClcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgY29tcG9uZW50RXJyb3JGbignY2Fubm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoZSBjb21wb25lbnQhJylcbiAgfVxuICByZXR1cm4gY29udGV4dC5jb250ZXh0SW5qZWN0b3Jcbn1cblxuLyoqXG4gKiDnu4Tku7Ygc2V0dXAg5pa55rOV5YaF6I635Y+W57uE5Lu25a6e5L6L55qE5Yu+5a2QXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxmPE1ldGhvZHMgZXh0ZW5kcyBDb21wb25lbnRNZXRob2RzID0gQ29tcG9uZW50TWV0aG9kcywgU3RhdGUgPSBhbnk+KCk6IENvbXBvbmVudEluc3RhbmNlPE1ldGhvZHMsIFN0YXRlPiB7XG4gIGNvbnN0IGNvbnRleHQgPSBnZXRDdXJyZW50Q29udGV4dCgpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IGNvbXBvbmVudEVycm9yRm4oJ2Nhbm5vdCBiZSBjYWxsZWQgb3V0c2lkZSB0aGUgY29tcG9uZW50IScpXG4gIH1cbiAgcmV0dXJuIGNvbnRleHQuY29tcG9uZW50SW5zdGFuY2UgYXMgQ29tcG9uZW50SW5zdGFuY2U8TWV0aG9kcywgU3RhdGU+XG59XG5cbi8qKlxuICog57uE5Lu25L2/55So5a2Q5o+S5qe955qE5pa55rOVXG4gKiBAcGFyYW0gc2xvdHMg5a2Q5o+S5qe95pWw57uEXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTbG90czxUPihzbG90czogU2xvdDxUPltdKTogU2xvdHMge1xuICBjb25zdCBjb250ZXh0ID0gZ2V0Q3VycmVudENvbnRleHQoKVxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBjb21wb25lbnRFcnJvckZuKCdjYW5ub3QgYmUgY2FsbGVkIG91dHNpZGUgdGhlIGNvbXBvbmVudCEnKVxuICB9XG4gIGNvbnN0IHMgPSBuZXcgU2xvdHMoY29udGV4dC5jb21wb25lbnRJbnN0YW5jZSwgc2xvdHMpXG4gIGNvbnRleHQuc2xvdHMgPSBzXG4gIHJldHVybiBzXG59XG5cbi8qKlxuICog57uE5Lu25rOo5YaM54q25oCB566h55CG5Zmo55qE5Yu+5a2QXG4gKiBAcGFyYW0gaW5pdFN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGF0ZTxUPihpbml0U3RhdGU6IFQpIHtcbiAgY29uc3QgY29udGV4dCA9IGdldEN1cnJlbnRDb250ZXh0KClcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgY29tcG9uZW50RXJyb3JGbignY2Fubm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoZSBjb21wb25lbnQhJylcbiAgfVxuICBpZiAoUmVmbGVjdC5oYXMoY29udGV4dCwgJ2luaXRTdGF0ZScpKSB7XG4gICAgdGhyb3cgY29tcG9uZW50RXJyb3JGbignb25seSBvbmUgdW5pcXVlIHN0YXRlIGlzIGFsbG93ZWQgZm9yIGEgY29tcG9uZW50IScpXG4gIH1cbiAgY29udGV4dC5pbml0U3RhdGUgPSBpbml0U3RhdGVcbiAgcmV0dXJuIGNvbnRleHQuY2hhbmdlQ29udHJvbGxlciBhcyBDaGFuZ2VDb250cm9sbGVyPFQ+XG59XG5cbi8qKlxuICog57uE5Lu25Y2V5YWD57Sg5byV55So5Yu+5a2QXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZWY8VD4oKSB7XG4gIHJldHVybiB7XG4gICAgY3VycmVudDogbnVsbFxuICB9IGFzIFJlZjxUPlxufVxuXG4vKipcbiAqIOe7hOS7tuazqOWGjOWKqOaAgeW/q+aNt+mUrueahOWLvuWtkFxuICogQHBhcmFtIGNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHluYW1pY1Nob3J0Y3V0KGNvbmZpZzogU2hvcnRjdXQpIHtcbiAgY29uc3QgY29udGV4dCA9IGdldEN1cnJlbnRDb250ZXh0KClcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgY29tcG9uZW50RXJyb3JGbignY2Fubm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoZSBjb21wb25lbnQhJylcbiAgfVxuICBjb250ZXh0LmR5bmFtaWNTaG9ydGN1dC5wdXNoKGNvbmZpZylcbn1cblxubGV0IGV2ZW50SGFuZGxlRm46IG51bGwgfCAoKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKSA9IG51bGxcbmxldCBpc1ByZXZlbnREZWZhdWx0ID0gZmFsc2VcblxuLyoqXG4gKiBUZXh0YnVzIOS6i+S7tuWvueixoVxuICovXG5leHBvcnQgY2xhc3MgRXZlbnQ8VCwgUyBleHRlbmRzIFNsb3QgPSBTbG90PiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0YXJnZXQ6IFMsXG4gICAgICAgICAgICAgIHB1YmxpYyBkYXRhOiBULFxuICAgICAgICAgICAgICBldmVudEhhbmRsZTogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gICkge1xuICAgIGV2ZW50SGFuZGxlRm4gPSBldmVudEhhbmRsZVxuICB9XG5cbiAgcHJldmVudERlZmF1bHQoKSB7XG4gICAgaXNQcmV2ZW50RGVmYXVsdCA9IHRydWVcbiAgfVxufVxuXG5cbi8qKlxuICog6Kem5Y+R57uE5Lu25LqL5Lu255qE5pa55rOVXG4gKiBAcGFyYW0gdGFyZ2V0IOebruagh+e7hOS7tlxuICogQHBhcmFtIGV2ZW50VHlwZSDkuovku7blkI1cbiAqIEBwYXJhbSBkYXRhIOS6i+S7tuWvueixoVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlTGlzdGVuZXIodGFyZ2V0OiBDb21wb25lbnRJbnN0YW5jZSwgZXZlbnRUeXBlOiAnb25Db250ZW50RGVsZXRlJywgZGF0YTogRXZlbnQ8RGVsZXRlRXZlbnREYXRhPik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VMaXN0ZW5lcih0YXJnZXQ6IENvbXBvbmVudEluc3RhbmNlLCBldmVudFR5cGU6ICdvblNsb3RSZW1vdmUnLCBkYXRhOiBFdmVudDxudWxsPik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VMaXN0ZW5lcih0YXJnZXQ6IENvbXBvbmVudEluc3RhbmNlLCBldmVudFR5cGU6ICdvbkVudGVyJywgZGF0YTogRXZlbnQ8RW50ZXJFdmVudERhdGE+KTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUxpc3RlbmVyKHRhcmdldDogQ29tcG9uZW50SW5zdGFuY2UsIGV2ZW50VHlwZTogJ29uQ29udGVudEluc2VydCcsIGRhdGE6IEV2ZW50PEluc2VydEV2ZW50RGF0YT4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlTGlzdGVuZXIodGFyZ2V0OiBDb21wb25lbnRJbnN0YW5jZSwgZXZlbnRUeXBlOiAnb25Db250ZW50SW5zZXJ0ZWQnLCBkYXRhOiBFdmVudDxJbnNlcnRFdmVudERhdGE+KTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUxpc3RlbmVyKHRhcmdldDogQ29tcG9uZW50SW5zdGFuY2UsIGV2ZW50VHlwZTogJ29uQ29udGV4dE1lbnUnLCBkYXRhOiBFdmVudDxudWxsPik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VMaXN0ZW5lcih0YXJnZXQ6IENvbXBvbmVudEluc3RhbmNlLCBldmVudFR5cGU6ICdvblBhc3RlJywgZGF0YTogRXZlbnQ8UGFzdGVFdmVudERhdGE+KTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUxpc3RlbmVyKHRhcmdldDogQ29tcG9uZW50SW5zdGFuY2UsIGV2ZW50VHlwZTogJ29uRGVzdHJveScpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlTGlzdGVuZXIodGFyZ2V0OiBDb21wb25lbnRJbnN0YW5jZSwgZXZlbnRUeXBlOiAnb25WaWV3Q2hlY2tlZCcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlTGlzdGVuZXI8SyBleHRlbmRzIGtleW9mIEV2ZW50VHlwZXMsXG4gIEQgPSBFdmVudFR5cGVzW0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIFUpID0+IGFueSA/IFUgOiBuZXZlcj4odGFyZ2V0OiBDb21wb25lbnRJbnN0YW5jZSwgZXZlbnRUeXBlOiBLLCBkYXRhPzogRCkge1xuICBjb25zdCBjYWNoZSA9IGV2ZW50Q2FjaGVNYXAuZ2V0KHRhcmdldClcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gY2FjaGUuZ2V0KGV2ZW50VHlwZSlcbiAgICBjb25zdCB2YWx1ZXMgPSBjYWxsYmFja3MubWFwKGZuID0+IHtcbiAgICAgIHJldHVybiAoZm4gYXMgYW55KShkYXRhKVxuICAgIH0pXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gJ29uVmlld0NoZWNrZWQnKSB7XG4gICAgICBjb25zdCB2aWV3SW5pdENhbGxiYWNrcyA9IGNhY2hlLmdldCgnb25WaWV3SW5pdCcpXG4gICAgICBjYWNoZS5jbGVhbignb25WaWV3SW5pdCcpXG4gICAgICB2aWV3SW5pdENhbGxiYWNrcy5mb3JFYWNoKGZuID0+IHtcbiAgICAgICAgKGZuIGFzIGFueSkoZGF0YSlcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICghaXNQcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZXZlbnRIYW5kbGVGbj8uKC4uLnZhbHVlcylcbiAgICB9XG4gICAgaXNQcmV2ZW50RGVmYXVsdCA9IGZhbHNlXG4gICAgZXZlbnRIYW5kbGVGbiA9IG51bGxcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlRXZlbnRIb29rPFQgZXh0ZW5kcyBrZXlvZiBFdmVudFR5cGVzPih0eXBlOiBUKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobGlzdGVuZXI6IEV2ZW50VHlwZXNbVF0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q3VycmVudENvbnRleHQoKVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LmV2ZW50Q2FjaGUuYWRkKHR5cGUsIGxpc3RlbmVyKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIOe7hOS7tuWGheeymOi0tOS6i+S7tuWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25QYXN0ZSA9IG1ha2VFdmVudEhvb2soJ29uUGFzdGUnKVxuXG4vKipcbiAqIOe7hOS7tuWPs+mUruiPnOWNleS6i+S7tuWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25Db250ZXh0TWVudSA9IG1ha2VFdmVudEhvb2soJ29uQ29udGV4dE1lbnUnKVxuXG4vKipcbiAqIOe7hOS7tuinhuWbvuabtOaWsOWQjueahOWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25WaWV3Q2hlY2tlZCA9IG1ha2VFdmVudEhvb2soJ29uVmlld0NoZWNrZWQnKVxuXG4vKipcbiAqIOe7hOS7tuesrOS4gOasoea4suafk+WQjueahOWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25WaWV3SW5pdCA9IG1ha2VFdmVudEhvb2soJ29uVmlld0luaXQnKVxuXG4vKipcbiAqIOe7hOS7tuWtkOaPkuanveWIoOmZpOaXtueahOWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25TbG90UmVtb3ZlID0gbWFrZUV2ZW50SG9vaygnb25TbG90UmVtb3ZlJylcblxuLyoqXG4gKiDnu4Tku7blrZDmj5Lmp73lhoXlrrnliKDpmaTml7bnmoTli77lrZBcbiAqL1xuZXhwb3J0IGNvbnN0IG9uQ29udGVudERlbGV0ZSA9IG1ha2VFdmVudEhvb2soJ29uQ29udGVudERlbGV0ZScpXG5cbi8qKlxuICog57uE5Lu25a2Q5o+S5qe95o2i6KGM5pe255qE5Yu+5a2QXG4gKi9cbmV4cG9ydCBjb25zdCBvbkVudGVyID0gbWFrZUV2ZW50SG9vaygnb25FbnRlcicpXG5cbi8qKlxuICog57uE5Lu25a2Q5o+S5qe95o+S5YWl5YaF5a655pe255qE5Yu+5a2QXG4gKi9cbmV4cG9ydCBjb25zdCBvbkNvbnRlbnRJbnNlcnQgPSBtYWtlRXZlbnRIb29rKCdvbkNvbnRlbnRJbnNlcnQnKVxuXG4vKipcbiAqIOe7hOS7tuWtkOaPkuanveaPkuWFpeWGheWuueWQjuaXtueahOWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25Db250ZW50SW5zZXJ0ZWQgPSBtYWtlRXZlbnRIb29rKCdvbkNvbnRlbnRJbnNlcnRlZCcpXG5cbi8qKlxuICog57uE5Lu26ZSA5q+B5pe255qE5Yu+5a2QXG4gKi9cbmV4cG9ydCBjb25zdCBvbkRlc3Ryb3kgPSBtYWtlRXZlbnRIb29rKCdvbkRlc3Ryb3knKVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsT0FBTyxFQUFTLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM1RCxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLGVBQWUsQ0FBQTtBQUdqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFL0IsYUFBYSxFQUFFLENBQUE7QUFFZixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBdU5yRCxNQUFNLFVBQVU7SUFBaEI7UUFDRTs7OzttQkFBb0IsSUFBSSxHQUFHLEVBQWtCO1dBQUE7SUFrQi9DLENBQUM7SUFoQkMsR0FBRyxDQUFDLFNBQVksRUFBRSxRQUFjO1FBQzlCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1NBQ3pDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsR0FBRyxDQUFDLFNBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVk7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxD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Q25DLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1NBQ3ZDO0lBQ0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUE7QUFFM0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBRTNEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUVyRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUE7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFFL0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBRS9EOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFFbkU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZnQsIHByb2R1Y2UsIFBhdGNoLCBlbmFibGVQYXRjaGVzIH0gZnJvbSAnaW1tZXInXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdAdGFuYm8vc3RyZWFtJ1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAdGFuYm8vZGknXG5cbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gJy4uL191dGlscy9tYWtlLWVycm9yJ1xuaW1wb3J0IHsgVkVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnXG5pbXBvcnQgeyBDb250ZW50VHlwZSwgRm9ybWF0cywgU2xvdCwgU2xvdExpdGVyYWwgfSBmcm9tICcuL3Nsb3QnXG5pbXBvcnQgeyBDaGFuZ2VNYXJrZXIgfSBmcm9tICcuL2NoYW5nZS1tYXJrZXInXG5pbXBvcnQgeyBTbG90cyB9IGZyb20gJy4vc2xvdHMnXG5cbmVuYWJsZVBhdGNoZXMoKVxuXG5jb25zdCBjb21wb25lbnRFcnJvckZuID0gbWFrZUVycm9yKCdEZWZpbmVDb21wb25lbnQnKVxuXG5leHBvcnQgaW50ZXJmYWNlIFNsb3RzQ29tcG9uZW50RGF0YTxTdGF0ZT4ge1xuICBzbG90czogU2xvdFtdXG4gIHN0YXRlPzogU3RhdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZUNvbXBvbmVudERhdGE8U3RhdGU+IHtcbiAgc2xvdHM/OiBTbG90W11cbiAgc3RhdGU6IFN0YXRlXG59XG5cbmV4cG9ydCB0eXBlIENvbXBvbmVudERhdGE8U3RhdGUgPSB1bmtub3duPiA9IFNsb3RzQ29tcG9uZW50RGF0YTxTdGF0ZT4gfCBTdGF0ZUNvbXBvbmVudERhdGE8U3RhdGU+XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TGl0ZXJhbDxTdGF0ZSA9IGFueT4ge1xuICBuYW1lOiBzdHJpbmdcbiAgc2xvdHM6IFNsb3RMaXRlcmFsW11cbiAgc3RhdGU6IFN0YXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xvdFJlbmRlckZhY3Rvcnkge1xuICAoKTogVkVsZW1lbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbG90UmVuZGVyIHtcbiAgKHNsb3Q6IFNsb3QsIGZhY3Rvcnk6IFNsb3RSZW5kZXJGYWN0b3J5KTogVkVsZW1lbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRSZW5kZXIge1xuICAoaXNPdXRwdXRNb2RlOiBib29sZWFuLCBzbG90UmVuZGVyOiBTbG90UmVuZGVyKTogVkVsZW1lbnRcbn1cblxuLyoqXG4gKiDnu4Tku7Ygc2V0dXAg5Ye95pWw6L+U5Zue5YC85b+F6aG76KaB5a6e546w55qE5o6l5Y+jXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWV0aG9kcyB7XG4gIHJlbmRlcjogQ29tcG9uZW50UmVuZGVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5bWFwIHtcbiAgY3RybEtleT86IGJvb2xlYW47XG4gIHNoaWZ0S2V5PzogYm9vbGVhbjtcbiAgYWx0S2V5PzogYm9vbGVhbjtcbiAga2V5OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaG9ydGN1dCB7XG4gIGtleW1hcDogS2V5bWFwXG5cbiAgYWN0aW9uKGtleTogc3RyaW5nKTogdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtkb3duR3JhbW1hckludGVyY2VwdG9yPERhdGEgPSBhbnk+IHtcbiAgLyoqIOWMuemFjeWtl+espiAqL1xuICBtYXRjaDogUmVnRXhwIHwgKChjb250ZW50OiBzdHJpbmcpID0+IGJvb2xlYW4pXG4gIC8qKiDop6blj5HplK4gKi9cbiAga2V5OiBzdHJpbmcgfCBzdHJpbmdbXVxuXG4gIC8qKiDop6blj5HmiafooYznmoTmlrnms5UgKi9cbiAgZ2VuZXJhdGVJbml0RGF0YShjb250ZW50OiBzdHJpbmcpOiBEYXRhXG59XG5cbi8qKlxuICog57uE5Lu25a6e5L6L5a+56LGhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50SW5zdGFuY2U8TWV0aG9kcyBleHRlbmRzIENvbXBvbmVudE1ldGhvZHMgPSBDb21wb25lbnRNZXRob2RzLCBTdGF0ZSA9IGFueT4ge1xuICAvKipcbiAgICog57uE5Lu25omA5Zyo55qE5o+S5qe9XG4gICAqIEByZWFkb25seVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHBhcmVudDogU2xvdCB8IG51bGxcbiAgLyoqXG4gICAqIOeItue7hOS7tlxuICAgKiBAcmVhZG9ubHlcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwYXJlbnRDb21wb25lbnQ6IENvbXBvbmVudEluc3RhbmNlIHwgbnVsbFxuICAvKiog57uE5Lu25Y+Y5YyW5qCH6K+G5ZmoICovXG4gIGNoYW5nZU1hcmtlcjogQ2hhbmdlTWFya2VyXG4gIC8qKiDnu4Tku7blkI0gKi9cbiAgbmFtZTogc3RyaW5nXG4gIC8qKiDnu4Tku7bplb/luqbvvIzlm7rlrprkuLogMSAqL1xuICBsZW5ndGg6IDFcbiAgLyoqIOe7hOS7tuexu+WeiyAqL1xuICB0eXBlOiBDb250ZW50VHlwZVxuICAvKiog57uE5Lu255qE5a2Q5o+S5qe96ZuG5ZCIICovXG4gIHNsb3RzOiBTbG90c1xuICAvKiog57uE5Lu25YaF6YOo5a6e546w55qE5pa55rOVICovXG4gIG1ldGhvZHM6IE1ldGhvZHNcbiAgLyoqIOe7hOS7tuWKqOaAgeS4iuS4i+aWh+iPnOWNleazqOWGjOihqCAqL1xuICBzaG9ydGN1dExpc3Q6IFNob3J0Y3V0W11cblxuICAvKipcbiAgICog5pu05paw57uE5Lu254q25oCB55qE5pa55rOVXG4gICAqIEBwYXJhbSBmblxuICAgKi9cbiAgdXBkYXRlU3RhdGUoZm46IChkcmFmdDogRHJhZnQ8U3RhdGU+KSA9PiB2b2lkKTogU3RhdGVcblxuICAvKipcbiAgICog57uE5Lu26L2s5Li6IEpTT04g5pWw5o2u55qE5pa55rOVXG4gICAqL1xuICB0b0pTT04oKTogQ29tcG9uZW50TGl0ZXJhbDxTdGF0ZT5cblxuICAvKipcbiAgICog5bCG57uE5Lu26L2s5o2i5Li6IHN0cmluZ1xuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nXG59XG5cbi8qKlxuICogVGV4dGJ1cyDmianlsZXnu4Tku7bmjqXlj6NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRPcHRpb25zPE1ldGhvZHMgZXh0ZW5kcyBDb21wb25lbnRNZXRob2RzLCBTdGF0ZT4ge1xuICAvKiog57uE5Lu25ZCNICovXG4gIG5hbWU6IHN0cmluZ1xuICAvKiog57uE5Lu257G75Z6LICovXG4gIHR5cGU6IENvbnRlbnRUeXBlXG5cbiAgLyoqIG1hcmtkb3duIOaUr+aMgSAqL1xuICBtYXJrZG93blN1cHBvcnQ/OiBNYXJrZG93bkdyYW1tYXJJbnRlcmNlcHRvcjxDb21wb25lbnREYXRhPFN0YXRlPj5cblxuICAvKipcbiAgICog57uE5Lu25Yid5aeL5YyW5a6e546wXG4gICAqIEBwYXJhbSBpbml0RGF0YVxuICAgKi9cbiAgc2V0dXAoaW5pdERhdGE/OiBDb21wb25lbnREYXRhPFN0YXRlPik6IE1ldGhvZHNcbn1cblxuLyoqXG4gKiBUZXh0YnVzIOe7hOS7tlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudDxJbnN0YW5jZSBleHRlbmRzIENvbXBvbmVudEluc3RhbmNlID0gQ29tcG9uZW50SW5zdGFuY2UsIFN0YXRlID0gYW55PiB7XG4gIC8qKiDnu4Tku7blkI0gKi9cbiAgbmFtZTogc3RyaW5nXG5cbiAgbWFya2Rvd25TdXBwb3J0PzogTWFya2Rvd25HcmFtbWFySW50ZXJjZXB0b3I8U3RhdGU+XG5cbiAgLyoqXG4gICAqIOe7hOS7tuWIm+W7uuWunuS+i+eahOaWueazlVxuICAgKiBAcGFyYW0gY29udGV4dFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgY3JlYXRlSW5zdGFuY2UoY29udGV4dDogSW5qZWN0b3IsIGRhdGE/OiBTdGF0ZSk6IEluc3RhbmNlXG59XG5cbi8qKlxuICog57uE5Lu25YaF54q25oCB566h55CG5ZmoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlQ29udHJvbGxlcjxUPiB7XG4gIC8qKiDnu4Tku7bnirbmgIHlj5jljJbml7bop6blj5EgKi9cbiAgb25DaGFuZ2U6IE9ic2VydmFibGU8VD5cblxuICAvKipcbiAgICog57uE5Lu254q25oCB5pu05paw5Ye95pWwXG4gICAqIEBwYXJhbSBmblxuICAgKi9cbiAgdXBkYXRlKGZuOiAoZHJhZnQ6IERyYWZ0PFQ+KSA9PiB2b2lkKTogVFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZjxUPiB7XG4gIGN1cnJlbnQ6IFQgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0RXZlbnREYXRhIHtcbiAgaW5kZXg6IG51bWJlclxuICBjb250ZW50OiBzdHJpbmcgfCBDb21wb25lbnRJbnN0YW5jZSxcbiAgZm9ybWF0czogRm9ybWF0c1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGVyRXZlbnREYXRhIHtcbiAgaW5kZXg6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUV2ZW50RGF0YSB7XG4gIGluZGV4OiBudW1iZXJcbiAgY291bnQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3RlRXZlbnREYXRhIHtcbiAgaW5kZXg6IG51bWJlclxuICBkYXRhOiBTbG90XG4gIHRleHQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRNZW51SXRlbSB7XG4gIGljb25DbGFzc2VzPzogc3RyaW5nW11cbiAgbGFiZWw6IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cblxuICBvbkNsaWNrKCk6IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0TWVudUdyb3VwIHtcbiAgaWNvbkNsYXNzZXM/OiBzdHJpbmdbXVxuICBsYWJlbDogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBzdWJtZW51OiBDb250ZXh0TWVudUl0ZW1bXVxufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0TWVudUNvbmZpZyA9IENvbnRleHRNZW51R3JvdXAgfCBDb250ZXh0TWVudUl0ZW1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFR5cGVzIHtcbiAgb25QYXN0ZTogKGV2ZW50OiBFdmVudDxQYXN0ZUV2ZW50RGF0YT4pID0+IHZvaWRcbiAgb25Db250ZW50SW5zZXJ0ZWQ6IChldmVudDogRXZlbnQ8SW5zZXJ0RXZlbnREYXRhPikgPT4gdm9pZFxuICBvbkNvbnRlbnRJbnNlcnQ6IChldmVudDogRXZlbnQ8SW5zZXJ0RXZlbnREYXRhPikgPT4gdm9pZFxuICBvbkVudGVyOiAoZXZlbnQ6IEV2ZW50PEVudGVyRXZlbnREYXRhPikgPT4gdm9pZFxuICBvbkNvbnRlbnREZWxldGU6IChldmVudDogRXZlbnQ8RGVsZXRlRXZlbnREYXRhPikgPT4gdm9pZFxuICBvblNsb3RSZW1vdmU6IChldmVudDogRXZlbnQ8bnVsbD4pID0+IHZvaWRcbiAgb25Db250ZXh0TWVudTogKGV2ZW50OiBFdmVudDxudWxsPikgPT4gKENvbnRleHRNZW51Q29uZmlnKVtdXG4gIG9uVmlld0NoZWNrZWQ6ICgpID0+IHZvaWRcbiAgb25WaWV3SW5pdDogKCkgPT4gdm9pZFxuICBvbkRlc3Ryb3k6ICgpID0+IHZvaWRcbn1cblxuY2xhc3MgRXZlbnRDYWNoZTxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+IHtcbiAgcHJpdmF0ZSBsaXN0ZW5lcnMgPSBuZXcgTWFwPEssIEFycmF5PFRbS10+PigpXG5cbiAgYWRkKGV2ZW50VHlwZTogSywgY2FsbGJhY2s6IFRbS10pIHtcbiAgICBsZXQgY2FsbGJhY2tzID0gdGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSlcbiAgICBpZiAoIWNhbGxiYWNrcykge1xuICAgICAgY2FsbGJhY2tzID0gW11cbiAgICAgIHRoaXMubGlzdGVuZXJzLnNldChldmVudFR5cGUsIGNhbGxiYWNrcylcbiAgICB9XG4gICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spXG4gIH1cblxuICBnZXQoZXZlbnRUeXBlOiBLKTogQXJyYXk8VFtLXT4ge1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVycy5nZXQoZXZlbnRUeXBlKSB8fCBbXVxuICB9XG5cbiAgY2xlYW4oZXZlbnRUeXBlOiBLKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMuZGVsZXRlKGV2ZW50VHlwZSlcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ29tcG9uZW50Q29udGV4dDxUPiB7XG4gIHNsb3RzOiBTbG90c1xuICBpbml0U3RhdGU/OiBUXG4gIGNoYW5nZUNvbnRyb2xsZXI6IENoYW5nZUNvbnRyb2xsZXI8VD5cbiAgY29udGV4dEluamVjdG9yOiBJbmplY3RvclxuICBjb21wb25lbnRJbnN0YW5jZTogQ29tcG9uZW50SW5zdGFuY2VcbiAgZHluYW1pY1Nob3J0Y3V0OiBTaG9ydGN1dFtdXG4gIGV2ZW50Q2FjaGU6IEV2ZW50Q2FjaGU8RXZlbnRUeXBlcz5cbn1cblxuY29uc3QgZXZlbnRDYWNoZU1hcCA9IG5ldyBXZWFrTWFwPENvbXBvbmVudEluc3RhbmNlLCBFdmVudENhY2hlPEV2ZW50VHlwZXM+PigpXG5jb25zdCBjb250ZXh0U3RhY2s6IENvbXBvbmVudENvbnRleHQ8YW55PltdID0gW11cblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbnRleHQoKSB7XG4gIHJldHVybiBjb250ZXh0U3RhY2tbY29udGV4dFN0YWNrLmxlbmd0aCAtIDFdIHx8IG51bGxcbn1cblxuLyoqXG4gKiBUZXh0YnVzIOaJqeWxlee7hOS7tuaWueazlVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbXBvbmVudDxNZXRob2RzIGV4dGVuZHMgQ29tcG9uZW50TWV0aG9kcyxcbiAgU3RhdGUgPSBhbnk+KG9wdGlvbnM6IENvbXBvbmVudE9wdGlvbnM8TWV0aG9kcywgU3RhdGU+KTogQ29tcG9uZW50PENvbXBvbmVudEluc3RhbmNlPE1ldGhvZHMsIFN0YXRlPiwgQ29tcG9uZW50RGF0YTxTdGF0ZT4+IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgbWFya2Rvd25TdXBwb3J0OiBvcHRpb25zLm1hcmtkb3duU3VwcG9ydCxcbiAgICBjcmVhdGVJbnN0YW5jZShjb250ZXh0SW5qZWN0b3I6IEluamVjdG9yLCBpbml0RGF0YT86IENvbXBvbmVudERhdGE8U3RhdGU+KSB7XG4gICAgICBjb25zdCBtYXJrZXIgPSBuZXcgQ2hhbmdlTWFya2VyKClcbiAgICAgIGNvbnN0IHN0YXRlQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKVxuXG4gICAgICBjb25zdCBjaGFuZ2VDb250cm9sbGVyOiBDaGFuZ2VDb250cm9sbGVyPFN0YXRlPiA9IHtcbiAgICAgICAgdXBkYXRlKGZuKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlLnVwZGF0ZVN0YXRlKGZuKVxuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZTogc3RhdGVDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlOiBDb21wb25lbnRJbnN0YW5jZTxNZXRob2RzLCBTdGF0ZT4gPSB7XG4gICAgICAgIGNoYW5nZU1hcmtlcjogbWFya2VyLFxuICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgIGdldCBwYXJlbnRDb21wb25lbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlLnBhcmVudD8ucGFyZW50IHx8IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICBsZW5ndGg6IDEsXG4gICAgICAgIHR5cGU6IG9wdGlvbnMudHlwZSxcbiAgICAgICAgc2xvdHM6IG51bGwgYXMgYW55LFxuICAgICAgICBtZXRob2RzOiBudWxsIGFzIGFueSxcbiAgICAgICAgc2hvcnRjdXRMaXN0OiBudWxsIGFzIGFueSxcbiAgICAgICAgdXBkYXRlU3RhdGUoZm4pIHtcbiAgICAgICAgICBsZXQgY2hhbmdlcyE6IFBhdGNoW11cbiAgICAgICAgICBsZXQgaW52ZXJzZUNoYW5nZXMhOiBQYXRjaFtdXG4gICAgICAgICAgY29uc3Qgb2xkU3RhdGUgPSBzdGF0ZVxuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gcHJvZHVjZShvbGRTdGF0ZSwgZm4sIChwLCBpcCkgPT4ge1xuICAgICAgICAgICAgY2hhbmdlcyA9IHBcbiAgICAgICAgICAgIGludmVyc2VDaGFuZ2VzID0gaXBcbiAgICAgICAgICB9KSBhcyBTdGF0ZVxuICAgICAgICAgIHN0YXRlID0gbmV3U3RhdGVcbiAgICAgICAgICBzdGF0ZUNoYW5nZVN1YmplY3QubmV4dChuZXdTdGF0ZSlcbiAgICAgICAgICBtYXJrZXIubWFya0FzRGlydGllZCh7XG4gICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgICAgIGFwcGx5OiBbe1xuICAgICAgICAgICAgICB0eXBlOiAnYXBwbHknLFxuICAgICAgICAgICAgICBwYXRjaGVzOiBjaGFuZ2VzISxcbiAgICAgICAgICAgICAgdmFsdWU6IG5ld1N0YXRlXG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIHVuQXBwbHk6IFt7XG4gICAgICAgICAgICAgIHR5cGU6ICdhcHBseScsXG4gICAgICAgICAgICAgIHBhdGNoZXM6IGludmVyc2VDaGFuZ2VzISxcbiAgICAgICAgICAgICAgdmFsdWU6IG9sZFN0YXRlXG4gICAgICAgICAgICB9XVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgICAgIH0sXG4gICAgICAgIHRvSlNPTigpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICAgICAgc3RhdGU6IHN0YXRlISxcbiAgICAgICAgICAgIHNsb3RzOiBjb21wb25lbnRJbnN0YW5jZS5zbG90cy50b0pTT04oKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdG9TdHJpbmcoKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlLnNsb3RzLnRvU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dDogQ29tcG9uZW50Q29udGV4dDxTdGF0ZT4gPSB7XG4gICAgICAgIGNvbnRleHRJbmplY3RvcixcbiAgICAgICAgY2hhbmdlQ29udHJvbGxlcixcbiAgICAgICAgc2xvdHM6IG5ldyBTbG90cyhjb21wb25lbnRJbnN0YW5jZSksXG4gICAgICAgIGNvbXBvbmVudEluc3RhbmNlOiBjb21wb25lbnRJbnN0YW5jZSxcbiAgICAgICAgZHluYW1pY1Nob3J0Y3V0OiBbXSxcbiAgICAgICAgZXZlbnRDYWNoZTogbmV3IEV2ZW50Q2FjaGU8RXZlbnRUeXBlcz4oKSxcbiAgICAgIH1cbiAgICAgIGNvbnRleHRTdGFjay5wdXNoKGNvbnRleHQpXG4gICAgICBjb21wb25lbnRJbnN0YW5jZS5tZXRob2RzID0gb3B0aW9ucy5zZXR1cChpbml0RGF0YSlcbiAgICAgIG9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAgIGV2ZW50Q2FjaGVNYXAuZGVsZXRlKGNvbXBvbmVudEluc3RhbmNlKVxuICAgICAgICBzdWJzY3JpcHRpb25zLmZvckVhY2goaSA9PiBpLnVuc3Vic2NyaWJlKCkpXG4gICAgICB9KVxuICAgICAgZXZlbnRDYWNoZU1hcC5zZXQoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRleHQuZXZlbnRDYWNoZSlcbiAgICAgIGNvbnRleHRTdGFjay5wb3AoKVxuICAgICAgY29tcG9uZW50SW5zdGFuY2Uuc2xvdHMgPSBjb250ZXh0LnNsb3RzXG4gICAgICBjb21wb25lbnRJbnN0YW5jZS5zaG9ydGN1dExpc3QgPSBjb250ZXh0LmR5bmFtaWNTaG9ydGN1dFxuICAgICAgbGV0IHN0YXRlID0gUmVmbGVjdC5oYXMoY29udGV4dCwgJ2luaXRTdGF0ZScpID8gY29udGV4dC5pbml0U3RhdGUgOiBpbml0RGF0YT8uc3RhdGVcblxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXG4gICAgICAgIGNvbnRleHQuc2xvdHMub25DaGFuZ2Uuc3Vic2NyaWJlKG9wcyA9PiB7XG4gICAgICAgICAgbWFya2VyLm1hcmtBc0RpcnRpZWQob3BzKVxuICAgICAgICB9KSxcblxuICAgICAgICBjb250ZXh0LnNsb3RzLm9uQ2hpbGRDb21wb25lbnRSZW1vdmVkLnN1YnNjcmliZShpbnN0YW5jZSA9PiB7XG4gICAgICAgICAgbWFya2VyLnJlY29yZENvbXBvbmVudFJlbW92ZWQoaW5zdGFuY2UpXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGNvbnRleHQuc2xvdHMub25DaGlsZFNsb3RDaGFuZ2Uuc3Vic2NyaWJlKGQgPT4ge1xuICAgICAgICAgIG1hcmtlci5tYXJrQXNDaGFuZ2VkKGQub3BlcmF0aW9uKVxuICAgICAgICB9KSxcblxuICAgICAgICBjb250ZXh0LnNsb3RzLm9uQ2hpbGRTbG90Rm9yY2VDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBtYXJrZXIuZm9yY2VNYXJrQ2hhbmdlZCgpXG4gICAgICAgIH0pXG4gICAgICBdXG5cbiAgICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIOe7hOS7tiBzZXR1cCDmlrnms5XlhoXojrflj5bnvJbovpHlmaggSW9DIOWuueWZqOeahOWLvuWtkFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29udGV4dCgpOiBJbmplY3RvciB7XG4gIGNvbnN0IGNvbnRleHQgPSBnZXRDdXJyZW50Q29udGV4dCgpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IGNvbXBvbmVudEVycm9yRm4oJ2Nhbm5vdCBiZSBjYWxsZWQgb3V0c2lkZSB0aGUgY29tcG9uZW50IScpXG4gIH1cbiAgcmV0dXJuIGNvbnRleHQuY29udGV4dEluamVjdG9yXG59XG5cbi8qKlxuICog57uE5Lu2IHNldHVwIOaWueazleWGheiOt+WPlue7hOS7tuWunuS+i+eahOWLvuWtkFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZjxNZXRob2RzIGV4dGVuZHMgQ29tcG9uZW50TWV0aG9kcyA9IENvbXBvbmVudE1ldGhvZHMsIFN0YXRlID0gYW55PigpOiBDb21wb25lbnRJbnN0YW5jZTxNZXRob2RzLCBTdGF0ZT4ge1xuICBjb25zdCBjb250ZXh0ID0gZ2V0Q3VycmVudENvbnRleHQoKVxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBjb21wb25lbnRFcnJvckZuKCdjYW5ub3QgYmUgY2FsbGVkIG91dHNpZGUgdGhlIGNvbXBvbmVudCEnKVxuICB9XG4gIHJldHVybiBjb250ZXh0LmNvbXBvbmVudEluc3RhbmNlIGFzIENvbXBvbmVudEluc3RhbmNlPE1ldGhvZHMsIFN0YXRlPlxufVxuXG4vKipcbiAqIOe7hOS7tuS9v+eUqOWtkOaPkuanveeahOaWueazlVxuICogQHBhcmFtIHNsb3RzIOWtkOaPkuanveaVsOe7hFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2xvdHM8VD4oc2xvdHM6IFNsb3Q8VD5bXSk6IFNsb3RzIHtcbiAgY29uc3QgY29udGV4dCA9IGdldEN1cnJlbnRDb250ZXh0KClcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgY29tcG9uZW50RXJyb3JGbignY2Fubm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoZSBjb21wb25lbnQhJylcbiAgfVxuICBjb25zdCBzID0gbmV3IFNsb3RzKGNvbnRleHQuY29tcG9uZW50SW5zdGFuY2UsIHNsb3RzKVxuICBjb250ZXh0LnNsb3RzID0gc1xuICByZXR1cm4gc1xufVxuXG4vKipcbiAqIOe7hOS7tuazqOWGjOeKtuaAgeeuoeeQhuWZqOeahOWLvuWtkFxuICogQHBhcmFtIGluaXRTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3RhdGU8VD4oaW5pdFN0YXRlOiBUKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBnZXRDdXJyZW50Q29udGV4dCgpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IGNvbXBvbmVudEVycm9yRm4oJ2Nhbm5vdCBiZSBjYWxsZWQgb3V0c2lkZSB0aGUgY29tcG9uZW50IScpXG4gIH1cbiAgaWYgKFJlZmxlY3QuaGFzKGNvbnRleHQsICdpbml0U3RhdGUnKSkge1xuICAgIHRocm93IGNvbXBvbmVudEVycm9yRm4oJ29ubHkgb25lIHVuaXF1ZSBzdGF0ZSBpcyBhbGxvd2VkIGZvciBhIGNvbXBvbmVudCEnKVxuICB9XG4gIGNvbnRleHQuaW5pdFN0YXRlID0gaW5pdFN0YXRlXG4gIHJldHVybiBjb250ZXh0LmNoYW5nZUNvbnRyb2xsZXIgYXMgQ2hhbmdlQ29udHJvbGxlcjxUPlxufVxuXG4vKipcbiAqIOe7hOS7tuWNleWFg+e0oOW8leeUqOWLvuWtkFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVmPFQ+KCkge1xuICByZXR1cm4ge1xuICAgIGN1cnJlbnQ6IG51bGxcbiAgfSBhcyBSZWY8VD5cbn1cblxuLyoqXG4gKiDnu4Tku7bms6jlhozliqjmgIHlv6vmjbfplK7nmoTli77lrZBcbiAqIEBwYXJhbSBjb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUR5bmFtaWNTaG9ydGN1dChjb25maWc6IFNob3J0Y3V0KSB7XG4gIGNvbnN0IGNvbnRleHQgPSBnZXRDdXJyZW50Q29udGV4dCgpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IGNvbXBvbmVudEVycm9yRm4oJ2Nhbm5vdCBiZSBjYWxsZWQgb3V0c2lkZSB0aGUgY29tcG9uZW50IScpXG4gIH1cbiAgY29udGV4dC5keW5hbWljU2hvcnRjdXQucHVzaChjb25maWcpXG59XG5cbmxldCBldmVudEhhbmRsZUZuOiBudWxsIHwgKCguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgPSBudWxsXG5sZXQgaXNQcmV2ZW50RGVmYXVsdCA9IGZhbHNlXG5cbi8qKlxuICogVGV4dGJ1cyDkuovku7blr7nosaFcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50PFQsIFMgZXh0ZW5kcyBTbG90ID0gU2xvdD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFyZ2V0OiBTLFxuICAgICAgICAgICAgICBwdWJsaWMgZGF0YTogVCxcbiAgICAgICAgICAgICAgZXZlbnRIYW5kbGU6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICApIHtcbiAgICBldmVudEhhbmRsZUZuID0gZXZlbnRIYW5kbGVcbiAgfVxuXG4gIHByZXZlbnREZWZhdWx0KCkge1xuICAgIGlzUHJldmVudERlZmF1bHQgPSB0cnVlXG4gIH1cbn1cblxuXG4vKipcbiAqIOinpuWPkee7hOS7tuS6i+S7tueahOaWueazlVxuICogQHBhcmFtIHRhcmdldCDnm67moIfnu4Tku7ZcbiAqIEBwYXJhbSBldmVudFR5cGUg5LqL5Lu25ZCNXG4gKiBAcGFyYW0gZGF0YSDkuovku7blr7nosaFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUxpc3RlbmVyKHRhcmdldDogQ29tcG9uZW50SW5zdGFuY2UsIGV2ZW50VHlwZTogJ29uQ29udGVudERlbGV0ZScsIGRhdGE6IEV2ZW50PERlbGV0ZUV2ZW50RGF0YT4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlTGlzdGVuZXIodGFyZ2V0OiBDb21wb25lbnRJbnN0YW5jZSwgZXZlbnRUeXBlOiAnb25TbG90UmVtb3ZlJywgZGF0YTogRXZlbnQ8bnVsbD4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlTGlzdGVuZXIodGFyZ2V0OiBDb21wb25lbnRJbnN0YW5jZSwgZXZlbnRUeXBlOiAnb25FbnRlcicsIGRhdGE6IEV2ZW50PEVudGVyRXZlbnREYXRhPik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VMaXN0ZW5lcih0YXJnZXQ6IENvbXBvbmVudEluc3RhbmNlLCBldmVudFR5cGU6ICdvbkNvbnRlbnRJbnNlcnQnLCBkYXRhOiBFdmVudDxJbnNlcnRFdmVudERhdGE+KTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUxpc3RlbmVyKHRhcmdldDogQ29tcG9uZW50SW5zdGFuY2UsIGV2ZW50VHlwZTogJ29uQ29udGVudEluc2VydGVkJywgZGF0YTogRXZlbnQ8SW5zZXJ0RXZlbnREYXRhPik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VMaXN0ZW5lcih0YXJnZXQ6IENvbXBvbmVudEluc3RhbmNlLCBldmVudFR5cGU6ICdvbkNvbnRleHRNZW51JywgZGF0YTogRXZlbnQ8bnVsbD4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlTGlzdGVuZXIodGFyZ2V0OiBDb21wb25lbnRJbnN0YW5jZSwgZXZlbnRUeXBlOiAnb25QYXN0ZScsIGRhdGE6IEV2ZW50PFBhc3RlRXZlbnREYXRhPik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VMaXN0ZW5lcih0YXJnZXQ6IENvbXBvbmVudEluc3RhbmNlLCBldmVudFR5cGU6ICdvbkRlc3Ryb3knKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUxpc3RlbmVyKHRhcmdldDogQ29tcG9uZW50SW5zdGFuY2UsIGV2ZW50VHlwZTogJ29uVmlld0NoZWNrZWQnKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUxpc3RlbmVyPEsgZXh0ZW5kcyBrZXlvZiBFdmVudFR5cGVzLFxuICBEID0gRXZlbnRUeXBlc1tLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBVKSA9PiBhbnkgPyBVIDogbmV2ZXI+KHRhcmdldDogQ29tcG9uZW50SW5zdGFuY2UsIGV2ZW50VHlwZTogSywgZGF0YT86IEQpIHtcbiAgY29uc3QgY2FjaGUgPSBldmVudENhY2hlTWFwLmdldCh0YXJnZXQpXG4gIGlmIChjYWNoZSkge1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IGNhY2hlLmdldChldmVudFR5cGUpXG4gICAgY29uc3QgdmFsdWVzID0gY2FsbGJhY2tzLm1hcChmbiA9PiB7XG4gICAgICByZXR1cm4gKGZuIGFzIGFueSkoZGF0YSlcbiAgICB9KVxuICAgIGlmIChldmVudFR5cGUgPT09ICdvblZpZXdDaGVja2VkJykge1xuICAgICAgY29uc3Qgdmlld0luaXRDYWxsYmFja3MgPSBjYWNoZS5nZXQoJ29uVmlld0luaXQnKVxuICAgICAgY2FjaGUuY2xlYW4oJ29uVmlld0luaXQnKVxuICAgICAgdmlld0luaXRDYWxsYmFja3MuZm9yRWFjaChmbiA9PiB7XG4gICAgICAgIChmbiBhcyBhbnkpKGRhdGEpXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWlzUHJldmVudERlZmF1bHQpIHtcbiAgICAgIGV2ZW50SGFuZGxlRm4/LiguLi52YWx1ZXMpXG4gICAgfVxuICAgIGlzUHJldmVudERlZmF1bHQgPSBmYWxzZVxuICAgIGV2ZW50SGFuZGxlRm4gPSBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZUV2ZW50SG9vazxUIGV4dGVuZHMga2V5b2YgRXZlbnRUeXBlcz4odHlwZTogVCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGxpc3RlbmVyOiBFdmVudFR5cGVzW1RdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IGdldEN1cnJlbnRDb250ZXh0KClcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5ldmVudENhY2hlLmFkZCh0eXBlLCBsaXN0ZW5lcilcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiDnu4Tku7blhoXnspjotLTkuovku7bli77lrZBcbiAqL1xuZXhwb3J0IGNvbnN0IG9uUGFzdGUgPSBtYWtlRXZlbnRIb29rKCdvblBhc3RlJylcblxuLyoqXG4gKiDnu4Tku7blj7PplK7oj5zljZXkuovku7bli77lrZBcbiAqL1xuZXhwb3J0IGNvbnN0IG9uQ29udGV4dE1lbnUgPSBtYWtlRXZlbnRIb29rKCdvbkNvbnRleHRNZW51JylcblxuLyoqXG4gKiDnu4Tku7bop4blm77mm7TmlrDlkI7nmoTli77lrZBcbiAqL1xuZXhwb3J0IGNvbnN0IG9uVmlld0NoZWNrZWQgPSBtYWtlRXZlbnRIb29rKCdvblZpZXdDaGVja2VkJylcblxuLyoqXG4gKiDnu4Tku7bnrKzkuIDmrKHmuLLmn5PlkI7nmoTli77lrZBcbiAqL1xuZXhwb3J0IGNvbnN0IG9uVmlld0luaXQgPSBtYWtlRXZlbnRIb29rKCdvblZpZXdJbml0JylcblxuLyoqXG4gKiDnu4Tku7blrZDmj5Lmp73liKDpmaTml7bnmoTli77lrZBcbiAqL1xuZXhwb3J0IGNvbnN0IG9uU2xvdFJlbW92ZSA9IG1ha2VFdmVudEhvb2soJ29uU2xvdFJlbW92ZScpXG5cbi8qKlxuICog57uE5Lu25a2Q5o+S5qe95YaF5a655Yig6Zmk5pe255qE5Yu+5a2QXG4gKi9cbmV4cG9ydCBjb25zdCBvbkNvbnRlbnREZWxldGUgPSBtYWtlRXZlbnRIb29rKCdvbkNvbnRlbnREZWxldGUnKVxuXG4vKipcbiAqIOe7hOS7tuWtkOaPkuanveaNouihjOaXtueahOWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25FbnRlciA9IG1ha2VFdmVudEhvb2soJ29uRW50ZXInKVxuXG4vKipcbiAqIOe7hOS7tuWtkOaPkuanveaPkuWFpeWGheWuueaXtueahOWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25Db250ZW50SW5zZXJ0ID0gbWFrZUV2ZW50SG9vaygnb25Db250ZW50SW5zZXJ0JylcblxuLyoqXG4gKiDnu4Tku7blrZDmj5Lmp73mj5LlhaXlhoXlrrnlkI7ml7bnmoTli77lrZBcbiAqL1xuZXhwb3J0IGNvbnN0IG9uQ29udGVudEluc2VydGVkID0gbWFrZUV2ZW50SG9vaygnb25Db250ZW50SW5zZXJ0ZWQnKVxuXG4vKipcbiAqIOe7hOS7tumUgOavgeaXtueahOWLvuWtkFxuICovXG5leHBvcnQgY29uc3Qgb25EZXN0cm95ID0gbWFrZUV2ZW50SG9vaygnb25EZXN0cm95JylcbiJdfQ==
{
"name": "@textbus/core",
"version": "2.0.0-alpha.64",
"version": "2.0.0-alpha.69",
"description": "Textbus is a rich text editor and framework that is highly customizable and extensible to achieve rich wysiwyg effects.",

@@ -43,3 +43,3 @@ "main": "./bundles/public-api.js",

},
"gitHead": "0b4acbfb933b743d8ae9fe36ec10a9b790680390"
"gitHead": "e5c0557d7a7b056627e8d7da854d052829c82230"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc