@libs-ui/services-config-project 0.2.306-4 → 0.2.306-5
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/config-project-data.d.ts +22 -22
- package/config-project.service.d.ts +1 -1
- package/esm2022/config-project-data.mjs +332 -332
- package/esm2022/config-project.interface.mjs +1 -5
- package/esm2022/config-project.service.mjs +20 -18
- package/esm2022/index.mjs +1 -1
- package/fesm2022/libs-ui-services-config-project.mjs +339 -342
- package/fesm2022/libs-ui-services-config-project.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
;
|
|
2
|
-
;
|
|
3
|
-
;
|
|
4
|
-
;
|
|
5
1
|
export {};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3QuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9zZXJ2aWNlcy9jb25maWctcHJvamVjdC9zcmMvY29uZmlnLXByb2plY3QuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElMaWJzVWlDb25maWdGb250RmFtaWx5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB1cmlfcmVndWxhcjogc3RyaW5nO1xuICB1cmlfbWVkaXVtOiBzdHJpbmc7XG4gIHVyaV9zZW1pYm9sZDogc3RyaW5nO1xuICB1cmlfYm9sZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlic1VpQ29uZmlnRm9udFdlaWdodCB7XG4gIHVyaV9yZWd1bGFyOiBzdHJpbmc7XG4gIHVyaV9tZWRpdW06IHN0cmluZztcbiAgdXJpX3NlbWlib2xkOiBzdHJpbmc7XG4gIHVyaV9ib2xkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nIHtcbiAgaDFyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDViOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZSB7XG4gICdmb250LXNpemUnOiBzdHJpbmc7XG4gICdmb250LXdlaWdodCc6IHN0cmluZztcbiAgJ2xpbmUtaGVpZ2h0Jzogc3RyaW5nO1xuICAnbGV0dGVyLXNwYWNpbmcnOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cyB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblRhYiB7XG4gIFtrZXk6IHN0cmluZ106IElDb2xvckJ1dHRvblRhYjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29sb3JCdXR0b25UYWIge1xuICBjb2xvcjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kX2JhZGdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2xvckJ1dHRvbiB7XG4gIGNvbmZpZ1N0ZXBDb2xvcjoge1xuICAgIHRleHQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXh0X2hvdmVyOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGV4dF9hY3RpdmU6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXh0X2Rpc2FibGU6IHN0cmluZyB8IG51bWJlcjtcbiAgICBiYWNrZ3JvdW5kPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJhY2tncm91bmRfaG92ZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYmFja2dyb3VuZF9hY3RpdmU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYmFja2dyb3VuZF9kaXNhYmxlPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJvcmRlcj86IHN0cmluZyB8IG51bWJlcjtcbiAgICBib3JkZXJfaG92ZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYm9yZGVyX2FjdGl2ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBib3JkZXJfZGlzYWJsZT86IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcbiAgcm9vdENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblNpemUge1xuICBpY29uOiB7XG4gICAgbGFyZ2U6IHN0cmluZztcbiAgICBtZWRpdW06IHN0cmluZztcbiAgICBzbWFsbDogc3RyaW5nO1xuICAgIHNtYWxsZXI6IHN0cmluZztcbiAgfTtcbiAgbGFyZ2U6IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xuICBtZWRpdW06IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xuICBzbWFsbDoge1xuICAgIGZvbnRfc2l6ZTogc3RyaW5nO1xuICAgIGxpbmVfaGVpZ2h0OiBzdHJpbmc7XG4gIH07XG4gIHNtYWxsZXI6IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Injectable, computed, effect, signal } from
|
|
3
|
-
import { colorStepContrastFromOrigin, get } from
|
|
4
|
-
import { configButtonColor, configButtonStatus, configButtonTab, configHeading, configLinkButton, fontConfig, sizeButtonConfig, styleButtonTab, weights } from
|
|
2
|
+
import { Injectable, computed, effect, signal } from '@angular/core';
|
|
3
|
+
import { colorStepContrastFromOrigin, get } from '@libs-ui/utils';
|
|
4
|
+
import { configButtonColor, configButtonStatus, configButtonTab, configHeading, configLinkButton, fontConfig, sizeButtonConfig, styleButtonTab, weights } from './config-project-data';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class LibsUiConfigProjectService {
|
|
7
7
|
themeColor = signal('#226ff5');
|
|
@@ -116,12 +116,12 @@ export class LibsUiConfigProjectService {
|
|
|
116
116
|
currentDoc = currentDoc || document;
|
|
117
117
|
const doc = currentDoc.documentElement;
|
|
118
118
|
doc.style.setProperty('--libs-ui-font-family-name', `${this.configFont().name},Arial, Helvetica, sans-serif`);
|
|
119
|
-
Object.keys(weights).forEach(key => {
|
|
119
|
+
Object.keys(weights).forEach((key) => {
|
|
120
120
|
if (!get(this.configFont(), key)) {
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
123
|
const fontFace = new FontFace(this.configFont().name, `url(${get(this.configFont(), key)})`, { weight: get(weights, key) });
|
|
124
|
-
fontFace.load().then(loadedFont => {
|
|
124
|
+
fontFace.load().then((loadedFont) => {
|
|
125
125
|
if (currentDoc && 'add' in currentDoc.fonts) {
|
|
126
126
|
currentDoc.fonts.add(loadedFont);
|
|
127
127
|
}
|
|
@@ -135,10 +135,10 @@ export class LibsUiConfigProjectService {
|
|
|
135
135
|
setupFontHead() {
|
|
136
136
|
const configHeadsData = this.configHead();
|
|
137
137
|
let styles = '';
|
|
138
|
-
Object.keys(configHeadsData).forEach(keyConfig => {
|
|
138
|
+
Object.keys(configHeadsData).forEach((keyConfig) => {
|
|
139
139
|
let style = `font-family:var(--libs-ui-font-family-name,'Arial');`;
|
|
140
140
|
const config = get(configHeadsData, keyConfig);
|
|
141
|
-
Object.keys(config).forEach(key => {
|
|
141
|
+
Object.keys(config).forEach((key) => {
|
|
142
142
|
style = `${style}${key}:${get(config, key)};`;
|
|
143
143
|
});
|
|
144
144
|
styles = `${styles} .libs-ui-font-${keyConfig}{${style}}.libs-ui-font-${keyConfig}i{${style.replace(/;/g, ' !important;')}}`;
|
|
@@ -150,9 +150,9 @@ export class LibsUiConfigProjectService {
|
|
|
150
150
|
setupButtonSize() {
|
|
151
151
|
const configButtonSize = this.configButtonSize();
|
|
152
152
|
const doc = document.documentElement;
|
|
153
|
-
Object.keys(configButtonSize).forEach(keySize => {
|
|
153
|
+
Object.keys(configButtonSize).forEach((keySize) => {
|
|
154
154
|
const config = get(configButtonSize, keySize);
|
|
155
|
-
Object.keys(config).forEach(keyType => {
|
|
155
|
+
Object.keys(config).forEach((keyType) => {
|
|
156
156
|
const name = `--libs-ui-button-size-${keySize}-${keyType.replace(/[_]/g, '-')}`;
|
|
157
157
|
doc.style.setProperty(name, get(config, keyType));
|
|
158
158
|
});
|
|
@@ -161,7 +161,7 @@ export class LibsUiConfigProjectService {
|
|
|
161
161
|
setupButtonTab() {
|
|
162
162
|
const configButtonTab = this.configButtonTab();
|
|
163
163
|
let styles = '';
|
|
164
|
-
Object.keys(configButtonTab).forEach(key => {
|
|
164
|
+
Object.keys(configButtonTab).forEach((key) => {
|
|
165
165
|
const config = get(configButtonTab, key);
|
|
166
166
|
const style = config ? styleButtonTab(key, config) : '';
|
|
167
167
|
styles = `${styles}${style}`;
|
|
@@ -171,7 +171,8 @@ export class LibsUiConfigProjectService {
|
|
|
171
171
|
}
|
|
172
172
|
setThemeColor() {
|
|
173
173
|
const doc = document.documentElement;
|
|
174
|
-
[
|
|
174
|
+
[
|
|
175
|
+
{
|
|
175
176
|
group: 'libs-ui',
|
|
176
177
|
type: 'color',
|
|
177
178
|
property: {
|
|
@@ -197,10 +198,11 @@ export class LibsUiConfigProjectService {
|
|
|
197
198
|
text_disable: this.textDisableColor(),
|
|
198
199
|
gradient_from: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin(this.themeColor(), 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 0)?.light,
|
|
199
200
|
gradient_to: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin('#5B2EBB', 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 20)?.dark,
|
|
200
|
-
}
|
|
201
|
-
}
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
].forEach((item) => {
|
|
202
204
|
const name = `--${item.group.replace(/[_]/g, '-')}-${item.type.replace(/[_]/g, '-')}`;
|
|
203
|
-
Object.keys(item.property).forEach(key => doc.style.setProperty(`${name}-${key.replace(/[_]/g, '-')}`, item.property[key]));
|
|
205
|
+
Object.keys(item.property).forEach((key) => doc.style.setProperty(`${name}-${key.replace(/[_]/g, '-')}`, item.property[key]));
|
|
204
206
|
});
|
|
205
207
|
}
|
|
206
208
|
colorStepContrastFromOrigin(step, color) {
|
|
@@ -304,11 +306,11 @@ export class LibsUiConfigProjectService {
|
|
|
304
306
|
return indexes;
|
|
305
307
|
}
|
|
306
308
|
for (const indexValue in values) {
|
|
307
|
-
if (values[indexValue] !== str[0] ||
|
|
309
|
+
if (values[indexValue] !== str[0] || +indexValue + str.length > values.length) {
|
|
308
310
|
continue;
|
|
309
311
|
}
|
|
310
312
|
for (const index in str.split('')) {
|
|
311
|
-
if (values[
|
|
313
|
+
if (values[+indexValue + +index] !== str[index]) {
|
|
312
314
|
break;
|
|
313
315
|
}
|
|
314
316
|
}
|
|
@@ -323,7 +325,7 @@ export class LibsUiConfigProjectService {
|
|
|
323
325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiConfigProjectService, decorators: [{
|
|
324
326
|
type: Injectable,
|
|
325
327
|
args: [{
|
|
326
|
-
providedIn: 'root'
|
|
328
|
+
providedIn: 'root',
|
|
327
329
|
}]
|
|
328
330
|
}], ctorParameters: () => [] });
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2NvbmZpZy1wcm9qZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTXZMLE1BQU0sT0FBTywwQkFBMEI7SUFDcEIsVUFBVSxHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUN2QyxXQUFXLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDM0Msb0JBQW9CLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3QyxzQkFBc0IsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDbkQsaUJBQWlCLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3Qyx1QkFBdUIsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDcEQsdUJBQXVCLEdBQUcsTUFBTSxDQUFTLFdBQVcsQ0FBQyxDQUFDO0lBQ3RE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QUFFLENBQUM7b0JBQ2xGLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFFbEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNwRCxNQUFNO29CQUNSLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQTtJQUNILENBQUM7d0dBaFhVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLGNBSHpCLE1BQU07OzRGQUdQLDBCQUEwQjtrQkFKdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgZWZmZWN0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUGF0aHNUb1N0cmluZ1Byb3BzIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbiwgZ2V0IH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBjb25maWdCdXR0b25Db2xvciwgY29uZmlnQnV0dG9uU3RhdHVzLCBjb25maWdCdXR0b25UYWIsIGNvbmZpZ0hlYWRpbmcsIGNvbmZpZ0xpbmtCdXR0b24sIGZvbnRDb25maWcsIHNpemVCdXR0b25Db25maWcsIHN0eWxlQnV0dG9uVGFiLCB3ZWlnaHRzIH0gZnJvbSBcIi4vY29uZmlnLXByb2plY3QtZGF0YVwiO1xuaW1wb3J0IHsgSUNvbG9yQnV0dG9uLCBJTGlic1VpQ29uZmlnQnV0dG9uU2l6ZSwgSUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cywgSUxpYnNVaUNvbmZpZ0J1dHRvblRhYiwgSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHksIElMaWJzVWlDb25maWdGb250SGVhZGluZywgSUxpYnNVaUNvbmZpZ0ZvbnRXZWlnaHQgfSBmcm9tIFwiLi9jb25maWctcHJvamVjdC5pbnRlcmZhY2VcIjtcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG5leHBvcnQgY2xhc3MgTGlic1VpQ29uZmlnUHJvamVjdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lQ29sb3IgPSBzaWduYWw8c3RyaW5nPignIzIyNmZmNScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyNlNmU3ZWEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RXJyb3JDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZmY1NDU0Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbkhvdmVyRGFuZ2VyQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2YxNTc2NycpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckVycm9yQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2VlMmQ0MScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmREaXNhYmxlQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRleHRSZWFkb25seUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyMwNzE2MzEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RGlzYWJsZUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyM5Y2EyYWQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYWNrZ3JvdW5kUmVhZG9ubHlDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZjhmOWZhJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZFVzZXJTZWxlY3Rpb24gPSBzaWduYWw8c3RyaW5nPignIzAwMDAwMDQwJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZExpc3QgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXIgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIgPSBzaWduYWw8c3RyaW5nPignI2ZlZjVmNicpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZvbnQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHk+KGZvbnRDb25maWcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0hlYWQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPihjb25maWdIZWFkaW5nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzID0gc2lnbmFsPChyb290Q29sb3I6IHN0cmluZykgPT4geyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7fTtcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uID0gY29tcHV0ZWQ8eyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7IC4uLmNvbmZpZ0J1dHRvbkNvbG9yKHRoaXMudGhlbWVDb2xvcigpKSwgLi4uY29uZmlnTGlua0J1dHRvbih0aGlzLnRoZW1lQ29sb3IoKSksIC4uLnRoaXMuZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlcygpKHRoaXMudGhlbWVDb2xvcigpKSB9O1xuICB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdCdXR0b25TaXplID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25TaXplPihzaXplQnV0dG9uQ29uZmlnKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0J1dHRvblN0YXR1cyA9IHNpZ25hbDxJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzPihjb25maWdCdXR0b25TdGF0dXMoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uVGFiID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25UYWI+KGNvbmZpZ0J1dHRvblRhYigpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHlsZUNsYXNzR2xvYmFsRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NIZWFkRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NCdXR0b25UYWJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwRm9udEZhbWlseSgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBGb250SGVhZCgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBCdXR0b25UYWIoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwQnV0dG9uU2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWdTdHJpbmcoKTtcbiAgICB0aGlzLnNldENsYXNzR2xvYmFsKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IFRoZW1lQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGhlbWVDb2xvci5zZXQoY29sb3IgfHwgJyMyMjZmZjUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQm9yZGVyQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZTZlN2VhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJvcmRlckVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyRXJyb3JDb2xvci5zZXQoY29sb3IgfHwgJyNlZTJkNDEnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dEVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dEVycm9yQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZmY1NDU0Jyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEljb25Ib3ZlckRhbmdlckNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmljb25Ib3ZlckRhbmdlckNvbG9yLnNldChjb2xvciB8fCAnI2ZmNTQ1NCcpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kUmVhZG9ubHlDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kUmVhZG9ubHlDb2xvci5zZXQoY29sb3IgfHwgJyNmMTU3NjcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dFJlYWRvbmx5Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dFJlYWRvbmx5Q29sb3Iuc2V0KGNvbG9yIHx8ICcjMDcxNjMxJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRVc2VyU2VsZWN0aW9uKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRVc2VyU2VsZWN0aW9uLnNldChjb2xvciB8fCAnIzAwMDAwMDQwJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0KGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0LnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kTGlzdEhvdmVyKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0SG92ZXIuc2V0KGNvbG9yIHx8ICcjZjhmOWZhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYmFja2dyb3VuZExpc3RIb3Zlci5zZXQoY29sb3IgfHwgJyNmZWY1ZjYnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQmFja2dyb3VuZERpc2FibGVDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kRGlzYWJsZUNvbG9yLnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBUZXh0RGlzYWJsZUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHREaXNhYmxlQ29sb3Iuc2V0KGNvbG9yIHx8ICcjOWNhMmFkJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0ZvbnQoY29uZmlnRm9udDogSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHkpIHtcbiAgICB0aGlzLmNvbmZpZ0ZvbnQuc2V0KHsgLi4uY29uZmlnRm9udCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQ29uZmlnRm9udEhlYWQoY29uZmlnSGVhZDogSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nKSB7XG4gICAgdGhpcy5jb25maWdIZWFkLnNldCh7IC4uLmNvbmZpZ0hlYWQgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENvbmZpZ0J1dHRvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdCdXR0b247XG4gIH1cblxuICBwdWJsaWMgc2V0IEZ1bmN0aW9uR2V0Q29uZmlnQnV0dG9uSW5jbHVkZXMoZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlczogKHJvb3RDb2xvcjogc3RyaW5nKSA9PiB7IFtrZXk6IHN0cmluZ106IElDb2xvckJ1dHRvbiB9KSB7XG4gICAgdGhpcy5mdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzLnNldChmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29uZmlnQnV0dG9uU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ0J1dHRvblN0YXR1cygpO1xuICB9XG5cbiAgcHVibGljIHNldCBDb25maWdCdXR0b25TdGF0dXMoY29uZmlnOiBJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzKSB7XG4gICAgdGhpcy5jb25maWdCdXR0b25TdGF0dXMuc2V0KGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0J1dHRvblRhYihjb25maWc6IElMaWJzVWlDb25maWdCdXR0b25UYWIpIHtcbiAgICB0aGlzLmNvbmZpZ0J1dHRvblRhYi5zZXQoY29uZmlnKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBow6BtIMSR4buDIHPhu60gZOG7pW5nIGNobyBjb21wb25lbnQgaW5wdXQgc+G7rSBk4bulbmcgdGFnSW5wdXQgPSBmcmFtZUFyZWE7XG4gIHB1YmxpYyBzZXR1cEZvbnRGYW1pbHkoY3VycmVudERvYz86IERvY3VtZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIGN1cnJlbnREb2MgPSBjdXJyZW50RG9jIHx8IGRvY3VtZW50O1xuICAgICAgY29uc3QgZG9jID0gY3VycmVudERvYy5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUnLCBgJHt0aGlzLmNvbmZpZ0ZvbnQoKS5uYW1lfSxBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmYCk7XG4gICAgICBPYmplY3Qua2V5cyh3ZWlnaHRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICghZ2V0KHRoaXMuY29uZmlnRm9udCgpLCBrZXkgYXMgUGF0aHNUb1N0cmluZ1Byb3BzPElMaWJzVWlDb25maWdGb250RmFtaWx5PikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9udEZhY2UgPSBuZXcgRm9udEZhY2UodGhpcy5jb25maWdGb250KCkubmFtZSwgYHVybCgke2dldCh0aGlzLmNvbmZpZ0ZvbnQoKSwga2V5IGFzIFBhdGhzVG9TdHJpbmdQcm9wczxJTGlic1VpQ29uZmlnRm9udEZhbWlseT4pfSlgLCB7IHdlaWdodDogZ2V0KHdlaWdodHMsIGtleSBhcyBQYXRoc1RvU3RyaW5nUHJvcHM8SUxpYnNVaUNvbmZpZ0ZvbnRXZWlnaHQ+KSB9KTtcbiAgICAgICAgZm9udEZhY2UubG9hZCgpLnRoZW4obG9hZGVkRm9udCA9PiB7XG4gICAgICAgICAgaWYgKGN1cnJlbnREb2MgJiYgJ2FkZCcgaW4gY3VycmVudERvYy5mb250cykge1xuICAgICAgICAgICAgKGN1cnJlbnREb2MuZm9udHMgYXMgYW55KS5hZGQobG9hZGVkRm9udCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEZvbnRIZWFkKCkge1xuICAgIGNvbnN0IGNvbmZpZ0hlYWRzRGF0YSA9IHRoaXMuY29uZmlnSGVhZCgpO1xuICAgIGxldCBzdHlsZXMgPSAnJztcbiAgICBPYmplY3Qua2V5cyhjb25maWdIZWFkc0RhdGEpLmZvckVhY2goa2V5Q29uZmlnID0+IHtcbiAgICAgIGxldCBzdHlsZSA9IGBmb250LWZhbWlseTp2YXIoLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUsJ0FyaWFsJyk7YDtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdIZWFkc0RhdGEsIGtleUNvbmZpZyBhcyBQYXRoc1RvU3RyaW5nUHJvcHM8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPik7XG4gICAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgc3R5bGUgPSBgJHtzdHlsZX0ke2tleX06JHtnZXQoY29uZmlnLCBrZXkpfTtgO1xuICAgICAgfSk7XG4gICAgICBzdHlsZXMgPSBgJHtzdHlsZXN9IC5saWJzLXVpLWZvbnQtJHtrZXlDb25maWd9eyR7c3R5bGV9fS5saWJzLXVpLWZvbnQtJHtrZXlDb25maWd9aXske3N0eWxlLnJlcGxhY2UoLzsvZywgJyAhaW1wb3J0YW50OycpfX1gO1xuICAgIH0pO1xuXG4gICAgc3R5bGVzID0gYCp7Ym94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50O30ke3N0eWxlc31gO1xuXG4gICAgdGhpcy5zdHlsZUNsYXNzSGVhZEVsLmlubmVySFRNTCA9IHN0eWxlcztcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZCh0aGlzLnN0eWxlQ2xhc3NIZWFkRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEJ1dHRvblNpemUoKSB7XG4gICAgY29uc3QgY29uZmlnQnV0dG9uU2l6ZSA9IHRoaXMuY29uZmlnQnV0dG9uU2l6ZSgpO1xuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBPYmplY3Qua2V5cyhjb25maWdCdXR0b25TaXplKS5mb3JFYWNoKGtleVNpemUgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0KGNvbmZpZ0J1dHRvblNpemUsIGtleVNpemUgYXMgUGF0aHNUb1N0cmluZ1Byb3BzPElMaWJzVWlDb25maWdCdXR0b25TaXplPik7XG4gICAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goa2V5VHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBgLS1saWJzLXVpLWJ1dHRvbi1zaXplLSR7a2V5U2l6ZX0tJHtrZXlUeXBlLnJlcGxhY2UoL1tfXS9nLCAnLScpfWA7XG4gICAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCBnZXQoY29uZmlnLCBrZXlUeXBlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBCdXR0b25UYWIoKSB7XG4gICAgY29uc3QgY29uZmlnQnV0dG9uVGFiID0gdGhpcy5jb25maWdCdXR0b25UYWIoKTtcbiAgICBsZXQgc3R5bGVzID0gJyc7XG5cbiAgICBPYmplY3Qua2V5cyhjb25maWdCdXR0b25UYWIpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdCdXR0b25UYWIsIGtleSk7XG4gICAgICBjb25zdCBzdHlsZSA9IGNvbmZpZyA/IHN0eWxlQnV0dG9uVGFiKGtleSwgY29uZmlnKSA6ICcnO1xuXG4gICAgICBzdHlsZXMgPSBgJHtzdHlsZXN9JHtzdHlsZX1gO1xuICAgIH0pO1xuICAgIHRoaXMuc3R5bGVDbGFzc0J1dHRvblRhYkVsLmlubmVySFRNTCA9IHN0eWxlcztcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZCh0aGlzLnN0eWxlQ2xhc3NCdXR0b25UYWJFbCk7XG4gIH1cblxuICBwcml2YXRlIHNldFRoZW1lQ29sb3IoKSB7XG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIFt7XG4gICAgICBncm91cDogJ2xpYnMtdWknLFxuICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgIHByb3BlcnR5OiB7XG4gICAgICAgIGRlZmF1bHQ6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMCk/LmxpZ2h0LFxuICAgICAgICBsaWdodF8xOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDIwKT8ubGlnaHQsXG4gICAgICAgIGxpZ2h0XzI6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgOTApPy5saWdodCxcbiAgICAgICAgbGlnaHRfMzogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA5NSk/LmxpZ2h0LFxuICAgICAgICBsaWdodF80OiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDUwKT8ubGlnaHQsXG4gICAgICAgIGxpZ2h0XzU6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgNzApPy5saWdodCxcbiAgICAgICAgbGlnaHRfNjogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA4MCk/LmxpZ2h0LFxuICAgICAgICBkYXJrOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDIwKT8uZGFyayxcbiAgICAgICAgYmFja2dyb3VuZF9saXN0OiB0aGlzLmJhY2tncm91bmRMaXN0KCksXG4gICAgICAgIGJhY2tncm91bmRfbGlzdF9ob3ZlcjogdGhpcy5iYWNrZ3JvdW5kTGlzdEhvdmVyKCksXG4gICAgICAgIGJhY2tncm91bmRfbGlzdF9ob3Zlcl9kYW5nZXI6IHRoaXMuYmFja2dyb3VuZExpc3RIb3ZlckRhbmdlcigpLFxuICAgICAgICBiYWNrZ3JvdW5kX3NlbGVjdGlvbjogdGhpcy5iYWNrZ3JvdW5kVXNlclNlbGVjdGlvbigpLFxuICAgICAgICBib3JkZXI6IHRoaXMuYm9yZGVyQ29sb3IoKSxcbiAgICAgICAgYm9yZGVyX2Vycm9yOiB0aGlzLmJvcmRlckVycm9yQ29sb3IoKSxcbiAgICAgICAgdGV4dF9lcnJvcjogdGhpcy50ZXh0RXJyb3JDb2xvcigpLFxuICAgICAgICBpY29uX2hvdmVyX2RhbmdlcjogdGhpcy5pY29uSG92ZXJEYW5nZXJDb2xvcigpLFxuICAgICAgICBiYWNrZ3JvdW5kX3JlYWRvbmx5OiB0aGlzLmJhY2tncm91bmRSZWFkb25seUNvbG9yKCksXG4gICAgICAgIHRleHRfcmVhZG9ubHk6IHRoaXMudGV4dFJlYWRvbmx5Q29sb3IoKSxcbiAgICAgICAgYmFja2dyb3VuZF9kaXNhYmxlOiB0aGlzLmJhY2tncm91bmREaXNhYmxlQ29sb3IoKSxcbiAgICAgICAgdGV4dF9kaXNhYmxlOiB0aGlzLnRleHREaXNhYmxlQ29sb3IoKSxcbiAgICAgICAgZ3JhZGllbnRfZnJvbTogdGhpcy50aGVtZUNvbG9yKCkudG9Mb2NhbGVVcHBlckNhc2UoKSA9PT0gJyMyMjZGRjUnID8gY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAxMCk/LmxpZ2h0IDogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAwKT8ubGlnaHQsXG4gICAgICAgIGdyYWRpZW50X3RvOiB0aGlzLnRoZW1lQ29sb3IoKS50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSAnIzIyNkZGNScgPyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4oJyM1QjJFQkInLCAxMCk/LmxpZ2h0IDogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAyMCk/LmRhcmssXG4gICAgICB9XG4gICAgfV0uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBgLS0ke2l0ZW0uZ3JvdXAucmVwbGFjZSgvW19dL2csICctJyl9LSR7aXRlbS50eXBlLnJlcGxhY2UoL1tfXS9nLCAnLScpfWA7XG4gICAgICBPYmplY3Qua2V5cyhpdGVtLnByb3BlcnR5KS5mb3JFYWNoKGtleSA9PiBkb2Muc3R5bGUuc2V0UHJvcGVydHkoYCR7bmFtZX0tJHtrZXkucmVwbGFjZSgvW19dL2csICctJyl9YCwgKGl0ZW0ucHJvcGVydHkgYXMgYW55KVtrZXldKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHN0ZXA6IG51bWJlciwgY29sb3I/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKGNvbG9yIHx8IHRoaXMudGhlbWVDb2xvcigpLCBzdGVwIHx8IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDbGFzc0dsb2JhbCgpIHtcbiAgICB0aGlzLnN0eWxlQ2xhc3NHbG9iYWxFbC5pbm5lckhUTUwgPSBgXG4gICAgLmxpYnMtdWktYm9yZGVyLXByaW1hcnktZ2VuZXJhbHtib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWRlZmF1bHQsICMyMjZGRjUpO31cbiAgICAubGlicy11aS1ib3JkZXItcHJpbWFyeS1mb2N1cy1nZW5lcmFse2JvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSwgIzRlOGNmNyk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1wcmltYXJ5LWhvdmVyLWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0zLCAjZjRmOGZmKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWdlbmVyYWx7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXRvcC1nZW5lcmFse2JvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1yaWdodC1nZW5lcmFse2JvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWJvdHRvbS1nZW5lcmFse2JvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1kYXNoZWQtZ2VuZXJhbHtib3JkZXI6IGRhc2hlZCAxcHggdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItdG9wLWRhc2hlZC1nZW5lcmFse2JvcmRlci10b3A6IGRhc2hlZCAxcHggdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItbGVmdC1kYXNoZWQtZ2VuZXJhbHtib3JkZXItbGVmdDogZGFzaGVkIDFweCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1yaWdodC1kYXNoZWQtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IGRhc2hlZCAxcHggdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItYm90dG9tLWRhc2hlZC1nZW5lcmFse2JvcmRlci1ib3R0b206IGRhc2hlZCAxcHggdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItbGVmdC1nZW5lcmFse2JvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXIteC1nZW5lcmFse2JvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXIteS1nZW5lcmFse2JvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItbGVmdC10b3AtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1sZWZ0LWJvdHRvbS1nZW5lcmFse2JvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXJpZ2h0LXRvcC1nZW5lcmFse2JvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1yaWdodC1ib3R0b20tZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItZXJyb3ItZ2VuZXJhbHtib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlci1lcnJvciwgI2VlMmQ0MSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktYmctbGlzdCB7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlicy11aS1iYWNrZ3JvdW5kLWxpc3QsICNmOGY5ZmEpO31cbiAgICAubGlicy11aS1iZy1saXN0LWhvdmVyOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1saWJzLXVpLWJhY2tncm91bmQtbGlzdC1ob3ZlciwgI2Y4ZjlmYSk7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtYWN0aXZlIHtiYWNrZ3JvdW5kLWNvbG9yOiAgdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0zLCAjZjRmOGZmKTt9XG4gICAgLmxpYnMtdWktYmctbGlzdC1ob3Zlci1hY3RpdmU6aG92ZXIge2JhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlOmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0zLCAjZjRmOGZmKTt9XG4gICAgLmxpYnMtdWktYmctbGlzdC1ob3Zlci1kYW5nZXI6aG92ZXIge2JhY2tncm91bmQtY29sb3I6IHZhcigtLWxpYnMtdWktYmFja2dyb3VuZC1saXN0LWhvdmVyLWRhbmdlciwgI2ZlZjVmNik7IGNvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLWljb24taG92ZXItZGFuZ2VyLCAjZjE1NzY3KSAhaW1wb3J0YW50OyBbY2xhc3MqPVwibGlicy11aS1pY29uLVwiXSxbY2xhc3MqPVwiaWNvbi1mb250LTNyZFwiXXsmOmJlZm9yZSwmOmFmdGVye2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLWljb24taG92ZXItZGFuZ2VyLCAjZjE1NzY3KSAhaW1wb3J0YW50O319fVxuICAgIC5saWJzLXVpLXRleHQtZXJyb3Ige2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZXJyb3IsICNmZjU0NTQpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXRleHQtZXJyb3I6OmJlZm9yZSB7Y29sb3I6IHZhcigtLWxpYnMtdWktY29sb3ItdGV4dC1lcnJvciwgI2ZmNTQ1NCkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZSB7Y3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjogbm9uZTtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZGlzYWJsZSwgI2NkZDBkNikgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZTo6YmVmb3JlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZGlzYWJsZSwgIzljYTJhZCkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLWxpYnMtdWktY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlLCAjZjhmOWZhKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1kaXNhYmxlLWFjdGl2ZSB7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci1saWdodC00LCM5MWI3ZmEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUtYWN0aXZlOjpiZWZvcmUge2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtNCwjOTFiN2ZhKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1kaXNhYmxlLWFjdGl2ZS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtNCwjOTFiN2ZhKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1yZWFkb25seSB7Y3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItdGV4dC1yZWFkb25seSwgIzA3MTYzMSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktcmVhZG9ubHk6OmJlZm9yZSB7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LXJlYWRvbmx5LCAjMDcxNjMxKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1yZWFkb25seS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLWxpYnMtdWktY29sb3ItYmFja2dyb3VuZC1yZWFkb25seSwgI2Y4ZjlmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktaWNvbi1ob3Zlci1kYW5nZXI6aG92ZXIge2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLWljb24taG92ZXItZGFuZ2VyLCAjZjE1NzY3KSAhaW1wb3J0YW50OyBbY2xhc3MqPVwibGlicy11aS1pY29uLVwiXSxbY2xhc3MqPVwiaWNvbi1mb250LTNyZFwiXXsmOmJlZm9yZSwmOmFmdGVye2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLWljb24taG92ZXItZGFuZ2VyLCAjZjE1NzY3KSAhaW1wb3J0YW50O319fVxuICAgIC5icmVhay13b3Jke3dvcmQtYnJlYWs6IGJyZWFrLXdvcmQgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktc2hhZG93IHtib3gtc2hhZG93OiAwIDJweCAxMHB4IDFweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1tZCB7Ym94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctbGcge2JveC1zaGFkb3c6IDAgMTVweCAzMHB4IDAgcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctdG9wIHtib3gtc2hhZG93OiAwIC01cHggNXB4IC01cHggcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctcmlnaHQge2JveC1zaGFkb3c6IC01cHggMCA1cHggLTVweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1ib3R0b20ge2JveC1zaGFkb3c6IDAgNXB4IDVweCAtNXB4IHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LWxlZnQge2JveC1zaGFkb3c6IDVweCAwIDVweCAtNXB4IHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LXNtIHtib3gtc2hhZG93OiAwIDFweCAycHggMCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1wb3B1cCB7Ym94LXNoYWRvdzogLTJweCAwIDRweCAwIHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LW5vbmUge2JveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktc2hhZG93LXNtYWxsIHtib3gtc2hhZG93OiAwcHggMXB4IDJweCAwcHggcmdiYSgwLDIwLDUxLC4wNCksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsMjAsNTEsLjAyKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LW1lZGl1bSB7Ym94LXNoYWRvdzogMHB4IDRweCA4cHggMHB4IHJnYmEoMCwgMjAsIDUxLCAwLjA0KSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMjAsIDUxLCAwLjAyKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LWxhcmdlIHtib3gtc2hhZG93OiAwcHggNHB4IDE2cHggMHB4IHJnYmEoMCwyMCw1MSwuMSksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsMjAsNTEsLjAyKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LWV4dHJhLWxhcmdlIHtib3gtc2hhZG93OiAwcHggOHB4IDU2cHggMHB4IHJnYmEoMCwyMCw1MSwuMDUpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDIwLDUxLC4wMik7fVxuICAgIDo6LW1vei1zZWxlY3Rpb24ge2JhY2tncm91bmQ6IHZhcigtLWxpYnMtdWktY29sb3ItYmFja2dyb3VuZC1zZWxlY3Rpb24sICMwMDAwMDA0MCkgIWltcG9ydGFudDt9XG4gICAgOjpzZWxlY3Rpb24ge2JhY2tncm91bmQ6IHZhcigtLWxpYnMtdWktY29sb3ItYmFja2dyb3VuZC1zZWxlY3Rpb24sICMwMDAwMDA0MCkgIWltcG9ydGFudDt9XG4gICAgYC5yZXBsYWNlKC9cXG4rL2csICcnKTtcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0dsb2JhbEVsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnU3RyaW5nKCkge1xuICAgIGNvbnN0IHByb3RvdHlwZSA9IFN0cmluZy5wcm90b3R5cGUgYXMgYW55O1xuICAgIHByb3RvdHlwZS5yZXBsYWNlQXQgPSBmdW5jdGlvbiAoaW5kZXg6IG51bWJlciwgcmVwbGFjZW1lbnQ6IHN0cmluZykge1xuICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5zcGxpdCgnJyk7XG5cbiAgICAgIHZhbHVlc1tpbmRleF0gPSByZXBsYWNlbWVudDtcblxuICAgICAgcmV0dXJuIHZhbHVlcy5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcm90b3R5cGUucmVwbGFjZUFsbCA9IGZ1bmN0aW9uIChpbmRleDogbnVtYmVyLCBzZXBhcmF0b3I6IHN0cmluZywgcmVwbGFjZW1lbnQ6IHN0cmluZykge1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHNlcGFyYXRvciwgJ2cnKTtcblxuICAgICAgcmV0dXJuIGAke3RoaXMuc3Vic3RyKDAsIGluZGV4KX0ke3RoaXMuc3Vic3RyKGluZGV4ICsgMSArIChyZXBsYWNlbWVudD8ubGVuZ3RoIHx8IDApKS5yZXBsYWNlKHJlZ2V4LCByZXBsYWNlbWVudCl9YDtcbiAgICB9XG5cbiAgICBwcm90b3R5cGUub2NjdXJyZW5jZXNCeUNoYXJhY3RlciA9IGZ1bmN0aW9uIChjaGFyYWN0ZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNwbGl0KCcnKTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKChjaGFyOiBzdHJpbmcpID0+IGNoYXIgPT09IGNoYXJhY3RlcikubGVuZ3RoO1xuICAgIH1cblxuICAgIHByb3RvdHlwZS5pbmRleGVzT2ZDaGFyYWN0ZXIgPSBmdW5jdGlvbiAoY2hhcmFjdGVyOiBzdHJpbmcpOiBBcnJheTxudW1iZXI+IHtcbiAgICAgIGNvbnN0IHZhbHVlczogQXJyYXk8c3RyaW5nPiA9IHRoaXMuc3BsaXQoJycpO1xuICAgICAgY29uc3QgaW5kZXhlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gaW5kZXhlcztcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgaW5kZXhWYWx1ZSBpbiB2YWx1ZXMpIHtcbiAgICAgICAgaWYgKHZhbHVlc1tpbmRleFZhbHVlXSA9PT0gY2hhcmFjdGVyKSB7XG4gICAgICAgICAgaW5kZXhlcy5wdXNoKCtpbmRleFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlcztcbiAgICB9XG5cblxuICAgIHByb3RvdHlwZS5pbmRleGVzQnlTdHJpbmcgPSBmdW5jdGlvbiAoc3RyOiBzdHJpbmcpOiBBcnJheTxudW1iZXI+IHtcbiAgICAgIGNvbnN0IHZhbHVlczogQXJyYXk8c3RyaW5nPiA9IHRoaXMgYXMgYW55O1xuICAgICAgY29uc3QgaW5kZXhlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCB8fCAhc3RyIHx8ICFzdHIubGVuZ3RoIHx8IHZhbHVlcy5sZW5ndGggPCBzdHIubGVuZ3RoKSB7XG5cbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGluZGV4VmFsdWUgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbaW5kZXhWYWx1ZV0gIT09IHN0clswXSB8fCAoKCtpbmRleFZhbHVlKSArIHN0ci5sZW5ndGgpID4gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBzdHIuc3BsaXQoJycpKSB7XG5cbiAgICAgICAgICBpZiAodmFsdWVzWygraW5kZXhWYWx1ZSkgKyAoK2luZGV4KV0gIT09IHN0cltpbmRleF0pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleGVzLnB1c2goK2luZGV4VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlcztcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2NvbmZpZy1wcm9qZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS3ZMLE1BQU0sT0FBTywwQkFBMEI7SUFDcEIsVUFBVSxHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUN2QyxXQUFXLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDM0Msb0JBQW9CLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3QyxzQkFBc0IsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDbkQsaUJBQWlCLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3Qyx1QkFBdUIsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDcEQsdUJBQXVCLEdBQUcsTUFBTSxDQUFTLFdBQVcsQ0FBQyxDQUFDO0lBQ3RE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QUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5RSxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLElBQUksTUFBTSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ2hELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQzt3R0EvV1UsMEJBQTBCOzRHQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF0aE9mIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4sIGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGNvbmZpZ0J1dHRvbkNvbG9yLCBjb25maWdCdXR0b25TdGF0dXMsIGNvbmZpZ0J1dHRvblRhYiwgY29uZmlnSGVhZGluZywgY29uZmlnTGlua0J1dHRvbiwgZm9udENvbmZpZywgc2l6ZUJ1dHRvbkNvbmZpZywgc3R5bGVCdXR0b25UYWIsIHdlaWdodHMgfSBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LWRhdGEnO1xuaW1wb3J0IHsgSUNvbG9yQnV0dG9uLCBJTGlic1VpQ29uZmlnQnV0dG9uU2l6ZSwgSUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cywgSUxpYnNVaUNvbmZpZ0J1dHRvblRhYiwgSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHksIElMaWJzVWlDb25maWdGb250SGVhZGluZywgSUxpYnNVaUNvbmZpZ0ZvbnRXZWlnaHQgfSBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LmludGVyZmFjZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29uZmlnUHJvamVjdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lQ29sb3IgPSBzaWduYWw8c3RyaW5nPignIzIyNmZmNScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyNlNmU3ZWEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RXJyb3JDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZmY1NDU0Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbkhvdmVyRGFuZ2VyQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2YxNTc2NycpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckVycm9yQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2VlMmQ0MScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmREaXNhYmxlQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRleHRSZWFkb25seUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyMwNzE2MzEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RGlzYWJsZUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyM5Y2EyYWQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYWNrZ3JvdW5kUmVhZG9ubHlDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZjhmOWZhJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZFVzZXJTZWxlY3Rpb24gPSBzaWduYWw8c3RyaW5nPignIzAwMDAwMDQwJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZExpc3QgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXIgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIgPSBzaWduYWw8c3RyaW5nPignI2ZlZjVmNicpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZvbnQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHk+KGZvbnRDb25maWcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0hlYWQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPihjb25maWdIZWFkaW5nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzID0gc2lnbmFsPChyb290Q29sb3I6IHN0cmluZykgPT4geyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7fTtcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uID0gY29tcHV0ZWQ8eyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7IC4uLmNvbmZpZ0J1dHRvbkNvbG9yKHRoaXMudGhlbWVDb2xvcigpKSwgLi4uY29uZmlnTGlua0J1dHRvbih0aGlzLnRoZW1lQ29sb3IoKSksIC4uLnRoaXMuZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlcygpKHRoaXMudGhlbWVDb2xvcigpKSB9O1xuICB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdCdXR0b25TaXplID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25TaXplPihzaXplQnV0dG9uQ29uZmlnKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0J1dHRvblN0YXR1cyA9IHNpZ25hbDxJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzPihjb25maWdCdXR0b25TdGF0dXMoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uVGFiID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25UYWI+KGNvbmZpZ0J1dHRvblRhYigpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHlsZUNsYXNzR2xvYmFsRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NIZWFkRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NCdXR0b25UYWJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwRm9udEZhbWlseSgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBGb250SGVhZCgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBCdXR0b25UYWIoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwQnV0dG9uU2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWdTdHJpbmcoKTtcbiAgICB0aGlzLnNldENsYXNzR2xvYmFsKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IFRoZW1lQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGhlbWVDb2xvci5zZXQoY29sb3IgfHwgJyMyMjZmZjUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQm9yZGVyQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZTZlN2VhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJvcmRlckVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyRXJyb3JDb2xvci5zZXQoY29sb3IgfHwgJyNlZTJkNDEnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dEVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dEVycm9yQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZmY1NDU0Jyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEljb25Ib3ZlckRhbmdlckNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmljb25Ib3ZlckRhbmdlckNvbG9yLnNldChjb2xvciB8fCAnI2ZmNTQ1NCcpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kUmVhZG9ubHlDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kUmVhZG9ubHlDb2xvci5zZXQoY29sb3IgfHwgJyNmMTU3NjcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dFJlYWRvbmx5Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dFJlYWRvbmx5Q29sb3Iuc2V0KGNvbG9yIHx8ICcjMDcxNjMxJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRVc2VyU2VsZWN0aW9uKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRVc2VyU2VsZWN0aW9uLnNldChjb2xvciB8fCAnIzAwMDAwMDQwJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0KGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0LnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kTGlzdEhvdmVyKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0SG92ZXIuc2V0KGNvbG9yIHx8ICcjZjhmOWZhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYmFja2dyb3VuZExpc3RIb3Zlci5zZXQoY29sb3IgfHwgJyNmZWY1ZjYnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQmFja2dyb3VuZERpc2FibGVDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kRGlzYWJsZUNvbG9yLnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBUZXh0RGlzYWJsZUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHREaXNhYmxlQ29sb3Iuc2V0KGNvbG9yIHx8ICcjOWNhMmFkJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0ZvbnQoY29uZmlnRm9udDogSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHkpIHtcbiAgICB0aGlzLmNvbmZpZ0ZvbnQuc2V0KHsgLi4uY29uZmlnRm9udCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQ29uZmlnRm9udEhlYWQoY29uZmlnSGVhZDogSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nKSB7XG4gICAgdGhpcy5jb25maWdIZWFkLnNldCh7IC4uLmNvbmZpZ0hlYWQgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENvbmZpZ0J1dHRvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdCdXR0b247XG4gIH1cblxuICBwdWJsaWMgc2V0IEZ1bmN0aW9uR2V0Q29uZmlnQnV0dG9uSW5jbHVkZXMoZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlczogKHJvb3RDb2xvcjogc3RyaW5nKSA9PiB7IFtrZXk6IHN0cmluZ106IElDb2xvckJ1dHRvbiB9KSB7XG4gICAgdGhpcy5mdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzLnNldChmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29uZmlnQnV0dG9uU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ0J1dHRvblN0YXR1cygpO1xuICB9XG5cbiAgcHVibGljIHNldCBDb25maWdCdXR0b25TdGF0dXMoY29uZmlnOiBJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzKSB7XG4gICAgdGhpcy5jb25maWdCdXR0b25TdGF0dXMuc2V0KGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0J1dHRvblRhYihjb25maWc6IElMaWJzVWlDb25maWdCdXR0b25UYWIpIHtcbiAgICB0aGlzLmNvbmZpZ0J1dHRvblRhYi5zZXQoY29uZmlnKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBow6BtIMSR4buDIHPhu60gZOG7pW5nIGNobyBjb21wb25lbnQgaW5wdXQgc+G7rSBk4bulbmcgdGFnSW5wdXQgPSBmcmFtZUFyZWE7XG4gIHB1YmxpYyBzZXR1cEZvbnRGYW1pbHkoY3VycmVudERvYz86IERvY3VtZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIGN1cnJlbnREb2MgPSBjdXJyZW50RG9jIHx8IGRvY3VtZW50O1xuICAgICAgY29uc3QgZG9jID0gY3VycmVudERvYy5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUnLCBgJHt0aGlzLmNvbmZpZ0ZvbnQoKS5uYW1lfSxBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmYCk7XG4gICAgICBPYmplY3Qua2V5cyh3ZWlnaHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKCFnZXQodGhpcy5jb25maWdGb250KCksIGtleSBhcyBQYXRoT2Y8SUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHk+KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb250RmFjZSA9IG5ldyBGb250RmFjZSh0aGlzLmNvbmZpZ0ZvbnQoKS5uYW1lLCBgdXJsKCR7Z2V0KHRoaXMuY29uZmlnRm9udCgpLCBrZXkgYXMgUGF0aE9mPElMaWJzVWlDb25maWdGb250RmFtaWx5Pil9KWAsIHsgd2VpZ2h0OiBnZXQod2VpZ2h0cywga2V5IGFzIFBhdGhPZjxJTGlic1VpQ29uZmlnRm9udFdlaWdodD4pIH0pO1xuICAgICAgICBmb250RmFjZS5sb2FkKCkudGhlbigobG9hZGVkRm9udCkgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50RG9jICYmICdhZGQnIGluIGN1cnJlbnREb2MuZm9udHMpIHtcbiAgICAgICAgICAgIChjdXJyZW50RG9jLmZvbnRzIGFzIGFueSkuYWRkKGxvYWRlZEZvbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGb250SGVhZCgpIHtcbiAgICBjb25zdCBjb25maWdIZWFkc0RhdGEgPSB0aGlzLmNvbmZpZ0hlYWQoKTtcbiAgICBsZXQgc3R5bGVzID0gJyc7XG4gICAgT2JqZWN0LmtleXMoY29uZmlnSGVhZHNEYXRhKS5mb3JFYWNoKChrZXlDb25maWcpID0+IHtcbiAgICAgIGxldCBzdHlsZSA9IGBmb250LWZhbWlseTp2YXIoLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUsJ0FyaWFsJyk7YDtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdIZWFkc0RhdGEsIGtleUNvbmZpZyBhcyBQYXRoT2Y8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPik7XG4gICAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBzdHlsZSA9IGAke3N0eWxlfSR7a2V5fToke2dldChjb25maWcsIGtleSl9O2A7XG4gICAgICB9KTtcbiAgICAgIHN0eWxlcyA9IGAke3N0eWxlc30gLmxpYnMtdWktZm9udC0ke2tleUNvbmZpZ317JHtzdHlsZX19LmxpYnMtdWktZm9udC0ke2tleUNvbmZpZ31peyR7c3R5bGUucmVwbGFjZSgvOy9nLCAnICFpbXBvcnRhbnQ7Jyl9fWA7XG4gICAgfSk7XG5cbiAgICBzdHlsZXMgPSBgKntib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7fSR7c3R5bGVzfWA7XG5cbiAgICB0aGlzLnN0eWxlQ2xhc3NIZWFkRWwuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0hlYWRFbCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQnV0dG9uU2l6ZSgpIHtcbiAgICBjb25zdCBjb25maWdCdXR0b25TaXplID0gdGhpcy5jb25maWdCdXR0b25TaXplKCk7XG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIE9iamVjdC5rZXlzKGNvbmZpZ0J1dHRvblNpemUpLmZvckVhY2goKGtleVNpemUpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdCdXR0b25TaXplLCBrZXlTaXplIGFzIFBhdGhPZjxJTGlic1VpQ29uZmlnQnV0dG9uU2l6ZT4pO1xuICAgICAgT2JqZWN0LmtleXMoY29uZmlnKS5mb3JFYWNoKChrZXlUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBgLS1saWJzLXVpLWJ1dHRvbi1zaXplLSR7a2V5U2l6ZX0tJHtrZXlUeXBlLnJlcGxhY2UoL1tfXS9nLCAnLScpfWA7XG4gICAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCBnZXQoY29uZmlnLCBrZXlUeXBlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBCdXR0b25UYWIoKSB7XG4gICAgY29uc3QgY29uZmlnQnV0dG9uVGFiID0gdGhpcy5jb25maWdCdXR0b25UYWIoKTtcbiAgICBsZXQgc3R5bGVzID0gJyc7XG5cbiAgICBPYmplY3Qua2V5cyhjb25maWdCdXR0b25UYWIpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0KGNvbmZpZ0J1dHRvblRhYiwga2V5KTtcbiAgICAgIGNvbnN0IHN0eWxlID0gY29uZmlnID8gc3R5bGVCdXR0b25UYWIoa2V5LCBjb25maWcpIDogJyc7XG5cbiAgICAgIHN0eWxlcyA9IGAke3N0eWxlc30ke3N0eWxlfWA7XG4gICAgfSk7XG4gICAgdGhpcy5zdHlsZUNsYXNzQnV0dG9uVGFiRWwuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0J1dHRvblRhYkVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGhlbWVDb2xvcigpIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgW1xuICAgICAge1xuICAgICAgICBncm91cDogJ2xpYnMtdWknLFxuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgIGRlZmF1bHQ6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMCk/LmxpZ2h0LFxuICAgICAgICAgIGxpZ2h0XzE6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMjApPy5saWdodCxcbiAgICAgICAgICBsaWdodF8yOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDkwKT8ubGlnaHQsXG4gICAgICAgICAgbGlnaHRfMzogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA5NSk/LmxpZ2h0LFxuICAgICAgICAgIGxpZ2h0XzQ6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgNTApPy5saWdodCxcbiAgICAgICAgICBsaWdodF81OiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDcwKT8ubGlnaHQsXG4gICAgICAgICAgbGlnaHRfNjogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA4MCk/LmxpZ2h0LFxuICAgICAgICAgIGRhcms6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMjApPy5kYXJrLFxuICAgICAgICAgIGJhY2tncm91bmRfbGlzdDogdGhpcy5iYWNrZ3JvdW5kTGlzdCgpLFxuICAgICAgICAgIGJhY2tncm91bmRfbGlzdF9ob3ZlcjogdGhpcy5iYWNrZ3JvdW5kTGlzdEhvdmVyKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9saXN0X2hvdmVyX2RhbmdlcjogdGhpcy5iYWNrZ3JvdW5kTGlzdEhvdmVyRGFuZ2VyKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9zZWxlY3Rpb246IHRoaXMuYmFja2dyb3VuZFVzZXJTZWxlY3Rpb24oKSxcbiAgICAgICAgICBib3JkZXI6IHRoaXMuYm9yZGVyQ29sb3IoKSxcbiAgICAgICAgICBib3JkZXJfZXJyb3I6IHRoaXMuYm9yZGVyRXJyb3JDb2xvcigpLFxuICAgICAgICAgIHRleHRfZXJyb3I6IHRoaXMudGV4dEVycm9yQ29sb3IoKSxcbiAgICAgICAgICBpY29uX2hvdmVyX2RhbmdlcjogdGhpcy5pY29uSG92ZXJEYW5nZXJDb2xvcigpLFxuICAgICAgICAgIGJhY2tncm91bmRfcmVhZG9ubHk6IHRoaXMuYmFja2dyb3VuZFJlYWRvbmx5Q29sb3IoKSxcbiAgICAgICAgICB0ZXh0X3JlYWRvbmx5OiB0aGlzLnRleHRSZWFkb25seUNvbG9yKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9kaXNhYmxlOiB0aGlzLmJhY2tncm91bmREaXNhYmxlQ29sb3IoKSxcbiAgICAgICAgICB0ZXh0X2Rpc2FibGU6IHRoaXMudGV4dERpc2FibGVDb2xvcigpLFxuICAgICAgICAgIGdyYWRpZW50X2Zyb206IHRoaXMudGhlbWVDb2xvcigpLnRvTG9jYWxlVXBwZXJDYXNlKCkgPT09ICcjMjI2RkY1JyA/IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMTApPy5saWdodCA6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMCk/LmxpZ2h0LFxuICAgICAgICAgIGdyYWRpZW50X3RvOiB0aGlzLnRoZW1lQ29sb3IoKS50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSAnIzIyNkZGNScgPyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4oJyM1QjJFQkInLCAxMCk/LmxpZ2h0IDogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAyMCk/LmRhcmssXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGAtLSR7aXRlbS5ncm91cC5yZXBsYWNlKC9bX10vZywgJy0nKX0tJHtpdGVtLnR5cGUucmVwbGFjZSgvW19dL2csICctJyl9YDtcbiAgICAgIE9iamVjdC5rZXlzKGl0ZW0ucHJvcGVydHkpLmZvckVhY2goKGtleSkgPT4gZG9jLnN0eWxlLnNldFByb3BlcnR5KGAke25hbWV9LSR7a2V5LnJlcGxhY2UoL1tfXS9nLCAnLScpfWAsIChpdGVtLnByb3BlcnR5IGFzIGFueSlba2V5XSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbihzdGVwOiBudW1iZXIsIGNvbG9yPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbihjb2xvciB8fCB0aGlzLnRoZW1lQ29sb3IoKSwgc3RlcCB8fCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xhc3NHbG9iYWwoKSB7XG4gICAgdGhpcy5zdHlsZUNsYXNzR2xvYmFsRWwuaW5uZXJIVE1MID0gYFxuICAgIC5saWJzLXVpLWJvcmRlci1wcmltYXJ5LWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0LCAjMjI2RkY1KTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXByaW1hcnktZm9jdXMtZ2VuZXJhbHtib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEsICM0ZThjZjcpO31cbiAgICAubGlicy11aS1ib3JkZXItcHJpbWFyeS1ob3Zlci1nZW5lcmFse2JvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJvcmRlci1nZW5lcmFseyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbHtib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1ib3R0b20tZ2VuZXJhbHtib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItZGFzaGVkLWdlbmVyYWx7Ym9yZGVyOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXRvcC1kYXNoZWQtZ2VuZXJhbHtib3JkZXItdG9wOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtZGFzaGVkLWdlbmVyYWx7Ym9yZGVyLWxlZnQ6IGRhc2hlZCAxcHggdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtZGFzaGVkLWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWJvdHRvbS1kYXNoZWQtZ2VuZXJhbHtib3JkZXItYm90dG9tOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXgtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXktZ2VuZXJhbHtib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtdG9wLWdlbmVyYWx7Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItbGVmdC1ib3R0b20tZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1yaWdodC10b3AtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtYm90dG9tLWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWVycm9yLWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXItZXJyb3IsICNlZTJkNDEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWJnLWxpc3Qge2JhY2tncm91bmQtY29sb3I6IHZhcigtLWxpYnMtdWktYmFja2dyb3VuZC1saXN0LCAjZjhmOWZhKTt9XG4gICAgLmxpYnMtdWktYmctbGlzdC1ob3Zlcjpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlicy11aS1iYWNrZ3JvdW5kLWxpc3QtaG92ZXIsICNmOGY5ZmEpO31cbiAgICAubGlicy11aS1iZy1saXN0LWFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogIHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO31cbiAgICAubGlicy11aS1iZy1saXN0LWhvdmVyLWFjdGl2ZTphY3RpdmUge2JhY2tncm91bmQtY29sb3I6IHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtaG92ZXItZGFuZ2VyOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1saWJzLXVpLWJhY2tncm91bmQtbGlzdC1ob3Zlci1kYW5nZXIsICNmZWY1ZjYpOyBjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDsgW2NsYXNzKj1cImxpYnMtdWktaWNvbi1cIl0sW2NsYXNzKj1cImljb24tZm9udC0zcmRcIl17JjpiZWZvcmUsJjphZnRlcntjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDt9fX1cbiAgICAubGlicy11aS10ZXh0LWVycm9yIHtjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWVycm9yLCAjZmY1NDU0KSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS10ZXh0LWVycm9yOjpiZWZvcmUge2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZXJyb3IsICNmZjU0NTQpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUge2N1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWRpc2FibGUsICNjZGQwZDYpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGU6OmJlZm9yZSB7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWRpc2FibGUsICM5Y2EyYWQpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtZGlzYWJsZSwgI2Y4ZjlmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZS1hY3RpdmUge2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtNCwjOTFiN2ZhKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1kaXNhYmxlLWFjdGl2ZTo6YmVmb3JlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZS1hY3RpdmUtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktcmVhZG9ubHkge2N1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtcmVhZG9ubHksICMwNzE2MzEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXJlYWRvbmx5OjpiZWZvcmUge2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItdGV4dC1yZWFkb25seSwgIzA3MTYzMSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktcmVhZG9ubHktYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtcmVhZG9ubHksICNmOGY5ZmEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWljb24taG92ZXItZGFuZ2VyOmhvdmVyIHtjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDsgW2NsYXNzKj1cImxpYnMtdWktaWNvbi1cIl0sW2NsYXNzKj1cImljb24tZm9udC0zcmRcIl17JjpiZWZvcmUsJjphZnRlcntjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDt9fX1cbiAgICAuYnJlYWstd29yZHt3b3JkLWJyZWFrOiBicmVhay13b3JkICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXNoYWRvdyB7Ym94LXNoYWRvdzogMCAycHggMTBweCAxcHggcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctbWQge2JveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LWxnIHtib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LXRvcCB7Ym94LXNoYWRvdzogMCAtNXB4IDVweCAtNXB4IHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LXJpZ2h0IHtib3gtc2hhZG93OiAtNXB4IDAgNXB4IC01cHggcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctYm90dG9tIHtib3gtc2hhZG93OiAwIDVweCA1cHggLTVweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1sZWZ0IHtib3gtc2hhZG93OiA1cHggMCA1cHggLTVweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1zbSB7Ym94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctcG9wdXAge2JveC1zaGFkb3c6IC0ycHggMCA0cHggMCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1ub25lIHtib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1zbWFsbCB7Ym94LXNoYWRvdzogMHB4IDFweCAycHggMHB4IHJnYmEoMCwyMCw1MSwuMDQpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDIwLDUxLC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1tZWRpdW0ge2JveC1zaGFkb3c6IDBweCA0cHggOHB4IDBweCByZ2JhKDAsIDIwLCA1MSwgMC4wNCksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDIwLCA1MSwgMC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1sYXJnZSB7Ym94LXNoYWRvdzogMHB4IDRweCAxNnB4IDBweCByZ2JhKDAsMjAsNTEsLjEpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDIwLDUxLC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1leHRyYS1sYXJnZSB7Ym94LXNoYWRvdzogMHB4IDhweCA1NnB4IDBweCByZ2JhKDAsMjAsNTEsLjA1KSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwyMCw1MSwuMDIpO31cbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0aW9uLCAjMDAwMDAwNDApICFpbXBvcnRhbnQ7fVxuICAgIDo6c2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0aW9uLCAjMDAwMDAwNDApICFpbXBvcnRhbnQ7fVxuICAgIGAucmVwbGFjZSgvXFxuKy9nLCAnJyk7XG5cbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZCh0aGlzLnN0eWxlQ2xhc3NHbG9iYWxFbCk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ1N0cmluZygpIHtcbiAgICBjb25zdCBwcm90b3R5cGUgPSBTdHJpbmcucHJvdG90eXBlIGFzIGFueTtcbiAgICBwcm90b3R5cGUucmVwbGFjZUF0ID0gZnVuY3Rpb24gKGluZGV4OiBudW1iZXIsIHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc3BsaXQoJycpO1xuXG4gICAgICB2YWx1ZXNbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuam9pbignJyk7XG4gICAgfTtcblxuICAgIHByb3RvdHlwZS5yZXBsYWNlQWxsID0gZnVuY3Rpb24gKGluZGV4OiBudW1iZXIsIHNlcGFyYXRvcjogc3RyaW5nLCByZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLCAnZycpO1xuXG4gICAgICByZXR1cm4gYCR7dGhpcy5zdWJzdHIoMCwgaW5kZXgpfSR7dGhpcy5zdWJzdHIoaW5kZXggKyAxICsgKHJlcGxhY2VtZW50Py5sZW5ndGggfHwgMCkpLnJlcGxhY2UocmVnZXgsIHJlcGxhY2VtZW50KX1gO1xuICAgIH07XG5cbiAgICBwcm90b3R5cGUub2NjdXJyZW5jZXNCeUNoYXJhY3RlciA9IGZ1bmN0aW9uIChjaGFyYWN0ZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNwbGl0KCcnKTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKChjaGFyOiBzdHJpbmcpID0+IGNoYXIgPT09IGNoYXJhY3RlcikubGVuZ3RoO1xuICAgIH07XG5cbiAgICBwcm90b3R5cGUuaW5kZXhlc09mQ2hhcmFjdGVyID0gZnVuY3Rpb24gKGNoYXJhY3Rlcjogc3RyaW5nKTogQXJyYXk8bnVtYmVyPiB7XG4gICAgICBjb25zdCB2YWx1ZXM6IEFycmF5PHN0cmluZz4gPSB0aGlzLnNwbGl0KCcnKTtcbiAgICAgIGNvbnN0IGluZGV4ZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGluZGV4VmFsdWUgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbaW5kZXhWYWx1ZV0gPT09IGNoYXJhY3Rlcikge1xuICAgICAgICAgIGluZGV4ZXMucHVzaCgraW5kZXhWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgfTtcblxuICAgIHByb3RvdHlwZS5pbmRleGVzQnlTdHJpbmcgPSBmdW5jdGlvbiAoc3RyOiBzdHJpbmcpOiBBcnJheTxudW1iZXI+IHtcbiAgICAgIGNvbnN0IHZhbHVlczogQXJyYXk8c3RyaW5nPiA9IHRoaXMgYXMgYW55O1xuICAgICAgY29uc3QgaW5kZXhlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCB8fCAhc3RyIHx8ICFzdHIubGVuZ3RoIHx8IHZhbHVlcy5sZW5ndGggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBpbmRleFZhbHVlIGluIHZhbHVlcykge1xuICAgICAgICBpZiAodmFsdWVzW2luZGV4VmFsdWVdICE9PSBzdHJbMF0gfHwgK2luZGV4VmFsdWUgKyBzdHIubGVuZ3RoID4gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBzdHIuc3BsaXQoJycpKSB7XG4gICAgICAgICAgaWYgKHZhbHVlc1sraW5kZXhWYWx1ZSArICtpbmRleF0gIT09IHN0cltpbmRleF0pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleGVzLnB1c2goK2luZGV4VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlcztcbiAgICB9O1xuICB9XG59XG4iXX0=
|
package/esm2022/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from './config-project.service';
|
|
2
2
|
export * from './config-project.interface';
|
|
3
3
|
export * from './config-project-data';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2NvbmZpZy1wcm9qZWN0L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnLXByb2plY3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LWRhdGEnO1xuIl19
|