@worktile/planet 17.0.0-next.1 → 17.0.0-next.3
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/CHANGELOG.md +18 -0
- package/assets-loader.d.ts +13 -6
- package/assets-loader.d.ts.map +1 -1
- package/esm2022/assets-loader.mjs +74 -20
- package/esm2022/helpers.mjs +44 -44
- package/esm2022/inner-types.mjs +2 -0
- package/fesm2022/worktile-planet.mjs +115 -61
- package/fesm2022/worktile-planet.mjs.map +1 -1
- package/helpers.d.ts +7 -13
- package/helpers.d.ts.map +1 -1
- package/inner-types.d.ts +12 -0
- package/inner-types.d.ts.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
# [17.0.0-next.3](https://github.com/worktile/ngx-planet/compare/17.0.0-next.2...17.0.0-next.3) (2024-03-15)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* load script use type module when html script has type="module" ([#314](https://github.com/worktile/ngx-planet/issues/314)) ([4f50364](https://github.com/worktile/ngx-planet/commit/4f50364e718235fd5cbfd1258f72e37d1fa844c5))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [17.0.0-next.2](https://github.com/worktile/ngx-planet/compare/17.0.0-next.1...17.0.0-next.2) (2024-03-14)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* should parse script without "> end ([#312](https://github.com/worktile/ngx-planet/issues/312)) ([634d08b](https://github.com/worktile/ngx-planet/commit/634d08ba7f763beb368916b0c7846d091461dc16))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
5
23
|
# [17.0.0-next.1](https://github.com/worktile/ngx-planet/compare/17.0.0-next.0...17.0.0-next.1) (2024-03-13)
|
|
6
24
|
|
|
7
25
|
|
package/assets-loader.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { PlanetApplication } from './planet.class';
|
|
4
|
+
import { AssetsTagItem, ScriptTagAttributes } from './inner-types';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export interface AssetsLoadResult {
|
|
6
7
|
src: string;
|
|
@@ -12,23 +13,29 @@ export declare class AssetsLoader {
|
|
|
12
13
|
private http;
|
|
13
14
|
private loadedSources;
|
|
14
15
|
constructor(http: HttpClient);
|
|
15
|
-
loadScript(src: string): Observable<AssetsLoadResult>;
|
|
16
|
+
loadScript(src: string, tagAttributes?: ScriptTagAttributes): Observable<AssetsLoadResult>;
|
|
16
17
|
loadScriptWithSandbox(app: string, src: string): Observable<AssetsLoadResult>;
|
|
17
18
|
loadStyle(src: string): Observable<AssetsLoadResult>;
|
|
18
|
-
loadScripts(sources:
|
|
19
|
+
loadScripts(sources: AssetsTagItem[], options?: {
|
|
19
20
|
app?: string;
|
|
20
21
|
sandbox?: boolean;
|
|
21
22
|
serial?: boolean;
|
|
22
23
|
}): Observable<AssetsLoadResult[]>;
|
|
23
|
-
loadStyles(sources:
|
|
24
|
-
loadScriptsAndStyles(scripts?:
|
|
24
|
+
loadStyles(sources: AssetsTagItem[]): Observable<AssetsLoadResult[]>;
|
|
25
|
+
loadScriptsAndStyles(scripts?: AssetsTagItem[], styles?: AssetsTagItem[], options?: {
|
|
25
26
|
app?: string;
|
|
26
27
|
sandbox?: boolean;
|
|
27
28
|
serial?: boolean;
|
|
28
29
|
}): Observable<[AssetsLoadResult[], AssetsLoadResult[]]>;
|
|
29
|
-
|
|
30
|
+
/**
|
|
31
|
+
* <script type="module" src="http://127.0.0.1:3001/main.js" async defer></script>
|
|
32
|
+
* => [`type="module"`, "async ", "defer>"] as attributeStrMatchArr
|
|
33
|
+
* => { type: "module", async: "async", defer: "defer" } as attributes
|
|
34
|
+
*/
|
|
35
|
+
parseTagAttributes(tag: string): Record<string, string>;
|
|
36
|
+
parseManifestFromHTML(html: string): Record<string, AssetsTagItem>;
|
|
30
37
|
loadAppAssets(app: PlanetApplication): Observable<[AssetsLoadResult[], AssetsLoadResult[]]>;
|
|
31
|
-
loadManifest(url: string, responseType?: 'text' | 'json'): Observable<Record<string,
|
|
38
|
+
loadManifest(url: string, responseType?: 'text' | 'json'): Observable<Record<string, AssetsTagItem>>;
|
|
32
39
|
static ɵfac: i0.ɵɵFactoryDeclaration<AssetsLoader, never>;
|
|
33
40
|
static ɵprov: i0.ɵɵInjectableDeclaration<AssetsLoader>;
|
|
34
41
|
}
|
package/assets-loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets-loader.d.ts","sourceRoot":"","sources":["../../packages/planet/src/assets-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,UAAU,EAA8B,MAAM,MAAM,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,gBAAgB,CAAC;;
|
|
1
|
+
{"version":3,"file":"assets-loader.d.ts","sourceRoot":"","sources":["../../packages/planet/src/assets-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,UAAU,EAA8B,MAAM,MAAM,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;;AAMnE,MAAM,WAAW,gBAAgB;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAGa,YAAY;IAGT,OAAO,CAAC,IAAI;IAFxB,OAAO,CAAC,aAAa,CAAgB;gBAEjB,IAAI,EAAE,UAAU;IAEpC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IA8D1F,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAsC7E,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAyCpD,WAAW,CACP,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,GAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KAIpB,GACF,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAyBjC,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAWpE,oBAAoB,CAChB,OAAO,GAAE,aAAa,EAAO,EAC7B,MAAM,GAAE,aAAa,EAAO,EAC5B,OAAO,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KACpB;IAKL;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAsBvD,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAmClE,aAAa,CAAC,GAAG,EAAE,iBAAiB;IA2BpC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,GAAG,MAAe,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;yCArSnG,YAAY;6CAAZ,YAAY;CA0TxB"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { hashCode, isEmpty,
|
|
2
|
+
import { hashCode, isEmpty, getResourceFileName, getExtName, isObject, getAssetsBasePath, getScriptsAndStylesAssets } from './helpers';
|
|
3
3
|
import { of, Observable, forkJoin, concat } from 'rxjs';
|
|
4
4
|
import { map, switchMap, concatAll } from 'rxjs/operators';
|
|
5
5
|
import { HttpClient } from '@angular/common/http';
|
|
6
6
|
import { createSandbox } from './sandbox';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/common/http";
|
|
9
|
-
const STYLE_LINK_OR_SCRIPT_REG = /<[script|link]
|
|
10
|
-
const LINK_OR_SRC_REG = /(src|href)=["'](.*?)["']/i;
|
|
9
|
+
const STYLE_LINK_OR_SCRIPT_REG = /<[script|link].*?>/gi;
|
|
10
|
+
const LINK_OR_SRC_REG = /(src|href)=["'](.*?[\.js|\.css])["']/i;
|
|
11
|
+
const TAG_ATTRS_REG = /(type|defer|async)((=["'].*?["'])|\s|\>)/gi;
|
|
11
12
|
export class AssetsLoader {
|
|
12
13
|
constructor(http) {
|
|
13
14
|
this.http = http;
|
|
14
15
|
this.loadedSources = [];
|
|
15
16
|
}
|
|
16
|
-
loadScript(src) {
|
|
17
|
+
loadScript(src, tagAttributes) {
|
|
17
18
|
const id = hashCode(src);
|
|
18
19
|
if (this.loadedSources.includes(id)) {
|
|
19
20
|
return of({
|
|
@@ -25,9 +26,14 @@ export class AssetsLoader {
|
|
|
25
26
|
}
|
|
26
27
|
return new Observable((observer) => {
|
|
27
28
|
const script = document.createElement('script');
|
|
28
|
-
script.type = 'text/javascript';
|
|
29
|
+
script.type = tagAttributes?.type || 'text/javascript';
|
|
29
30
|
script.src = src;
|
|
30
|
-
|
|
31
|
+
if (!tagAttributes?.defer || tagAttributes?.defer !== 'false') {
|
|
32
|
+
script.defer = true;
|
|
33
|
+
}
|
|
34
|
+
if (!tagAttributes?.async && tagAttributes?.async === 'false') {
|
|
35
|
+
script.async = true;
|
|
36
|
+
}
|
|
31
37
|
if (script['readyState']) {
|
|
32
38
|
// IE
|
|
33
39
|
script['onreadystatechange'] = () => {
|
|
@@ -151,13 +157,13 @@ export class AssetsLoader {
|
|
|
151
157
|
if (isEmpty(sources)) {
|
|
152
158
|
return of(null);
|
|
153
159
|
}
|
|
154
|
-
const observables = sources.map(
|
|
160
|
+
const observables = sources.map(source => {
|
|
155
161
|
// TODO: 暂时只支持Proxy沙箱
|
|
156
162
|
if (options.sandbox && window.Proxy) {
|
|
157
|
-
return this.loadScriptWithSandbox(options.app, src);
|
|
163
|
+
return this.loadScriptWithSandbox(options.app, source.src);
|
|
158
164
|
}
|
|
159
165
|
else {
|
|
160
|
-
return this.loadScript(src);
|
|
166
|
+
return this.loadScript(source.src, source.attributes);
|
|
161
167
|
}
|
|
162
168
|
});
|
|
163
169
|
if (options.serial) {
|
|
@@ -174,19 +180,46 @@ export class AssetsLoader {
|
|
|
174
180
|
if (isEmpty(sources)) {
|
|
175
181
|
return of(null);
|
|
176
182
|
}
|
|
177
|
-
return forkJoin(sources.map(
|
|
178
|
-
return this.loadStyle(src);
|
|
183
|
+
return forkJoin(sources.map(source => {
|
|
184
|
+
return this.loadStyle(source.src);
|
|
179
185
|
}));
|
|
180
186
|
}
|
|
181
187
|
loadScriptsAndStyles(scripts = [], styles = [], options) {
|
|
182
188
|
return forkJoin([this.loadScripts(scripts, options), this.loadStyles(styles)]);
|
|
183
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* <script type="module" src="http://127.0.0.1:3001/main.js" async defer></script>
|
|
192
|
+
* => [`type="module"`, "async ", "defer>"] as attributeStrMatchArr
|
|
193
|
+
* => { type: "module", async: "async", defer: "defer" } as attributes
|
|
194
|
+
*/
|
|
195
|
+
parseTagAttributes(tag) {
|
|
196
|
+
const attributeStrMatchArr = tag.match(TAG_ATTRS_REG);
|
|
197
|
+
if (attributeStrMatchArr) {
|
|
198
|
+
const attributes = {};
|
|
199
|
+
attributeStrMatchArr.forEach(item => {
|
|
200
|
+
const equalSignIndex = item.indexOf('=');
|
|
201
|
+
if (equalSignIndex > 0) {
|
|
202
|
+
// 'type="module"' => { type: "module" }
|
|
203
|
+
const key = item.slice(0, equalSignIndex);
|
|
204
|
+
attributes[key] = item.slice(equalSignIndex + 2, item.length - 1);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// 'async ' => 'async'
|
|
208
|
+
// 'defer>' => 'defer'
|
|
209
|
+
const key = item.slice(0, item.length - 1);
|
|
210
|
+
attributes[key] = key;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
return attributes;
|
|
214
|
+
}
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
184
217
|
parseManifestFromHTML(html) {
|
|
185
218
|
const result = {};
|
|
186
219
|
const matchResult = html.match(STYLE_LINK_OR_SCRIPT_REG);
|
|
187
220
|
matchResult.forEach(item => {
|
|
188
221
|
const linkOrSrcResult = item.match(LINK_OR_SRC_REG);
|
|
189
|
-
if (linkOrSrcResult[2]) {
|
|
222
|
+
if (linkOrSrcResult && linkOrSrcResult[2]) {
|
|
190
223
|
const src = linkOrSrcResult[2];
|
|
191
224
|
const hashName = getResourceFileName(src);
|
|
192
225
|
let barSplitIndex = hashName.indexOf('-');
|
|
@@ -195,7 +228,20 @@ export class AssetsLoader {
|
|
|
195
228
|
if (splitIndex > -1) {
|
|
196
229
|
const name = hashName.slice(0, splitIndex);
|
|
197
230
|
const ext = getExtName(hashName);
|
|
198
|
-
|
|
231
|
+
const assetsTag = {
|
|
232
|
+
src: src
|
|
233
|
+
};
|
|
234
|
+
result[ext ? `${name}.${ext}` : name] = assetsTag;
|
|
235
|
+
const attributes = this.parseTagAttributes(item);
|
|
236
|
+
if (attributes) {
|
|
237
|
+
assetsTag.attributes = attributes;
|
|
238
|
+
}
|
|
239
|
+
// const typeTagResult = item.match(TAG_TYPE_REG);
|
|
240
|
+
// if (typeTagResult && typeTagResult[1]) {
|
|
241
|
+
// assetsTag.attributes = {
|
|
242
|
+
// type: typeTagResult[1]
|
|
243
|
+
// };
|
|
244
|
+
// }
|
|
199
245
|
}
|
|
200
246
|
}
|
|
201
247
|
});
|
|
@@ -209,10 +255,7 @@ export class AssetsLoader {
|
|
|
209
255
|
const isHtml = manifestExt === 'html';
|
|
210
256
|
const responseType = isHtml ? 'text' : 'json';
|
|
211
257
|
return this.loadManifest(`${manifest}?t=${new Date().getTime()}`, responseType).pipe(switchMap(manifestResult => {
|
|
212
|
-
|
|
213
|
-
manifestResult = this.parseManifestFromHTML(manifestResult);
|
|
214
|
-
}
|
|
215
|
-
const { scripts, styles } = getScriptsAndStylesFullPaths(app, basePath, manifestResult);
|
|
258
|
+
const { scripts, styles } = getScriptsAndStylesAssets(app, basePath, manifestResult);
|
|
216
259
|
return this.loadScriptsAndStyles(scripts, styles, {
|
|
217
260
|
app: app.name,
|
|
218
261
|
sandbox: app.sandbox,
|
|
@@ -221,7 +264,7 @@ export class AssetsLoader {
|
|
|
221
264
|
}));
|
|
222
265
|
}
|
|
223
266
|
else {
|
|
224
|
-
const { scripts, styles } =
|
|
267
|
+
const { scripts, styles } = getScriptsAndStylesAssets(app, basePath);
|
|
225
268
|
return this.loadScriptsAndStyles(scripts, styles, {
|
|
226
269
|
app: app.name,
|
|
227
270
|
sandbox: app.sandbox,
|
|
@@ -235,7 +278,18 @@ export class AssetsLoader {
|
|
|
235
278
|
responseType: responseType
|
|
236
279
|
})
|
|
237
280
|
.pipe(map((response) => {
|
|
238
|
-
|
|
281
|
+
if (responseType === 'text') {
|
|
282
|
+
return this.parseManifestFromHTML(response);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
const result = {};
|
|
286
|
+
Object.keys(response).forEach(key => {
|
|
287
|
+
result[key] = {
|
|
288
|
+
src: response[key]
|
|
289
|
+
};
|
|
290
|
+
});
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
239
293
|
}));
|
|
240
294
|
}
|
|
241
295
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AssetsLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -247,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
247
301
|
providedIn: 'root'
|
|
248
302
|
}]
|
|
249
303
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvYXNzZXRzLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUksT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQVksUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRTFDLE1BQU0sd0JBQXdCLEdBQUcsdUJBQXVCLENBQUM7QUFDekQsTUFBTSxlQUFlLEdBQUcsMkJBQTJCLENBQUM7QUFZcEQsTUFBTSxPQUFPLFlBQVk7SUFHckIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUY1QixrQkFBYSxHQUFhLEVBQUUsQ0FBQztJQUVFLENBQUM7SUFFeEMsVUFBVSxDQUFDLEdBQVc7UUFDbEIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztnQkFDTixHQUFHLEVBQUUsR0FBRztnQkFDUixRQUFRLEVBQUUsRUFBRTtnQkFDWixNQUFNLEVBQUUsSUFBSTtnQkFDWixNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQW9DLEVBQUUsRUFBRTtZQUMzRCxNQUFNLE1BQU0sR0FBc0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRSxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUs7Z0JBQ0wsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsR0FBRyxFQUFFO29CQUNoQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO3dCQUMzRSxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQ3BDLFFBQVEsQ0FBQyxJQUFJLENBQUM7NEJBQ1YsR0FBRyxFQUFFLEdBQUc7NEJBQ1IsUUFBUSxFQUFFLEVBQUU7NEJBQ1osTUFBTSxFQUFFLElBQUk7NEJBQ1osTUFBTSxFQUFFLFFBQVE7eUJBQ25CLENBQUMsQ0FBQzt3QkFDSCxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNoQyxDQUFDO2dCQUNMLENBQUMsQ0FBQztZQUNOLENBQUM7aUJBQU0sQ0FBQztnQkFDSixTQUFTO2dCQUNULE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO29CQUNqQixRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUNWLEdBQUcsRUFBRSxHQUFHO3dCQUNSLFFBQVEsRUFBRSxFQUFFO3dCQUNaLE1BQU0sRUFBRSxJQUFJO3dCQUNaLE1BQU0sRUFBRSxRQUFRO3FCQUNuQixDQUFDLENBQUM7b0JBQ0gsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDO1lBQ04sQ0FBQztZQUNELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JCLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0JBQ1gsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsUUFBUSxFQUFFLEVBQUU7b0JBQ1osTUFBTSxFQUFFLEtBQUs7b0JBQ2IsTUFBTSxFQUFFLE9BQU87b0JBQ2YsS0FBSyxFQUFFLEtBQUs7aUJBQ2YsQ0FBQyxDQUFDO2dCQUNILFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQUM7WUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUMxQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxDQUFDO2dCQUNOLEdBQUcsRUFBRSxHQUFHO2dCQUNSLFFBQVEsRUFBRSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxRQUFRO2FBQ25CLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsUUFBb0MsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDbEQsQ0FBQyxJQUFZLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDVixHQUFHLEVBQUUsR0FBRztvQkFDUixRQUFRLEVBQUUsRUFBRTtvQkFDWixNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUUsUUFBUTtpQkFDbkIsQ0FBQyxDQUFDO2dCQUNILFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixDQUFDLEVBQ0QsS0FBSyxDQUFDLEVBQUU7Z0JBQ0osUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDWCxHQUFHLEVBQUUsR0FBRztvQkFDUixRQUFRLEVBQUUsRUFBRTtvQkFDWixNQUFNLEVBQUUsS0FBSztvQkFDYixNQUFNLEVBQUUsT0FBTztvQkFDZixLQUFLLEVBQUUsS0FBSztpQkFDZixDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVc7UUFDakIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztnQkFDTixHQUFHLEVBQUUsR0FBRztnQkFDUixRQUFRLEVBQUUsRUFBRTtnQkFDWixNQUFNLEVBQUUsSUFBSTtnQkFDWixNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQW9DLEVBQUUsRUFBRTtZQUMzRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDZixRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNWLEdBQUcsRUFBRSxHQUFHO29CQUNSLFFBQVEsRUFBRSxFQUFFO29CQUNaLE1BQU0sRUFBRSxJQUFJO29CQUNaLE1BQU0sRUFBRSxRQUFRO2lCQUNuQixDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixRQUFRLENBQUMsS0FBSyxDQUFDO29CQUNYLEdBQUcsRUFBRSxHQUFHO29CQUNSLFFBQVEsRUFBRSxFQUFFO29CQUNaLE1BQU0sRUFBRSxJQUFJO29CQUNaLE1BQU0sRUFBRSxRQUFRO29CQUNoQixLQUFLLEVBQUUsS0FBSztpQkFDZixDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUNQLE9BQWlCLEVBQ2pCLFVBSUk7UUFDQSxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxLQUFLO0tBQ2pCO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQyxxQkFBcUI7WUFDckIsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsRUFDRixTQUFTLEVBQUUsQ0FDZCxDQUFDO1lBQ0YsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWlCO1FBQ3hCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCxvQkFBb0IsQ0FDaEIsVUFBb0IsRUFBRSxFQUN0QixTQUFtQixFQUFFLEVBQ3JCLE9BSUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFZO1FBQzlCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDekQsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BELElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLE1BQU0sVUFBVSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3RFLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUMzQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ2pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ2hELENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQXNCO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUF5QixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0gsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxNQUFNLE1BQU0sR0FBRyxXQUFXLEtBQUssTUFBTSxDQUFDO1lBQ3RDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ2hGLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxZQUFZLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQzFCLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBd0IsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO2dCQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsNEJBQTRCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxjQUF3QyxDQUFDLENBQUM7Z0JBQ2xILE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7b0JBQzlDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDYixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87b0JBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsVUFBVTtpQkFDekIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDeEUsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRTtnQkFDOUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNiLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztnQkFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVcsRUFBRSxlQUFnQyxNQUFNO1FBQzVELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ04sWUFBWSxFQUFFLFlBQXNCO1NBQ3ZDLENBQUM7YUFDRCxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDbEIsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7OEdBcFFRLFlBQVk7a0hBQVosWUFBWSxjQUZULE1BQU07OzJGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaGFzaENvZGUsIGlzRW1wdHksIGdldFNjcmlwdHNBbmRTdHlsZXNGdWxsUGF0aHMsIGdldFJlc291cmNlRmlsZU5hbWUsIGdldEV4dE5hbWUsIGlzT2JqZWN0LCBnZXRBc3NldHNCYXNlUGF0aCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBvZiwgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIsIGZvcmtKb2luLCBjb25jYXQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCBjb25jYXRBbGwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgUGxhbmV0QXBwbGljYXRpb24sIFBsYW5ldEFwcGxpY2F0aW9uRW50cnkgfSBmcm9tICcuL3BsYW5ldC5jbGFzcyc7XG5pbXBvcnQgeyBjcmVhdGVTYW5kYm94IH0gZnJvbSAnLi9zYW5kYm94JztcblxuY29uc3QgU1RZTEVfTElOS19PUl9TQ1JJUFRfUkVHID0gLzxbc2NyaXB0fGxpbmtdLio/XCI+L2dpO1xuY29uc3QgTElOS19PUl9TUkNfUkVHID0gLyhzcmN8aHJlZik9W1wiJ10oLio/KVtcIiddL2k7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRzTG9hZFJlc3VsdCB7XG4gICAgc3JjOiBzdHJpbmc7XG4gICAgaGFzaENvZGU6IG51bWJlcjtcbiAgICBsb2FkZWQ6IGJvb2xlYW47XG4gICAgc3RhdHVzOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRzTG9hZGVyIHtcbiAgICBwcml2YXRlIGxvYWRlZFNvdXJjZXM6IG51bWJlcltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgICBsb2FkU2NyaXB0KHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBc3NldHNMb2FkUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGlkID0gaGFzaENvZGUoc3JjKTtcbiAgICAgICAgaWYgKHRoaXMubG9hZGVkU291cmNlcy5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7XG4gICAgICAgICAgICAgICAgc3JjOiBzcmMsXG4gICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBc3NldHNMb2FkUmVzdWx0PikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7XG4gICAgICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHNjcmlwdFsncmVhZHlTdGF0ZSddKSB7XG4gICAgICAgICAgICAgICAgLy8gSUVcbiAgICAgICAgICAgICAgICBzY3JpcHRbJ29ucmVhZHlzdGF0ZWNoYW5nZSddID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0WydyZWFkeVN0YXRlJ10gPT09ICdsb2FkZWQnIHx8IHNjcmlwdFsncmVhZHlTdGF0ZSddID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRbJ29ucmVhZHlzdGF0ZWNoYW5nZSddID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hDb2RlOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRTb3VyY2VzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gT3RoZXJzXG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHNyYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hDb2RlOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkU291cmNlcy5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICBzcmM6IHNyYyxcbiAgICAgICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkU2NyaXB0V2l0aFNhbmRib3goYXBwOiBzdHJpbmcsIHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBc3NldHNMb2FkUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGlkID0gaGFzaENvZGUoc3JjKTtcbiAgICAgICAgaWYgKHRoaXMubG9hZGVkU291cmNlcy5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7XG4gICAgICAgICAgICAgICAgc3JjOiBzcmMsXG4gICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBc3NldHNMb2FkUmVzdWx0PikgPT4ge1xuICAgICAgICAgICAgdGhpcy5odHRwLmdldChzcmMsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChjb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRTb3VyY2VzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzYW5kYm94ID0gY3JlYXRlU2FuZGJveChhcHApO1xuICAgICAgICAgICAgICAgICAgICBzYW5kYm94LmV4ZWNTY3JpcHQoY29kZSwgc3JjKTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHNyYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hDb2RlOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkU3R5bGUoc3JjOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFzc2V0c0xvYWRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgaWQgPSBoYXNoQ29kZShzcmMpO1xuICAgICAgICBpZiAodGhpcy5sb2FkZWRTb3VyY2VzLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgICAgICBzcmM6IHNyYyxcbiAgICAgICAgICAgICAgICBoYXNoQ29kZTogaWQsXG4gICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEFzc2V0c0xvYWRSZXN1bHQ+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgICAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgICAgICAgICAgIGxpbmsudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzcmM7XG4gICAgICAgICAgICBsaW5rLm1lZGlhID0gJ2FsbCc7XG4gICAgICAgICAgICBsaW5rLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgc3JjOiBzcmMsXG4gICAgICAgICAgICAgICAgICAgIGhhc2hDb2RlOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZFNvdXJjZXMucHVzaChpZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGluay5vbmVycm9yID0gZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgc3JjOiBzcmMsXG4gICAgICAgICAgICAgICAgICAgIGhhc2hDb2RlOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRTY3JpcHRzKFxuICAgICAgICBzb3VyY2VzOiBzdHJpbmdbXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgYXBwPzogc3RyaW5nO1xuICAgICAgICAgICAgc2FuZGJveD86IGJvb2xlYW47XG4gICAgICAgICAgICBzZXJpYWw/OiBib29sZWFuO1xuICAgICAgICB9ID0ge1xuICAgICAgICAgICAgc2VyaWFsOiBmYWxzZSxcbiAgICAgICAgICAgIHNhbmRib3g6IGZhbHNlXG4gICAgICAgIH1cbiAgICApOiBPYnNlcnZhYmxlPEFzc2V0c0xvYWRSZXN1bHRbXT4ge1xuICAgICAgICBpZiAoaXNFbXB0eShzb3VyY2VzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzID0gc291cmNlcy5tYXAoc3JjID0+IHtcbiAgICAgICAgICAgIC8vIFRPRE86IOaaguaXtuWPquaUr+aMgVByb3h55rKZ566xXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zYW5kYm94ICYmIHdpbmRvdy5Qcm94eSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRTY3JpcHRXaXRoU2FuZGJveChvcHRpb25zLmFwcCwgc3JjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFNjcmlwdChzcmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9wdGlvbnMuc2VyaWFsKSB7XG4gICAgICAgICAgICBjb25zdCBhID0gY29uY2F0KC4uLm9ic2VydmFibGVzKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtpdGVtXSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY29uY2F0QWxsKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcykucGlwZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9hZFN0eWxlcyhzb3VyY2VzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8QXNzZXRzTG9hZFJlc3VsdFtdPiB7XG4gICAgICAgIGlmIChpc0VtcHR5KHNvdXJjZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgICAgICAgc291cmNlcy5tYXAoc3JjID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkU3R5bGUoc3JjKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbG9hZFNjcmlwdHNBbmRTdHlsZXMoXG4gICAgICAgIHNjcmlwdHM6IHN0cmluZ1tdID0gW10sXG4gICAgICAgIHN0eWxlczogc3RyaW5nW10gPSBbXSxcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgIGFwcD86IHN0cmluZztcbiAgICAgICAgICAgIHNhbmRib3g/OiBib29sZWFuO1xuICAgICAgICAgICAgc2VyaWFsPzogYm9vbGVhbjtcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICByZXR1cm4gZm9ya0pvaW4oW3RoaXMubG9hZFNjcmlwdHMoc2NyaXB0cywgb3B0aW9ucyksIHRoaXMubG9hZFN0eWxlcyhzdHlsZXMpXSk7XG4gICAgfVxuXG4gICAgcGFyc2VNYW5pZmVzdEZyb21IVE1MKGh0bWw6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSBodG1sLm1hdGNoKFNUWUxFX0xJTktfT1JfU0NSSVBUX1JFRyk7XG4gICAgICAgIG1hdGNoUmVzdWx0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rT3JTcmNSZXN1bHQgPSBpdGVtLm1hdGNoKExJTktfT1JfU1JDX1JFRyk7XG4gICAgICAgICAgICBpZiAobGlua09yU3JjUmVzdWx0WzJdKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3JjID0gbGlua09yU3JjUmVzdWx0WzJdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hOYW1lID0gZ2V0UmVzb3VyY2VGaWxlTmFtZShzcmMpO1xuICAgICAgICAgICAgICAgIGxldCBiYXJTcGxpdEluZGV4ID0gaGFzaE5hbWUuaW5kZXhPZignLScpO1xuICAgICAgICAgICAgICAgIGxldCBkb3RTcGxpdEluZGV4ID0gaGFzaE5hbWUuaW5kZXhPZignLicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0SW5kZXggPSBiYXJTcGxpdEluZGV4ID4gLTEgPyBiYXJTcGxpdEluZGV4IDogZG90U3BsaXRJbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBoYXNoTmFtZS5zbGljZSgwLCBzcGxpdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXh0ID0gZ2V0RXh0TmFtZShoYXNoTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtleHQgPyBgJHtuYW1lfS4ke2V4dH1gIDogbmFtZV0gPSBzcmM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBsb2FkQXBwQXNzZXRzKGFwcDogUGxhbmV0QXBwbGljYXRpb24pIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBnZXRBc3NldHNCYXNlUGF0aChhcHApO1xuICAgICAgICBjb25zdCBtYW5pZmVzdCA9IGFwcC5lbnRyeSA/IChpc09iamVjdDxQbGFuZXRBcHBsaWNhdGlvbkVudHJ5PihhcHAuZW50cnkpID8gYXBwLmVudHJ5Lm1hbmlmZXN0IDogYXBwLmVudHJ5KSA6IGFwcC5tYW5pZmVzdDtcbiAgICAgICAgaWYgKG1hbmlmZXN0KSB7XG4gICAgICAgICAgICBjb25zdCBtYW5pZmVzdEV4dCA9IGdldEV4dE5hbWUobWFuaWZlc3QpO1xuICAgICAgICAgICAgY29uc3QgaXNIdG1sID0gbWFuaWZlc3RFeHQgPT09ICdodG1sJztcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IGlzSHRtbCA/ICd0ZXh0JyA6ICdqc29uJztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChgJHttYW5pZmVzdH0/dD0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWAsIHJlc3BvbnNlVHlwZSkucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAobWFuaWZlc3RSZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0UmVzdWx0ID0gdGhpcy5wYXJzZU1hbmlmZXN0RnJvbUhUTUwobWFuaWZlc3RSZXN1bHQgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHNjcmlwdHMsIHN0eWxlcyB9ID0gZ2V0U2NyaXB0c0FuZFN0eWxlc0Z1bGxQYXRocyhhcHAsIGJhc2VQYXRoLCBtYW5pZmVzdFJlc3VsdCBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFNjcmlwdHNBbmRTdHlsZXMoc2NyaXB0cywgc3R5bGVzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHA6IGFwcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2FuZGJveDogYXBwLnNhbmRib3gsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWw6IGFwcC5sb2FkU2VyaWFsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgeyBzY3JpcHRzLCBzdHlsZXMgfSA9IGdldFNjcmlwdHNBbmRTdHlsZXNGdWxsUGF0aHMoYXBwLCBiYXNlUGF0aCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkU2NyaXB0c0FuZFN0eWxlcyhzY3JpcHRzLCBzdHlsZXMsIHtcbiAgICAgICAgICAgICAgICBhcHA6IGFwcC5uYW1lLFxuICAgICAgICAgICAgICAgIHNhbmRib3g6IGFwcC5zYW5kYm94LFxuICAgICAgICAgICAgICAgIHNlcmlhbDogYXBwLmxvYWRTZXJpYWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9hZE1hbmlmZXN0KHVybDogc3RyaW5nLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB8ICdqc29uJyA9ICdqc29uJyk6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KHVybCwge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogcmVzcG9uc2VUeXBlIGFzICdqc29uJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvYXNzZXRzLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkksT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQVksUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRzFDLE1BQU0sd0JBQXdCLEdBQUcsc0JBQXNCLENBQUM7QUFDeEQsTUFBTSxlQUFlLEdBQUcsdUNBQXVDLENBQUM7QUFDaEUsTUFBTSxhQUFhLEdBQUcsNENBQTRDLENBQUM7QUFZbkUsTUFBTSxPQUFPLFlBQVk7SUFHckIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUY1QixrQkFBYSxHQUFhLEVBQUUsQ0FBQztJQUVFLENBQUM7SUFFeEMsVUFBVSxDQUFDLEdBQVcsRUFBRSxhQUFtQztRQUN2RCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxDQUFDO2dCQUNOLEdBQUcsRUFBRSxHQUFHO2dCQUNSLFFBQVEs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QUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNOLFlBQVksRUFBRSxZQUFzQjtTQUN2QyxDQUFDO2FBQ0QsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ2xCLElBQUksWUFBWSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFrQixDQUFDLENBQUM7WUFDMUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sTUFBTSxHQUFrQyxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUc7d0JBQ1YsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7cUJBQ3JCLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDOzhHQXpUUSxZQUFZO2tIQUFaLFlBQVksY0FGVCxNQUFNOzsyRkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGhhc2hDb2RlLCBpc0VtcHR5LCBnZXRSZXNvdXJjZUZpbGVOYW1lLCBnZXRFeHROYW1lLCBpc09iamVjdCwgZ2V0QXNzZXRzQmFzZVBhdGgsIGdldFNjcmlwdHNBbmRTdHlsZXNBc3NldHMgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgb2YsIE9ic2VydmFibGUsIE9ic2VydmVyLCBmb3JrSm9pbiwgY29uY2F0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgY29uY2F0QWxsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uLCBQbGFuZXRBcHBsaWNhdGlvbkVudHJ5IH0gZnJvbSAnLi9wbGFuZXQuY2xhc3MnO1xuaW1wb3J0IHsgY3JlYXRlU2FuZGJveCB9IGZyb20gJy4vc2FuZGJveCc7XG5pbXBvcnQgeyBBc3NldHNUYWdJdGVtLCBTY3JpcHRUYWdBdHRyaWJ1dGVzIH0gZnJvbSAnLi9pbm5lci10eXBlcyc7XG5cbmNvbnN0IFNUWUxFX0xJTktfT1JfU0NSSVBUX1JFRyA9IC88W3NjcmlwdHxsaW5rXS4qPz4vZ2k7XG5jb25zdCBMSU5LX09SX1NSQ19SRUcgPSAvKHNyY3xocmVmKT1bXCInXSguKj9bXFwuanN8XFwuY3NzXSlbXCInXS9pO1xuY29uc3QgVEFHX0FUVFJTX1JFRyA9IC8odHlwZXxkZWZlcnxhc3luYykoKD1bXCInXS4qP1tcIiddKXxcXHN8XFw+KS9naTtcblxuZXhwb3J0IGludGVyZmFjZSBBc3NldHNMb2FkUmVzdWx0IHtcbiAgICBzcmM6IHN0cmluZztcbiAgICBoYXNoQ29kZTogbnVtYmVyO1xuICAgIGxvYWRlZDogYm9vbGVhbjtcbiAgICBzdGF0dXM6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3NldHNMb2FkZXIge1xuICAgIHByaXZhdGUgbG9hZGVkU291cmNlczogbnVtYmVyW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIGxvYWRTY3JpcHQoc3JjOiBzdHJpbmcsIHRhZ0F0dHJpYnV0ZXM/OiBTY3JpcHRUYWdBdHRyaWJ1dGVzKTogT2JzZXJ2YWJsZTxBc3NldHNMb2FkUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGlkID0gaGFzaENvZGUoc3JjKTtcbiAgICAgICAgaWYgKHRoaXMubG9hZGVkU291cmNlcy5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7XG4gICAgICAgICAgICAgICAgc3JjOiBzcmMsXG4gICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBc3NldHNMb2FkUmVzdWx0PikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgc2NyaXB0LnR5cGUgPSB0YWdBdHRyaWJ1dGVzPy50eXBlIHx8ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgICAgICAgIGlmICghdGFnQXR0cmlidXRlcz8uZGVmZXIgfHwgdGFnQXR0cmlidXRlcz8uZGVmZXIgIT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0YWdBdHRyaWJ1dGVzPy5hc3luYyAmJiB0YWdBdHRyaWJ1dGVzPy5hc3luYyA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2NyaXB0WydyZWFkeVN0YXRlJ10pIHtcbiAgICAgICAgICAgICAgICAvLyBJRVxuICAgICAgICAgICAgICAgIHNjcmlwdFsnb25yZWFkeXN0YXRlY2hhbmdlJ10gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JpcHRbJ3JlYWR5U3RhdGUnXSA9PT0gJ2xvYWRlZCcgfHwgc2NyaXB0WydyZWFkeVN0YXRlJ10gPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdFsnb25yZWFkeXN0YXRlY2hhbmdlJ10gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBzcmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZFNvdXJjZXMucHVzaChpZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBPdGhlcnNcbiAgICAgICAgICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRTb3VyY2VzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY3JpcHQub25lcnJvciA9IGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIHNyYzogc3JjLFxuICAgICAgICAgICAgICAgICAgICBoYXNoQ29kZTogaWQsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRTY3JpcHRXaXRoU2FuZGJveChhcHA6IHN0cmluZywgc3JjOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFzc2V0c0xvYWRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgaWQgPSBoYXNoQ29kZShzcmMpO1xuICAgICAgICBpZiAodGhpcy5sb2FkZWRTb3VyY2VzLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgICAgICBzcmM6IHNyYyxcbiAgICAgICAgICAgICAgICBoYXNoQ29kZTogaWQsXG4gICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEFzc2V0c0xvYWRSZXN1bHQ+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmh0dHAuZ2V0KHNyYywgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGNvZGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZFNvdXJjZXMucHVzaChpZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhbmRib3ggPSBjcmVhdGVTYW5kYm94KGFwcCk7XG4gICAgICAgICAgICAgICAgICAgIHNhbmRib3guZXhlY1NjcmlwdChjb2RlLCBzcmMpO1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBzcmMsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNoQ29kZTogaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRTdHlsZShzcmM6IHN0cmluZyk6IE9ic2VydmFibGU8QXNzZXRzTG9hZFJlc3VsdD4ge1xuICAgICAgICBjb25zdCBpZCA9IGhhc2hDb2RlKHNyYyk7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZFNvdXJjZXMuaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgICAgICAgIHNyYzogc3JjLFxuICAgICAgICAgICAgICAgIGhhc2hDb2RlOiBpZCxcbiAgICAgICAgICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8QXNzZXRzTG9hZFJlc3VsdD4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgICAgIGxpbmsucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgICAgbGluay50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHNyYztcbiAgICAgICAgICAgIGxpbmsubWVkaWEgPSAnYWxsJztcbiAgICAgICAgICAgIGxpbmsub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICBzcmM6IHNyYyxcbiAgICAgICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkU291cmNlcy5wdXNoKGlkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsaW5rLm9uZXJyb3IgPSBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICBzcmM6IHNyYyxcbiAgICAgICAgICAgICAgICAgICAgaGFzaENvZGU6IGlkLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZFNjcmlwdHMoXG4gICAgICAgIHNvdXJjZXM6IEFzc2V0c1RhZ0l0ZW1bXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgYXBwPzogc3RyaW5nO1xuICAgICAgICAgICAgc2FuZGJveD86IGJvb2xlYW47XG4gICAgICAgICAgICBzZXJpYWw/OiBib29sZWFuO1xuICAgICAgICB9ID0ge1xuICAgICAgICAgICAgc2VyaWFsOiBmYWxzZSxcbiAgICAgICAgICAgIHNhbmRib3g6IGZhbHNlXG4gICAgICAgIH1cbiAgICApOiBPYnNlcnZhYmxlPEFzc2V0c0xvYWRSZXN1bHRbXT4ge1xuICAgICAgICBpZiAoaXNFbXB0eShzb3VyY2VzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzID0gc291cmNlcy5tYXAoc291cmNlID0+IHtcbiAgICAgICAgICAgIC8vIFRPRE86IOaaguaXtuWPquaUr+aMgVByb3h55rKZ566xXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zYW5kYm94ICYmIHdpbmRvdy5Qcm94eSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRTY3JpcHRXaXRoU2FuZGJveChvcHRpb25zLmFwcCwgc291cmNlLnNyYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRTY3JpcHQoc291cmNlLnNyYywgc291cmNlLmF0dHJpYnV0ZXMgYXMgU2NyaXB0VGFnQXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3B0aW9ucy5zZXJpYWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGEgPSBjb25jYXQoLi4ub2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW2l0ZW1dKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjb25jYXRBbGwoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKG9ic2VydmFibGVzKS5waXBlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkU3R5bGVzKHNvdXJjZXM6IEFzc2V0c1RhZ0l0ZW1bXSk6IE9ic2VydmFibGU8QXNzZXRzTG9hZFJlc3VsdFtdPiB7XG4gICAgICAgIGlmIChpc0VtcHR5KHNvdXJjZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgICAgICAgc291cmNlcy5tYXAoc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkU3R5bGUoc291cmNlLnNyYyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxvYWRTY3JpcHRzQW5kU3R5bGVzKFxuICAgICAgICBzY3JpcHRzOiBBc3NldHNUYWdJdGVtW10gPSBbXSxcbiAgICAgICAgc3R5bGVzOiBBc3NldHNUYWdJdGVtW10gPSBbXSxcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgIGFwcD86IHN0cmluZztcbiAgICAgICAgICAgIHNhbmRib3g/OiBib29sZWFuO1xuICAgICAgICAgICAgc2VyaWFsPzogYm9vbGVhbjtcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICByZXR1cm4gZm9ya0pvaW4oW3RoaXMubG9hZFNjcmlwdHMoc2NyaXB0cywgb3B0aW9ucyksIHRoaXMubG9hZFN0eWxlcyhzdHlsZXMpXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwiaHR0cDovLzEyNy4wLjAuMTozMDAxL21haW4uanNcIiBhc3luYyBkZWZlcj48L3NjcmlwdD5cbiAgICAgKiA9PiBbYHR5cGU9XCJtb2R1bGVcImAsIFwiYXN5bmMgXCIsIFwiZGVmZXI+XCJdIGFzIGF0dHJpYnV0ZVN0ck1hdGNoQXJyXG4gICAgICogPT4geyB0eXBlOiBcIm1vZHVsZVwiLCBhc3luYzogXCJhc3luY1wiLCBkZWZlcjogXCJkZWZlclwiIH0gYXMgYXR0cmlidXRlc1xuICAgICAqL1xuICAgIHBhcnNlVGFnQXR0cmlidXRlcyh0YWc6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVTdHJNYXRjaEFyciA9IHRhZy5tYXRjaChUQUdfQVRUUlNfUkVHKTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZVN0ck1hdGNoQXJyKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgICAgICAgICBhdHRyaWJ1dGVTdHJNYXRjaEFyci5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVxdWFsU2lnbkluZGV4ID0gaXRlbS5pbmRleE9mKCc9Jyk7XG4gICAgICAgICAgICAgICAgaWYgKGVxdWFsU2lnbkluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyAndHlwZT1cIm1vZHVsZVwiJyA9PiB7IHR5cGU6IFwibW9kdWxlXCIgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBpdGVtLnNsaWNlKDAsIGVxdWFsU2lnbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1trZXldID0gaXRlbS5zbGljZShlcXVhbFNpZ25JbmRleCArIDIsIGl0ZW0ubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJ2FzeW5jICcgPT4gJ2FzeW5jJ1xuICAgICAgICAgICAgICAgICAgICAvLyAnZGVmZXI+JyA9PiAnZGVmZXInXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGl0ZW0uc2xpY2UoMCwgaXRlbS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1trZXldID0ga2V5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwYXJzZU1hbmlmZXN0RnJvbUhUTUwoaHRtbDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgQXNzZXRzVGFnSXRlbT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIEFzc2V0c1RhZ0l0ZW0+ID0ge307XG4gICAgICAgIGNvbnN0IG1hdGNoUmVzdWx0ID0gaHRtbC5tYXRjaChTVFlMRV9MSU5LX09SX1NDUklQVF9SRUcpO1xuICAgICAgICBtYXRjaFJlc3VsdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgbGlua09yU3JjUmVzdWx0ID0gaXRlbS5tYXRjaChMSU5LX09SX1NSQ19SRUcpO1xuICAgICAgICAgICAgaWYgKGxpbmtPclNyY1Jlc3VsdCAmJiBsaW5rT3JTcmNSZXN1bHRbMl0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcmMgPSBsaW5rT3JTcmNSZXN1bHRbMl07XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE5hbWUgPSBnZXRSZXNvdXJjZUZpbGVOYW1lKHNyYyk7XG4gICAgICAgICAgICAgICAgbGV0IGJhclNwbGl0SW5kZXggPSBoYXNoTmFtZS5pbmRleE9mKCctJyk7XG4gICAgICAgICAgICAgICAgbGV0IGRvdFNwbGl0SW5kZXggPSBoYXNoTmFtZS5pbmRleE9mKCcuJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BsaXRJbmRleCA9IGJhclNwbGl0SW5kZXggPiAtMSA/IGJhclNwbGl0SW5kZXggOiBkb3RTcGxpdEluZGV4O1xuICAgICAgICAgICAgICAgIGlmIChzcGxpdEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGhhc2hOYW1lLnNsaWNlKDAsIHNwbGl0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHQgPSBnZXRFeHROYW1lKGhhc2hOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXNzZXRzVGFnOiBBc3NldHNUYWdJdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBzcmNcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2V4dCA/IGAke25hbWV9LiR7ZXh0fWAgOiBuYW1lXSA9IGFzc2V0c1RhZztcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5wYXJzZVRhZ0F0dHJpYnV0ZXMoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NldHNUYWcuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgdHlwZVRhZ1Jlc3VsdCA9IGl0ZW0ubWF0Y2goVEFHX1RZUEVfUkVHKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHR5cGVUYWdSZXN1bHQgJiYgdHlwZVRhZ1Jlc3VsdFsxXSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgYXNzZXRzVGFnLmF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgdHlwZTogdHlwZVRhZ1Jlc3VsdFsxXVxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgbG9hZEFwcEFzc2V0cyhhcHA6IFBsYW5ldEFwcGxpY2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IGJhc2VQYXRoID0gZ2V0QXNzZXRzQmFzZVBhdGgoYXBwKTtcbiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSBhcHAuZW50cnkgPyAoaXNPYmplY3Q8UGxhbmV0QXBwbGljYXRpb25FbnRyeT4oYXBwLmVudHJ5KSA/IGFwcC5lbnRyeS5tYW5pZmVzdCA6IGFwcC5lbnRyeSkgOiBhcHAubWFuaWZlc3Q7XG4gICAgICAgIGlmIChtYW5pZmVzdCkge1xuICAgICAgICAgICAgY29uc3QgbWFuaWZlc3RFeHQgPSBnZXRFeHROYW1lKG1hbmlmZXN0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzSHRtbCA9IG1hbmlmZXN0RXh0ID09PSAnaHRtbCc7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZVR5cGUgPSBpc0h0bWwgPyAndGV4dCcgOiAnanNvbic7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkTWFuaWZlc3QoYCR7bWFuaWZlc3R9P3Q9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gLCByZXNwb25zZVR5cGUpLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1hbmlmZXN0UmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzY3JpcHRzLCBzdHlsZXMgfSA9IGdldFNjcmlwdHNBbmRTdHlsZXNBc3NldHMoYXBwLCBiYXNlUGF0aCwgbWFuaWZlc3RSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkU2NyaXB0c0FuZFN0eWxlcyhzY3JpcHRzLCBzdHlsZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcDogYXBwLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzYW5kYm94OiBhcHAuc2FuZGJveCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbDogYXBwLmxvYWRTZXJpYWxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IHNjcmlwdHMsIHN0eWxlcyB9ID0gZ2V0U2NyaXB0c0FuZFN0eWxlc0Fzc2V0cyhhcHAsIGJhc2VQYXRoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRTY3JpcHRzQW5kU3R5bGVzKHNjcmlwdHMsIHN0eWxlcywge1xuICAgICAgICAgICAgICAgIGFwcDogYXBwLm5hbWUsXG4gICAgICAgICAgICAgICAgc2FuZGJveDogYXBwLnNhbmRib3gsXG4gICAgICAgICAgICAgICAgc2VyaWFsOiBhcHAubG9hZFNlcmlhbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkTWFuaWZlc3QodXJsOiBzdHJpbmcsIHJlc3BvbnNlVHlwZTogJ3RleHQnIHwgJ2pzb24nID0gJ2pzb24nKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBBc3NldHNUYWdJdGVtPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KHVybCwge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogcmVzcG9uc2VUeXBlIGFzICdqc29uJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlTWFuaWZlc3RGcm9tSFRNTChyZXNwb25zZSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBBc3NldHNUYWdJdGVtPiA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzcG9uc2UpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByZXNwb25zZVtrZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2022/helpers.mjs
CHANGED
|
@@ -89,7 +89,7 @@ export function getExtName(name) {
|
|
|
89
89
|
export function buildResourceFilePath(resourceFilePath, manifestResult) {
|
|
90
90
|
const fileName = getResourceFileName(resourceFilePath);
|
|
91
91
|
if (manifestResult[fileName]) {
|
|
92
|
-
return resourceFilePath.replace(fileName, manifestResult[fileName]);
|
|
92
|
+
return resourceFilePath.replace(fileName, manifestResult[fileName].src);
|
|
93
93
|
}
|
|
94
94
|
else {
|
|
95
95
|
return resourceFilePath;
|
|
@@ -131,55 +131,55 @@ export function getAssetsBasePath(app) {
|
|
|
131
131
|
}
|
|
132
132
|
return basePath || app.resourcePathPrefix;
|
|
133
133
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
function getAssetsByDefined(definedPaths, manifest, ext) {
|
|
135
|
+
if (definedPaths) {
|
|
136
|
+
return definedPaths.map(definedPath => {
|
|
137
|
+
const fileName = getResourceFileName(definedPath);
|
|
138
|
+
const assetsTagItem = manifest[fileName];
|
|
139
|
+
return {
|
|
140
|
+
...assetsTagItem,
|
|
141
|
+
src: definedPath.replace(fileName, assetsTagItem.src)
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
return Object.keys(manifest)
|
|
147
|
+
.filter(key => {
|
|
148
|
+
return getExtName(key) === ext;
|
|
149
|
+
})
|
|
150
|
+
.map(key => {
|
|
151
|
+
return manifest[key];
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
export function toAssetsTagItem(src) {
|
|
156
|
+
return {
|
|
157
|
+
src: src
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
export function toAssetsTagItems(src) {
|
|
161
|
+
return src.map(item => toAssetsTagItem(item));
|
|
162
|
+
}
|
|
163
|
+
export function getScriptsAndStylesAssets(app, basePath, manifestResult) {
|
|
164
|
+
const result = { scripts: [], styles: [] };
|
|
140
165
|
let { scripts, styles } = getDefinedAssets(app);
|
|
141
166
|
// combine resource path by manifest
|
|
142
167
|
if (manifestResult) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
scripts = Object.keys(manifestResult)
|
|
150
|
-
.filter(key => {
|
|
151
|
-
return getExtName(key) === 'js';
|
|
152
|
-
})
|
|
153
|
-
.map(key => {
|
|
154
|
-
return manifestResult[key];
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
if (styles) {
|
|
158
|
-
styles = styles.map(style => {
|
|
159
|
-
return buildResourceFilePath(style, manifestResult);
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
styles = Object.keys(manifestResult)
|
|
164
|
-
.filter(key => {
|
|
165
|
-
return getExtName(key) === 'css';
|
|
166
|
-
})
|
|
167
|
-
.map(key => {
|
|
168
|
-
return manifestResult[key];
|
|
169
|
-
});
|
|
170
|
-
}
|
|
168
|
+
result.scripts = getAssetsByDefined(scripts, manifestResult, 'js');
|
|
169
|
+
result.styles = getAssetsByDefined(styles, manifestResult, 'css');
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
result.scripts = toAssetsTagItems(scripts);
|
|
173
|
+
result.styles = toAssetsTagItems(styles);
|
|
171
174
|
}
|
|
172
175
|
if (basePath) {
|
|
173
|
-
scripts
|
|
174
|
-
|
|
176
|
+
result.scripts.forEach(item => {
|
|
177
|
+
item.src = buildFullPath(item.src, basePath);
|
|
175
178
|
});
|
|
176
|
-
styles
|
|
177
|
-
|
|
179
|
+
result.styles.forEach(item => {
|
|
180
|
+
item.src = buildFullPath(item.src, basePath);
|
|
178
181
|
});
|
|
179
182
|
}
|
|
180
|
-
return
|
|
181
|
-
scripts: scripts || [],
|
|
182
|
-
styles: styles || []
|
|
183
|
-
};
|
|
183
|
+
return result;
|
|
184
184
|
}
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUU1QixNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7SUFDMUMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQThCO0lBQ3pELElBQUksUUFBUSxZQUFZLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWdCO0lBQ2pELE1BQU0sT0FBTyxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUFnQjtJQUNwRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDWixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNyRixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLGlCQUFpQixFQUFFLENBQUM7UUFDcEQsT0FBTyxPQUFzQixDQUFDO0lBQ2xDLENBQUM7U0FBTSxDQUFDO1FBQ0osTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksS0FBYztJQUN6QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFVO0lBQzlCLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFVO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLE9BQU8sS0FBSyxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFtQixLQUFVO0lBQ2pELE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUM5QyxDQUFDO0FBQ0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBWTtJQUM1QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLElBQUksY0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBWTtJQUNuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxnQkFBd0IsRUFBRSxjQUF5QztJQUNyRyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZELElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBWSxFQUFFLFFBQWlCO0lBQ3pELElBQUksUUFBUSxFQUFFLENBQUM7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sR0FBRyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFzQjtJQUM1QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLE9BQU87WUFDSCxPQUFPLEVBQUUsUUFBUSxDQUF5QixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3BGLE1BQU0sRUFBRSxRQUFRLENBQXlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDckYsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPO1FBQ0gsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtLQUNyQixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFzQjtJQUNwRCxJQUFJLFFBQWdCLENBQUM7SUFDckIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixJQUFJLFFBQVEsQ0FBeUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEQsUUFBUSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNuRixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sUUFBUSxJQUFJLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxHQUFzQixFQUFFLFFBQWdCLEVBQUUsY0FBMEM7SUFDN0gsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxvQ0FBb0M7SUFDcEMsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNqQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzNCLE9BQU8scUJBQXFCLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDVixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDcEMsQ0FBQyxDQUFDO2lCQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDUCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8scUJBQXFCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7aUJBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDVixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUM7WUFDckMsQ0FBQyxDQUFDO2lCQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDUCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNYLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNCLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sYUFBYSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxPQUFPO1FBQ0gsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRTtLQUN2QixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uLCBQbGFuZXRBcHBsaWNhdGlvbkVudHJ5IH0gZnJvbSAnLi9wbGFuZXQuY2xhc3MnO1xuXG5jb25zdCBFTEVNRU5UX05PREVfVFlQRSA9IDE7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoQ29kZShzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IGhhc2ggPSAwO1xuICAgIGxldCBjaHI6IG51bWJlcjtcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaGFzaDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaHI7XG4gICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgfVxuICAgIHJldHVybiBoYXNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnQoc2VsZWN0b3I6IHN0cmluZyB8IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoc2VsZWN0b3IgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhZ05hbWVCeVRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50QnlUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG4gICAgcmV0dXJuIGVsZW1lbnQgPyBlbGVtZW50Lm5vZGVOYW1lIDogJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50QnlUZW1wbGF0ZSh0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0ZW1wbGF0ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHRlbXBsYXRlKS5maXJzdENoaWxkO1xuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0ZW1wbGF0ZSAnJHt0ZW1wbGF0ZX0nYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlQXJyYXk8VD4odmFsdWU6IFQgfCBUW10pOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBGdW5jdGlvbiB7XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3Q8VCBleHRlbmRzIG9iamVjdD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFQge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBHZXQgZmlsZSBuYW1lIGZyb20gcGF0aFxuICogMS4gXCJtYWluLmpzXCIgPT4gXCJtYWluLmpzXCJcbiAqIDIuIFwiYXNzZXRzL3NjcmlwdHMvbWFpbi5qc1wiID0+IFwibWFpbi5qc1wiXG4gKiBAcGFyYW0gcGF0aCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZUZpbGVOYW1lKHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgIGlmIChsYXN0U2xhc2hJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsYXN0RG90SW5kZXggPSBuYW1lLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgaWYgKGxhc3REb3RJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBuYW1lLnNsaWNlKGxhc3REb3RJbmRleCArIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG59XG5cbi8qKlxuICogQnVpbGQgcmVzb3VyY2UgcGF0aCBieSBtYW5pZmVzdFxuICogaWYgbWFuaWZlc3QgaXMgeyBcIm1haW4uanNcIjogXCJtYWluLmgyc2gyM2FiZWUuanNcIn1cbiAqIDEuIFwibWFpbi5qc1wiID0+IFwibWFpbi5oMnNoMjNhYmVlLmpzXCJcbiAqIDIuIFwiYXNzZXRzL3NjcmlwdHMvbWFpbi5qc1wiID0+XCJhc3NldHMvc2NyaXB0cy9tYWluLmgyc2gyM2FiZWUuanNcIlxuICogQHBhcmFtIHJlc291cmNlRmlsZVBhdGggUmVzb3VyY2UgRmlsZSBQYXRoXG4gKiBAcGFyYW0gbWFuaWZlc3RSZXN1bHQgbWFuaWZlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUmVzb3VyY2VGaWxlUGF0aChyZXNvdXJjZUZpbGVQYXRoOiBzdHJpbmcsIG1hbmlmZXN0UmVzdWx0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBnZXRSZXNvdXJjZUZpbGVOYW1lKHJlc291cmNlRmlsZVBhdGgpO1xuICAgIGlmIChtYW5pZmVzdFJlc3VsdFtmaWxlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHJlc291cmNlRmlsZVBhdGgucmVwbGFjZShmaWxlTmFtZSwgbWFuaWZlc3RSZXN1bHRbZmlsZU5hbWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2VGaWxlUGF0aDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKHBhdGg6IHN0cmluZywgYmFzZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBpZiAoYmFzZVBhdGgpIHtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChiYXNlUGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jhc2VQYXRofSR7cGF0aH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufVxuXG5mdW5jdGlvbiBnZXREZWZpbmVkQXNzZXRzKGFwcDogUGxhbmV0QXBwbGljYXRpb24pIHtcbiAgICBpZiAoYXBwLmVudHJ5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JpcHRzOiBpc09iamVjdDxQbGFuZXRBcHBsaWNhdGlvbkVudHJ5PihhcHAuZW50cnkpID8gYXBwLmVudHJ5LnNjcmlwdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzdHlsZXM6IGlzT2JqZWN0PFBsYW5ldEFwcGxpY2F0aW9uRW50cnk+KGFwcC5lbnRyeSkgPyBhcHAuZW50cnkuc3R5bGVzIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNjcmlwdHM6IGFwcC5zY3JpcHRzLFxuICAgICAgICBzdHlsZXM6IGFwcC5zdHlsZXNcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzZXRzQmFzZVBhdGgoYXBwOiBQbGFuZXRBcHBsaWNhdGlvbik6IHN0cmluZyB7XG4gICAgbGV0IGJhc2VQYXRoOiBzdHJpbmc7XG4gICAgaWYgKGFwcC5lbnRyeSkge1xuICAgICAgICBpZiAoaXNPYmplY3Q8UGxhbmV0QXBwbGljYXRpb25FbnRyeT4oYXBwLmVudHJ5KSkge1xuICAgICAgICAgICAgYmFzZVBhdGggPSBhcHAuZW50cnkuYmFzZVBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0RG90SW5kZXggPSBhcHAuZW50cnkubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGJhc2VQYXRoID0gbGFzdERvdEluZGV4ID4gMCA/IGFwcC5lbnRyeS5zbGljZSgwLCBsYXN0RG90SW5kZXggKyAxKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmFzZVBhdGggfHwgYXBwLnJlc291cmNlUGF0aFByZWZpeDtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdGljIHJlc291cmNlIGZ1bGwgcGF0aFxuICogQHBhcmFtIGFwcCBQbGFuZXRBcHBsaWNhdGlvblxuICogQHBhcmFtIG1hbmlmZXN0UmVzdWx0IG1hbmlmZXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JpcHRzQW5kU3R5bGVzRnVsbFBhdGhzKGFwcDogUGxhbmV0QXBwbGljYXRpb24sIGJhc2VQYXRoOiBzdHJpbmcsIG1hbmlmZXN0UmVzdWx0PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIGxldCB7IHNjcmlwdHMsIHN0eWxlcyB9ID0gZ2V0RGVmaW5lZEFzc2V0cyhhcHApO1xuICAgIC8vIGNvbWJpbmUgcmVzb3VyY2UgcGF0aCBieSBtYW5pZmVzdFxuICAgIGlmIChtYW5pZmVzdFJlc3VsdCkge1xuICAgICAgICBpZiAoc2NyaXB0cykge1xuICAgICAgICAgICAgc2NyaXB0cyA9IHNjcmlwdHMubWFwKHNjcmlwdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVzb3VyY2VGaWxlUGF0aChzY3JpcHQsIG1hbmlmZXN0UmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2NyaXB0cyA9IE9iamVjdC5rZXlzKG1hbmlmZXN0UmVzdWx0KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEV4dE5hbWUoa2V5KSA9PT0gJ2pzJztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hbmlmZXN0UmVzdWx0W2tleV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0eWxlcykge1xuICAgICAgICAgICAgc3R5bGVzID0gc3R5bGVzLm1hcChzdHlsZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVzb3VyY2VGaWxlUGF0aChzdHlsZSwgbWFuaWZlc3RSZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZXMgPSBPYmplY3Qua2V5cyhtYW5pZmVzdFJlc3VsdClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRFeHROYW1lKGtleSkgPT09ICdjc3MnO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3RSZXN1bHRba2V5XTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoYmFzZVBhdGgpIHtcbiAgICAgICAgc2NyaXB0cyA9IHNjcmlwdHMubWFwKHNjcmlwdCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRGdWxsUGF0aChzY3JpcHQsIGJhc2VQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0eWxlcyA9IHN0eWxlcy5tYXAoc3R5bGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkRnVsbFBhdGgoc3R5bGUsIGJhc2VQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNjcmlwdHM6IHNjcmlwdHMgfHwgW10sXG4gICAgICAgIHN0eWxlczogc3R5bGVzIHx8IFtdXG4gICAgfTtcbn1cbiJdfQ==
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUU1QixNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7SUFDMUMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQThCO0lBQ3pELElBQUksUUFBUSxZQUFZLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWdCO0lBQ2pELE1BQU0sT0FBTyxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFB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QztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXRzVGFnSXRlbSB9IGZyb20gJy4vaW5uZXItdHlwZXMnO1xuaW1wb3J0IHsgUGxhbmV0QXBwbGljYXRpb24sIFBsYW5ldEFwcGxpY2F0aW9uRW50cnkgfSBmcm9tICcuL3BsYW5ldC5jbGFzcyc7XG5cbmNvbnN0IEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hDb2RlKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgaGFzaCA9IDA7XG4gICAgbGV0IGNocjogbnVtYmVyO1xuICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBoYXNoO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaHIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNocjtcbiAgICAgICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgICB9XG4gICAgcmV0dXJuIGhhc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudChzZWxlY3Rvcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmIChzZWxlY3RvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnTmFtZUJ5VGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRCeVRlbXBsYXRlKHRlbXBsYXRlKTtcbiAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQubm9kZU5hbWUgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRCeVRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodGVtcGxhdGUpLmZpcnN0Q2hpbGQ7XG4gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHRlbXBsYXRlICcke3RlbXBsYXRlfSdgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VBcnJheTxUPih2YWx1ZTogVCB8IFRbXSk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgIHJldHVybiAhIXZhbHVlICYmIHR5cGUgPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdDxUIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogYW55KTogdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCc7XG59XG4vKipcbiAqIEdldCBmaWxlIG5hbWUgZnJvbSBwYXRoXG4gKiAxLiBcIm1haW4uanNcIiA9PiBcIm1haW4uanNcIlxuICogMi4gXCJhc3NldHMvc2NyaXB0cy9tYWluLmpzXCIgPT4gXCJtYWluLmpzXCJcbiAqIEBwYXJhbSBwYXRoIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlRmlsZU5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHBhdGgubGFzdEluZGV4T2YoJy8nKTtcbiAgICBpZiAobGFzdFNsYXNoSW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gcGF0aC5zbGljZShsYXN0U2xhc2hJbmRleCArIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbGFzdERvdEluZGV4ID0gbmFtZS5sYXN0SW5kZXhPZignLicpO1xuICAgIGlmIChsYXN0RG90SW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZShsYXN0RG90SW5kZXggKyAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIHJlc291cmNlIHBhdGggYnkgbWFuaWZlc3RcbiAqIGlmIG1hbmlmZXN0IGlzIHsgXCJtYWluLmpzXCI6IFwibWFpbi5oMnNoMjNhYmVlLmpzXCJ9XG4gKiAxLiBcIm1haW4uanNcIiA9PiBcIm1haW4uaDJzaDIzYWJlZS5qc1wiXG4gKiAyLiBcImFzc2V0cy9zY3JpcHRzL21haW4uanNcIiA9PlwiYXNzZXRzL3NjcmlwdHMvbWFpbi5oMnNoMjNhYmVlLmpzXCJcbiAqIEBwYXJhbSByZXNvdXJjZUZpbGVQYXRoIFJlc291cmNlIEZpbGUgUGF0aFxuICogQHBhcmFtIG1hbmlmZXN0UmVzdWx0IG1hbmlmZXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJlc291cmNlRmlsZVBhdGgocmVzb3VyY2VGaWxlUGF0aDogc3RyaW5nLCBtYW5pZmVzdFJlc3VsdDogUmVjb3JkPHN0cmluZywgQXNzZXRzVGFnSXRlbT4pIHtcbiAgICBjb25zdCBmaWxlTmFtZSA9IGdldFJlc291cmNlRmlsZU5hbWUocmVzb3VyY2VGaWxlUGF0aCk7XG4gICAgaWYgKG1hbmlmZXN0UmVzdWx0W2ZpbGVOYW1lXSkge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2VGaWxlUGF0aC5yZXBsYWNlKGZpbGVOYW1lLCBtYW5pZmVzdFJlc3VsdFtmaWxlTmFtZV0uc3JjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2VGaWxlUGF0aDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKHBhdGg6IHN0cmluZywgYmFzZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBpZiAoYmFzZVBhdGgpIHtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChiYXNlUGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jhc2VQYXRofSR7cGF0aH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufVxuXG5mdW5jdGlvbiBnZXREZWZpbmVkQXNzZXRzKGFwcDogUGxhbmV0QXBwbGljYXRpb24pIHtcbiAgICBpZiAoYXBwLmVudHJ5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JpcHRzOiBpc09iamVjdDxQbGFuZXRBcHBsaWNhdGlvbkVudHJ5PihhcHAuZW50cnkpID8gYXBwLmVudHJ5LnNjcmlwdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzdHlsZXM6IGlzT2JqZWN0PFBsYW5ldEFwcGxpY2F0aW9uRW50cnk+KGFwcC5lbnRyeSkgPyBhcHAuZW50cnkuc3R5bGVzIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNjcmlwdHM6IGFwcC5zY3JpcHRzLFxuICAgICAgICBzdHlsZXM6IGFwcC5zdHlsZXNcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzZXRzQmFzZVBhdGgoYXBwOiBQbGFuZXRBcHBsaWNhdGlvbik6IHN0cmluZyB7XG4gICAgbGV0IGJhc2VQYXRoOiBzdHJpbmc7XG4gICAgaWYgKGFwcC5lbnRyeSkge1xuICAgICAgICBpZiAoaXNPYmplY3Q8UGxhbmV0QXBwbGljYXRpb25FbnRyeT4oYXBwLmVudHJ5KSkge1xuICAgICAgICAgICAgYmFzZVBhdGggPSBhcHAuZW50cnkuYmFzZVBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0RG90SW5kZXggPSBhcHAuZW50cnkubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGJhc2VQYXRoID0gbGFzdERvdEluZGV4ID4gMCA/IGFwcC5lbnRyeS5zbGljZSgwLCBsYXN0RG90SW5kZXggKyAxKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmFzZVBhdGggfHwgYXBwLnJlc291cmNlUGF0aFByZWZpeDtcbn1cblxuZnVuY3Rpb24gZ2V0QXNzZXRzQnlEZWZpbmVkKGRlZmluZWRQYXRoczogc3RyaW5nW10sIG1hbmlmZXN0OiBSZWNvcmQ8c3RyaW5nLCBBc3NldHNUYWdJdGVtPiwgZXh0OiAnanMnIHwgJ2NzcycpOiBBc3NldHNUYWdJdGVtW10ge1xuICAgIGlmIChkZWZpbmVkUGF0aHMpIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZWRQYXRocy5tYXAoZGVmaW5lZFBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBnZXRSZXNvdXJjZUZpbGVOYW1lKGRlZmluZWRQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGFzc2V0c1RhZ0l0ZW0gPSBtYW5pZmVzdFtmaWxlTmFtZV07XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFzc2V0c1RhZ0l0ZW0sXG4gICAgICAgICAgICAgICAgc3JjOiBkZWZpbmVkUGF0aC5yZXBsYWNlKGZpbGVOYW1lLCBhc3NldHNUYWdJdGVtLnNyYylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhtYW5pZmVzdClcbiAgICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RXh0TmFtZShrZXkpID09PSBleHQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYW5pZmVzdFtrZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Bc3NldHNUYWdJdGVtKHNyYzogc3RyaW5nKTogQXNzZXRzVGFnSXRlbSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3JjOiBzcmNcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Bc3NldHNUYWdJdGVtcyhzcmM6IHN0cmluZ1tdKTogQXNzZXRzVGFnSXRlbVtdIHtcbiAgICByZXR1cm4gc3JjLm1hcChpdGVtID0+IHRvQXNzZXRzVGFnSXRlbShpdGVtKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JpcHRzQW5kU3R5bGVzQXNzZXRzKFxuICAgIGFwcDogUGxhbmV0QXBwbGljYXRpb24sXG4gICAgYmFzZVBhdGg6IHN0cmluZyxcbiAgICBtYW5pZmVzdFJlc3VsdD86IFJlY29yZDxzdHJpbmcsIEFzc2V0c1RhZ0l0ZW0+XG4pOiB7IHNjcmlwdHM6IEFzc2V0c1RhZ0l0ZW1bXTsgc3R5bGVzOiBBc3NldHNUYWdJdGVtW10gfSB7XG4gICAgY29uc3QgcmVzdWx0OiB7IHNjcmlwdHM6IEFzc2V0c1RhZ0l0ZW1bXTsgc3R5bGVzOiBBc3NldHNUYWdJdGVtW10gfSA9IHsgc2NyaXB0czogW10sIHN0eWxlczogW10gfTtcbiAgICBsZXQgeyBzY3JpcHRzLCBzdHlsZXMgfSA9IGdldERlZmluZWRBc3NldHMoYXBwKTtcbiAgICAvLyBjb21iaW5lIHJlc291cmNlIHBhdGggYnkgbWFuaWZlc3RcbiAgICBpZiAobWFuaWZlc3RSZXN1bHQpIHtcbiAgICAgICAgcmVzdWx0LnNjcmlwdHMgPSBnZXRBc3NldHNCeURlZmluZWQoc2NyaXB0cywgbWFuaWZlc3RSZXN1bHQsICdqcycpO1xuICAgICAgICByZXN1bHQuc3R5bGVzID0gZ2V0QXNzZXRzQnlEZWZpbmVkKHN0eWxlcywgbWFuaWZlc3RSZXN1bHQsICdjc3MnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQuc2NyaXB0cyA9IHRvQXNzZXRzVGFnSXRlbXMoc2NyaXB0cyk7XG4gICAgICAgIHJlc3VsdC5zdHlsZXMgPSB0b0Fzc2V0c1RhZ0l0ZW1zKHN0eWxlcyk7XG4gICAgfVxuICAgIGlmIChiYXNlUGF0aCkge1xuICAgICAgICByZXN1bHQuc2NyaXB0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaXRlbS5zcmMgPSBidWlsZEZ1bGxQYXRoKGl0ZW0uc3JjLCBiYXNlUGF0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuc3R5bGVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnNyYyA9IGJ1aWxkRnVsbFBhdGgoaXRlbS5zcmMsIGJhc2VQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2lubmVyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNjcmlwdFRhZ0F0dHJpYnV0ZXMge1xuICAgIHR5cGU6ICdtb2R1bGUnIHwgJ3RleHQvc2NyaXB0JyB8IHVuZGVmaW5lZDtcbiAgICBhc3luYz86IHN0cmluZztcbiAgICBkZWZlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHlsZVRhZ0F0dHJpYnV0ZXMge31cblxuZXhwb3J0IGludGVyZmFjZSBBc3NldHNUYWdJdGVtIHtcbiAgICBzcmM6IHN0cmluZztcbiAgICBhdHRyaWJ1dGVzPzogU2NyaXB0VGFnQXR0cmlidXRlcyB8IFN0eWxlVGFnQXR0cmlidXRlcztcbn1cbiJdfQ==
|