@skyux/docs-tools 4.9.6 → 5.0.0-beta.10
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/LICENSE +21 -0
- package/bundles/skyux-docs-tools.umd.js +2033 -1789
- package/docs-tools.module.d.ts +10 -0
- package/documentation.json +10784 -0
- package/esm2015/docs-tools.module.js +30 -21
- package/esm2015/modules/anatomy/anatomy-item.component.js +18 -16
- package/esm2015/modules/anatomy/anatomy.component.js +22 -19
- package/esm2015/modules/anatomy/anatomy.module.js +30 -19
- package/esm2015/modules/code-examples/code-example-module-dependencies.js +2 -1
- package/esm2015/modules/code-examples/code-example-theme.js +1 -1
- package/esm2015/modules/code-examples/code-example.component.js +23 -26
- package/esm2015/modules/code-examples/code-example.js +2 -1
- package/esm2015/modules/code-examples/code-examples-editor.service.js +59 -46
- package/esm2015/modules/code-examples/code-examples.component.js +32 -25
- package/esm2015/modules/code-examples/code-examples.module.js +37 -26
- package/esm2015/modules/demo/demo-content-alignment.js +2 -1
- package/esm2015/modules/demo/demo-control-panel-change.js +2 -1
- package/esm2015/modules/demo/demo-control-panel-checkbox.component.js +25 -28
- package/esm2015/modules/demo/demo-control-panel-radio-choice.js +2 -1
- package/esm2015/modules/demo/demo-control-panel-radio-group.component.js +29 -32
- package/esm2015/modules/demo/demo-control-panel-section.component.js +15 -13
- package/esm2015/modules/demo/demo-control-panel.component.js +27 -34
- package/esm2015/modules/demo/demo.component.js +27 -36
- package/esm2015/modules/demo/demo.module.js +51 -31
- package/esm2015/modules/demo-page/demo-page-dom-adapter.service.js +10 -12
- package/esm2015/modules/demo-page/demo-page-module-info.component.js +13 -11
- package/esm2015/modules/demo-page/demo-page-section.component.js +19 -16
- package/esm2015/modules/demo-page/demo-page-summary.component.js +15 -13
- package/esm2015/modules/demo-page/demo-page-title.service.js +13 -12
- package/esm2015/modules/demo-page/demo-page-type-definitions.component.js +28 -20
- package/esm2015/modules/demo-page/demo-page.component.js +53 -54
- package/esm2015/modules/demo-page/demo-page.module.js +60 -29
- package/esm2015/modules/design-guidelines/design-guideline-thumbnail.component.js +28 -31
- package/esm2015/modules/design-guidelines/design-guideline.component.js +24 -22
- package/esm2015/modules/design-guidelines/design-guidelines.component.js +14 -12
- package/esm2015/modules/design-guidelines/design-guidelines.module.js +34 -21
- package/esm2015/modules/heading-anchor/heading-anchor.component.js +22 -19
- package/esm2015/modules/heading-anchor/heading-anchor.module.js +26 -17
- package/esm2015/modules/markdown/markdown.module.js +23 -18
- package/esm2015/modules/markdown/markdown.pipe.js +12 -10
- package/esm2015/modules/module-info/module-info.component.js +32 -30
- package/esm2015/modules/module-info/module-info.module.js +32 -17
- package/esm2015/modules/safe-html/safe-html.component.js +17 -19
- package/esm2015/modules/safe-html/safe-html.module.js +22 -17
- package/esm2015/modules/shared/docs-tools-component-info.js +2 -1
- package/esm2015/modules/shared/docs-tools-options.js +1 -1
- package/esm2015/modules/shared/docs-tools-supportal.service.js +13 -12
- package/esm2015/modules/shared/sky-docs-tools-resources.module.js +41 -0
- package/esm2015/modules/source-code/source-code-file.js +2 -1
- package/esm2015/modules/source-code/source-code-provider.js +12 -8
- package/esm2015/modules/source-code/source-code.service.js +13 -12
- package/esm2015/modules/thumbnail/thumbnail.component.js +29 -31
- package/esm2015/modules/thumbnail/thumbnail.module.js +24 -17
- package/esm2015/modules/type-definitions/anchor-link-service-config.js +2 -1
- package/esm2015/modules/type-definitions/anchor-link-service-format.js +2 -1
- package/esm2015/modules/type-definitions/anchor-link.js +2 -1
- package/esm2015/modules/type-definitions/anchor-link.service.js +13 -12
- package/esm2015/modules/type-definitions/call-signature-definition.component.js +23 -20
- package/esm2015/modules/type-definitions/call-signature-definition.js +2 -1
- package/esm2015/modules/type-definitions/class-definition.component.js +24 -16
- package/esm2015/modules/type-definitions/class-definition.js +2 -1
- package/esm2015/modules/type-definitions/comment-tags.js +2 -1
- package/esm2015/modules/type-definitions/directive-definition.component.js +24 -16
- package/esm2015/modules/type-definitions/directive-definition.js +2 -1
- package/esm2015/modules/type-definitions/entry-child-definition.js +2 -1
- package/esm2015/modules/type-definitions/entry-definition.js +2 -1
- package/esm2015/modules/type-definitions/enumeration-definition.component.js +22 -15
- package/esm2015/modules/type-definitions/enumeration-definition.js +2 -1
- package/esm2015/modules/type-definitions/enumeration-member-definition.js +2 -1
- package/esm2015/modules/type-definitions/index-signature-definition.js +2 -1
- package/esm2015/modules/type-definitions/interface-definition.component.js +24 -19
- package/esm2015/modules/type-definitions/interface-definition.js +2 -1
- package/esm2015/modules/type-definitions/interface-property-definition.js +2 -1
- package/esm2015/modules/type-definitions/method-definition.js +2 -1
- package/esm2015/modules/type-definitions/method-definitions.component.js +27 -24
- package/esm2015/modules/type-definitions/parameter-definition.js +2 -1
- package/esm2015/modules/type-definitions/pipe-definition.component.js +24 -16
- package/esm2015/modules/type-definitions/pipe-definition.js +2 -1
- package/esm2015/modules/type-definitions/property-decorator.js +2 -1
- package/esm2015/modules/type-definitions/property-definition.js +2 -1
- package/esm2015/modules/type-definitions/property-definitions.component.js +31 -30
- package/esm2015/modules/type-definitions/type-alias-definition.component.js +25 -20
- package/esm2015/modules/type-definitions/type-alias-definition.js +2 -1
- package/esm2015/modules/type-definitions/type-anchor-links.pipe.js +14 -15
- package/esm2015/modules/type-definitions/type-definition.js +2 -1
- package/esm2015/modules/type-definitions/type-definitions-format.service.js +12 -8
- package/esm2015/modules/type-definitions/type-definitions-provider.js +9 -8
- package/esm2015/modules/type-definitions/type-definitions.js +2 -1
- package/esm2015/modules/type-definitions/type-definitions.module.js +75 -51
- package/esm2015/modules/type-definitions/type-definitions.service.js +70 -60
- package/esm2015/modules/type-definitions/type-parameter-definition.js +2 -1
- package/esm2015/modules/type-definitions/typedoc-adapter.service.js +48 -24
- package/esm2015/modules/type-definitions/typedoc-types.js +2 -1
- package/esm2015/public-api.js +66 -0
- package/esm2015/skyux-docs-tools.js +2 -46
- package/fesm2015/skyux-docs-tools.js +1625 -1484
- package/fesm2015/skyux-docs-tools.js.map +1 -1
- package/modules/anatomy/anatomy-item.component.d.ts +3 -0
- package/modules/anatomy/anatomy.component.d.ts +3 -0
- package/modules/anatomy/anatomy.module.d.ts +9 -0
- package/modules/code-examples/code-example.component.d.ts +3 -0
- package/modules/code-examples/code-example.d.ts +1 -0
- package/modules/code-examples/code-examples-editor.service.d.ts +3 -0
- package/modules/code-examples/code-examples.component.d.ts +4 -0
- package/modules/code-examples/code-examples.module.d.ts +12 -0
- package/modules/demo/demo-control-panel-checkbox.component.d.ts +3 -0
- package/modules/demo/demo-control-panel-radio-group.component.d.ts +3 -0
- package/modules/demo/demo-control-panel-section.component.d.ts +3 -0
- package/modules/demo/demo-control-panel.component.d.ts +3 -5
- package/modules/demo/demo.component.d.ts +3 -6
- package/modules/demo/demo.module.d.ts +15 -0
- package/modules/demo-page/demo-page-dom-adapter.service.d.ts +3 -0
- package/modules/demo-page/demo-page-module-info.component.d.ts +3 -0
- package/modules/demo-page/demo-page-section.component.d.ts +3 -0
- package/modules/demo-page/demo-page-summary.component.d.ts +3 -0
- package/modules/demo-page/demo-page-title.service.d.ts +3 -0
- package/modules/demo-page/demo-page-type-definitions.component.d.ts +4 -0
- package/modules/demo-page/demo-page.component.d.ts +7 -0
- package/modules/demo-page/demo-page.module.d.ts +19 -0
- package/modules/design-guidelines/design-guideline-thumbnail.component.d.ts +3 -0
- package/modules/design-guidelines/design-guideline.component.d.ts +3 -0
- package/modules/design-guidelines/design-guidelines.component.d.ts +3 -0
- package/modules/design-guidelines/design-guidelines.module.d.ts +10 -0
- package/modules/heading-anchor/heading-anchor.component.d.ts +3 -0
- package/modules/heading-anchor/heading-anchor.module.d.ts +8 -0
- package/modules/markdown/markdown.module.d.ts +5 -0
- package/modules/markdown/markdown.pipe.d.ts +3 -0
- package/modules/module-info/module-info.component.d.ts +3 -0
- package/modules/module-info/module-info.module.d.ts +11 -0
- package/modules/safe-html/safe-html.component.d.ts +3 -0
- package/modules/safe-html/safe-html.module.d.ts +6 -0
- package/modules/shared/docs-tools-supportal.service.d.ts +3 -0
- package/modules/shared/sky-docs-tools-resources.module.d.ts +14 -0
- package/modules/source-code/source-code-provider.d.ts +3 -0
- package/modules/source-code/source-code.service.d.ts +3 -0
- package/modules/thumbnail/thumbnail.component.d.ts +3 -0
- package/modules/thumbnail/thumbnail.module.d.ts +7 -0
- package/modules/type-definitions/anchor-link.service.d.ts +3 -0
- package/modules/type-definitions/call-signature-definition.component.d.ts +3 -0
- package/modules/type-definitions/class-definition.component.d.ts +3 -0
- package/modules/type-definitions/directive-definition.component.d.ts +3 -0
- package/modules/type-definitions/enumeration-definition.component.d.ts +3 -0
- package/modules/type-definitions/interface-definition.component.d.ts +3 -0
- package/modules/type-definitions/method-definitions.component.d.ts +3 -0
- package/modules/type-definitions/pipe-definition.component.d.ts +3 -0
- package/modules/type-definitions/property-definitions.component.d.ts +3 -0
- package/modules/type-definitions/type-alias-definition.component.d.ts +3 -0
- package/modules/type-definitions/type-anchor-links.pipe.d.ts +3 -0
- package/modules/type-definitions/type-definitions-format.service.d.ts +3 -0
- package/modules/type-definitions/type-definitions-provider.d.ts +3 -0
- package/modules/type-definitions/type-definitions.module.d.ts +22 -0
- package/modules/type-definitions/type-definitions.service.d.ts +4 -1
- package/modules/type-definitions/typedoc-adapter.service.d.ts +3 -0
- package/modules/type-definitions/typedoc-types.d.ts +2 -2
- package/package.json +23 -32
- package/public-api.d.ts +63 -0
- package/skyux-docs-tools.d.ts +2 -45
- package/CHANGELOG.md +0 -395
- package/bundles/skyux-docs-tools.umd.js.map +0 -1
- package/bundles/skyux-docs-tools.umd.min.js +0 -2
- package/bundles/skyux-docs-tools.umd.min.js.map +0 -1
- package/esm2015/modules/demo/demo-control-panel-theme.component.js +0 -102
- package/esm2015/modules/demo/demo-theme.service.js +0 -14
- package/esm2015/modules/shared/docs-tools-resources.module.js +0 -20
- package/esm2015/modules/source-code/source-code.module.js +0 -16
- package/esm2015/plugin-resources/docs-tools-resources-provider.js +0 -16
- package/esm2015/public_api.js +0 -19
- package/esm5/docs-tools.module.js +0 -34
- package/esm5/modules/anatomy/anatomy-item.component.js +0 -21
- package/esm5/modules/anatomy/anatomy.component.js +0 -29
- package/esm5/modules/anatomy/anatomy.module.js +0 -31
- package/esm5/modules/code-examples/code-example-module-dependencies.js +0 -1
- package/esm5/modules/code-examples/code-example-theme.js +0 -6
- package/esm5/modules/code-examples/code-example.component.js +0 -77
- package/esm5/modules/code-examples/code-example.js +0 -1
- package/esm5/modules/code-examples/code-examples-editor.service.js +0 -148
- package/esm5/modules/code-examples/code-examples.component.js +0 -101
- package/esm5/modules/code-examples/code-examples.module.js +0 -43
- package/esm5/modules/demo/demo-content-alignment.js +0 -1
- package/esm5/modules/demo/demo-control-panel-change.js +0 -1
- package/esm5/modules/demo/demo-control-panel-checkbox.component.js +0 -94
- package/esm5/modules/demo/demo-control-panel-radio-choice.js +0 -1
- package/esm5/modules/demo/demo-control-panel-radio-group.component.js +0 -85
- package/esm5/modules/demo/demo-control-panel-section.component.js +0 -28
- package/esm5/modules/demo/demo-control-panel-theme.component.js +0 -114
- package/esm5/modules/demo/demo-control-panel.component.js +0 -95
- package/esm5/modules/demo/demo-theme.service.js +0 -15
- package/esm5/modules/demo/demo.component.js +0 -84
- package/esm5/modules/demo/demo.module.js +0 -52
- package/esm5/modules/demo-page/demo-page-dom-adapter.service.js +0 -93
- package/esm5/modules/demo-page/demo-page-module-info.component.js +0 -15
- package/esm5/modules/demo-page/demo-page-section.component.js +0 -51
- package/esm5/modules/demo-page/demo-page-summary.component.js +0 -27
- package/esm5/modules/demo-page/demo-page-title.service.js +0 -32
- package/esm5/modules/demo-page/demo-page-type-definitions.component.js +0 -32
- package/esm5/modules/demo-page/demo-page.component.js +0 -146
- package/esm5/modules/demo-page/demo-page.module.js +0 -60
- package/esm5/modules/design-guidelines/design-guideline-thumbnail.component.js +0 -36
- package/esm5/modules/design-guidelines/design-guideline.component.js +0 -41
- package/esm5/modules/design-guidelines/design-guidelines.component.js +0 -16
- package/esm5/modules/design-guidelines/design-guidelines.module.js +0 -34
- package/esm5/modules/heading-anchor/heading-anchor.component.js +0 -24
- package/esm5/modules/heading-anchor/heading-anchor.module.js +0 -28
- package/esm5/modules/markdown/markdown.module.js +0 -23
- package/esm5/modules/markdown/markdown.pipe.js +0 -21
- package/esm5/modules/module-info/module-info.component.js +0 -101
- package/esm5/modules/module-info/module-info.module.js +0 -34
- package/esm5/modules/safe-html/safe-html.component.js +0 -27
- package/esm5/modules/safe-html/safe-html.module.js +0 -24
- package/esm5/modules/shared/docs-tools-component-info.js +0 -1
- package/esm5/modules/shared/docs-tools-options.js +0 -7
- package/esm5/modules/shared/docs-tools-resources.module.js +0 -23
- package/esm5/modules/shared/docs-tools-supportal.service.js +0 -23
- package/esm5/modules/source-code/source-code-file.js +0 -1
- package/esm5/modules/source-code/source-code-provider.js +0 -12
- package/esm5/modules/source-code/source-code.module.js +0 -19
- package/esm5/modules/source-code/source-code.service.js +0 -42
- package/esm5/modules/thumbnail/thumbnail.component.js +0 -36
- package/esm5/modules/thumbnail/thumbnail.module.js +0 -26
- package/esm5/modules/type-definitions/anchor-link-service-config.js +0 -1
- package/esm5/modules/type-definitions/anchor-link-service-format.js +0 -1
- package/esm5/modules/type-definitions/anchor-link.js +0 -1
- package/esm5/modules/type-definitions/anchor-link.service.js +0 -99
- package/esm5/modules/type-definitions/call-signature-definition.component.js +0 -54
- package/esm5/modules/type-definitions/call-signature-definition.js +0 -1
- package/esm5/modules/type-definitions/class-definition.component.js +0 -20
- package/esm5/modules/type-definitions/class-definition.js +0 -1
- package/esm5/modules/type-definitions/comment-tags.js +0 -1
- package/esm5/modules/type-definitions/directive-definition.component.js +0 -20
- package/esm5/modules/type-definitions/directive-definition.js +0 -1
- package/esm5/modules/type-definitions/entry-child-definition.js +0 -1
- package/esm5/modules/type-definitions/entry-definition.js +0 -1
- package/esm5/modules/type-definitions/enumeration-definition.component.js +0 -19
- package/esm5/modules/type-definitions/enumeration-definition.js +0 -1
- package/esm5/modules/type-definitions/enumeration-member-definition.js +0 -1
- package/esm5/modules/type-definitions/index-signature-definition.js +0 -1
- package/esm5/modules/type-definitions/interface-definition.component.js +0 -38
- package/esm5/modules/type-definitions/interface-definition.js +0 -1
- package/esm5/modules/type-definitions/interface-property-definition.js +0 -1
- package/esm5/modules/type-definitions/method-definition.js +0 -1
- package/esm5/modules/type-definitions/method-definitions.component.js +0 -66
- package/esm5/modules/type-definitions/parameter-definition.js +0 -1
- package/esm5/modules/type-definitions/pipe-definition.component.js +0 -20
- package/esm5/modules/type-definitions/pipe-definition.js +0 -1
- package/esm5/modules/type-definitions/property-decorator.js +0 -1
- package/esm5/modules/type-definitions/property-definition.js +0 -1
- package/esm5/modules/type-definitions/property-definitions.component.js +0 -75
- package/esm5/modules/type-definitions/type-alias-definition.component.js +0 -39
- package/esm5/modules/type-definitions/type-alias-definition.js +0 -1
- package/esm5/modules/type-definitions/type-anchor-links.pipe.js +0 -29
- package/esm5/modules/type-definitions/type-definition.js +0 -1
- package/esm5/modules/type-definitions/type-definitions-format.service.js +0 -248
- package/esm5/modules/type-definitions/type-definitions-provider.js +0 -12
- package/esm5/modules/type-definitions/type-definitions.js +0 -1
- package/esm5/modules/type-definitions/type-definitions.module.js +0 -81
- package/esm5/modules/type-definitions/type-definitions.service.js +0 -95
- package/esm5/modules/type-definitions/type-parameter-definition.js +0 -1
- package/esm5/modules/type-definitions/typedoc-adapter.service.js +0 -462
- package/esm5/modules/type-definitions/typedoc-types.js +0 -1
- package/esm5/plugin-resources/docs-tools-resources-provider.js +0 -17
- package/esm5/public_api.js +0 -19
- package/esm5/skyux-docs-tools.js +0 -49
- package/fesm5/skyux-docs-tools.js +0 -3201
- package/fesm5/skyux-docs-tools.js.map +0 -1
- package/modules/demo/demo-control-panel-theme.component.d.ts +0 -32
- package/modules/demo/demo-theme.service.d.ts +0 -6
- package/modules/shared/docs-tools-resources.module.d.ts +0 -2
- package/modules/source-code/source-code.module.d.ts +0 -2
- package/plugin-resources/docs-tools-resources-provider.d.ts +0 -5
- package/public_api.d.ts +0 -33
- package/skyux-docs-tools.metadata.json +0 -1
- package/src/assets/img/guidelines/popover/anatomy.png +0 -0
- package/src/assets/img/guidelines/popover/behavior-responsive.png +0 -0
- package/src/assets/img/guidelines/popover/content-dont-overload.png +0 -0
- package/src/assets/img/guidelines/popover/content-html.png +0 -0
- package/src/assets/img/guidelines/popover/content-simple.png +0 -0
- package/src/assets/img/guidelines/popover/layout-alternate.png +0 -0
- package/src/assets/img/guidelines/popover/layout-default.png +0 -0
- package/src/assets/img/guidelines/popover/option-position.png +0 -0
- package/src/assets/img/guidelines/popover/popover-auto.mp4 +0 -0
- package/src/assets/img/guidelines/popover/popover-click.mp4 +0 -0
- package/src/assets/locales/resources_en_US.json +0 -22
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./type-definitions-provider";
|
|
4
|
+
import * as i2 from "./typedoc-adapter.service";
|
|
5
5
|
/**
|
|
6
6
|
* Handles all type definitions that have been converted from the third-party documentation generator.
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
export class SkyDocsTypeDefinitionsService {
|
|
9
9
|
constructor(typeDefinitionsProvider, adapter) {
|
|
10
10
|
this.typeDefinitionsProvider = typeDefinitionsProvider;
|
|
11
11
|
this.adapter = adapter;
|
|
@@ -15,14 +15,19 @@ let SkyDocsTypeDefinitionsService = class SkyDocsTypeDefinitionsService {
|
|
|
15
15
|
* @param sourceCodePath The directory of the source code you wish to pull type definitions from,
|
|
16
16
|
* relative to the application's root directory.
|
|
17
17
|
*/
|
|
18
|
-
getTypeDefinitions(sourceCodePath) {
|
|
19
|
-
if (sourceCodePath
|
|
20
|
-
throw new Error('The
|
|
18
|
+
getTypeDefinitions(sourceCodePath, additionalSourceCodePaths) {
|
|
19
|
+
if (!sourceCodePath) {
|
|
20
|
+
throw new Error('The `sourceCodePath` parameter is required');
|
|
21
21
|
}
|
|
22
|
+
const sourceCodePaths = additionalSourceCodePaths && additionalSourceCodePaths.length > 0 ?
|
|
23
|
+
[sourceCodePath].concat(additionalSourceCodePaths) :
|
|
24
|
+
[sourceCodePath];
|
|
25
|
+
sourceCodePaths.forEach((path) => {
|
|
26
|
+
if (!path.endsWith('/') && !path.endsWith('.ts')) {
|
|
27
|
+
throw new Error('Source code paths must end with a forward slash (`/`) or `.ts`.');
|
|
28
|
+
}
|
|
29
|
+
});
|
|
22
30
|
const allDefinitions = this.typeDefinitionsProvider.typeDefinitions;
|
|
23
|
-
const requestedDir = sourceCodePath
|
|
24
|
-
.replace(/src\/app\/public\//, '')
|
|
25
|
-
.replace(/^\//, ''); // remove first slash.
|
|
26
31
|
const types = {
|
|
27
32
|
classes: [],
|
|
28
33
|
components: [],
|
|
@@ -37,57 +42,62 @@ let SkyDocsTypeDefinitionsService = class SkyDocsTypeDefinitionsService {
|
|
|
37
42
|
console.warn(`No types were found for this project!`);
|
|
38
43
|
return types;
|
|
39
44
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
switch (decorator) {
|
|
49
|
-
case 'Component':
|
|
50
|
-
types.components.push(this.adapter.toDirectiveDefinition(item));
|
|
51
|
-
break;
|
|
52
|
-
case 'Directive':
|
|
53
|
-
types.directives.push(this.adapter.toDirectiveDefinition(item));
|
|
54
|
-
break;
|
|
55
|
-
case 'Injectable':
|
|
56
|
-
types.services.push(this.adapter.toClassDefinition(item));
|
|
57
|
-
break;
|
|
58
|
-
case 'NgModule':
|
|
59
|
-
// Don't document modules.
|
|
60
|
-
break;
|
|
61
|
-
case 'Pipe':
|
|
62
|
-
types.pipes.push(this.adapter.toPipeDefinition(item));
|
|
63
|
-
break;
|
|
64
|
-
default:
|
|
65
|
-
/*tslint:disable-next-line:switch-default*/
|
|
66
|
-
switch (kindString) {
|
|
67
|
-
case 'Class':
|
|
68
|
-
types.classes.push(this.adapter.toClassDefinition(item));
|
|
69
|
-
break;
|
|
70
|
-
case 'Interface':
|
|
71
|
-
types.interfaces.push(this.adapter.toInterfaceDefinition(item));
|
|
72
|
-
break;
|
|
73
|
-
case 'Enumeration':
|
|
74
|
-
types.enumerations.push(this.adapter.toEnumerationDefinition(item));
|
|
75
|
-
break;
|
|
76
|
-
case 'Type alias':
|
|
77
|
-
types.typeAliases.push(this.adapter.toTypeAliasDefinition(item));
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
45
|
+
sourceCodePaths.forEach((path) => {
|
|
46
|
+
const requestedDir = path
|
|
47
|
+
.replace(/src\/app\/public\//, '')
|
|
48
|
+
.replace(/^\//, ''); // remove first slash.
|
|
49
|
+
// Only process types that match the requested source code location.
|
|
50
|
+
const typeDefinitions = allDefinitions.filter((i) => i.sources && i.sources[0].fileName.match(requestedDir));
|
|
51
|
+
if (typeDefinitions.length === 0) {
|
|
52
|
+
console.warn(`Type definitions were not found for location: ${requestedDir}`);
|
|
80
53
|
}
|
|
54
|
+
typeDefinitions.forEach((item) => {
|
|
55
|
+
const decorator = item.decorators && item.decorators[0].name;
|
|
56
|
+
const kindString = item.kindString;
|
|
57
|
+
switch (decorator) {
|
|
58
|
+
case 'Component':
|
|
59
|
+
types.components.push(this.adapter.toDirectiveDefinition(item));
|
|
60
|
+
break;
|
|
61
|
+
case 'Directive':
|
|
62
|
+
types.directives.push(this.adapter.toDirectiveDefinition(item));
|
|
63
|
+
break;
|
|
64
|
+
case 'Injectable':
|
|
65
|
+
types.services.push(this.adapter.toClassDefinition(item));
|
|
66
|
+
break;
|
|
67
|
+
case 'NgModule':
|
|
68
|
+
// Don't document modules.
|
|
69
|
+
break;
|
|
70
|
+
case 'Pipe':
|
|
71
|
+
types.pipes.push(this.adapter.toPipeDefinition(item));
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
/*tslint:disable-next-line:switch-default*/
|
|
75
|
+
switch (kindString) {
|
|
76
|
+
case 'Class':
|
|
77
|
+
types.classes.push(this.adapter.toClassDefinition(item));
|
|
78
|
+
break;
|
|
79
|
+
case 'Interface':
|
|
80
|
+
types.interfaces.push(this.adapter.toInterfaceDefinition(item));
|
|
81
|
+
break;
|
|
82
|
+
case 'Enumeration':
|
|
83
|
+
types.enumerations.push(this.adapter.toEnumerationDefinition(item));
|
|
84
|
+
break;
|
|
85
|
+
case 'Type alias':
|
|
86
|
+
types.typeAliases.push(this.adapter.toTypeAliasDefinition(item));
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
81
91
|
});
|
|
82
92
|
return types;
|
|
83
93
|
}
|
|
84
|
-
}
|
|
85
|
-
SkyDocsTypeDefinitionsService
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
]
|
|
92
|
-
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
}
|
|
95
|
+
SkyDocsTypeDefinitionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDocsTypeDefinitionsService, deps: [{ token: i1.SkyDocsTypeDefinitionsProvider }, { token: i2.SkyDocsTypeDocAdapterService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
96
|
+
SkyDocsTypeDefinitionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDocsTypeDefinitionsService, providedIn: 'any' });
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDocsTypeDefinitionsService, decorators: [{
|
|
98
|
+
type: Injectable,
|
|
99
|
+
args: [{
|
|
100
|
+
providedIn: 'any'
|
|
101
|
+
}]
|
|
102
|
+
}], ctorParameters: function () { return [{ type: i1.SkyDocsTypeDefinitionsProvider }, { type: i2.SkyDocsTypeDocAdapterService }]; } });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1kZWZpbml0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9jcy10b29scy9zcmMvbW9kdWxlcy90eXBlLWRlZmluaXRpb25zL3R5cGUtZGVmaW5pdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDOzs7O0FBY3ZCOztHQUVHO0FBSUgsTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxZQUNVLHVCQUF1RCxFQUN2RCxPQUFxQztRQURyQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWdDO1FBQ3ZELFlBQU8sR0FBUCxPQUFPLENBQThCO0lBQzNDLENBQUM7SUFFTDs7OztPQUlHO0lBQ0ksa0JBQWtCLENBQUMsY0FBc0IsRUFBRSx5QkFBb0M7UUFFcEYsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxNQUFNLGVBQWUsR0FBYSx5QkFBeUIsSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BELENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbkIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO2FBQ3BGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxHQUEyQjtZQUNwQyxPQUFPLEVBQUUsRUFBRTtZQUNYLFVBQVUsRUFBRSxFQUFFO1lBQ2QsVUFBVSxFQUFFLEVBQUU7WUFDZCxZQUFZLEVBQUUsRUFBRTtZQUNoQixVQUFVLEVBQUUsRUFBRTtZQUNkLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEVBQUU7WUFDWixXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDdEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvQixNQUFNLFlBQVksR0FBRyxJQUFJO2lCQUN0QixPQUFPLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO2lCQUNqQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1lBRTdDLG9FQUFvRTtZQUNwRSxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzdHLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaURBQWlELFlBQVksRUFBRSxDQUFDLENBQUM7YUFDL0U7WUFFRCxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzdELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBRW5DLFFBQVEsU0FBUyxFQUFFO29CQUNqQixLQUFLLFdBQVc7d0JBQ2QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNoRSxNQUFNO29CQUNSLEtBQUssV0FBVzt3QkFDZCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ2hFLE1BQU07b0JBQ1IsS0FBSyxZQUFZO3dCQUNmLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDMUQsTUFBTTtvQkFDUixLQUFLLFVBQVU7d0JBQ2IsMEJBQTBCO3dCQUMxQixNQUFNO29CQUNSLEtBQUssTUFBTTt3QkFDVCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3RELE1BQU07b0JBQ1I7d0JBQ0UsMkNBQTJDO3dCQUMzQyxRQUFRLFVBQVUsRUFBRTs0QkFDbEIsS0FBSyxPQUFPO2dDQUNWLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQ0FDekQsTUFBTTs0QkFDUixLQUFLLFdBQVc7Z0NBQ2QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dDQUNoRSxNQUFNOzRCQUNSLEtBQUssYUFBYTtnQ0FDaEIsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dDQUNwRSxNQUFNOzRCQUNSLEtBQUssWUFBWTtnQ0FDZixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0NBQ2pFLE1BQU07eUJBQ1Q7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzsySEFqR1UsNkJBQTZCOytIQUE3Qiw2QkFBNkIsY0FGNUIsS0FBSzs0RkFFTiw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1R5cGVEZWZpbml0aW9uc1xufSBmcm9tICcuL3R5cGUtZGVmaW5pdGlvbnMnO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZURlZmluaXRpb25zUHJvdmlkZXJcbn0gZnJvbSAnLi90eXBlLWRlZmluaXRpb25zLXByb3ZpZGVyJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1R5cGVEb2NBZGFwdGVyU2VydmljZVxufSBmcm9tICcuL3R5cGVkb2MtYWRhcHRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBIYW5kbGVzIGFsbCB0eXBlIGRlZmluaXRpb25zIHRoYXQgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIHRoZSB0aGlyZC1wYXJ0eSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55J1xufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzVHlwZURlZmluaXRpb25zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0eXBlRGVmaW5pdGlvbnNQcm92aWRlcjogU2t5RG9jc1R5cGVEZWZpbml0aW9uc1Byb3ZpZGVyLFxuICAgIHByaXZhdGUgYWRhcHRlcjogU2t5RG9jc1R5cGVEb2NBZGFwdGVyU2VydmljZVxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHR5cGUgZGVmaW5pdGlvbnMgZnJvbSBhIHNwZWNpZmljIHNvdXJjZSBjb2RlIGxvY2F0aW9uLlxuICAgKiBAcGFyYW0gc291cmNlQ29kZVBhdGggVGhlIGRpcmVjdG9yeSBvZiB0aGUgc291cmNlIGNvZGUgeW91IHdpc2ggdG8gcHVsbCB0eXBlIGRlZmluaXRpb25zIGZyb20sXG4gICAqIHJlbGF0aXZlIHRvIHRoZSBhcHBsaWNhdGlvbidzIHJvb3QgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIGdldFR5cGVEZWZpbml0aW9ucyhzb3VyY2VDb2RlUGF0aDogc3RyaW5nLCBhZGRpdGlvbmFsU291cmNlQ29kZVBhdGhzPzogc3RyaW5nW10pOiBTa3lEb2NzVHlwZURlZmluaXRpb25zIHtcblxuICAgIGlmICghc291cmNlQ29kZVBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBzb3VyY2VDb2RlUGF0aGAgcGFyYW1ldGVyIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlQ29kZVBhdGhzOiBzdHJpbmdbXSA9IGFkZGl0aW9uYWxTb3VyY2VDb2RlUGF0aHMgJiYgYWRkaXRpb25hbFNvdXJjZUNvZGVQYXRocy5sZW5ndGggPiAwID9cbiAgICAgIFtzb3VyY2VDb2RlUGF0aF0uY29uY2F0KGFkZGl0aW9uYWxTb3VyY2VDb2RlUGF0aHMpIDpcbiAgICAgIFtzb3VyY2VDb2RlUGF0aF07XG5cbiAgICBzb3VyY2VDb2RlUGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgaWYgKCFwYXRoLmVuZHNXaXRoKCcvJykgJiYgIXBhdGguZW5kc1dpdGgoJy50cycpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU291cmNlIGNvZGUgcGF0aHMgbXVzdCBlbmQgd2l0aCBhIGZvcndhcmQgc2xhc2ggKGAvYCkgb3IgYC50c2AuJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBhbGxEZWZpbml0aW9ucyA9IHRoaXMudHlwZURlZmluaXRpb25zUHJvdmlkZXIudHlwZURlZmluaXRpb25zO1xuICAgIGNvbnN0IHR5cGVzOiBTa3lEb2NzVHlwZURlZmluaXRpb25zID0ge1xuICAgICAgY2xhc3NlczogW10sXG4gICAgICBjb21wb25lbnRzOiBbXSxcbiAgICAgIGRpcmVjdGl2ZXM6IFtdLFxuICAgICAgZW51bWVyYXRpb25zOiBbXSxcbiAgICAgIGludGVyZmFjZXM6IFtdLFxuICAgICAgcGlwZXM6IFtdLFxuICAgICAgc2VydmljZXM6IFtdLFxuICAgICAgdHlwZUFsaWFzZXM6IFtdXG4gICAgfTtcblxuICAgIGlmICghYWxsRGVmaW5pdGlvbnMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgTm8gdHlwZXMgd2VyZSBmb3VuZCBmb3IgdGhpcyBwcm9qZWN0IWApO1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIHNvdXJjZUNvZGVQYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ZWREaXIgPSBwYXRoXG4gICAgICAgIC5yZXBsYWNlKC9zcmNcXC9hcHBcXC9wdWJsaWNcXC8vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoL15cXC8vLCAnJyk7IC8vIHJlbW92ZSBmaXJzdCBzbGFzaC5cblxuICAgICAgLy8gT25seSBwcm9jZXNzIHR5cGVzIHRoYXQgbWF0Y2ggdGhlIHJlcXVlc3RlZCBzb3VyY2UgY29kZSBsb2NhdGlvbi5cbiAgICAgIGNvbnN0IHR5cGVEZWZpbml0aW9ucyA9IGFsbERlZmluaXRpb25zLmZpbHRlcigoaSkgPT4gaS5zb3VyY2VzICYmIGkuc291cmNlc1swXS5maWxlTmFtZS5tYXRjaChyZXF1ZXN0ZWREaXIpKTtcbiAgICAgIGlmICh0eXBlRGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVHlwZSBkZWZpbml0aW9ucyB3ZXJlIG5vdCBmb3VuZCBmb3IgbG9jYXRpb246ICR7cmVxdWVzdGVkRGlyfWApO1xuICAgICAgfVxuXG4gICAgICB0eXBlRGVmaW5pdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBkZWNvcmF0b3IgPSBpdGVtLmRlY29yYXRvcnMgJiYgaXRlbS5kZWNvcmF0b3JzWzBdLm5hbWU7XG4gICAgICAgIGNvbnN0IGtpbmRTdHJpbmcgPSBpdGVtLmtpbmRTdHJpbmc7XG5cbiAgICAgICAgc3dpdGNoIChkZWNvcmF0b3IpIHtcbiAgICAgICAgICBjYXNlICdDb21wb25lbnQnOlxuICAgICAgICAgICAgdHlwZXMuY29tcG9uZW50cy5wdXNoKHRoaXMuYWRhcHRlci50b0RpcmVjdGl2ZURlZmluaXRpb24oaXRlbSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnRGlyZWN0aXZlJzpcbiAgICAgICAgICAgIHR5cGVzLmRpcmVjdGl2ZXMucHVzaCh0aGlzLmFkYXB0ZXIudG9EaXJlY3RpdmVEZWZpbml0aW9uKGl0ZW0pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0luamVjdGFibGUnOlxuICAgICAgICAgICAgdHlwZXMuc2VydmljZXMucHVzaCh0aGlzLmFkYXB0ZXIudG9DbGFzc0RlZmluaXRpb24oaXRlbSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnTmdNb2R1bGUnOlxuICAgICAgICAgICAgLy8gRG9uJ3QgZG9jdW1lbnQgbW9kdWxlcy5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1BpcGUnOlxuICAgICAgICAgICAgdHlwZXMucGlwZXMucHVzaCh0aGlzLmFkYXB0ZXIudG9QaXBlRGVmaW5pdGlvbihpdGVtKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHQqL1xuICAgICAgICAgICAgc3dpdGNoIChraW5kU3RyaW5nKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ0NsYXNzJzpcbiAgICAgICAgICAgICAgICB0eXBlcy5jbGFzc2VzLnB1c2godGhpcy5hZGFwdGVyLnRvQ2xhc3NEZWZpbml0aW9uKGl0ZW0pKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnSW50ZXJmYWNlJzpcbiAgICAgICAgICAgICAgICB0eXBlcy5pbnRlcmZhY2VzLnB1c2godGhpcy5hZGFwdGVyLnRvSW50ZXJmYWNlRGVmaW5pdGlvbihpdGVtKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ0VudW1lcmF0aW9uJzpcbiAgICAgICAgICAgICAgICB0eXBlcy5lbnVtZXJhdGlvbnMucHVzaCh0aGlzLmFkYXB0ZXIudG9FbnVtZXJhdGlvbkRlZmluaXRpb24oaXRlbSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdUeXBlIGFsaWFzJzpcbiAgICAgICAgICAgICAgICB0eXBlcy50eXBlQWxpYXNlcy5wdXNoKHRoaXMuYWRhcHRlci50b1R5cGVBbGlhc0RlZmluaXRpb24oaXRlbSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1wYXJhbWV0ZXItZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvdHlwZS1kZWZpbml0aW9ucy90eXBlLXBhcmFtZXRlci1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTa3lEb2NzVHlwZURlZmluaXRpb25cbn0gZnJvbSAnLi90eXBlLWRlZmluaXRpb24nO1xuXG4vKipcbiAqIERlc2NyaWJlcyBhIHR5cGUgcGFyYW1ldGVyLCBlLmcuIGA8VD5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNreURvY3NUeXBlUGFyYW1ldGVyRGVmaW5pdGlvbiB7XG5cbiAgbmFtZTogc3RyaW5nO1xuXG4gIHR5cGU/OiBTa3lEb2NzVHlwZURlZmluaXRpb247XG5cbn1cbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { __decorate, __param } from "tslib";
|
|
2
1
|
import { Injectable, Optional } from '@angular/core';
|
|
3
|
-
import { SkyDocsTypeDefinitionsProvider } from './type-definitions-provider';
|
|
4
2
|
import orderBy from 'lodash.orderby';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./type-definitions-provider";
|
|
5
5
|
/**
|
|
6
6
|
* Converts TypeDoc types into SKY UX docs-tools types, to be supplied to the various definitions components.
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
export class SkyDocsTypeDocAdapterService {
|
|
9
9
|
constructor(typeDefinitionsProvider) {
|
|
10
10
|
this.typeDefinitionsProvider = typeDefinitionsProvider;
|
|
11
11
|
}
|
|
@@ -113,21 +113,43 @@ let SkyDocsTypeDocAdapterService = class SkyDocsTypeDocAdapterService {
|
|
|
113
113
|
const definitions = entry.children
|
|
114
114
|
.filter(child => child.kindString === 'Property' || child.kindString === 'Accessor')
|
|
115
115
|
.map(child => {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
isOptional:
|
|
116
|
+
var _a, _b, _c;
|
|
117
|
+
let definition = {
|
|
118
|
+
isOptional: true,
|
|
119
119
|
name: this.getPropertyName(child),
|
|
120
120
|
type: this.getTypeDefinition(child)
|
|
121
121
|
};
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (
|
|
125
|
-
|
|
122
|
+
let defaultValue;
|
|
123
|
+
/* Ensure we are properly capturing definitions which use a getter/setter. Final check is a sanity check */
|
|
124
|
+
if (child.kindString === 'Accessor' && !((_a = child.comment) === null || _a === void 0 ? void 0 : _a.shortText) && ((_b = child.getSignature) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
125
|
+
const mainTags = this.getCommentTags(child.comment);
|
|
126
|
+
const getTags = this.getCommentTags(child.getSignature[0].comment);
|
|
127
|
+
this.applyCommentTagValues(definition, mainTags);
|
|
128
|
+
this.applyCommentTagValues(definition, getTags);
|
|
129
|
+
if (((_c = child.setSignature) === null || _c === void 0 ? void 0 : _c.length) > 0) {
|
|
130
|
+
const setTags = this.getCommentTags(child.setSignature[0].comment);
|
|
131
|
+
this.applyCommentTagValues(definition, setTags);
|
|
132
|
+
definition.isOptional = !setTags.extras.required;
|
|
133
|
+
defaultValue = this.getDefaultValue(child, setTags);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
definition.isOptional = !mainTags.extras.required;
|
|
137
|
+
defaultValue = this.getDefaultValue(child, mainTags);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const tags = this.getCommentTags(child.comment);
|
|
142
|
+
definition.isOptional = !tags.extras.required;
|
|
143
|
+
this.applyCommentTagValues(definition, tags);
|
|
144
|
+
defaultValue = this.getDefaultValue(child, tags);
|
|
126
145
|
}
|
|
127
|
-
const defaultValue = this.getDefaultValue(child, tags);
|
|
128
146
|
if (defaultValue) {
|
|
129
147
|
definition.defaultValue = defaultValue;
|
|
130
148
|
}
|
|
149
|
+
const decorator = this.getDecorator(child);
|
|
150
|
+
if (decorator) {
|
|
151
|
+
definition.decorator = decorator;
|
|
152
|
+
}
|
|
131
153
|
return definition;
|
|
132
154
|
});
|
|
133
155
|
return orderBy(definitions, ['isOptional', 'name'], ['asc', 'asc']);
|
|
@@ -174,7 +196,7 @@ let SkyDocsTypeDocAdapterService = class SkyDocsTypeDocAdapterService {
|
|
|
174
196
|
const sorted = orderBy(definitions, ['isOptional', 'name'], ['asc', 'asc']);
|
|
175
197
|
// Add any index signatures, e.g. `[_: string]: any`
|
|
176
198
|
if (entry.indexSignature) {
|
|
177
|
-
const indexSignature = entry.indexSignature
|
|
199
|
+
const indexSignature = entry.indexSignature;
|
|
178
200
|
const definition = {
|
|
179
201
|
isOptional: true,
|
|
180
202
|
name: indexSignature.name,
|
|
@@ -238,10 +260,10 @@ let SkyDocsTypeDocAdapterService = class SkyDocsTypeDocAdapterService {
|
|
|
238
260
|
definition.callSignature = this.getCallSignatureDefinition(declaration.signatures[0], this.getCommentTags(child.comment));
|
|
239
261
|
}
|
|
240
262
|
else if (declaration.indexSignature) {
|
|
241
|
-
const indexSignature = declaration.indexSignature
|
|
263
|
+
const indexSignature = declaration.indexSignature;
|
|
242
264
|
definition.indexSignature = this.getIndexSignatureDefinition(indexSignature);
|
|
243
265
|
}
|
|
244
|
-
else if (declaration.children) {
|
|
266
|
+
else /* istanbul ignore else */ if (declaration.children) {
|
|
245
267
|
definition.typeLiteral = {
|
|
246
268
|
properties: this.getInterfaceProperties({
|
|
247
269
|
children: declaration.children
|
|
@@ -441,13 +463,15 @@ let SkyDocsTypeDocAdapterService = class SkyDocsTypeDocAdapterService {
|
|
|
441
463
|
var _a;
|
|
442
464
|
return entry.anchorId || ((_a = this.typeDefinitionsProvider) === null || _a === void 0 ? void 0 : _a.anchorIds[entry.name]) || '';
|
|
443
465
|
}
|
|
444
|
-
}
|
|
445
|
-
SkyDocsTypeDocAdapterService
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
]
|
|
452
|
-
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRvYy1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZG9jcy10b29scy8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvdHlwZS1kZWZpbml0aW9ucy90eXBlZG9jLWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFrRXZCLE9BQU8sRUFDTCw4QkFBOEIsRUFDL0IsTUFBTSw2QkFBNkIsQ0FBQztBQWdCckMsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckM7O0dBRUc7QUFFSCxJQUFhLDRCQUE0QixHQUF6QyxNQUFhLDRCQUE0QjtJQUV2QyxZQUNzQix1QkFBd0Q7UUFBeEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFpQztJQUMzRSxDQUFDO0lBRUcsaUJBQWlCLENBQUMsS0FBbUI7UUFDMUMsTUFBTSxVQUFVLEdBQTJCO1lBQ3pDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakIsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsVUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDOUI7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ3JCLFVBQVUsQ0FB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LEtBQW1COztRQUNyQyxPQUFPLEtBQUssQ0FBQyxRQUFRLFdBQUksSUFBSSxDQUFDLHVCQUF1QiwwQ0FBRSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUUsQ0FBQztJQUNyRixDQUFDO0NBRUYsQ0FBQTs7WUFwakJpRCw4QkFBOEIsdUJBQTNFLFFBQVE7O0FBSEEsNEJBQTRCO0lBRHhDLFVBQVUsRUFBRTtJQUlSLFdBQUEsUUFBUSxFQUFFLENBQUE7R0FIRiw0QkFBNEIsQ0F1akJ4QztTQXZqQlksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreURvY3NDYWxsU2lnbmF0dXJlRGVmaW5pdGlvblxufSBmcm9tICcuL2NhbGwtc2lnbmF0dXJlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uXG59IGZyb20gJy4vY2xhc3MtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NDbGFzc1Byb3BlcnR5RGVmaW5pdGlvblxufSBmcm9tICcuL3Byb3BlcnR5LWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ29tbWVudFRhZ3Ncbn0gZnJvbSAnLi9jb21tZW50LXRhZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzRGlyZWN0aXZlRGVmaW5pdGlvblxufSBmcm9tICcuL2RpcmVjdGl2ZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0VudW1lcmF0aW9uRGVmaW5pdGlvblxufSBmcm9tICcuL2VudW1lcmF0aW9uLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzRW51bWVyYXRpb25NZW1iZXJEZWZpbml0aW9uXG59IGZyb20gJy4vZW51bWVyYXRpb24tbWVtYmVyLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzSW5kZXhTaWduYXR1cmVEZWZpbml0aW9uXG59IGZyb20gJy4vaW5kZXgtc2lnbmF0dXJlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzSW50ZXJmYWNlRGVmaW5pdGlvblxufSBmcm9tICcuL2ludGVyZmFjZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0ludGVyZmFjZVByb3BlcnR5RGVmaW5pdGlvblxufSBmcm9tICcuL2ludGVyZmFjZS1wcm9wZXJ0eS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0NsYXNzTWV0aG9kRGVmaW5pdGlvblxufSBmcm9tICcuL21ldGhvZC1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1BhcmFtZXRlckRlZmluaXRpb25cbn0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NQaXBlRGVmaW5pdGlvblxufSBmcm9tICcuL3BpcGUtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NQcm9wZXJ0eURlY29yYXRvckRlZmluaXRpb25cbn0gZnJvbSAnLi9wcm9wZXJ0eS1kZWNvcmF0b3InO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZUFsaWFzRGVmaW5pdGlvblxufSBmcm9tICcuL3R5cGUtYWxpYXMtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NUeXBlRGVmaW5pdGlvblxufSBmcm9tICcuL3R5cGUtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NUeXBlRGVmaW5pdGlvbnNQcm92aWRlclxufSBmcm9tICcuL3R5cGUtZGVmaW5pdGlvbnMtcHJvdmlkZXInO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZVBhcmFtZXRlckRlZmluaXRpb25cbn0gZnJvbSAnLi90eXBlLXBhcmFtZXRlci1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgVHlwZURvY0NvbW1lbnQsXG4gIFR5cGVEb2NFbnRyeSxcbiAgVHlwZURvY0VudHJ5Q2hpbGQsXG4gIFR5cGVEb2NQYXJhbWV0ZXIsXG4gIFR5cGVEb2NTaWduYXR1cmUsXG4gIFR5cGVEb2NUeXBlLFxuICBUeXBlRG9jVHlwZVBhcmFtZXRlclxufSBmcm9tICcuL3R5cGVkb2MtdHlwZXMnO1xuXG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5cbi8qKlxuICogQ29udmVydHMgVHlwZURvYyB0eXBlcyBpbnRvIFNLWSBVWCBkb2NzLXRvb2xzIHR5cGVzLCB0byBiZSBzdXBwbGllZCB0byB0aGUgdmFyaW91cyBkZWZpbml0aW9ucyBjb21wb25lbnRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5RG9jc1R5cGVEb2NBZGFwdGVyU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0eXBlRGVmaW5pdGlvbnNQcm92aWRlcj86IFNreURvY3NUeXBlRGVmaW5pdGlvbnNQcm92aWRlclxuICApIHt9XG5cbiAgcHVibGljIHRvQ2xhc3NEZWZpbml0aW9uKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbmFtZTogZW50cnkubmFtZVxuICAgIH07XG5cbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhlbnRyeS5jb21tZW50KTtcbiAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmdldENsYXNzTWV0aG9kcyhlbnRyeSk7XG4gICAgaWYgKG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLm1ldGhvZHMgPSBtZXRob2RzO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldENsYXNzUHJvcGVydGllcyhlbnRyeSk7XG4gICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcHVibGljIHRvRGlyZWN0aXZlRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0RpcmVjdGl2ZURlZmluaXRpb24ge1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NEaXJlY3RpdmVEZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgIHNlbGVjdG9yOiB0aGlzLmdldFNlbGVjdG9yKGVudHJ5KVxuICAgIH07XG5cbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhlbnRyeS5jb21tZW50KTtcbiAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldENsYXNzUHJvcGVydGllcyhlbnRyeSk7XG5cbiAgICBjb25zdCBldmVudFByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihwID0+IHAuZGVjb3JhdG9yPy5uYW1lID09PSAnT3V0cHV0Jyk7XG4gICAgaWYgKGV2ZW50UHJvcGVydGllcy5sZW5ndGgpIHtcbiAgICAgIGRlZmluaXRpb24uZXZlbnRQcm9wZXJ0aWVzID0gZXZlbnRQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0UHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKHAgPT4gcC5kZWNvcmF0b3I/Lm5hbWUgPT09ICdJbnB1dCcpO1xuICAgIGlmIChpbnB1dFByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLmlucHV0UHJvcGVydGllcyA9IGlucHV0UHJvcGVydGllcztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b0VudW1lcmF0aW9uRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0VudW1lcmF0aW9uRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgbWVtYmVycyA9IHRoaXMuZ2V0RW51bWVyYXRpb25NZW1iZXJzKGVudHJ5KTtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzRW51bWVyYXRpb25EZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbWVtYmVycyxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWVcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b0ludGVyZmFjZURlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NJbnRlcmZhY2VEZWZpbml0aW9uIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRJbnRlcmZhY2VQcm9wZXJ0aWVzKGVudHJ5KTtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzSW50ZXJmYWNlRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgfTtcblxuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGVudHJ5LmNvbW1lbnQpO1xuICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgY29uc3QgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLmdldFR5cGVQYXJhbWV0ZXJEZWZpbml0aW9ucyhlbnRyeS50eXBlUGFyYW1ldGVyKTtcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwdWJsaWMgdG9QaXBlRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc1BpcGVEZWZpbml0aW9uIHtcbiAgICBjb25zdCBtZXRob2RzID0gdGhpcy5nZXRDbGFzc01ldGhvZHMoZW50cnkpO1xuICAgIGNvbnN0IHRyYW5zZm9ybU1ldGhvZCA9IG1ldGhvZHMuZmluZChtID0+IG0ubmFtZSA9PT0gJ3RyYW5zZm9ybScpO1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NQaXBlRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICB0cmFuc2Zvcm1NZXRob2RcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b1R5cGVBbGlhc0RlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NUeXBlQWxpYXNEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzVHlwZUFsaWFzRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHtcbiAgICAgICAgY29tbWVudDogZW50cnkuY29tbWVudCxcbiAgICAgICAgdHlwZTogZW50cnkudHlwZVxuICAgICAgfSlcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICBjb25zdCB0eXBlUGFyYW1ldGVycyA9IHRoaXMuZ2V0VHlwZVBhcmFtZXRlckRlZmluaXRpb25zKGVudHJ5LnR5cGVQYXJhbWV0ZXIpO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIGRlZmluaXRpb24udHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0b3IoZW50cnk6IFR5cGVEb2NFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVjb3JhdG9yU291cmNlID0gZW50cnkuZGVjb3JhdG9yc1swXS5hcmd1bWVudHMub2JqO1xuICAgIHJldHVybiAoZGVjb3JhdG9yU291cmNlLmluZGV4T2YoJ3NlbGVjdG9yOiBgJykgPiAtMSlcbiAgICAgID8gZGVjb3JhdG9yU291cmNlLnNwbGl0KCdzZWxlY3RvcjogYCcpWzFdLnNwbGl0KCdgJylbMF0ucmVwbGFjZSgvXFxzXFxzKy9nLCAnICcpXG4gICAgICA6IGRlY29yYXRvclNvdXJjZS5zcGxpdCgnc2VsZWN0b3I6IFxcJycpWzFdLnNwbGl0KCdcXCcnKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xhc3NQcm9wZXJ0aWVzKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb25bXSB7XG4gICAgaWYgKCFlbnRyeS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb25zID0gZW50cnkuY2hpbGRyZW5cbiAgICAgIC5maWx0ZXIoY2hpbGQgPT4gY2hpbGQua2luZFN0cmluZyA9PT0gJ1Byb3BlcnR5JyB8fCBjaGlsZC5raW5kU3RyaW5nID09PSAnQWNjZXNzb3InKVxuICAgICAgLm1hcChjaGlsZCA9PiB7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpO1xuICAgICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gICAgICAgICAgaXNPcHRpb25hbDogIXRhZ3MuZXh0cmFzLnJlcXVpcmVkLFxuICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0UHJvcGVydHlOYW1lKGNoaWxkKSxcbiAgICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkKVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgICAgIGNvbnN0IGRlY29yYXRvciA9IHRoaXMuZ2V0RGVjb3JhdG9yKGNoaWxkKTtcbiAgICAgICAgaWYgKGRlY29yYXRvcikge1xuICAgICAgICAgIGRlZmluaXRpb24uZGVjb3JhdG9yID0gZGVjb3JhdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoY2hpbGQsIHRhZ3MpO1xuICAgICAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG9yZGVyQnkoXG4gICAgICBkZWZpbml0aW9ucyxcbiAgICAgIFsnaXNPcHRpb25hbCcsICduYW1lJ10sXG4gICAgICBbJ2FzYycsICdhc2MnXVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldENsYXNzTWV0aG9kcyhlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0NsYXNzTWV0aG9kRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWVudHJ5LmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbWV0aG9kcyA9IGVudHJ5LmNoaWxkcmVuXG4gICAgICAuZmlsdGVyKGNoaWxkID0+IGNoaWxkLmtpbmRTdHJpbmcgPT09ICdNZXRob2QnICYmIC9ebmcvLnRlc3QoY2hpbGQubmFtZSkgPT09IGZhbHNlKVxuICAgICAgLm1hcChjaGlsZCA9PiB7XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NDbGFzc01ldGhvZERlZmluaXRpb24gPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy5nZXRQcm9wZXJ0eU5hbWUoY2hpbGQpLFxuICAgICAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oY2hpbGQpXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQ29tbWVudHMgZm9yIG1ldGhvZHMgYXJlIHN0b3JlZCBpbiBhIGRpZmZlcmVudCBsb2NhdGlvbi5cbiAgICAgICAgY29uc3QgY29tbWVudCA9IGNoaWxkLnNpZ25hdHVyZXNbMF0uY29tbWVudDtcbiAgICAgICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoY29tbWVudCk7XG4gICAgICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgICAgIGNvbnN0IHR5cGVQYXJhbWV0ZXJzID0gdGhpcy5nZXRUeXBlUGFyYW1ldGVyRGVmaW5pdGlvbnMoY2hpbGQuc2lnbmF0dXJlc1swXS50eXBlUGFyYW1ldGVyKTtcbiAgICAgICAgaWYgKHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgICAgIGRlZmluaXRpb24udHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gb3JkZXJCeShcbiAgICAgIG1ldGhvZHMsXG4gICAgICBbJ25hbWUnXSxcbiAgICAgIFsnYXNjJ11cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnRlcmZhY2VQcm9wZXJ0aWVzKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzSW50ZXJmYWNlUHJvcGVydHlEZWZpbml0aW9uW10ge1xuICAgIGlmICghZW50cnkuY2hpbGRyZW4gJiYgIWVudHJ5LmluZGV4U2lnbmF0dXJlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5pdGlvbnMgPSBlbnRyeS5jaGlsZHJlbj8ubWFwKGNoaWxkID0+IHtcbiAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpO1xuICAgICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc0ludGVyZmFjZVByb3BlcnR5RGVmaW5pdGlvbiA9IHtcbiAgICAgICAgaXNPcHRpb25hbDogKHRhZ3MuZXh0cmFzLnJlcXVpcmVkKSA/IGZhbHNlIDogISEoY2hpbGQuZmxhZ3M/LmlzT3B0aW9uYWwpLFxuICAgICAgICBuYW1lOiB0aGlzLmdldFByb3BlcnR5TmFtZShjaGlsZCksXG4gICAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oY2hpbGQpXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfSkgfHwgW107XG5cbiAgICBjb25zdCBzb3J0ZWQgPSBvcmRlckJ5KFxuICAgICAgZGVmaW5pdGlvbnMsXG4gICAgICBbJ2lzT3B0aW9uYWwnLCAnbmFtZSddLFxuICAgICAgWydhc2MnLCAnYXNjJ11cbiAgICApO1xuXG4gICAgLy8gQWRkIGFueSBpbmRleCBzaWduYXR1cmVzLCBlLmcuIGBbXzogc3RyaW5nXTogYW55YFxuICAgIGlmIChlbnRyeS5pbmRleFNpZ25hdHVyZSkge1xuICAgICAgY29uc3QgaW5kZXhTaWduYXR1cmUgPSBlbnRyeS5pbmRleFNpZ25hdHVyZVswXTtcbiAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NJbnRlcmZhY2VQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gICAgICAgIGlzT3B0aW9uYWw6IHRydWUsXG4gICAgICAgIG5hbWU6IGluZGV4U2lnbmF0dXJlLm5hbWUsXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICBpbmRleFNpZ25hdHVyZTogdGhpcy5nZXRJbmRleFNpZ25hdHVyZURlZmluaXRpb24oaW5kZXhTaWduYXR1cmUpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGluZGV4U2lnbmF0dXJlLmNvbW1lbnQpO1xuICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG4gICAgICBzb3J0ZWQucHVzaChkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc29ydGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbnVtZXJhdGlvbk1lbWJlcnMoZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NFbnVtZXJhdGlvbk1lbWJlckRlZmluaXRpb25bXSB7XG4gICAgaWYgKCFlbnRyeS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRyeS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc0VudW1lcmF0aW9uTWVtYmVyRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgbmFtZTogY2hpbGQubmFtZVxuICAgICAgfTtcblxuICAgICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoY2hpbGQuY29tbWVudCk7XG4gICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVEZWZpbml0aW9uKGNoaWxkOiBUeXBlRG9jRW50cnlDaGlsZCk6IFNreURvY3NUeXBlRGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb246IFNreURvY3NUeXBlRGVmaW5pdGlvbjtcblxuICAgIGNvbnN0IGtpbmRTdHJpbmcgPSBjaGlsZC5raW5kU3RyaW5nO1xuICAgIHN3aXRjaCAoa2luZFN0cmluZykge1xuICAgICAgY2FzZSAnQWNjZXNzb3InOlxuICAgICAgICBpZiAoY2hpbGQuc2V0U2lnbmF0dXJlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHlwZURlZmluaXRpb24oY2hpbGQuc2V0U2lnbmF0dXJlWzBdLnBhcmFtZXRlcnNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkLmdldFNpZ25hdHVyZVswXSk7XG5cbiAgICAgIGNhc2UgJ01ldGhvZCc6XG4gICAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgICAgY2FsbFNpZ25hdHVyZTogdGhpcy5nZXRDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbihjaGlsZC5zaWduYXR1cmVzWzBdLCB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpKSxcbiAgICAgICAgICBuYW1lOiBjaGlsZC5zaWduYXR1cmVzWzBdLm5hbWVcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IGNoaWxkLnR5cGUubmFtZSB8fCBjaGlsZC50eXBlLmVsZW1lbnRUeXBlPy5uYW1lIHx8IGNoaWxkLnR5cGUudmFsdWU7XG5cbiAgICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiBjaGlsZC50eXBlLnR5cGVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbmlvbj9cbiAgICAgICAgaWYgKGNoaWxkLnR5cGUudHlwZXMpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLnVuaW9uVHlwZXMgPSBjaGlsZC50eXBlLnR5cGVzLm1hcCh0ID0+IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oeyB0eXBlOiB0IH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnZlcnQgcmVmbGVjdGlvbiB0eXBlcy5cbiAgICAgICAgaWYgKGNoaWxkLnR5cGUudHlwZSA9PT0gJ3JlZmxlY3Rpb24nKSB7XG4gICAgICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSBjaGlsZC50eXBlLmRlY2xhcmF0aW9uO1xuICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoZGVjbGFyYXRpb24pIHtcbiAgICAgICAgICAgIGlmIChkZWNsYXJhdGlvbi5zaWduYXR1cmVzKSB7XG4gICAgICAgICAgICAgIGRlZmluaXRpb24uY2FsbFNpZ25hdHVyZSA9IHRoaXMuZ2V0Q2FsbFNpZ25hdHVyZURlZmluaXRpb24oXG4gICAgICAgICAgICAgICAgZGVjbGFyYXRpb24uc2lnbmF0dXJlc1swXSxcbiAgICAgICAgICAgICAgICB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2xhcmF0aW9uLmluZGV4U2lnbmF0dXJlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4U2lnbmF0dXJlID0gZGVjbGFyYXRpb24uaW5kZXhTaWduYXR1cmVbMF07XG4gICAgICAgICAgICAgIGRlZmluaXRpb24uaW5kZXhTaWduYXR1cmUgPSB0aGlzLmdldEluZGV4U2lnbmF0dXJlRGVmaW5pdGlvbihpbmRleFNpZ25hdHVyZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2xhcmF0aW9uLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgIGRlZmluaXRpb24udHlwZUxpdGVyYWwgPSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5nZXRJbnRlcmZhY2VQcm9wZXJ0aWVzKHtcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBkZWNsYXJhdGlvbi5jaGlsZHJlblxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGQudHlwZS50eXBlID09PSAndHlwZU9wZXJhdG9yJykge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGAke2NoaWxkLnR5cGUub3BlcmF0b3J9ICR7Y2hpbGQudHlwZS50YXJnZXQubmFtZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLnR5cGUudHlwZUFyZ3VtZW50cykge1xuICAgICAgICAgIGRlZmluaXRpb24udHlwZUFyZ3VtZW50cyA9IHRoaXMuZ2V0VHlwZUFyZ3VtZW50RGVmaW5pdGlvbnMoY2hpbGQudHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmFtZXRlckRlZmluaXRpb25zKFxuICAgIGNhbGxTaWduYXR1cmU6IFR5cGVEb2NTaWduYXR1cmUsXG4gICAgcGFyZW50VGFnczogU2t5RG9jc0NvbW1lbnRUYWdzXG4gICk6IFNreURvY3NQYXJhbWV0ZXJEZWZpbml0aW9uW10ge1xuICAgIGlmICghY2FsbFNpZ25hdHVyZS5wYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1ldGVyczogU2t5RG9jc1BhcmFtZXRlckRlZmluaXRpb25bXSA9IGNhbGxTaWduYXR1cmUucGFyYW1ldGVycy5tYXAocCA9PiB7XG4gICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRQYXJhbWV0ZXJDb21tZW50VGFncyhwLCBwYXJlbnRUYWdzKTtcbiAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKHAsIHRhZ3MpO1xuICAgICAgY29uc3QgdHlwZUFyZ3VtZW50cyA9IHRoaXMuZ2V0VHlwZUFyZ3VtZW50RGVmaW5pdGlvbnMocC50eXBlKTtcblxuICAgICAgY29uc3QgcGFyYW1ldGVyOiBTa3lEb2NzUGFyYW1ldGVyRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgaXNPcHRpb25hbDogISEoZGVmYXVsdFZhbHVlIHx8ICEhcC5mbGFncz8uaXNPcHRpb25hbCksXG4gICAgICAgIG5hbWU6IHAubmFtZSxcbiAgICAgICAgdHlwZTogdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihwKVxuICAgICAgfTtcblxuICAgICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHBhcmFtZXRlci5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YWdzLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHBhcmFtZXRlci5kZXNjcmlwdGlvbiA9IHRhZ3MuZGVzY3JpcHRpb247XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlQXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBwYXJhbWV0ZXIudHlwZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtZXRlcnM7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVBcmd1bWVudERlZmluaXRpb25zKHR5cGVDb25maWc6IFR5cGVEb2NUeXBlKTogU2t5RG9jc1R5cGVEZWZpbml0aW9uW10ge1xuICAgIGlmICghdHlwZUNvbmZpZyB8fCAhdHlwZUNvbmZpZy50eXBlQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVDb25maWcudHlwZUFyZ3VtZW50cy5tYXAoKHR5cGVBcmd1bWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHlwZURlZmluaXRpb24oeyB0eXBlOiB0eXBlQXJndW1lbnQgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENhbGxTaWduYXR1cmVEZWZpbml0aW9uKGNhbGxTaWduYXR1cmU6IFR5cGVEb2NTaWduYXR1cmUsIHRhZ3M6IFNreURvY3NDb21tZW50VGFncyk6IFNreURvY3NDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc0NhbGxTaWduYXR1cmVEZWZpbml0aW9uID0ge1xuICAgICAgcmV0dXJuVHlwZTogdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihjYWxsU2lnbmF0dXJlKVxuICAgIH07XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy5nZXRQYXJhbWV0ZXJEZWZpbml0aW9ucyhjYWxsU2lnbmF0dXJlLCB0YWdzKTtcbiAgICBpZiAocGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIGRlZmluaXRpb24ucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4U2lnbmF0dXJlRGVmaW5pdGlvbihzaWduYXR1cmU6IFR5cGVEb2NTaWduYXR1cmUpOiBTa3lEb2NzSW5kZXhTaWduYXR1cmVEZWZpbml0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiB7XG4gICAgICAgIG5hbWU6IHNpZ25hdHVyZS5wYXJhbWV0ZXJzWzBdLm5hbWUsXG4gICAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oc2lnbmF0dXJlLnBhcmFtZXRlcnNbMF0pXG4gICAgICB9LFxuICAgICAgdHlwZTogdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihzaWduYXR1cmUpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHlwZVBhcmFtZXRlckRlZmluaXRpb25zKHR5cGVQYXJhbWV0ZXJzOiBUeXBlRG9jVHlwZVBhcmFtZXRlcltdKTogU2t5RG9jc1R5cGVQYXJhbWV0ZXJEZWZpbml0aW9uW10ge1xuICAgIGlmICghdHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVBhcmFtZXRlcnMubWFwKHR5cGVQYXJhbSA9PiB7XG4gICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzVHlwZVBhcmFtZXRlckRlZmluaXRpb24gPSB7XG4gICAgICAgIG5hbWU6IHR5cGVQYXJhbS5uYW1lXG4gICAgICB9O1xuXG4gICAgICBpZiAodHlwZVBhcmFtLnR5cGUpIHtcbiAgICAgICAgZGVmaW5pdGlvbi50eXBlID0gdGhpcy5nZXRUeXBlRGVmaW5pdGlvbih7XG4gICAgICAgICAgdHlwZTogdHlwZVBhcmFtLnR5cGVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21tZW50VGFncyhjb21tZW50OiBUeXBlRG9jQ29tbWVudCk6IFNreURvY3NDb21tZW50VGFncyB7XG4gICAgbGV0IGNvZGVFeGFtcGxlOiBzdHJpbmc7XG4gICAgbGV0IGNvZGVFeGFtcGxlTGFuZ3VhZ2U6IHN0cmluZyA9ICdtYXJrdXAnO1xuICAgIGxldCBkZXByZWNhdGlvbldhcm5pbmc6IHN0cmluZztcbiAgICBsZXQgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gICAgbGV0IGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcblxuICAgIGxldCBwYXJhbWV0ZXJzOiB7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgfVtdO1xuXG4gICAgY29uc3QgZXh0cmFzOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgICB9ID0ge307XG5cbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgaWYgKGNvbW1lbnQudGFncykge1xuICAgICAgICBjb21tZW50LnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICAgICAgICAgIHN3aXRjaCAodGFnLnRhZykge1xuICAgICAgICAgICAgY2FzZSAnZGVwcmVjYXRlZCc6XG4gICAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyA9IHRhZy50ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgICAgICAgY2FzZSAnZGVmYXVsdFZhbHVlJzpcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gdGFnLnRleHQudHJpbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZXhhbXBsZSc6XG4gICAgICAgICAgICAgIGNvZGVFeGFtcGxlID0gdGFnLnRleHQudHJpbSgpLnNwbGl0KCdgYGAnKVsxXS50cmltKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlID0gY29kZUV4YW1wbGUuc3BsaXQoJ1xcbicpWzBdO1xuICAgICAgICAgICAgICBpZiAobGFuZ3VhZ2UgPT09ICdtYXJrdXAnIHx8IGxhbmd1YWdlID09PSAndHlwZXNjcmlwdCcpIHtcbiAgICAgICAgICAgICAgICBjb2RlRXhhbXBsZSA9IGNvZGVFeGFtcGxlLnNsaWNlKGxhbmd1YWdlLmxlbmd0aCkudHJpbSgpO1xuICAgICAgICAgICAgICAgIGNvZGVFeGFtcGxlTGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAncGFyYW0nOlxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCBbXTtcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0YWcucGFyYW0sXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRhZy50ZXh0LnRyaW0oKVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGV4dHJhc1t0YWcudGFnXSA9IHRhZy50ZXh0O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBkZXNjcmlwdGlvbiA9IChjb21tZW50LnNob3J0VGV4dCB8fCBjb21tZW50LnRleHQgfHwgJycpLnRyaW0oKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29kZUV4YW1wbGUsXG4gICAgICBjb2RlRXhhbXBsZUxhbmd1YWdlLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZGVwcmVjYXRpb25XYXJuaW5nLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBleHRyYXMsXG4gICAgICBwYXJhbWV0ZXJzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgZGVzY3JpcHRpb25zIGFyZSBkZXJpdmVkIGZyb20gdGhlIHBhcmVudCdzIChmdW5jdGlvbi9tZXRob2QpIGNvbW1lbnQuXG4gICAqL1xuICBwcml2YXRlIGdldFBhcmFtZXRlckNvbW1lbnRUYWdzKHBhcmFtZXRlcjogVHlwZURvY1BhcmFtZXRlciwgcGFyZW50VGFnczogU2t5RG9jc0NvbW1lbnRUYWdzKTogU2t5RG9jc0NvbW1lbnRUYWdzIHtcbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhwYXJhbWV0ZXIuY29tbWVudCk7XG4gICAgY29uc3QgcGFyYW1UYWdzID0gcGFyZW50VGFncy5wYXJhbWV0ZXJzO1xuICAgIGNvbnN0IHRhZ1BhcmFtID0gKHBhcmFtVGFncykgPyBwYXJhbVRhZ3MuZmluZCgocGFyYW0pID0+IHBhcmFtLm5hbWUgPT09IHBhcmFtZXRlci5uYW1lKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICghdGFnUGFyYW0gfHwgIXRhZ1BhcmFtLmRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4gdGFncztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGFncyxcbiAgICAgIC4uLntcbiAgICAgICAgZGVzY3JpcHRpb246IHRhZ1BhcmFtLmRlc2NyaXB0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGNvbW1lbnQgdGFnIChlLmcuIGBAcGFyYW1gKSB2YWx1ZXMgdG8gdGhlIHByb3ZpZGVkIGRlZmluaXRpb24sIGlmIHRoZSB2YWx1ZSBpcyBkZWZpbmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUNvbW1lbnRUYWdWYWx1ZXMoXG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgY29kZUV4YW1wbGU/OiBzdHJpbmc7XG4gICAgICBjb2RlRXhhbXBsZUxhbmd1YWdlPzogc3RyaW5nO1xuICAgICAgZGVwcmVjYXRpb25XYXJuaW5nPzogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgfSxcbiAgICB0YWdzOiBTa3lEb2NzQ29tbWVudFRhZ3NcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRhZ3MuY29kZUV4YW1wbGUpIHtcbiAgICAgIGRlZmluaXRpb24uY29kZUV4YW1wbGUgPSB0YWdzLmNvZGVFeGFtcGxlO1xuICAgICAgZGVmaW5pdGlvbi5jb2RlRXhhbXBsZUxhbmd1YWdlID0gdGFncy5jb2RlRXhhbXBsZUxhbmd1YWdlO1xuICAgIH1cblxuICAgIGlmICh0YWdzLmRlcHJlY2F0aW9uV2FybmluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWZpbml0aW9uLmRlcHJlY2F0aW9uV2FybmluZyA9IHRhZ3MuZGVwcmVjYXRpb25XYXJuaW5nO1xuICAgIH1cblxuICAgIGlmICh0YWdzLmRlc2NyaXB0aW9uKSB7XG4gICAgICBkZWZpbml0aW9uLmRlc2NyaXB0aW9uID0gdGFncy5kZXNjcmlwdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERlY29yYXRvcihjaGlsZDogVHlwZURvY0VudHJ5Q2hpbGQpOiBTa3lEb2NzUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uIHtcbiAgICBjb25zdCBuYW1lID0gY2hpbGQuZGVjb3JhdG9ycyAmJiBjaGlsZC5kZWNvcmF0b3JzWzBdICYmIGNoaWxkLmRlY29yYXRvcnNbMF0ubmFtZTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuIHsgbmFtZSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5OiBUeXBlRG9jRW50cnlDaGlsZCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IHByb3BlcnR5LmRlY29yYXRvcnMgJiYgcHJvcGVydHkuZGVjb3JhdG9yc1swXTtcbiAgICAvLyBVc2UgdGhlIElucHV0J3MgYm91bmQgcHJvcGVydHkgbmFtZSwgaWYgZm91bmQuXG4gICAgLy8gZS5nLiBASW5wdXQoJ2Zvb2JhcicpXG4gICAgcmV0dXJuIChkZWNvcmF0b3JzPy5hcmd1bWVudHM/LmJpbmRpbmdQcm9wZXJ0eU5hbWUpXG4gICAgICA/IGRlY29yYXRvcnMuYXJndW1lbnRzLmJpbmRpbmdQcm9wZXJ0eU5hbWUucmVwbGFjZSgvKFxcJ3xcXFwiKS9nLCAnJylcbiAgICAgIDogcHJvcGVydHkubmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFZhbHVlKGNoaWxkOiBUeXBlRG9jRW50cnlDaGlsZCwgdGFnczogU2t5RG9jc0NvbW1lbnRUYWdzKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGFncy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiB0YWdzLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBUeXBlRG9jIHZlcnNpb24gMC4yMC54IHN0b3BwZWQgYXV0by1nZW5lcmF0aW5nIGluaXRpYWxpemVycyBmb3IgdGhlIGRlZmF1bHQgdmFsdWVcbiAgICAvLyAoYW5kIHJlcGxhY2VkIHRoZW0gd2l0aCBcIi4uLlwiKSBkdWUgdG8gdGhlIGNvbXBsaWNhdGVkIGxvZ2ljIGl0IHJlcXVpcmVkLlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL1R5cGVTdHJvbmcvdHlwZWRvYy9pc3N1ZXMvMTU1MlxuICAgIGlmIChjaGlsZC5kZWZhdWx0VmFsdWUgPT09ICcuLi4nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkLmRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QW5jaG9ySWQoZW50cnk6IFR5cGVEb2NFbnRyeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVudHJ5LmFuY2hvcklkIHx8IHRoaXMudHlwZURlZmluaXRpb25zUHJvdmlkZXI/LmFuY2hvcklkc1tlbnRyeS5uYW1lXSB8fCAnJztcbiAgfVxuXG59XG4iXX0=
|
|
466
|
+
}
|
|
467
|
+
SkyDocsTypeDocAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDocsTypeDocAdapterService, deps: [{ token: i1.SkyDocsTypeDefinitionsProvider, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
468
|
+
SkyDocsTypeDocAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDocsTypeDocAdapterService, providedIn: 'any' });
|
|
469
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDocsTypeDocAdapterService, decorators: [{
|
|
470
|
+
type: Injectable,
|
|
471
|
+
args: [{
|
|
472
|
+
providedIn: 'any'
|
|
473
|
+
}]
|
|
474
|
+
}], ctorParameters: function () { return [{ type: i1.SkyDocsTypeDefinitionsProvider, decorators: [{
|
|
475
|
+
type: Optional
|
|
476
|
+
}] }]; } });
|
|
477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRvYy1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL3R5cGUtZGVmaW5pdGlvbnMvdHlwZWRvYy1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFvRnZCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDOzs7QUFFckM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNEJBQTRCO0lBRXZDLFlBQ3NCLHVCQUF3RDtRQUF4RCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWlDO0lBQzFFLENBQUM7SUFFRSxpQkFBaUIsQ0FBQyxLQUFtQjtRQUMxQyxNQUFNLFVBQVUsR0FBMkI7WUFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNqQixDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixVQUFVLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM5QjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDckIsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7U0FDcEM7UUFFRCxPQUFPLFVBQVUs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O1FBRUQsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQzVCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBbUI7O1FBQ3JDLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSSxNQUFBLElBQUksQ0FBQyx1QkFBdUIsMENBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxJQUFJLEVBQUUsQ0FBQztJQUNyRixDQUFDOzswSEFobEJVLDRCQUE0Qjs4SEFBNUIsNEJBQTRCLGNBRjNCLEtBQUs7NEZBRU4sNEJBQTRCO2tCQUh4QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBSUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ2FsbFNpZ25hdHVyZURlZmluaXRpb25cbn0gZnJvbSAnLi9jYWxsLXNpZ25hdHVyZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0NsYXNzRGVmaW5pdGlvblxufSBmcm9tICcuL2NsYXNzLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb25cbn0gZnJvbSAnLi9wcm9wZXJ0eS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0NvbW1lbnRUYWdzXG59IGZyb20gJy4vY29tbWVudC10YWdzJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0RpcmVjdGl2ZURlZmluaXRpb25cbn0gZnJvbSAnLi9kaXJlY3RpdmUtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NFbnVtZXJhdGlvbkRlZmluaXRpb25cbn0gZnJvbSAnLi9lbnVtZXJhdGlvbi1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0VudW1lcmF0aW9uTWVtYmVyRGVmaW5pdGlvblxufSBmcm9tICcuL2VudW1lcmF0aW9uLW1lbWJlci1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0luZGV4U2lnbmF0dXJlRGVmaW5pdGlvblxufSBmcm9tICcuL2luZGV4LXNpZ25hdHVyZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0ludGVyZmFjZURlZmluaXRpb25cbn0gZnJvbSAnLi9pbnRlcmZhY2UtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NJbnRlcmZhY2VQcm9wZXJ0eURlZmluaXRpb25cbn0gZnJvbSAnLi9pbnRlcmZhY2UtcHJvcGVydHktZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NDbGFzc01ldGhvZERlZmluaXRpb25cbn0gZnJvbSAnLi9tZXRob2QtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NQYXJhbWV0ZXJEZWZpbml0aW9uXG59IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzUGlwZURlZmluaXRpb25cbn0gZnJvbSAnLi9waXBlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uXG59IGZyb20gJy4vcHJvcGVydHktZGVjb3JhdG9yJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1R5cGVBbGlhc0RlZmluaXRpb25cbn0gZnJvbSAnLi90eXBlLWFsaWFzLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZURlZmluaXRpb25cbn0gZnJvbSAnLi90eXBlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZURlZmluaXRpb25zUHJvdmlkZXJcbn0gZnJvbSAnLi90eXBlLWRlZmluaXRpb25zLXByb3ZpZGVyJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1R5cGVQYXJhbWV0ZXJEZWZpbml0aW9uXG59IGZyb20gJy4vdHlwZS1wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFR5cGVEb2NDb21tZW50LFxuICBUeXBlRG9jRW50cnksXG4gIFR5cGVEb2NFbnRyeUNoaWxkLFxuICBUeXBlRG9jUGFyYW1ldGVyLFxuICBUeXBlRG9jU2lnbmF0dXJlLFxuICBUeXBlRG9jVHlwZSxcbiAgVHlwZURvY1R5cGVQYXJhbWV0ZXJcbn0gZnJvbSAnLi90eXBlZG9jLXR5cGVzJztcblxuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuXG4vKipcbiAqIENvbnZlcnRzIFR5cGVEb2MgdHlwZXMgaW50byBTS1kgVVggZG9jcy10b29scyB0eXBlcywgdG8gYmUgc3VwcGxpZWQgdG8gdGhlIHZhcmlvdXMgZGVmaW5pdGlvbnMgY29tcG9uZW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55J1xufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzVHlwZURvY0FkYXB0ZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHR5cGVEZWZpbml0aW9uc1Byb3ZpZGVyPzogU2t5RG9jc1R5cGVEZWZpbml0aW9uc1Byb3ZpZGVyXG4gICkgeyB9XG5cbiAgcHVibGljIHRvQ2xhc3NEZWZpbml0aW9uKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbmFtZTogZW50cnkubmFtZVxuICAgIH07XG5cbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhlbnRyeS5jb21tZW50KTtcbiAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmdldENsYXNzTWV0aG9kcyhlbnRyeSk7XG4gICAgaWYgKG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLm1ldGhvZHMgPSBtZXRob2RzO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldENsYXNzUHJvcGVydGllcyhlbnRyeSk7XG4gICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcHVibGljIHRvRGlyZWN0aXZlRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0RpcmVjdGl2ZURlZmluaXRpb24ge1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NEaXJlY3RpdmVEZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgIHNlbGVjdG9yOiB0aGlzLmdldFNlbGVjdG9yKGVudHJ5KVxuICAgIH07XG5cbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhlbnRyeS5jb21tZW50KTtcbiAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldENsYXNzUHJvcGVydGllcyhlbnRyeSk7XG5cbiAgICBjb25zdCBldmVudFByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihwID0+IHAuZGVjb3JhdG9yPy5uYW1lID09PSAnT3V0cHV0Jyk7XG4gICAgaWYgKGV2ZW50UHJvcGVydGllcy5sZW5ndGgpIHtcbiAgICAgIGRlZmluaXRpb24uZXZlbnRQcm9wZXJ0aWVzID0gZXZlbnRQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0UHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKHAgPT4gcC5kZWNvcmF0b3I/Lm5hbWUgPT09ICdJbnB1dCcpO1xuICAgIGlmIChpbnB1dFByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLmlucHV0UHJvcGVydGllcyA9IGlucHV0UHJvcGVydGllcztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b0VudW1lcmF0aW9uRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0VudW1lcmF0aW9uRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgbWVtYmVycyA9IHRoaXMuZ2V0RW51bWVyYXRpb25NZW1iZXJzKGVudHJ5KTtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzRW51bWVyYXRpb25EZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbWVtYmVycyxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWVcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b0ludGVyZmFjZURlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NJbnRlcmZhY2VEZWZpbml0aW9uIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRJbnRlcmZhY2VQcm9wZXJ0aWVzKGVudHJ5KTtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzSW50ZXJmYWNlRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgfTtcblxuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGVudHJ5LmNvbW1lbnQpO1xuICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgY29uc3QgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLmdldFR5cGVQYXJhbWV0ZXJEZWZpbml0aW9ucyhlbnRyeS50eXBlUGFyYW1ldGVyKTtcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwdWJsaWMgdG9QaXBlRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc1BpcGVEZWZpbml0aW9uIHtcbiAgICBjb25zdCBtZXRob2RzID0gdGhpcy5nZXRDbGFzc01ldGhvZHMoZW50cnkpO1xuICAgIGNvbnN0IHRyYW5zZm9ybU1ldGhvZCA9IG1ldGhvZHMuZmluZChtID0+IG0ubmFtZSA9PT0gJ3RyYW5zZm9ybScpO1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NQaXBlRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICB0cmFuc2Zvcm1NZXRob2RcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b1R5cGVBbGlhc0RlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NUeXBlQWxpYXNEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzVHlwZUFsaWFzRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHtcbiAgICAgICAgY29tbWVudDogZW50cnkuY29tbWVudCxcbiAgICAgICAgdHlwZTogZW50cnkudHlwZVxuICAgICAgfSlcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICBjb25zdCB0eXBlUGFyYW1ldGVycyA9IHRoaXMuZ2V0VHlwZVBhcmFtZXRlckRlZmluaXRpb25zKGVudHJ5LnR5cGVQYXJhbWV0ZXIpO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIGRlZmluaXRpb24udHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0b3IoZW50cnk6IFR5cGVEb2NFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVjb3JhdG9yU291cmNlID0gZW50cnkuZGVjb3JhdG9yc1swXS5hcmd1bWVudHMub2JqO1xuICAgIHJldHVybiAoZGVjb3JhdG9yU291cmNlLmluZGV4T2YoJ3NlbGVjdG9yOiBgJykgPiAtMSlcbiAgICAgID8gZGVjb3JhdG9yU291cmNlLnNwbGl0KCdzZWxlY3RvcjogYCcpWzFdLnNwbGl0KCdgJylbMF0ucmVwbGFjZSgvXFxzXFxzKy9nLCAnICcpXG4gICAgICA6IGRlY29yYXRvclNvdXJjZS5zcGxpdCgnc2VsZWN0b3I6IFxcJycpWzFdLnNwbGl0KCdcXCcnKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xhc3NQcm9wZXJ0aWVzKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb25bXSB7XG4gICAgaWYgKCFlbnRyeS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb25zID0gZW50cnkuY2hpbGRyZW5cbiAgICAgIC5maWx0ZXIoY2hpbGQgPT4gY2hpbGQua2luZFN0cmluZyA9PT0gJ1Byb3BlcnR5JyB8fCBjaGlsZC5raW5kU3RyaW5nID09PSAnQWNjZXNzb3InKVxuICAgICAgLm1hcChjaGlsZCA9PiB7XG4gICAgICAgIGxldCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gICAgICAgICAgaXNPcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLmdldFByb3BlcnR5TmFtZShjaGlsZCksXG4gICAgICAgICAgdHlwZTogdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihjaGlsZClcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuXG4gICAgICAgIC8qIEVuc3VyZSB3ZSBhcmUgcHJvcGVybHkgY2FwdHVyaW5nIGRlZmluaXRpb25zIHdoaWNoIHVzZSBhIGdldHRlci9zZXR0ZXIuIEZpbmFsIGNoZWNrIGlzIGEgc2FuaXR5IGNoZWNrICovXG4gICAgICAgIGlmIChjaGlsZC5raW5kU3RyaW5nID09PSAnQWNjZXNzb3InICYmICFjaGlsZC5jb21tZW50Py5zaG9ydFRleHQgJiYgY2hpbGQuZ2V0U2lnbmF0dXJlPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbWFpblRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGdldFRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmdldFNpZ25hdHVyZVswXS5jb21tZW50KTtcblxuICAgICAgICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIG1haW5UYWdzKTtcbiAgICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCBnZXRUYWdzKTtcblxuICAgICAgICAgIGlmIChjaGlsZC5zZXRTaWduYXR1cmU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNldFRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLnNldFNpZ25hdHVyZVswXS5jb21tZW50KTtcblxuICAgICAgICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgc2V0VGFncyk7XG5cbiAgICAgICAgICAgIGRlZmluaXRpb24uaXNPcHRpb25hbCA9ICFzZXRUYWdzLmV4dHJhcy5yZXF1aXJlZDtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNoaWxkLCBzZXRUYWdzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVmaW5pdGlvbi5pc09wdGlvbmFsID0gIW1haW5UYWdzLmV4dHJhcy5yZXF1aXJlZDtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNoaWxkLCBtYWluVGFncyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoY2hpbGQuY29tbWVudCk7XG5cbiAgICAgICAgICBkZWZpbml0aW9uLmlzT3B0aW9uYWwgPSAhdGFncy5leHRyYXMucmVxdWlyZWQ7XG5cbiAgICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNoaWxkLCB0YWdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29yYXRvciA9IHRoaXMuZ2V0RGVjb3JhdG9yKGNoaWxkKTtcbiAgICAgICAgaWYgKGRlY29yYXRvcikge1xuICAgICAgICAgIGRlZmluaXRpb24uZGVjb3JhdG9yID0gZGVjb3JhdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgZGVmaW5pdGlvbnMsXG4gICAgICBbJ2lzT3B0aW9uYWwnLCAnbmFtZSddLFxuICAgICAgWydhc2MnLCAnYXNjJ11cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGFzc01ldGhvZHMoZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NDbGFzc01ldGhvZERlZmluaXRpb25bXSB7XG4gICAgaWYgKCFlbnRyeS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZHMgPSBlbnRyeS5jaGlsZHJlblxuICAgICAgLmZpbHRlcihjaGlsZCA9PiBjaGlsZC5raW5kU3RyaW5nID09PSAnTWV0aG9kJyAmJiAvXm5nLy50ZXN0KGNoaWxkLm5hbWUpID09PSBmYWxzZSlcbiAgICAgIC5tYXAoY2hpbGQgPT4ge1xuICAgICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NNZXRob2REZWZpbml0aW9uID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0UHJvcGVydHlOYW1lKGNoaWxkKSxcbiAgICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkKVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENvbW1lbnRzIGZvciBtZXRob2RzIGFyZSBzdG9yZWQgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uXG4gICAgICAgIGNvbnN0IGNvbW1lbnQgPSBjaGlsZC5zaWduYXR1cmVzWzBdLmNvbW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNvbW1lbnQpO1xuICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgICBjb25zdCB0eXBlUGFyYW1ldGVycyA9IHRoaXMuZ2V0VHlwZVBhcmFtZXRlckRlZmluaXRpb25zKGNoaWxkLnNpZ25hdHVyZXNbMF0udHlwZVBhcmFtZXRlcik7XG4gICAgICAgIGlmICh0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG9yZGVyQnkoXG4gICAgICBtZXRob2RzLFxuICAgICAgWyduYW1lJ10sXG4gICAgICBbJ2FzYyddXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW50ZXJmYWNlUHJvcGVydGllcyhlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0ludGVyZmFjZVByb3BlcnR5RGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWVudHJ5LmNoaWxkcmVuICYmICFlbnRyeS5pbmRleFNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb25zID0gZW50cnkuY2hpbGRyZW4/Lm1hcChjaGlsZCA9PiB7XG4gICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KTtcbiAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NJbnRlcmZhY2VQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gICAgICAgIGlzT3B0aW9uYWw6ICh0YWdzLmV4dHJhcy5yZXF1aXJlZCkgPyBmYWxzZSA6ICEhKGNoaWxkLmZsYWdzPy5pc09wdGlvbmFsKSxcbiAgICAgICAgbmFtZTogdGhpcy5nZXRQcm9wZXJ0eU5hbWUoY2hpbGQpLFxuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkKVxuICAgICAgfTtcblxuICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pIHx8IFtdO1xuXG4gICAgY29uc3Qgc29ydGVkID0gb3JkZXJCeShcbiAgICAgIGRlZmluaXRpb25zLFxuICAgICAgWydpc09wdGlvbmFsJywgJ25hbWUnXSxcbiAgICAgIFsnYXNjJywgJ2FzYyddXG4gICAgKTtcblxuICAgIC8vIEFkZCBhbnkgaW5kZXggc2lnbmF0dXJlcywgZS5nLiBgW186IHN0cmluZ106IGFueWBcbiAgICBpZiAoZW50cnkuaW5kZXhTaWduYXR1cmUpIHtcbiAgICAgIGNvbnN0IGluZGV4U2lnbmF0dXJlID0gZW50cnkuaW5kZXhTaWduYXR1cmU7XG4gICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzSW50ZXJmYWNlUHJvcGVydHlEZWZpbml0aW9uID0ge1xuICAgICAgICBpc09wdGlvbmFsOiB0cnVlLFxuICAgICAgICBuYW1lOiBpbmRleFNpZ25hdHVyZS5uYW1lLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgaW5kZXhTaWduYXR1cmU6IHRoaXMuZ2V0SW5kZXhTaWduYXR1cmVEZWZpbml0aW9uKGluZGV4U2lnbmF0dXJlKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhpbmRleFNpZ25hdHVyZS5jb21tZW50KTtcbiAgICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuICAgICAgc29ydGVkLnB1c2goZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW51bWVyYXRpb25NZW1iZXJzKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzRW51bWVyYXRpb25NZW1iZXJEZWZpbml0aW9uW10ge1xuICAgIGlmICghZW50cnkuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cnkuY2hpbGRyZW4ubWFwKGNoaWxkID0+IHtcbiAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NFbnVtZXJhdGlvbk1lbWJlckRlZmluaXRpb24gPSB7XG4gICAgICAgIG5hbWU6IGNoaWxkLm5hbWVcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpO1xuICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlRGVmaW5pdGlvbihjaGlsZDogVHlwZURvY0VudHJ5Q2hpbGQpOiBTa3lEb2NzVHlwZURlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uOiBTa3lEb2NzVHlwZURlZmluaXRpb247XG5cbiAgICBjb25zdCBraW5kU3RyaW5nID0gY2hpbGQua2luZFN0cmluZztcbiAgICBzd2l0Y2ggKGtpbmRTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ0FjY2Vzc29yJzpcbiAgICAgICAgaWYgKGNoaWxkLnNldFNpZ25hdHVyZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkLnNldFNpZ25hdHVyZVswXS5wYXJhbWV0ZXJzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihjaGlsZC5nZXRTaWduYXR1cmVbMF0pO1xuXG4gICAgICBjYXNlICdNZXRob2QnOlxuICAgICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICAgIGNhbGxTaWduYXR1cmU6IHRoaXMuZ2V0Q2FsbFNpZ25hdHVyZURlZmluaXRpb24oY2hpbGQuc2lnbmF0dXJlc1swXSwgdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KSksXG4gICAgICAgICAgbmFtZTogY2hpbGQuc2lnbmF0dXJlc1swXS5uYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSBjaGlsZC50eXBlLm5hbWUgfHwgY2hpbGQudHlwZS5lbGVtZW50VHlwZT8ubmFtZSB8fCBjaGlsZC50eXBlLnZhbHVlO1xuXG4gICAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgICAgdHlwZTogY2hpbGQudHlwZS50eXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5pb24/XG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGVzKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbi51bmlvblR5cGVzID0gY2hpbGQudHlwZS50eXBlcy5tYXAodCA9PiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHsgdHlwZTogdCB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHJlZmxlY3Rpb24gdHlwZXMuXG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGUgPT09ICdyZWZsZWN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gY2hpbGQudHlwZS5kZWNsYXJhdGlvbjtcbiAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICBpZiAoZGVjbGFyYXRpb24uc2lnbmF0dXJlcykge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLmNhbGxTaWduYXR1cmUgPSB0aGlzLmdldENhbGxTaWduYXR1cmVEZWZpbml0aW9uKFxuICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uLnNpZ25hdHVyZXNbMF0sXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNsYXJhdGlvbi5pbmRleFNpZ25hdHVyZSkge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleFNpZ25hdHVyZSA9IGRlY2xhcmF0aW9uLmluZGV4U2lnbmF0dXJlO1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLmluZGV4U2lnbmF0dXJlID0gdGhpcy5nZXRJbmRleFNpZ25hdHVyZURlZmluaXRpb24oaW5kZXhTaWduYXR1cmUpO1xuICAgICAgICAgICAgfSBlbHNlIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovIGlmIChkZWNsYXJhdGlvbi5jaGlsZHJlbikge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLnR5cGVMaXRlcmFsID0ge1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMuZ2V0SW50ZXJmYWNlUHJvcGVydGllcyh7XG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogZGVjbGFyYXRpb24uY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLnR5cGUudHlwZSA9PT0gJ3R5cGVPcGVyYXRvcicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBgJHtjaGlsZC50eXBlLm9wZXJhdG9yfSAke2NoaWxkLnR5cGUudGFyZ2V0Lm5hbWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGVBcmd1bWVudHMpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLnR5cGVBcmd1bWVudHMgPSB0aGlzLmdldFR5cGVBcmd1bWVudERlZmluaXRpb25zKGNoaWxkLnR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJEZWZpbml0aW9ucyhcbiAgICBjYWxsU2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlLFxuICAgIHBhcmVudFRhZ3M6IFNreURvY3NDb21tZW50VGFnc1xuICApOiBTa3lEb2NzUGFyYW1ldGVyRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWNhbGxTaWduYXR1cmUucGFyYW1ldGVycykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IFNreURvY3NQYXJhbWV0ZXJEZWZpbml0aW9uW10gPSBjYWxsU2lnbmF0dXJlLnBhcmFtZXRlcnMubWFwKHAgPT4ge1xuICAgICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0UGFyYW1ldGVyQ29tbWVudFRhZ3MocCwgcGFyZW50VGFncyk7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShwLCB0YWdzKTtcbiAgICAgIGNvbnN0IHR5cGVBcmd1bWVudHMgPSB0aGlzLmdldFR5cGVBcmd1bWVudERlZmluaXRpb25zKHAudHlwZSk7XG5cbiAgICAgIGNvbnN0IHBhcmFtZXRlcjogU2t5RG9jc1BhcmFtZXRlckRlZmluaXRpb24gPSB7XG4gICAgICAgIGlzT3B0aW9uYWw6ICEhKGRlZmF1bHRWYWx1ZSB8fCAhIXAuZmxhZ3M/LmlzT3B0aW9uYWwpLFxuICAgICAgICBuYW1lOiBwLm5hbWUsXG4gICAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24ocClcbiAgICAgIH07XG5cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbWV0ZXIuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFncy5kZXNjcmlwdGlvbikge1xuICAgICAgICBwYXJhbWV0ZXIuZGVzY3JpcHRpb24gPSB0YWdzLmRlc2NyaXB0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZUFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcGFyYW1ldGVyLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlQXJndW1lbnREZWZpbml0aW9ucyh0eXBlQ29uZmlnOiBUeXBlRG9jVHlwZSk6IFNreURvY3NUeXBlRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIXR5cGVDb25maWcgfHwgIXR5cGVDb25maWcudHlwZUFyZ3VtZW50cykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQ29uZmlnLnR5cGVBcmd1bWVudHMubWFwKCh0eXBlQXJndW1lbnQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHsgdHlwZTogdHlwZUFyZ3VtZW50IH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbihjYWxsU2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlLCB0YWdzOiBTa3lEb2NzQ29tbWVudFRhZ3MpOiBTa3lEb2NzQ2FsbFNpZ25hdHVyZURlZmluaXRpb24ge1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbiA9IHtcbiAgICAgIHJldHVyblR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oY2FsbFNpZ25hdHVyZSlcbiAgICB9O1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRoaXMuZ2V0UGFyYW1ldGVyRGVmaW5pdGlvbnMoY2FsbFNpZ25hdHVyZSwgdGFncyk7XG4gICAgaWYgKHBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleFNpZ25hdHVyZURlZmluaXRpb24oc2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlKTogU2t5RG9jc0luZGV4U2lnbmF0dXJlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleToge1xuICAgICAgICBuYW1lOiBzaWduYXR1cmUucGFyYW1ldGVyc1swXS5uYW1lLFxuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHNpZ25hdHVyZS5wYXJhbWV0ZXJzWzBdKVxuICAgICAgfSxcbiAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oc2lnbmF0dXJlKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVQYXJhbWV0ZXJEZWZpbml0aW9ucyh0eXBlUGFyYW1ldGVyczogVHlwZURvY1R5cGVQYXJhbWV0ZXJbXSk6IFNreURvY3NUeXBlUGFyYW1ldGVyRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIXR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVQYXJhbWV0ZXJzLm1hcCh0eXBlUGFyYW0gPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc1R5cGVQYXJhbWV0ZXJEZWZpbml0aW9uID0ge1xuICAgICAgICBuYW1lOiB0eXBlUGFyYW0ubmFtZVxuICAgICAgfTtcblxuICAgICAgaWYgKHR5cGVQYXJhbS50eXBlKSB7XG4gICAgICAgIGRlZmluaXRpb24udHlwZSA9IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oe1xuICAgICAgICAgIHR5cGU6IHR5cGVQYXJhbS50eXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tbWVudFRhZ3MoY29tbWVudDogVHlwZURvY0NvbW1lbnQpOiBTa3lEb2NzQ29tbWVudFRhZ3Mge1xuICAgIGxldCBjb2RlRXhhbXBsZTogc3RyaW5nO1xuICAgIGxldCBjb2RlRXhhbXBsZUxhbmd1YWdlOiBzdHJpbmcgPSAnbWFya3VwJztcbiAgICBsZXQgZGVwcmVjYXRpb25XYXJuaW5nOiBzdHJpbmc7XG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICAgIGxldCBkZXNjcmlwdGlvbjogc3RyaW5nID0gJyc7XG5cbiAgICBsZXQgcGFyYW1ldGVyczoge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAgIH1bXTtcblxuICAgIGNvbnN0IGV4dHJhczoge1xuICAgICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgfSA9IHt9O1xuXG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgIGlmIChjb21tZW50LnRhZ3MpIHtcbiAgICAgICAgY29tbWVudC50YWdzLmZvckVhY2godGFnID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHRhZy50YWcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RlcHJlY2F0ZWQnOlxuICAgICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcgPSB0YWcudGV4dC50cmltKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkZWZhdWx0JzpcbiAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHRWYWx1ZSc6XG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRhZy50ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2V4YW1wbGUnOlxuICAgICAgICAgICAgICBjb2RlRXhhbXBsZSA9IHRhZy50ZXh0LnRyaW0oKS5zcGxpdCgnYGBgJylbMV0udHJpbSgpO1xuICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IGNvZGVFeGFtcGxlLnNwbGl0KCdcXG4nKVswXTtcbiAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlID09PSAnbWFya3VwJyB8fCBsYW5ndWFnZSA9PT0gJ3R5cGVzY3JpcHQnKSB7XG4gICAgICAgICAgICAgICAgY29kZUV4YW1wbGUgPSBjb2RlRXhhbXBsZS5zbGljZShsYW5ndWFnZS5sZW5ndGgpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBjb2RlRXhhbXBsZUxhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3BhcmFtJzpcbiAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMgfHwgW107XG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogdGFnLnBhcmFtLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0YWcudGV4dC50cmltKClcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBleHRyYXNbdGFnLnRhZ10gPSB0YWcudGV4dDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZGVzY3JpcHRpb24gPSAoY29tbWVudC5zaG9ydFRleHQgfHwgY29tbWVudC50ZXh0IHx8ICcnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGVFeGFtcGxlLFxuICAgICAgY29kZUV4YW1wbGVMYW5ndWFnZSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRlcHJlY2F0aW9uV2FybmluZyxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZXh0cmFzLFxuICAgICAgcGFyYW1ldGVyc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUGFyYW1ldGVyIGRlc2NyaXB0aW9ucyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBwYXJlbnQncyAoZnVuY3Rpb24vbWV0aG9kKSBjb21tZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJDb21tZW50VGFncyhwYXJhbWV0ZXI6IFR5cGVEb2NQYXJhbWV0ZXIsIHBhcmVudFRhZ3M6IFNreURvY3NDb21tZW50VGFncyk6IFNreURvY3NDb21tZW50VGFncyB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MocGFyYW1ldGVyLmNvbW1lbnQpO1xuICAgIGNvbnN0IHBhcmFtVGFncyA9IHBhcmVudFRhZ3MucGFyYW1ldGVycztcbiAgICBjb25zdCB0YWdQYXJhbSA9IChwYXJhbVRhZ3MpID8gcGFyYW1UYWdzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBwYXJhbWV0ZXIubmFtZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXRhZ1BhcmFtIHx8ICF0YWdQYXJhbS5kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRhZ3M7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRhZ3MsXG4gICAgICAuLi57XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0YWdQYXJhbS5kZXNjcmlwdGlvblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBjb21tZW50IHRhZyAoZS5nLiBgQHBhcmFtYCkgdmFsdWVzIHRvIHRoZSBwcm92aWRlZCBkZWZpbml0aW9uLCBpZiB0aGUgdmFsdWUgaXMgZGVmaW5lZC5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlDb21tZW50VGFnVmFsdWVzKFxuICAgIGRlZmluaXRpb246IHtcbiAgICAgIGNvZGVFeGFtcGxlPzogc3RyaW5nO1xuICAgICAgY29kZUV4YW1wbGVMYW5ndWFnZT86IHN0cmluZztcbiAgICAgIGRlcHJlY2F0aW9uV2FybmluZz86IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH0sXG4gICAgdGFnczogU2t5RG9jc0NvbW1lbnRUYWdzXG4gICk6IHZvaWQge1xuICAgIGlmICh0YWdzLmNvZGVFeGFtcGxlKSB7XG4gICAgICBkZWZpbml0aW9uLmNvZGVFeGFtcGxlID0gdGFncy5jb2RlRXhhbXBsZTtcbiAgICAgIGRlZmluaXRpb24uY29kZUV4YW1wbGVMYW5ndWFnZSA9IHRhZ3MuY29kZUV4YW1wbGVMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBpZiAodGFncy5kZXByZWNhdGlvbldhcm5pbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmaW5pdGlvbi5kZXByZWNhdGlvbldhcm5pbmcgPSB0YWdzLmRlcHJlY2F0aW9uV2FybmluZztcbiAgICB9XG5cbiAgICBpZiAodGFncy5kZXNjcmlwdGlvbikge1xuICAgICAgZGVmaW5pdGlvbi5kZXNjcmlwdGlvbiA9IHRhZ3MuZGVzY3JpcHRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWNvcmF0b3IoY2hpbGQ6IFR5cGVEb2NFbnRyeUNoaWxkKTogU2t5RG9jc1Byb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgbmFtZSA9IGNoaWxkLmRlY29yYXRvcnMgJiYgY2hpbGQuZGVjb3JhdG9yc1swXSAmJiBjaGlsZC5kZWNvcmF0b3JzWzBdLm5hbWU7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiB7IG5hbWUgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eTogVHlwZURvY0VudHJ5Q2hpbGQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlY29yYXRvcnMgPSBwcm9wZXJ0eS5kZWNvcmF0b3JzICYmIHByb3BlcnR5LmRlY29yYXRvcnNbMF07XG4gICAgLy8gVXNlIHRoZSBJbnB1dCdzIGJvdW5kIHByb3BlcnR5IG5hbWUsIGlmIGZvdW5kLlxuICAgIC8vIGUuZy4gQElucHV0KCdmb29iYXInKVxuICAgIHJldHVybiAoZGVjb3JhdG9ycz8uYXJndW1lbnRzPy5iaW5kaW5nUHJvcGVydHlOYW1lKVxuICAgICAgPyBkZWNvcmF0b3JzLmFyZ3VtZW50cy5iaW5kaW5nUHJvcGVydHlOYW1lLnJlcGxhY2UoLyhcXCd8XFxcIikvZywgJycpXG4gICAgICA6IHByb3BlcnR5Lm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjaGlsZDogVHlwZURvY0VudHJ5Q2hpbGQsIHRhZ3M6IFNreURvY3NDb21tZW50VGFncyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRhZ3MuZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGFncy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHlwZURvYyB2ZXJzaW9uIDAuMjAueCBzdG9wcGVkIGF1dG8tZ2VuZXJhdGluZyBpbml0aWFsaXplcnMgZm9yIHRoZSBkZWZhdWx0IHZhbHVlXG4gICAgLy8gKGFuZCByZXBsYWNlZCB0aGVtIHdpdGggXCIuLi5cIikgZHVlIHRvIHRoZSBjb21wbGljYXRlZCBsb2dpYyBpdCByZXF1aXJlZC5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9UeXBlU3Ryb25nL3R5cGVkb2MvaXNzdWVzLzE1NTJcbiAgICBpZiAoY2hpbGQuZGVmYXVsdFZhbHVlID09PSAnLi4uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZC5kZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEFuY2hvcklkKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnRyeS5hbmNob3JJZCB8fCB0aGlzLnR5cGVEZWZpbml0aW9uc1Byb3ZpZGVyPy5hbmNob3JJZHNbZW50cnkubmFtZV0gfHwgJyc7XG4gIH1cblxufVxuIl19
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRvYy10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvdHlwZS1kZWZpbml0aW9ucy90eXBlZG9jLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFR5cGVEb2NDb21tZW50IHtcblxuICBzaG9ydFRleHQ/OiBzdHJpbmc7XG5cbiAgdGFncz86IHtcbiAgICBwYXJhbT86IHN0cmluZztcbiAgICB0YWc6ICdkZWZhdWx0JyB8ICdkZWZhdWx0VmFsdWUnIHwgJ2RlcHJlY2F0ZWQnIHwgJ2V4YW1wbGUnIHwgJ3BhcmFtJyB8ICdyZXF1aXJlZCc7XG4gICAgdGV4dDogc3RyaW5nO1xuICB9W107XG5cbiAgdGV4dD86IHN0cmluZztcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEb2NTb3VyY2Uge1xuXG4gIGZpbGVOYW1lOiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlRG9jU2lnbmF0dXJlIHtcblxuICBjb21tZW50PzogVHlwZURvY0NvbW1lbnQ7XG5cbiAga2luZFN0cmluZz86ICdDYWxsIHNpZ25hdHVyZScgfCAnSW5kZXggc2lnbmF0dXJlJztcblxuICBuYW1lOiBzdHJpbmc7XG5cbiAgcGFyYW1ldGVycz86IFR5cGVEb2NQYXJhbWV0ZXJbXTtcblxuICB0eXBlOiBUeXBlRG9jVHlwZTtcblxuICB0eXBlUGFyYW1ldGVyPzogVHlwZURvY1R5cGVQYXJhbWV0ZXJbXTtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEb2NUeXBlUGFyYW1ldGVyIHtcbiAgbmFtZTogc3RyaW5nO1xuICBraW5kU3RyaW5nOiAnVHlwZSBwYXJhbWV0ZXInO1xuICB0eXBlPzogVHlwZURvY1R5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURvY1R5cGUge1xuXG4gIGNvbnN0cmFpbnQ/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9O1xuXG4gIGRlY2xhcmF0aW9uPzoge1xuICAgIGNoaWxkcmVuPzogVHlwZURvY0VudHJ5Q2hpbGRbXTtcbiAgICBpbmRleFNpZ25hdHVyZT86IFR5cGVEb2NTaWduYXR1cmU7XG4gICAgc2lnbmF0dXJlcz86IFR5cGVEb2NTaWduYXR1cmVbXTtcbiAgfTtcblxuICBlbGVtZW50VHlwZT86IFR5cGVEb2NUeXBlO1xuXG4gIG5hbWU/OiBzdHJpbmc7XG5cbiAgb3BlcmF0b3I/OiAna2V5b2YnO1xuXG4gIHRhcmdldD86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgdHlwZT86ICdhcnJheScgfCAnaW50cmluc2ljJyB8ICdyZWZlcmVuY2UnIHwgJ3JlZmxlY3Rpb24nIHwgJ3N0cmluZ0xpdGVyYWwnIHwgJ3R5cGVQYXJhbWV0ZXInIHwgJ3R5cGVPcGVyYXRvcicgfCAndW5pb24nIHwgJ3Vua25vd24nO1xuXG4gIHR5cGVBcmd1bWVudHM/OiBUeXBlRG9jVHlwZVtdO1xuXG4gIHR5cGVzPzogVHlwZURvY1R5cGVbXTtcblxuICB2YWx1ZT86IHN0cmluZztcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEb2NQYXJhbWV0ZXIge1xuXG4gIGNvbW1lbnQ/OiBUeXBlRG9jQ29tbWVudDtcblxuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG5cbiAga2luZFN0cmluZzogJ1BhcmFtZXRlcic7XG5cbiAgbmFtZTogc3RyaW5nO1xuXG4gIHR5cGU6IFR5cGVEb2NUeXBlO1xuXG4gIGZsYWdzPzoge1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICB9O1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURvY0VudHJ5Q2hpbGQge1xuXG4gIGNvbW1lbnQ/OiBUeXBlRG9jQ29tbWVudDtcblxuICBkZWNvcmF0b3JzPzoge1xuICAgIGFyZ3VtZW50cz86IHtcbiAgICAgIGJpbmRpbmdQcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBuYW1lOiAnSW5wdXQnIHwgJ091dHB1dCc7XG4gICAgdHlwZTogVHlwZURvY1R5cGU7XG4gIH1bXTtcblxuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG5cbiAgZmxhZ3M/OiB7XG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gIH07XG5cbiAga2luZFN0cmluZz86ICdBY2Nlc3NvcicgfCAnQ2FsbCBzaWduYXR1cmUnIHwgJ0luZGV4IHNpZ25hdHVyZScgfCAnRW51bWVyYXRpb24gbWVtYmVyJyB8ICdQYXJhbWV0ZXInIHwgJ1Byb3BlcnR5JyB8ICdNZXRob2QnO1xuXG4gIGdldFNpZ25hdHVyZT86IHtcbiAgICBjb21tZW50OiBUeXBlRG9jQ29tbWVudDtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogVHlwZURvY1R5cGU7XG4gIH1bXTtcblxuICBuYW1lPzogc3RyaW5nO1xuXG4gIHNldFNpZ25hdHVyZT86IHtcbiAgICBjb21tZW50OiBUeXBlRG9jQ29tbWVudDtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGFyYW1ldGVycz86IFR5cGVEb2NQYXJhbWV0ZXJbXTtcbiAgICB0eXBlOiBUeXBlRG9jVHlwZTtcbiAgfVtdO1xuXG4gIHNpZ25hdHVyZXM/OiBUeXBlRG9jU2lnbmF0dXJlW107XG5cbiAgc291cmNlcz86IFR5cGVEb2NTb3VyY2VbXTtcblxuICB0eXBlPzogVHlwZURvY1R5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURvY0VudHJ5IHtcblxuICBhbmNob3JJZD86IHN0cmluZztcblxuICBjaGlsZHJlbj86IFR5cGVEb2NFbnRyeUNoaWxkW107XG5cbiAgY29tbWVudD86IFR5cGVEb2NDb21tZW50O1xuXG4gIGRlY29yYXRvcnM/OiB7XG4gICAgYXJndW1lbnRzPzoge1xuICAgICAgb2JqPzogc3RyaW5nO1xuICAgIH07XG4gICAgbmFtZTogJ0NvbXBvbmVudCcgfCAnRGlyZWN0aXZlJyB8ICdJbmplY3RhYmxlJyB8ICdOZ01vZHVsZScgfCAnUGlwZSc7XG4gICAgdHlwZTogVHlwZURvY1R5cGU7XG4gIH1bXTtcblxuICBraW5kU3RyaW5nPzogJ0NsYXNzJyB8ICdFbnVtZXJhdGlvbicgfCAnSW50ZXJmYWNlJyB8ICdUeXBlIGFsaWFzJztcblxuICBpbmRleFNpZ25hdHVyZT86IFR5cGVEb2NTaWduYXR1cmU7XG5cbiAgbmFtZT86IHN0cmluZztcblxuICBzb3VyY2VzPzogVHlwZURvY1NvdXJjZVtdO1xuXG4gIHR5cGU/OiBUeXBlRG9jVHlwZTtcblxuICB0eXBlUGFyYW1ldGVyPzogVHlwZURvY1R5cGVQYXJhbWV0ZXJbXTtcblxufVxuIl19
|